views: add action to update repo

allow the user to update a repo by selecting one and pressing the update
button.
master
Javier Hernandez 2023-12-05 11:02:28 +01:00 committed by OpenGnSys Support Team
parent 152337b6bd
commit 15dd4c2a8f
2 changed files with 39 additions and 0 deletions

View File

@ -54,6 +54,8 @@
form="reposForm" formaction="{{ url_for('repo_add_get') }}" formmethod="get">
<input class="btn btn-light {% block nav_repo_delete %}{% endblock %}" type="submit" value="{{ _('Delete repo') }}"
form="reposForm" formaction="{{ url_for('action_repo_delete') }}" formmethod="get">
<input class="btn btn-light {% block nav_repo_update %}{% endblock %}" type="submit" value="{{ _('Update repo') }}"
form="reposForm" formaction="{{ url_for('action_repo_update') }}" formmethod="get">
{% if btn_back %}
<button class="btn btn-danger ml-3" type="button" id="backButton" onclick="history.back()">

View File

@ -1515,6 +1515,43 @@ def repo_add_post():
flash(_('Repo added successfully'), category='info')
return redirect(url_for("manage_repos"))
@app.route('/action/repo/update', methods=['GET', 'POST'])
@login_required
def action_repo_update():
form = RepoForm(request.form)
if request.method == 'POST':
server = get_server_from_ip_port(form.server.data)
payload = { 'repo_id': int(form.repo_id.data),
'name': form.name.data,
'ip': form.ip.data,
'center': 1}
r = server.post('/repository/update', payload)
if r.status_code != requests.codes.ok:
flash(_('ogServer: error updating repo'),
category='error')
else:
flash(_('Repo updated successfully'),
category='info')
return redirect(url_for('manage_repos'))
else:
params = request.args.to_dict()
repos = parse_elements(params)
if not validate_elements(repos, max_len=1):
return redirect(url_for('manage_repos'))
repo_id = repos.pop()
server_ip_port = params.get('repos-server')
server = get_server_from_ip_port(server_ip_port)
repository = get_repository(int(repo_id), server)
form.server.data = server_ip_port
form.repo_id.data = repo_id
form.name.data = repository['name']
form.ip.data = repository['ip']
responses = multi_request('get', '/repositories')
return render_template('actions/repos_update.html', form=form,
repos_resp=responses)
@app.route('/action/repo/delete', methods=['GET', 'POST'])
@login_required
def action_repo_delete():