mirror of https://git.48k.eu/ogcp
Create "Add Room" form and view
Creates "add room" form with required inputs only: center, name and netmask. 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 center in which to add the room is in the add room form itself, using a select input. In the future, the RoomForm can be used to display room information once such functionality lands in the ogserver.multi-ogserver
parent
5e46157060
commit
f303240c55
|
@ -89,3 +89,12 @@ class ImageCreateForm(FlaskForm):
|
|||
validators=[InputRequired()])
|
||||
description = StringField(label=_('Description'))
|
||||
create = SubmitField(label=_('Create'))
|
||||
|
||||
class RoomForm(FlaskForm):
|
||||
center = SelectField(label=_('Center'),
|
||||
validators=[InputRequired()])
|
||||
name = StringField(label=_('Room name'),
|
||||
validators=[InputRequired()])
|
||||
netmask = StringField(label=_('Netmask'),
|
||||
validators=[InputRequired()])
|
||||
submit = SubmitField(label=_('Submit'))
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
{% extends 'base.html' %}
|
||||
{% import "bootstrap/wtf.html" as wtf %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1 class="m-5">{{_('Add room form')}}</h1>
|
||||
|
||||
{{ wtf.quick_form(form,
|
||||
action=url_for('action_room_add'),
|
||||
method='post',
|
||||
button_map={'submit': 'primary'},
|
||||
extra_classes="mx-5") }}
|
||||
|
||||
{% endblock %}
|
||||
|
|
@ -59,6 +59,8 @@
|
|||
formaction="{{ url_for('action_image_create') }}" formmethod="get">
|
||||
<input class="dropdown-item" type="submit" value="{{ _('Set boot mode') }}"
|
||||
formaction="{{ url_for('action_mode') }}" formmethod="get">
|
||||
<input class="dropdown-item" type="submit" value="{{ _('Add room') }}"
|
||||
formaction="{{ url_for('action_room_add') }}" formmethod="get">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -3,7 +3,7 @@ from flask import (
|
|||
)
|
||||
from ogcp.forms.action_forms import (
|
||||
WOLForm, PartitionForm, ClientDetailsForm, HardwareForm, SessionForm,
|
||||
ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm
|
||||
ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm, RoomForm
|
||||
)
|
||||
from flask_login import (
|
||||
current_user, LoginManager,
|
||||
|
@ -653,3 +653,24 @@ def action_refresh():
|
|||
else:
|
||||
flash(_('Refresh request processed successfully'), category='info')
|
||||
return redirect(url_for("scopes"))
|
||||
|
||||
@app.route('/action/room/add', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def action_room_add():
|
||||
form = RoomForm(request.form)
|
||||
if request.method == 'POST':
|
||||
payload = {"center": int(form.center.data),
|
||||
"name": form.name.data,
|
||||
"netmask": form.netmask.data}
|
||||
r = g.server.post('/room/add', payload)
|
||||
if r.status_code != requests.codes.ok:
|
||||
flash(_('Server replied with error code when adding the room'), category='error')
|
||||
else:
|
||||
flash(_('Room added 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/add_room.html', form=form)
|
||||
|
|
Loading…
Reference in New Issue