FUSS issueshttps://gitlab.fuss.bz.it/groups/fuss/-/issues2020-08-26T09:27:29Zhttps://gitlab.fuss.bz.it/fuss/octomon/-/issues/1Migrazione octomon a django2020-08-26T09:27:29ZChristopher R. GabrielMigrazione octomon a django<!--_Originally created by @Christopher R. Gabriel on [#1 (Redmine)](http://www.example.org/issues/1)_-->
Migrazione totale di octomon da TG a Django.
Ticket master per segnare l’andamento percentuale totale.
### Subtasks
- [...<!--_Originally created by @Christopher R. Gabriel on [#1 (Redmine)](http://www.example.org/issues/1)_-->
Migrazione totale di octomon da TG a Django.
Ticket master per segnare l’andamento percentuale totale.
### Subtasks
- [x] fuss/octomon#2
- [x] fuss/octomon#3
- [x] fuss/octomon#4Mark CaglienziMark Caglienzihttps://gitlab.fuss.bz.it/fuss/octomon/-/issues/2Passare a Bootstrap2020-08-26T09:27:28ZChristopher R. GabrielPassare a Bootstrap<!--_Originally created by @Christopher R. Gabriel on [#2 (Redmine)](http://www.example.org/issues/2)_-->
Durante la migraziona a django, passiamo all’uso di bootstrap per i
templates.
Parent Task: fuss/octomon#1<!--_Originally created by @Christopher R. Gabriel on [#2 (Redmine)](http://www.example.org/issues/2)_-->
Durante la migraziona a django, passiamo all’uso di bootstrap per i
templates.
Parent Task: fuss/octomon#1Mark CaglienziMark Caglienzihttps://gitlab.fuss.bz.it/fuss/octomon/-/issues/3Grafici2020-08-26T09:27:27ZChristopher R. GabrielGrafici<!--_Originally created by @Christopher R. Gabriel on [#3 (Redmine)](http://www.example.org/issues/3)_-->
I grafici valutare se renderli interattivi/javascriptosi via flot
piuttosto che generare immagini.
Parent Task: fuss/octomon#1<!--_Originally created by @Christopher R. Gabriel on [#3 (Redmine)](http://www.example.org/issues/3)_-->
I grafici valutare se renderli interattivi/javascriptosi via flot
piuttosto che generare immagini.
Parent Task: fuss/octomon#1Mark CaglienziMark Caglienzihttps://gitlab.fuss.bz.it/fuss/octomon/-/issues/4Mantenere storico dati2020-08-26T09:27:25ZChristopher R. GabrielMantenere storico dati<!--_Originally created by @Christopher R. Gabriel on [#4 (Redmine)](http://www.example.org/issues/4)_-->
Bisogna mantenere lo storico dei dati. Per gli utenti si puo’ passare ad
usare la struttura di Django, visto che sono LDAP e sono ...<!--_Originally created by @Christopher R. Gabriel on [#4 (Redmine)](http://www.example.org/issues/4)_-->
Bisogna mantenere lo storico dei dati. Per gli utenti si puo’ passare ad
usare la struttura di Django, visto che sono LDAP e sono pochi, ma tutti
gli altri sono tanti dati.
Valutare se importarli dopo in una nuova struttura, oppure riciclare
quella attuale, aggiornando solo la parte degli utenti.
ATTENZIONE: tanti dati sono legati agli utenti per ID, quindi bisognera’
riallinearli.
### Attachments
* [octomonschema.sql](https://work.fuss.bz.it/attachments/download/1/octomonschema.sql)
* [inspectdb-models.py](https://work.fuss.bz.it/attachments/download/2/inspectdb-models.py)
Parent Task: fuss/octomon#1Mark CaglienziMark Caglienzihttps://gitlab.fuss.bz.it/fuss/octomon/-/issues/5Mappa2020-08-26T09:27:24ZMark CaglienziMappa<!--_Originally created by @Mark Caglienzi on [#5 (Redmine)](http://www.example.org/issues/5)_-->
Scrivo qui le cose fatte riguardo alla mappa, così da mantenere un log e
da discutere in caso ce ne sia bisogno.
Cose fatte al commit f8c...<!--_Originally created by @Mark Caglienzi on [#5 (Redmine)](http://www.example.org/issues/5)_-->
Scrivo qui le cose fatte riguardo alla mappa, così da mantenere un log e
da discutere in caso ce ne sia bisogno.
Cose fatte al commit f8cdb52c:
- Aggiunta di OpenLayers
- Uso di OpenStreetMap anziché Google Maps
- Caricamento dei dati delle scuole con `$.getJSON()` tramite la view
`get_schools_json()`
- Autozoom onload della mappa per includere tutte le scuole nella
vista iniziale
- La view `home` fa un redirect a `locationmap`
Cose ancora da fare/aggiustare:
- I popup sui pin delle scuole
- Tutti i pin sono verdi perché non ho ancora incorporato i modelli
degli allarmi
- Manca la colonna di sinistra a fianco della mappa stessaMark CaglienziMark Caglienzihttps://gitlab.fuss.bz.it/fuss/octomon/-/issues/6USE_TZ, datetime, e fusi orari2020-08-26T09:27:23ZMark CaglienziUSE_TZ, datetime, e fusi orari<!--_Originally created by @Mark Caglienzi on [#6 (Redmine)](http://www.example.org/issues/6)_-->
Django di default setta `USE_TZ=True` nel `settings.py`.
Leggendo nella
[documentazione](https://docs.djangoproject.com/en/1.4/topics/i1...<!--_Originally created by @Mark Caglienzi on [#6 (Redmine)](http://www.example.org/issues/6)_-->
Django di default setta `USE_TZ=True` nel `settings.py`.
Leggendo nella
[documentazione](https://docs.djangoproject.com/en/1.4/topics/i18n/timezones/#overview)
vedo che con il supporto TZ attivo, Django usa orari UTC internamente e
nel database, e presenta nei template i valori rapportati al fuso orario
dell’utente.
Facendo la parte degli allarmi, mi sono accorto che vedevo gli orari
spostati avanti di 2 ore rispetto al sito in turbogears.
Ho dedotto che Django interpretasse i valori nel database MySQL come
UTC, aggiungesse le 2 ore durante la visualizzazione nel template, e che
il database MySQL avesse gli stessi valori che poi vengono visualizzati
dai template dell’applicazione turbogears.
Nel commit 09a1d475 ho settato `USE_TZ=False` e ora gli orari
visualizzati da Django e da turbogears combaciano.
È una soluzione corretta, oppure serve un supporto TZ più avanzato, e
quindi si deve risettare `USE_TZ=True` e trovare un’altra maniera per
portare avanti le cose?
Ho agito così per fare in modo che comunque Django non salvasse valori
diversi da quelli visualizzati a schermo, un domani che l’applicazione
sarà in produzione, per evitare di avere il database con i valori vecchi
in localtime e quelli nuovi in utc.https://gitlab.fuss.bz.it/fuss/octomon/-/issues/7Database MySQL nuovo Octomon e integrazione con il vecchio...2020-08-26T09:27:22ZMark CaglienziDatabase MySQL nuovo Octomon e integrazione con il vecchio...<!--_Originally created by @Mark Caglienzi on [#7 (Redmine)](http://www.example.org/issues/7)_-->
Dunque, premetto che non sono espertissimo di database.
La situazione attuale è questa:
1\. Il vecchio DB usa MyISAM come storage engi...<!--_Originally created by @Mark Caglienzi on [#7 (Redmine)](http://www.example.org/issues/7)_-->
Dunque, premetto che non sono espertissimo di database.
La situazione attuale è questa:
1\. Il vecchio DB usa MyISAM come storage engine (che pare fosse il
default anni fa)
2\. Django di default usa InnoDB, fra poche righe sarà chiaro il motivo
(in ogni caso si può dirgli tranquillamente di usare MyISAM, è una riga
di `settings.py`)
Differenze fra i due storage engine? Questo è quello che ho dedotto
leggendo la documentazione di MySQL (un sysadmin o un dbadmin potrebbero
bruciarmi con lo sguardo..):
MyISAM
<https://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html>
Per farla breve, non supporta le transazioni né i vincoli di ForeignKey
InnoDB:
<https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html>
Supporta sia le transazioni, che i vincoli di ForeignKey.
A quando pare le FK con le tabelle MyISAM sono semplicemente dei campi
int, e MySQL non si occupa del controllo del vincolo dato che non c’è
supporto a livello di storage engine.
La documentazione di MySQL dice che è possibile migrare da MyISAM a
InnoDB, ma si va un po’ troppo sul tecnico per le mie conoscenze:
<https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html>
Probabilmente la mossa più corretta sarebbe quella di migrare il vecchio
db a InnoDB e lasciare Django col default.
Nell’ambiente di test (MySQL in locale con il dump del db di produzione)
ho avuto problemi col primo esperimento perché i vincoli intertabella
non funzionano se gli storage engine sono diversi (pagina di errore di
Django).
Però mi viene qualche dubbio, in primis questo:
Dato che MyISAM è “di manica larga”, a differenza di InnoDB che “fa il
database anziché fare finta”, cosa succede durante la migrazione in caso
di vincoli non rispettati nelle tabelle MyISAM?Christopher R. GabrielChristopher R. Gabrielhttps://gitlab.fuss.bz.it/fuss/octomon/-/issues/8Controlli su utenti e permessi, e cosa può vedere ogni utente2020-08-26T09:27:21ZMark CaglienziControlli su utenti e permessi, e cosa può vedere ogni utente<!--_Originally created by @Mark Caglienzi on [#8 (Redmine)](http://www.example.org/issues/8)_-->
- Tutte le view sono protette dal decoratore @`login_required`
- Prima dell’integrazione degli utenti, non c’erano controlli su cosa
...<!--_Originally created by @Mark Caglienzi on [#8 (Redmine)](http://www.example.org/issues/8)_-->
- Tutte le view sono protette dal decoratore @`login_required`
- Prima dell’integrazione degli utenti, non c’erano controlli su cosa
si potesse vedere (tutti gli utenti vedevano tutto)
Controlli aggiunti, situazione commit ec39a0a4:
- ‘My School’: vengono visualizzate solo le scuole amministrate
dall’utente attualmente loggato (mediante la m2m
`School.managed`), come si era già detto al telefono ieri. Un
superuser le vede tutte, ovviamente.
- Se un utente non ha scuole, viene visualizzato un messaggio nella
pagina.
Aggiunta la lista degli utenti che amministrano la scuola in
`show_school.html`, con link a una nuova view chiamata `review_user()`
che contiene le stesse informazioni del vecchio Octomon (nome, mail,
elenco delle scuole amministrate).Christopher R. GabrielChristopher R. Gabrielhttps://gitlab.fuss.bz.it/fuss/fuss-server/-/issues/35Server di stampa Pykota2020-08-26T09:25:47ZMassimo.PrevidiServer di stampa Pykota<!--_Originally created by @Massimo Previdi on [#35 (Redmine)](http://www.example.org/issues/35)_-->
Su sollecito del referente icbz2,
(alle don bosco consumano troppo toner stampanti)
torno “alla carica” sulla possibilità di inserir...<!--_Originally created by @Massimo Previdi on [#35 (Redmine)](http://www.example.org/issues/35)_-->
Su sollecito del referente icbz2,
(alle don bosco consumano troppo toner stampanti)
torno “alla carica” sulla possibilità di inserire delle quote stampa.
Ezio aveva segnalato il
link:
<http://www.linuxtrent.it/documentazione/pillole-e-annotazioni-tecniche/pillola-48-configurare-server-di-stampa-cups-pykota-qu>
Per favore Andrea chiedi a Simone Piccardi se la cosa è fattibile
grazie
MassimoSimone PiccardiSimone Piccardihttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/65OctonetMixin.octofuss_apps(): caching in request.session2020-08-26T09:29:59ZEnrico ZiniOctonetMixin.octofuss_apps(): caching in request.session<!--_Originally created by @Enrico Zini on [#65 (Redmine)](http://www.example.org/issues/65)_-->
To speed up requests especially when working on remote octofussd
servers, we can cache the list of detected app names in the session, and
r...<!--_Originally created by @Enrico Zini on [#65 (Redmine)](http://www.example.org/issues/65)_-->
To speed up requests especially when working on remote octofussd
servers, we can cache the list of detected app names in the session, and
reuse them on further queries.Enrico ZiniEnrico Zinihttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/66Handle octofussd connection refused error2020-08-26T09:29:59ZChristopher R. GabrielHandle octofussd connection refused error<!--_Originally created by @Christopher R. Gabriel on [#66 (Redmine)](http://www.example.org/issues/66)_-->
If the octofussd backend is not running or not reachable (for remote
usage), the connection refused is now an unhandled exceptio...<!--_Originally created by @Christopher R. Gabriel on [#66 (Redmine)](http://www.example.org/issues/66)_-->
If the octofussd backend is not running or not reachable (for remote
usage), the connection refused is now an unhandled exception.
We need to handle it and show the user a proper error message/page.Enrico ZiniEnrico Zinihttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/67Base template2020-08-26T09:29:57ZEnrico ZiniBase template<!--_Originally created by @Enrico Zini on [#67 (Redmine)](http://www.example.org/issues/67)_-->
Fare una prima versione del template di base per octonet, con:
- nome utente loggato (se loggato)
- nome server corrente (se loggato)
...<!--_Originally created by @Enrico Zini on [#67 (Redmine)](http://www.example.org/issues/67)_-->
Fare una prima versione del template di base per octonet, con:
- nome utente loggato (se loggato)
- nome server corrente (se loggato)
- elenco app attive (se loggato)
- link al logout (se loggato)
- link al login (se non loggato)Christopher R. GabrielChristopher R. Gabrielhttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/68App hostqueue2020-08-26T09:29:56ZEnrico ZiniApp hostqueue<!--_Originally created by @Enrico Zini on [#68 (Redmine)](http://www.example.org/issues/68)_-->
Porting del vecchio plugin hostqueue.<!--_Originally created by @Enrico Zini on [#68 (Redmine)](http://www.example.org/issues/68)_-->
Porting del vecchio plugin hostqueue.Enrico ZiniEnrico Zinihttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/69App firewall2020-08-26T09:29:55ZEnrico ZiniApp firewall<!--_Originally created by @Enrico Zini on [#69 (Redmine)](http://www.example.org/issues/69)_-->
Porting del vecchio plugin firewall<!--_Originally created by @Enrico Zini on [#69 (Redmine)](http://www.example.org/issues/69)_-->
Porting del vecchio plugin firewallEnrico ZiniEnrico Zinihttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/70App dansguardian2020-08-26T09:29:54ZEnrico ZiniApp dansguardian<!--_Originally created by @Enrico Zini on [#70 (Redmine)](http://www.example.org/issues/70)_-->
Porting del vecchio plugin dansguardian<!--_Originally created by @Enrico Zini on [#70 (Redmine)](http://www.example.org/issues/70)_-->
Porting del vecchio plugin dansguardianEnrico ZiniEnrico Zinihttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/71App host2020-08-26T09:29:52ZEnrico ZiniApp host<!--_Originally created by @Enrico Zini on [#71 (Redmine)](http://www.example.org/issues/71)_-->
Porting del vecchio plugin host<!--_Originally created by @Enrico Zini on [#71 (Redmine)](http://www.example.org/issues/71)_-->
Porting del vecchio plugin hostChristopher R. GabrielChristopher R. Gabrielhttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/72App polygen2020-08-26T09:29:51ZEnrico ZiniApp polygen<!--_Originally created by @Enrico Zini on [#72 (Redmine)](http://www.example.org/issues/72)_-->
Porting del vecchio plugin polygen<!--_Originally created by @Enrico Zini on [#72 (Redmine)](http://www.example.org/issues/72)_-->
Porting del vecchio plugin polygenEnrico ZiniEnrico Zinihttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/73App samba2020-08-26T09:29:50ZEnrico ZiniApp samba<!--_Originally created by @Enrico Zini on [#73 (Redmine)](http://www.example.org/issues/73)_-->
Porting del vecchio plugin samba<!--_Originally created by @Enrico Zini on [#73 (Redmine)](http://www.example.org/issues/73)_-->
Porting del vecchio plugin sambaChristopher R. GabrielChristopher R. Gabrielhttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/74App script2020-08-26T09:29:49ZEnrico ZiniApp script<!--_Originally created by @Enrico Zini on [#74 (Redmine)](http://www.example.org/issues/74)_-->
Porting del vecchio plugin script<!--_Originally created by @Enrico Zini on [#74 (Redmine)](http://www.example.org/issues/74)_-->
Porting del vecchio plugin scriptChristopher R. GabrielChristopher R. Gabrielhttps://gitlab.fuss.bz.it/fuss/octonet/-/issues/75App upgrade2020-08-26T09:29:48ZEnrico ZiniApp upgrade<!--_Originally created by @Enrico Zini on [#75 (Redmine)](http://www.example.org/issues/75)_-->
Porting del vecchio plugin upgrade<!--_Originally created by @Enrico Zini on [#75 (Redmine)](http://www.example.org/issues/75)_-->
Porting del vecchio plugin upgradeEnrico ZiniEnrico Zini