mirror of https://git.48k.eu/ogcp
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.multi-ogserver
parent
a940fb185b
commit
ee2e7a86dd
|
@ -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>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue