summaryrefslogtreecommitdiffstats
path: root/ogcp/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ogcp/views.py')
-rw-r--r--ogcp/views.py46
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():