diff options
Diffstat (limited to 'ogcp/views.py')
-rw-r--r-- | ogcp/views.py | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/ogcp/views.py b/ogcp/views.py index fb7d6bb..53bad26 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -97,7 +97,7 @@ def validate_elements(elements, min_len=1, max_len=float('inf')): def parse_elements(checkboxes_dict): unwanted_elements = ['csrf_token', 'scope-server', 'scope-center', - 'scope-room', 'image-server'] + 'scope-room', 'image-server', 'repos-server'] elements = set() for key, elements_list in checkboxes_dict.items(): if key not in unwanted_elements: @@ -1486,12 +1486,11 @@ def manage_repos(): def repo_add_get(): form = RepoForm() params = request.args.to_dict() - if not params.get('selected-server'): + if not params.get('repos-server'): flash(_('Please, select a server'), category='error') return redirect(url_for('manage_repos')) - form.server.data = params['selected-server'] - form.create.render_kw = {"formaction": url_for('repo_add_post')} + form.server.data = params['repos-server'] responses = multi_request('get', '/repositories') return render_template('actions/repos_details.html', form=form, @@ -1516,6 +1515,45 @@ def repo_add_post(): flash(_('Repo added successfully'), category='info') return redirect(url_for("manage_repos")) +@app.route('/action/repo/delete', methods=['GET', 'POST']) +@login_required +def action_repo_delete(): + form = RepoForm(request.form) + if request.method == 'POST': + server = get_server_from_ip_port(form.server.data) + payload = { 'id': form.repo_id.data } + r = server.post('/repository/delete', payload) + if r.status_code != requests.codes.ok: + flash(_('ogServer: error deleting repo'), + category='error') + else: + flash(_('Repo deleted successfully'), + category='info') + return redirect(url_for('manage_repos')) + else: + params = request.args.to_dict() + repos = parse_elements(params) + print(repos) + if not validate_elements(repos, max_len=1): + return redirect(url_for('manage_repos')) + repo_id = repos.pop() + if not repo_id: + flash(_('Please, select a repo'), category='error') + return redirect(url_for('manage_repos')) + repo_id = int(repo_id) + server_ip_port = params.get('repos-server') + server = get_server_from_ip_port(server_ip_port) + repository = get_repository(repo_id, server) + form.server.data = server_ip_port + form.repo_id.data = repo_id + form.name.data = repository['name'] + form.name.render_kw = {'readonly': True} + form.ip.data = repository['ip'] + form.ip.render_kw = {'readonly': True} + responses = multi_request('get', '/repositories') + return render_template('actions/delete_repo.html', form=form, + repos_resp=responses) + @app.route('/servers/', methods=['GET']) @login_required def manage_servers(): |