summaryrefslogtreecommitdiffstats
path: root/ogcp
diff options
context:
space:
mode:
authorJose M. Guisado <jguisado@soleta.eu>2022-02-23 11:10:02 +0100
committerJose M. Guisado <jguisado@soleta.eu>2022-02-23 11:42:25 +0100
commitee2e7a86dda2b93223716d81f78f0885f9cfe032 (patch)
treeee011c9baf94db7e902705482794b815989514ba /ogcp
parenta940fb185bca424830d1e07e7630b5b13752c6d9 (diff)
Improve software inventory command
Extend commands.html template to keep scope tree, and action buttons state. When in the software inventory view, there exists two options: 'update' or 'view'. Do not print raw json response from ogserver about the software inventory/profile. When vieweing the software list, print a html table using the new template: software_list.html. Do not print blank pages with plain text html error codes when something goes wrong. Instead, print an error message after redirecting to the commands view.
Diffstat (limited to 'ogcp')
-rw-r--r--ogcp/templates/actions/software.html4
-rw-r--r--ogcp/templates/actions/software_list.html29
-rw-r--r--ogcp/views.py17
3 files changed, 43 insertions, 7 deletions
diff --git a/ogcp/templates/actions/software.html b/ogcp/templates/actions/software.html
index 71dc0ae..9393537 100644
--- a/ogcp/templates/actions/software.html
+++ b/ogcp/templates/actions/software.html
@@ -1,6 +1,8 @@
-{% extends 'base.html' %}
+{% extends 'commands.html' %}
{% import "bootstrap/wtf.html" as wtf %}
+{% block nav_inventory %} active{% endblock %}
+{% block nav_inventory_software %} active{% endblock %}
{% block content %}
<h1 class="m-5">{{_('Software Inventory')}}</h1>
diff --git a/ogcp/templates/actions/software_list.html b/ogcp/templates/actions/software_list.html
new file mode 100644
index 0000000..8c50edb
--- /dev/null
+++ b/ogcp/templates/actions/software_list.html
@@ -0,0 +1,29 @@
+{% extends 'commands.html' %}
+{% import "bootstrap/wtf.html" as wtf %}
+
+{% block nav_inventory %} active{% endblock %}
+{% block nav_inventory_software %} active{% endblock %}
+{% block content %}
+
+<h1 class="m-5">{{_('Software inventory')}}</h1>
+
+<h2 class="mb-3 mx-5">{{ _('Selected client:') }} {{ form.ips.data }}</h1>
+
+<table class="table table-striped">
+ <thead class="thead-dark">
+ <tr>
+ <th scope="col">{{ _('Item') }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for item in software %}
+ <tr>
+ <td>{{ item }}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+</table>
+
+
+{% endblock %}
+
diff --git a/ogcp/views.py b/ogcp/views.py
index c60bd08..49f5122 100644
--- a/ogcp/views.py
+++ b/ogcp/views.py
@@ -505,19 +505,24 @@ def action_software():
'disk': int(disk),
'partition': int(partition)})
if r.status_code == requests.codes.ok:
- return r.json()
-
+ software = r.json()['software']
+ scopes, clients = get_scopes(set(ips))
+ return render_template('actions/software_list.html',
+ software=software, form=form, scopes=scopes)
elif form.update.data:
r = g.server.post('/software', payload={'clients': ips,
'disk': disk,
'partition': partition})
if r.status_code == requests.codes.ok:
flash(_('Software profile request sent successfully'), category='info')
- return redirect(url_for('commands'))
- flash(_('Error processing software profile request: ({})').format(r.status), category='error')
- return make_response("400 Bad Request", 400)
+ else:
+ flash(_('Error processing software profile request: ({})').format(r.status), category='error')
+ else:
+ flash(_('Error processing software profile form'), category='error')
+ return redirect(url_for('commands'))
else:
ips = parse_elements(request.args.to_dict())
+ scopes, clients = get_scopes(set(ips))
if not validate_elements(ips, max_len=1):
return redirect(url_for('commands'))
@@ -531,7 +536,7 @@ def action_software():
f"| {PART_TYPE_CODES[part.get('code')]} "
f"{FS_CODES[part.get('filesystem')]}")
)
- return render_template('actions/software.html', form=form)
+ return render_template('actions/software.html', form=form, scopes=scopes)
@app.route('/action/session', methods=['GET', 'POST'])
@login_required