diff options
author | Javier Sánchez Parra <jsanchez@soleta.eu> | 2021-12-15 11:28:16 +0100 |
---|---|---|
committer | Javier Sánchez Parra <jsanchez@soleta.eu> | 2021-12-16 17:17:07 +0100 |
commit | e07c8afcce3f16739bbf9e8c52405f327f367977 (patch) | |
tree | 3c76acfcfacdb2ec62e7eeadc1190107ce494d54 /ogcp/views.py | |
parent | 695c19f86ec361db8b316358ac9a0609ecfb020f (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.py | 39 |
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(): |