From 45af740c1f3b012399fe00df9cdac9d8257913f3 Mon Sep 17 00:00:00 2001 From: "Jose M. Guisado" Date: Wed, 24 Feb 2021 12:21:21 +0100 Subject: Cosmetic enhacements * Use validate_ips and flashed messages for some more actions. * Use extra_classes in quick_form macro to add bootstrap classes to rendered forms --- ogcp/templates/actions/image_restore.html | 4 +++- ogcp/views.py | 36 +++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/ogcp/templates/actions/image_restore.html b/ogcp/templates/actions/image_restore.html index bbc760a..cf50b43 100644 --- a/ogcp/templates/actions/image_restore.html +++ b/ogcp/templates/actions/image_restore.html @@ -6,6 +6,8 @@ {{ wtf.quick_form(form, action=url_for('action_image_restore'), method='post', - button_map={'restore': 'primary'}) }} + button_map={'restore': 'primary'}, + extra_classes='m-5') }} + {% endblock %} diff --git a/ogcp/views.py b/ogcp/views.py index 339e335..7502067 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -36,10 +36,12 @@ PART_SCHEME_CODES = { def validate_ips(ips, min_len=1, max_len=float('inf')): valid = True if len(ips) < min_len: - flash(_(f'Please, select at least {min_len} computer(s)'), category='error') + flash(_(f'Please, select at least {min_len} computer(s)'), + category='error') valid = not valid elif len(ips) > max_len: - flash(_(f'No more than {max_len} computer(s) can be selected'), category='error') + flash(_(f'No more than {max_len} computer(s) can be selected for the given action'), + category='error') valid = not valid return valid @@ -323,6 +325,9 @@ def action_hardware(): return make_response("400 Bad Request", 400) else: ips = parse_ips(request.args.to_dict()) + if not validate_ips(ips, max_len=1): + return redirect(url_for('scopes')) + form.ips.data = ' '.join(ips) r = g.server.get('/hardware', payload={'client': list(ips)}) hardware = r.json()['hardware'] @@ -353,6 +358,9 @@ def action_software(): return make_response("400 Bad Request", 400) else: ips = parse_ips(request.args.to_dict()) + if not validate_ips(ips, max_len=1): + return redirect(url_for('scopes')) + form.ips.data = ' '.join(ips) r = g.server.get('/client/setup', payload={'client': list(ips)}) @@ -379,6 +387,9 @@ def action_session(): return make_response("400 Bad Request", 400) else: ips = parse_ips(request.args.to_dict()) + if not validate_ips(ips, max_len=1): + return redirect(url_for('scopes')) + form.ips.data = ' '.join(ips) r = g.server.get('/session', payload={'client': list(ips)}) sessions = r.json()['sessions'] @@ -392,6 +403,9 @@ def action_session(): def action_client_info(): form = ClientDetailsForm() ips = parse_ips(request.args.to_dict()) + if not validate_ips(ips, max_len=1): + return redirect(url_for("scopes")) + payload = {'client': list(ips)} r = g.server.get('/client/info', payload) db_client = r.json() @@ -533,13 +547,27 @@ def action_image_create(): @app.route('/action/reboot', methods=['POST']) def action_reboot(): ips = parse_ips(request.form.to_dict()) + if not validate_ips(ips): + return redirect(url_for('scopes')) + payload = {'clients': list(ips)} - g.server.post('/reboot', payload) + r = g.server.post('/reboot', payload) + if r.status_code != requests.codes.ok: + flash(_('OgServer replied with a non ok status code'), category='error') + else: + flash(_('Refresh request processed successfully'), category='info') return redirect(url_for("scopes")) @app.route('/action/refresh', methods=['POST']) def action_refresh(): ips = parse_ips(request.form.to_dict()) + if not validate_ips(ips): + return redirect(url_for('scopes')) + payload = {'clients': list(ips)} - g.server.post('/refresh', payload) + r = g.server.post('/refresh', payload) + if r.status_code != requests.codes.ok: + flash(_('OgServer replied with a non ok status code'), category='error') + else: + flash(_('Refresh request processed successfully'), category='info') return redirect(url_for("scopes")) -- cgit v1.2.3-18-g5258