summaryrefslogtreecommitdiffstats
path: root/ogcp/views.py
diff options
context:
space:
mode:
authorJavier Sánchez Parra <jsanchez@soleta.eu>2021-12-15 11:28:16 +0100
committerJavier Sánchez Parra <jsanchez@soleta.eu>2021-12-16 17:17:07 +0100
commite07c8afcce3f16739bbf9e8c52405f327f367977 (patch)
tree3c76acfcfacdb2ec62e7eeadc1190107ce494d54 /ogcp/views.py
parent695c19f86ec361db8b316358ac9a0609ecfb020f (diff)
Add set ogLive to commands
This action is related to /oglive in ogServer's API. Allows changing the ogLive for a set of given clients, previously selected in the /commands view.
Diffstat (limited to 'ogcp/views.py')
-rw-r--r--ogcp/views.py39
1 files changed, 38 insertions, 1 deletions
diff --git a/ogcp/views.py b/ogcp/views.py
index fe8d465..4f29f2f 100644
--- a/ogcp/views.py
+++ b/ogcp/views.py
@@ -11,7 +11,7 @@ from flask import (
from ogcp.forms.action_forms import (
WOLForm, SetupForm, ClientDetailsForm, ImageDetailsForm, HardwareForm,
SessionForm, ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm,
- RoomForm, DeleteRoomForm, CenterForm, DeleteCenterForm
+ RoomForm, DeleteRoomForm, CenterForm, DeleteCenterForm, OgliveForm
)
from flask_login import (
current_user, LoginManager,
@@ -666,6 +666,43 @@ def action_mode():
return render_template('actions/mode.html', form=form, scopes=scopes, clients=clients)
+@app.route('/action/oglive', methods=['GET', 'POST'])
+@login_required
+def action_oglive():
+ form = OgliveForm(request.form)
+ if request.method == 'POST':
+ ips = form.ips.data.split(' ')
+ payload = {'clients': ips, 'name': form.oglive.data}
+ r = g.server.post('/oglive/set', payload)
+ if r.status_code == requests.codes.ok:
+ flash(_('Client set ogLive request sent successfully'),
+ category='info')
+ else:
+ flash(_('Ogserver replied with status code not ok'),
+ category='error')
+ return redirect(url_for('commands'))
+
+ else:
+ r = g.server.get('/oglive/list')
+ if r.status_code != requests.codes.ok:
+ flash(_('Ogserver replied with status code not ok'),
+ category='error')
+ return redirect(url_for('commands'))
+ available_oglives = [(oglive.get('directory'), oglive.get('directory'))
+ for oglive in r.json()['oglive']]
+ available_oglives.insert(0, ('default', 'default'))
+ form.oglive.choices = list(available_oglives)
+
+ ips = parse_elements(request.args.to_dict())
+ form.ips.data = " ".join(ips)
+ if not validate_elements(ips):
+ return redirect(url_for('commands'))
+
+ form.ok.render_kw = {'formaction': url_for('action_oglive')}
+ scopes, clients = get_scopes(set(ips))
+ return render_template('actions/oglive.html', form=form, scopes=scopes)
+
+
@app.route('/action/image/create', methods=['GET', 'POST'])
@login_required
def action_image_create():