1
Fork 0
mirror of https://github.com/Steffo99/estus.git synced 2024-11-21 23:24:18 +00:00

Add clone device feature

This commit is contained in:
Steffo 2017-09-18 15:04:22 +02:00
parent f2a695aafa
commit 851e80a2f7
4 changed files with 61 additions and 4 deletions

View file

@ -6,6 +6,7 @@ Il nuovo inventario per il CED dell'[Unione Terre di Castelli](http://www.terred
- Aggiunta nuovi dispositivi tramite codice a barre - Aggiunta nuovi dispositivi tramite codice a barre
- Semplificati o rimossi molti dei campi inutilizzati del vecchio inventario - Semplificati o rimossi molti dei campi inutilizzati del vecchio inventario
- Innovativa e sperimentale modalità di visualizzazione dati dell'inventario: la **IttioVision** :fish:! - Innovativa e sperimentale modalità di visualizzazione dati dell'inventario: la **IttioVision** :fish:!
- Clona dispositivi per non dover rimettere gli stessi dati duecentomila volte
## Installazione ## Installazione
- Clonare il repository su un computer con installato Apache 2 utilizzando `git clone git@github.com:Steffo99/estus.git`. - Clonare il repository su un computer con installato Apache 2 utilizzando `git clone git@github.com:Steffo99/estus.git`.

View file

@ -547,7 +547,7 @@ def page_disp_show(did):
opzioni = ["Centralino", "Dispositivo generico di rete", "Marcatempo", "PC", "Portatile", "POS", "Router", opzioni = ["Centralino", "Dispositivo generico di rete", "Marcatempo", "PC", "Portatile", "POS", "Router",
"Server", "Stampante di rete", "Switch", "Telefono IP", "Monitor", "Scanner", "Stampante locale"] "Server", "Stampante di rete", "Switch", "Telefono IP", "Monitor", "Scanner", "Stampante locale"]
reti = Rete.query.order_by(Rete.nome).all() reti = Rete.query.order_by(Rete.nome).all()
return render_template("dispositivo/show.htm", dispositivo=disp, accessi=accessi, impiegati=impiegati, return render_template("dispositivo/show.htm", action="show", dispositivo=disp, accessi=accessi, impiegati=impiegati,
pagetype="disp", user=session.get("username"), opzioni=opzioni, reti=reti) pagetype="disp", user=session.get("username"), opzioni=opzioni, reti=reti)
else: else:
disp = Dispositivo.query.get_or_404(did) disp = Dispositivo.query.get_or_404(did)
@ -590,6 +590,53 @@ def page_disp_show(did):
return redirect(url_for('page_disp_list')) return redirect(url_for('page_disp_list'))
@app.route('/disp_clone/<int:did>', methods=['GET', 'POST'])
def page_disp_clone(did):
if 'username' not in session:
return abort(403)
if request.method == 'GET':
disp = Dispositivo.query.get_or_404(did)
accessi = Accesso.query.filter_by(did=did).all()
impiegati = Impiegato.query.order_by(Impiegato.nomeimpiegato).all()
opzioni = ["Centralino", "Dispositivo generico di rete", "Marcatempo", "PC", "Portatile", "POS", "Router",
"Server", "Stampante di rete", "Switch", "Telefono IP", "Monitor", "Scanner", "Stampante locale"]
reti = Rete.query.order_by(Rete.nome).all()
return render_template("dispositivo/show.htm", action="clone", dispositivo=disp, accessi=accessi, impiegati=impiegati,
pagetype="disp", user=session.get("username"), opzioni=opzioni, reti=reti)
else:
if request.form["inv_ced"]:
try:
int(request.form["inv_ced"])
except ValueError:
return render_template("error.htm", error="Il campo Inventario CED deve contenere un numero.")
if request.form["inv_ente"]:
try:
int(request.form["inv_ente"])
except ValueError:
return render_template("error.htm", error="Il campo Inventario ente deve contenere un numero.")
nuovodisp = Dispositivo(request.form['tipo'], request.form['marca'], request.form['modello'],
int(request.form['inv_ced']) if request.form['inv_ced'] else None,
int(request.form['inv_ente']) if request.form['inv_ente'] else None,
request.form['fornitore'], request.form['rete'], request.form['seriale'],
request.form['ip'])
db.session.add(nuovodisp)
db.session.commit()
# Trova tutti gli utenti, edizione sporco hack in html
users = list()
while True:
# Trova tutti gli utenti esistenti
userstring = 'utente{}'.format(len(users))
if userstring in request.form:
users.append(request.form[userstring])
else:
break
for user in users:
nuovologin = Accesso(int(user), nuovodisp.did)
db.session.add(nuovologin)
db.session.commit()
return redirect(url_for('page_disp_list'))
@app.route('/net_add', methods=['GET', 'POST']) @app.route('/net_add', methods=['GET', 'POST'])
def page_net_add(): def page_net_add():
"""Pagina di creazione nuova rete: """Pagina di creazione nuova rete:

View file

@ -27,7 +27,12 @@
<td>{{ d[0].dispositivo.modello }}</td> <td>{{ d[0].dispositivo.modello }}</td>
<td>{{ d[0].dispositivo.fornitore }}</td> <td>{{ d[0].dispositivo.fornitore }}</td>
<td>{{ d[0].dispositivo.seriale }}</td> <td>{{ d[0].dispositivo.seriale }}</td>
<td><a href="/disp_details/{{ d[0].did }}"><span class="glyphicon glyphicon-zoom-in"></span></a> <a href="/disp_show/{{ d[0].did }}"><span class="glyphicon glyphicon-pencil"></span></a> <a href="/disp_del/{{ d[0].did }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td>
<a href="/disp_details/{{ d[0].did }}" title="Dettagli"><span class="glyphicon glyphicon-zoom-in"></span></a>
<a href="/disp_show/{{ d[0].did }}" title="Modifica"><span class="glyphicon glyphicon-pencil"></span></a>
<a href="/disp_clone/{{ d[0].did }}" title="Clona"><span class="glyphicon glyphicon-duplicate"></span></a>
<a href="/disp_del/{{ d[0].did }}" title="Elimina"><span class="glyphicon glyphicon-remove"></span></a>
</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>

View file

@ -36,9 +36,13 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <h1>
Modifica dispositivo {% if action == "show" %}
Modifica dispositivo
{% elif action == "clone" %}
Clona dispositivo
{% endif %}
</h1> </h1>
<form class="form-horizontal" action="/disp_show/{{ dispositivo.did }}" method="post"> <form class="form-horizontal" action="/disp_{{ action }}/{{ dispositivo.did }}" method="post">
<div class="form-group"> <div class="form-group">
<label class="col-xs-2" for="">Tipo dispositivo</label> <label class="col-xs-2" for="">Tipo dispositivo</label>
<div class="col-xs-10"> <div class="col-xs-10">