Add "Delete Room" form and view

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

Adds a new button inside the button group in the scopes view. Because
scopes checkboxes values maps to ips the only way to specify the room to
delete is in the delete room form itself, using a select input.
multi-ogserver
Javier Sánchez Parra 2021-05-11 15:21:11 +02:00 committed by OpenGnSys Support Team
parent f303240c55
commit 29480012e4
4 changed files with 47 additions and 1 deletions

View File

@ -98,3 +98,8 @@ class RoomForm(FlaskForm):
netmask = StringField(label=_('Netmask'),
validators=[InputRequired()])
submit = SubmitField(label=_('Submit'))
class DeleteRoomForm(FlaskForm):
room = SelectField(label=_('Room'),
validators=[InputRequired()])
submit = SubmitField(label=_('Submit'))

View File

@ -0,0 +1,15 @@
{% extends 'base.html' %}
{% import "bootstrap/wtf.html" as wtf %}
{% block content %}
<h1 class="m-5">{{_('Delete room form')}}</h1>
{{ wtf.quick_form(form,
action=url_for('action_room_delete'),
method='post',
button_map={'submit': 'primary'},
extra_classes="mx-5") }}
{% endblock %}

View File

@ -61,6 +61,8 @@
formaction="{{ url_for('action_mode') }}" formmethod="get">
<input class="dropdown-item" type="submit" value="{{ _('Add room') }}"
formaction="{{ url_for('action_room_add') }}" formmethod="get">
<input class="dropdown-item" type="submit" value="{{ _('Delete room') }}"
formaction="{{ url_for('action_room_delete') }}" formmethod="get">
</div>
</div>
</form>

View File

@ -3,7 +3,8 @@ from flask import (
)
from ogcp.forms.action_forms import (
WOLForm, PartitionForm, ClientDetailsForm, HardwareForm, SessionForm,
ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm, RoomForm
ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm, RoomForm,
DeleteRoomForm
)
from flask_login import (
current_user, LoginManager,
@ -90,6 +91,8 @@ def parse_scopes_from_tree(tree, scope_type):
scopes = []
for scope in tree['scope']:
if scope['type'] == scope_type:
if 'name' in tree:
scope['parent'] = tree['name']
scopes.append(scope)
else:
scopes += parse_scopes_from_tree(scope, scope_type)
@ -674,3 +677,24 @@ def action_room_add():
centers = [(center['id'], center['name']) for center in centers]
form.center.choices = list(centers)
return render_template('actions/add_room.html', form=form)
@app.route('/action/room/delete', methods=['GET', 'POST'])
@login_required
def action_room_delete():
form = DeleteRoomForm(request.form)
if request.method == 'POST':
payload = {"id": form.room.data}
r = g.server.post('/room/delete', payload)
if r.status_code != requests.codes.ok:
flash(_('Server replied with error code when deleting the room'),
category='error')
else:
flash(_('Room deleted successfully'), category='info')
return redirect(url_for("scopes"))
else:
r = g.server.get('/scopes')
rooms = parse_scopes_from_tree(r.json(), 'room')
rooms = [(room['id'], room['name'] + " (" + room['parent'] + ")")
for room in rooms]
form.room.choices = list(rooms)
return render_template('actions/delete_room.html', form=form)