diff options
author | Jose M. Guisado <jguisado@soleta.eu> | 2021-06-16 10:30:39 +0000 |
---|---|---|
committer | OpenGnSys Support Team <soporte-og@soleta.eu> | 2021-06-17 09:58:11 +0200 |
commit | 3667db8662c1ee2ae058627447c4eda1898621ab (patch) | |
tree | 337bfc1c453db27b780a4c352898bd5763b7c06b /ogcp | |
parent | 514fb84a565e8bc9eb550164d545fa72d77c2b38 (diff) |
Add commands view and macros.html
Commands view has a scope sidebar with the content block filled with
command buttons (poweroff, wol, etc.)
This commit leaves scope create/delete/update buttons in the /scopes
view, which serves that purpose.
To avoid duplicating scope tree creation macro, an external macros.html
is created, this template can be imported. Future macros needed can be
written in there.
Diffstat (limited to 'ogcp')
-rw-r--r-- | ogcp/templates/commands.html | 44 | ||||
-rw-r--r-- | ogcp/templates/macros.html | 19 | ||||
-rw-r--r-- | ogcp/templates/nav.html | 2 | ||||
-rw-r--r-- | ogcp/templates/scopes.html | 47 | ||||
-rw-r--r-- | ogcp/views.py | 6 |
5 files changed, 73 insertions, 45 deletions
diff --git a/ogcp/templates/commands.html b/ogcp/templates/commands.html new file mode 100644 index 0000000..27af1b1 --- /dev/null +++ b/ogcp/templates/commands.html @@ -0,0 +1,44 @@ +{% extends 'base.html' %} +{% import "macros.html" as macros %} + +{% block nav_scopes %}active{% endblock %} + +{% block container %} + <form id="scopesForm"> + <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> + </form> + {{ super() }} +</form> +{% endblock %} + +{% block sidebar %} + {{ macros.print_scopes_tree(scopes["scope"]) }} +{% endblock %} + +{% block commands %} + <input class="btn btn-light" type="submit" value="{{ _('Power on (WoL)') }}" + form="scopesForm" formaction="{{ url_for('action_wol') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Power off') }}" + form="scopesForm" formaction="{{ url_for('action_poweroff') }}" formmethod="post"> + <input class="btn btn-light" type="submit" value="{{ _('Reboot') }}" + form="scopesForm" formaction="{{ url_for('action_reboot') }}" formmethod="post"> + <input class="btn btn-light" type="submit" value="{{ _('Refresh') }}" + form="scopesForm" formaction="{{ url_for('action_refresh') }}" formmethod="post"> + <input class="btn btn-light" type="submit" value="{{ _('Hardware') }}" + form="scopesForm" formaction="{{ url_for('action_hardware') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Software') }}" + form="scopesForm" formaction="{{ url_for('action_software') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Start session') }}" + form="scopesForm" formaction="{{ url_for('action_session') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Restore Image') }}" + form="scopesForm" formaction="{{ url_for('action_image_restore') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Partition & Format') }}" + form="scopesForm" formaction="{{ url_for('action_setup_show') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Client details') }}" + form="scopesForm" formaction="{{ url_for('action_client_info') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Create image') }}" + form="scopesForm" formaction="{{ url_for('action_image_create') }}" formmethod="get"> + <input class="btn btn-light" type="submit" value="{{ _('Set boot mode') }}" + form="scopesForm" formaction="{{ url_for('action_mode') }}" formmethod="get"> +{% endblock %} + diff --git a/ogcp/templates/macros.html b/ogcp/templates/macros.html new file mode 100644 index 0000000..d9d2997 --- /dev/null +++ b/ogcp/templates/macros.html @@ -0,0 +1,19 @@ +{% macro print_scopes_tree(scopes) -%} + + <ul class="list-group list-group-flush"> + {% for scope in scopes %} + <li class="list-group-item state--{{ scope['state'] | lower }}"> + <input class="form-check-input" type="checkbox" form="scopesForm" + value="{{ " ".join(scope["ip"]) }}" + name="{{ scope["name"] }}_{{ scope["id"] }}"> + {{ scope["name"] }} + {% if "state" in scope %} + -- STATE: {{ scope["state"] }} + {% endif %} + {{ print_scopes_tree(scope["scope"]) }} + </li> + {% endfor %} + </ul> + +{% endmacro %} + diff --git a/ogcp/templates/nav.html b/ogcp/templates/nav.html index f2ca3b5..dc40207 100644 --- a/ogcp/templates/nav.html +++ b/ogcp/templates/nav.html @@ -14,7 +14,7 @@ <a class="nav-link" href="{{ url_for('scopes') }}">{{ _('Scopes') }}</a> </li> <li class="nav-item {% if request.endpoint == "commands" %}active{% endif %}"> - <a class="nav-link" href="#">{{ _('Commands') }}</a> + <a class="nav-link" href="{{ url_for('commands') }}">{{ _('Commands') }}</a> </li> <li class="nav-item {% if request.endpoint == "images" %}active{% endif %}"> <a class="nav-link" href="#">{{ _('Images') }}</a> diff --git a/ogcp/templates/scopes.html b/ogcp/templates/scopes.html index 00f6883..1d931bb 100644 --- a/ogcp/templates/scopes.html +++ b/ogcp/templates/scopes.html @@ -1,24 +1,7 @@ {% extends 'base.html' %} -{% block nav_scopes %}active{% endblock %} - -{% macro print_scopes_tree(scopes) -%} +{% import "macros.html" as macros %} - <ul class="list-group list-group-flush"> - {% for scope in scopes %} - <li class="list-group-item state--{{ scope['state'] | lower }}"> - <input class="form-check-input" type="checkbox" form="scopesForm" - value="{{ " ".join(scope["ip"]) }}" - name="{{ scope["name"] }}_{{ scope["id"] }}"> - {{ scope["name"] }} - {% if "state" in scope %} - -- STATE: {{ scope["state"] }} - {% endif %} - {{ print_scopes_tree(scope["scope"]) }} - </li> - {% endfor %} - </ul> - -{% endmacro %} +{% block nav_scopes %}active{% endblock %} {% block container %} <form id="scopesForm"> @@ -29,36 +12,12 @@ {% endblock %} {% block sidebar %} - {{ print_scopes_tree(scopes["scope"]) }} + {{ macros.print_scopes_tree(scopes["scope"]) }} {% endblock %} {% block commands %} - <input class="btn btn-light" type="submit" value="{{ _('Power on (WoL)') }}" - form="scopesForm" formaction="{{ url_for('action_wol') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Power off') }}" - form="scopesForm" formaction="{{ url_for('action_poweroff') }}" formmethod="post"> - <input class="btn btn-light" type="submit" value="{{ _('Reboot') }}" - form="scopesForm" formaction="{{ url_for('action_reboot') }}" formmethod="post"> - <input class="btn btn-light" type="submit" value="{{ _('Refresh') }}" - form="scopesForm" formaction="{{ url_for('action_refresh') }}" formmethod="post"> - <input class="btn btn-light" type="submit" value="{{ _('Hardware') }}" - form="scopesForm" formaction="{{ url_for('action_hardware') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Software') }}" - form="scopesForm" formaction="{{ url_for('action_software') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Start session') }}" - form="scopesForm" formaction="{{ url_for('action_session') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Restore Image') }}" - form="scopesForm" formaction="{{ url_for('action_image_restore') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Partition & Format') }}" - form="scopesForm" formaction="{{ url_for('action_setup_show') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Client details') }}" - form="scopesForm" formaction="{{ url_for('action_client_info') }}" formmethod="get"> <input class="btn btn-light" type="submit" value="{{ _('Add client') }}" form="scopesForm" formaction="{{ url_for('action_client_add') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Create image') }}" - form="scopesForm" formaction="{{ url_for('action_image_create') }}" formmethod="get"> - <input class="btn btn-light" type="submit" value="{{ _('Set boot mode') }}" - form="scopesForm" formaction="{{ url_for('action_mode') }}" formmethod="get"> <input class="btn btn-light" type="submit" value="{{ _('Add room') }}" form="scopesForm" formaction="{{ url_for('action_room_add') }}" formmethod="get"> <input class="btn btn-light" type="submit" value="{{ _('Delete room') }}" diff --git a/ogcp/views.py b/ogcp/views.py index bb9eaeb..3e7c4e4 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -711,3 +711,9 @@ def action_room_delete(): for room in rooms] form.room.choices = list(rooms) return render_template('actions/delete_room.html', form=form) + +@app.route('/commands/', methods=['GET']) +@login_required +def commands(): + scopes, clients = get_scopes() + return render_template('commands.html', scopes=scopes, clients=clients) |