Add "Delete center" action

Creates "delete center" form with a select to choose a center to delete.

Adds a new button in the scopes view. Because scopes checkboxes values
maps to ips the only way to specify the center to delete is in the delete
center form itself, using a select input.
multi-ogserver
Javier Sánchez Parra 2021-07-30 12:15:29 +02:00 committed by OpenGnSys Support Team
parent 95c113f067
commit 9d98cf0423
3 changed files with 28 additions and 1 deletions

View File

@ -109,6 +109,11 @@ class CenterForm(FlaskForm):
comment = StringField(label=_('Comment'))
submit = SubmitField(label=_('Submit'))
class DeleteCenterForm(FlaskForm):
center = SelectField(label=_('Center'),
validators=[InputRequired()])
submit = SubmitField(label=_('Submit'))
class RoomForm(FlaskForm):
center = SelectField(label=_('Center'),
validators=[InputRequired()])

View File

@ -26,4 +26,6 @@
form="scopesForm" formaction="{{ url_for('action_client_delete') }}" formmethod="post">
<input class="btn btn-light" type="submit" value="{{ _('Delete room') }}"
form="scopesForm" formaction="{{ url_for('action_room_delete') }}" formmethod="get">
<input class="btn btn-light" type="submit" value="{{ _('Delete center') }}"
form="scopesForm" formaction="{{ url_for('action_center_delete') }}" formmethod="get">
{% endblock %}

View File

@ -11,7 +11,7 @@ from flask import (
from ogcp.forms.action_forms import (
WOLForm, SetupForm, ClientDetailsForm, HardwareForm,
SessionForm, ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm,
RoomForm, DeleteRoomForm, CenterForm
RoomForm, DeleteRoomForm, CenterForm, DeleteCenterForm
)
from flask_login import (
current_user, LoginManager,
@ -681,6 +681,26 @@ def action_center_add():
else:
return render_template('actions/add_center.html', form=form)
@app.route('/action/center/delete', methods=['GET', 'POST'])
@login_required
def action_center_delete():
form = DeleteCenterForm(request.form)
if request.method == 'POST':
payload = {"id": form.center.data}
r = g.server.post('/center/delete', payload)
if r.status_code != requests.codes.ok:
flash(_('Server replied with error code when deleting the center'),
category='error')
else:
flash(_('Center deleted successfully'), category='info')
return redirect(url_for("scopes"))
else:
r = g.server.get('/scopes')
centers = parse_scopes_from_tree(r.json(), 'center')
centers = [(center['id'], center['name']) for center in centers]
form.center.choices = list(centers)
return render_template('actions/delete_center.html', form=form)
@app.route('/action/room/add', methods=['GET', 'POST'])
@login_required
def action_room_add():