views: add update center

add view to update center data such as its name or comment.
master
Javier Hernandez 2024-02-07 10:34:25 +01:00 committed by OpenGnSys Support Team
parent a609ede7a8
commit 6ec26d161e
3 changed files with 49 additions and 0 deletions

View File

@ -168,6 +168,7 @@ class ImageUpdateForm(FlaskForm):
class CenterForm(FlaskForm):
server = SelectField(label=_l('Server'),
validators=[InputRequired()])
center = HiddenField()
name = StringField(label=_l('Center name'),
validators=[InputRequired()])
comment = StringField(label=_l('Comment'))

View File

@ -54,6 +54,8 @@
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<input class="btn btn-light dropdown-item {% block nav_center_add %}{% endblock %}" type="submit" value="{{ _('Add center') }}"
form="scopesForm" formaction="{{ url_for('action_center_add') }}" formmethod="get">
<input class="btn btn-light dropdown-item {% block nav_center_update %}{% endblock %}" type="submit" value="{{ _('Update center') }}"
form="scopesForm" formaction="{{ url_for('action_center_update') }}" formmethod="get">
<input class="btn btn-light dropdown-item {% block nav_center_delete %}{% endblock %}" type="submit" value="{{ _('Delete center') }}"
form="scopesForm" formaction="{{ url_for('action_center_delete') }}" formmethod="get">
</div>

View File

@ -1897,6 +1897,52 @@ def action_center_add():
return render_template('actions/add_center.html', form=form,
scopes=scopes)
@app.route('/action/center/update', methods=['GET', 'POST'])
@login_required
def action_center_update():
form = CenterForm(request.form)
if request.method == 'POST':
payload = {"id": int(form.center.data),
"name": form.name.data,
"comment": form.comment.data}
server = get_server_from_ip_port(form.server.data)
r = server.post('/center/update', payload)
if r.status_code != requests.codes.ok:
flash(_('Server replied with error code when updating the center'),
category='error')
else:
flash(_('Center updated successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
server = params.get('scope-server')
center = params.get('scope-center')
if not server:
flash(_('Internal error: server was not sent as request argument'),
category='error')
return redirect(url_for("scopes"))
if not center:
flash(_('Please, select one center'), category='error')
return redirect(url_for("scopes"))
server = get_server_from_ip_port(server)
form.server.choices = [(server.ip + ':' + str(server.port), server.name)]
form.server.render_kw = {'readonly': True}
form.center.data = center
payload = {"id": int(center)}
r = server.get('/center/info', payload)
if r.status_code != requests.codes.ok:
return ogserver_error('scopes')
form.comment.data = r.json()['comment']
form.name.data = r.json()['name']
scopes, clients = get_scopes()
form.submit.render_kw = {"formaction": url_for('action_center_update')}
return render_template('actions/center_update.html', form=form,
scopes=scopes)
def get_scope_context_rec(elem_id, elem_type, scopes, ancestors):
if not scopes:
return ([], None)