diff --git a/docs/build/doctrees/development/conclusions.doctree b/docs/build/doctrees/development/conclusions.doctree index 1138924..f8da109 100644 Binary files a/docs/build/doctrees/development/conclusions.doctree and b/docs/build/doctrees/development/conclusions.doctree differ diff --git a/docs/build/doctrees/development/process.doctree b/docs/build/doctrees/development/process.doctree index bf386f7..ec15f27 100644 Binary files a/docs/build/doctrees/development/process.doctree and b/docs/build/doctrees/development/process.doctree differ diff --git a/docs/build/doctrees/development/sprint0/index.doctree b/docs/build/doctrees/development/sprint0/index.doctree index f8f0c97..0adfddd 100644 Binary files a/docs/build/doctrees/development/sprint0/index.doctree and b/docs/build/doctrees/development/sprint0/index.doctree differ diff --git a/docs/build/doctrees/development/sprint1/index.doctree b/docs/build/doctrees/development/sprint1/index.doctree index 88266fe..0158545 100644 Binary files a/docs/build/doctrees/development/sprint1/index.doctree and b/docs/build/doctrees/development/sprint1/index.doctree differ diff --git a/docs/build/doctrees/development/sprint2/index.doctree b/docs/build/doctrees/development/sprint2/index.doctree index 9c588c4..2ba821b 100644 Binary files a/docs/build/doctrees/development/sprint2/index.doctree and b/docs/build/doctrees/development/sprint2/index.doctree differ diff --git a/docs/build/doctrees/development/sprint3/index.doctree b/docs/build/doctrees/development/sprint3/index.doctree index 553dcf8..5f0ca64 100644 Binary files a/docs/build/doctrees/development/sprint3/index.doctree and b/docs/build/doctrees/development/sprint3/index.doctree differ diff --git a/docs/build/doctrees/development/suggestions.doctree b/docs/build/doctrees/development/suggestions.doctree index 829697f..9fd77af 100644 Binary files a/docs/build/doctrees/development/suggestions.doctree and b/docs/build/doctrees/development/suggestions.doctree differ diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 6d8cbec..f7bf969 100644 Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/guide/installation.doctree b/docs/build/doctrees/guide/installation.doctree index 591bade..82210b2 100644 Binary files a/docs/build/doctrees/guide/installation.doctree and b/docs/build/doctrees/guide/installation.doctree differ diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index d6e944c..58fc305 100644 Binary files a/docs/build/doctrees/index.doctree and b/docs/build/doctrees/index.doctree differ diff --git a/docs/build/html/_sources/development/conclusions.rst.txt b/docs/build/html/_sources/development/conclusions.rst.txt index 4814f25..ae589b4 100644 --- a/docs/build/html/_sources/development/conclusions.rst.txt +++ b/docs/build/html/_sources/development/conclusions.rst.txt @@ -1,9 +1,6 @@ Conclusioni =========== - -.. todo:: - - Scrivere le conclusioni. - - "cosa avete imparato, cosa è andato bene, cosa cambiereste" +Abbiamo imparato molto, acquisendo dimestichezza con vari linguaggi o software che prima non conoscevamo. +Un lato che è andato molto bene di questo progetto è stata l'organizzazione e collaborazione tra tutti i membri del gruppo: ciascuno aveva un suo compito e non sono sorti conflitti. In generale questo ha velocizzato molto la lavorazione, e il progetto è proseguito con velocità sostenuta anche per questo. +Alcune di queste attività, come le varie riunioni, sarebbero state più edificanti e veloci se fatte in presenza, ma purtroppo la pandemia e la distanza non lo hanno reso possibile. diff --git a/docs/build/html/_sources/development/process.rst.txt b/docs/build/html/_sources/development/process.rst.txt index 7c8e6d5..7be0474 100644 --- a/docs/build/html/_sources/development/process.rst.txt +++ b/docs/build/html/_sources/development/process.rst.txt @@ -1,11 +1,42 @@ Processo di sviluppo ==================== +Lo sviluppo è stato suddiviso in 4 sprint, ciascuno della durata di 2 settimane: +Sprint 0 - dal 5 Aprile al 18 Aprile + `Diari`_ dei partecipanti + `Retrospettiva`_ dello sprint 0 + .. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#registro-attivita + .. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#retrospettiva-finale +Sprint 1 - dal 19 Aprile al 2 Maggio + Burndown dello sprint 1 + .. image:: Burndown1.png + :width: 400 + `Diari`_ dei partecipanti + `Retrospettiva`_ dello sprint 1 + .. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#registro-attivita + .. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#retrospettiva-finale +Sprint 2 - dal 3 Maggio al 16 Maggio + Burndown dello sprint 2 + .. image:: Burndown2.png + :width: 400 + `Diari`_ dei partecipanti + `Retrospettiva`_ dello sprint 2 + .. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#registro-attivita + .. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#retrospettiva-finale +Sprint 3 - dal 19 Maggio al 30 Maggio + Burndown dello sprint 3 + .. image:: Burndown3.png + :width: 400 + `Diari`_ dei partecipanti + `Retrospettiva`_ dello sprint 3 + .. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#registro-attivita + .. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#retrospettiva-finale +In generale: + Burndown totale + .. image:: Burndown4.png + :width: 400 + .. todo:: - Descrivere genericamente il processo di sviluppo seguito, includendo: - - "numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo, - retrospettiva finale" - - Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando ``:ref:``. + Mi dicono che qui non funzionano alcune robe, mettere a posto + Also, fixare i link interni \ No newline at end of file diff --git a/docs/build/html/_sources/development/sprint0/index.rst.txt b/docs/build/html/_sources/development/sprint0/index.rst.txt index cabbe63..ad9ff8f 100644 --- a/docs/build/html/_sources/development/sprint0/index.rst.txt +++ b/docs/build/html/_sources/development/sprint0/index.rst.txt @@ -470,12 +470,11 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con .. _Gitinspector: https://github.com/ejwa/gitinspector -Artefatti ---------- +Sprint Retrospective +-------------------- -In questo sprint è stato realizzato il seguente documento: -- :download:`Documento generale dello Sprint 0 <0-result.pdf>` +- :download:`Sprint 0 Retrospective ` Sprint review @@ -485,3 +484,10 @@ Il video di sprint review è disponibile al seguente link: - https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view + +Artefatti +--------- + +In questo sprint è stato realizzato il seguente documento: + +- :download:`Documento generale dello Sprint 0 <0-result.pdf>` diff --git a/docs/build/html/_sources/development/sprint1/index.rst.txt b/docs/build/html/_sources/development/sprint1/index.rst.txt index 2dae89d..90002b4 100644 --- a/docs/build/html/_sources/development/sprint1/index.rst.txt +++ b/docs/build/html/_sources/development/sprint1/index.rst.txt @@ -1,11 +1,6 @@ Sprint 1: 19 Apr - 02 Mag ========================= -.. todo:: - - Inserire informazioni generali sullo sprint, come inizio e fine. - - Consegna -------- @@ -17,25 +12,49 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint: Goal ---- -.. todo:: +Il **goal** per questo sprint è stato costruire una codebase facilmente mantenibile e modulare, che potesse accomodare grossi +cambiamenti nei sottomoduli senza impattare gli altri: - Inserire qui lo sprint goal. +- Dal punto di vista del **backend**: l'obiettivo è stato predisporre la struttura del database e creare le api calls per illogin degli utenti e la creazione dei repository +- Dal punto di vista del **frontend**: creare la struttura con le componenti importate da figma e implementare le schermate principali +Tutto ciò è visibile dai task completati: + +.. image:: Sprint1Task.png + :width: 400 Backlog ------- -.. todo:: +.. image:: BacklogSprint1.png + :width: 400 - Mostrare qui lo sprint backlog di Taiga. +**Burndown Chart** + +.. image:: Chart1.png + :width: 600 -Definition of done +Definition of Ready +------------------- + +Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri: + +* La User Story è stata compresa ed accettata da tutti i membri +* I tester hanno confermato la possibilità di poterla testare +* Il Product Owner ha la visione necessaria per definirne la priorità +* Il Team è in grado di stimarla +* La User Story è indipendente o dipendente da altre a priorità maggiore + +Definition of Done ------------------ -.. todo:: +La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita: - Inserire qui la definition of done dello sprint. +* Sviluppo completo della funzionalità richiesta +* Definizione e superamento dei test +* Bozza della documentazione della funzionalità +* Merge dei sorgenti nel branch ``main`` di GitLab Registro attività @@ -486,10 +505,19 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con .. _Gitinspector: https://github.com/ejwa/gitinspector +Sprint retrospective +-------------------- +- :download:`Sprint 1 Retrospective <1-retrospective.pdf>` + Sprint review ------------- -.. todo:: +Il video di sprint review è disponibile al seguente link: - Inserire un link alla sprint review. +- https://drive.google.com/drive/folders/1dsis_cGCRnVgZAkZjEVIZKt4NndkycaF?usp=sharing + +Artefatti +--------- +- :download:`Valutazion SM Debito Tecnico ` +- :download:`Valutazione PO User Stories ` \ No newline at end of file diff --git a/docs/build/html/_sources/development/sprint2/index.rst.txt b/docs/build/html/_sources/development/sprint2/index.rst.txt index edfdd26..5aac5f6 100644 --- a/docs/build/html/_sources/development/sprint2/index.rst.txt +++ b/docs/build/html/_sources/development/sprint2/index.rst.txt @@ -1,11 +1,6 @@ Sprint 2: 03 Mag - 16 Mag ========================= -.. todo:: - - Inserire informazioni generali sullo sprint, come inizio e fine. - - Consegna -------- @@ -16,26 +11,49 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint: Goal ---- +Il **goal** del secondo sprint è stato la creazione, cancellazione e modifica dei repository, ovvero permettere agli utenti +di creare repo partendo da una ricerca che rispetta determinate condizioni. -.. todo:: +Tutto ciò è visibile dai task completati: + +.. image:: Sprint2Task.png + :width: 390 - Inserire qui lo sprint goal. Backlog ------- -.. todo:: +.. image:: BacklogSprint2.png + :width: 400 - Mostrare qui lo sprint backlog di Taiga. +**Burndown Chart** + +.. image:: Chart2.png + :width: 600 -Definition of done +Definition of Ready +------------------- + +Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri: + +* La User Story è stata compresa ed accettata da tutti i membri +* I tester hanno confermato la possibilità di poterla testare +* Il Product Owner ha la visione necessaria per definirne la priorità +* Il Team è in grado di stimarla +* La User Story è indipendente o dipendente da altre a priorità maggiore + +Definition of Done ------------------ -.. todo:: +La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita: + +* Sviluppo completo della funzionalità richiesta +* Definizione e superamento dei test +* Bozza della documentazione della funzionalità +* Merge dei sorgenti nel branch ``main`` di GitLab - Inserire qui la definition of done dello sprint. Registro attività @@ -423,9 +441,14 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con .. _Gitinspector: https://github.com/ejwa/gitinspector +Sprint retrospective +-------------------- +- :download:`Sprint 2 Retrospective ` + + Sprint review ------------- -.. todo:: +Il video di sprint review è disponibile al seguente link: - Inserire un link alla sprint review. +- https://drive.google.com/file/d/1x1kub-bpVJrwmGrn5LLU8ecqcbxFaoKg/view?usp=sharing diff --git a/docs/build/html/_sources/development/sprint3/index.rst.txt b/docs/build/html/_sources/development/sprint3/index.rst.txt index a5c6b82..250fe2b 100644 --- a/docs/build/html/_sources/development/sprint3/index.rst.txt +++ b/docs/build/html/_sources/development/sprint3/index.rst.txt @@ -1,11 +1,6 @@ Sprint 3: 17 Mag - 30 Mag ========================= -.. todo:: - - Inserire informazioni generali sullo sprint, come inizio e fine. - - Consegna -------- @@ -18,25 +13,59 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint: Goal ---- -.. todo:: +Il **goal** del terzo Sprint è stato far funzionare il crawler, gli alert e completare tutte i task rimanenti. + +Tutto ciò è visibile dai task completati: + +.. image:: Task3.png + :width: 400 + +Grooming session +---------------- + +Sono state definite le nuove **User Stories** da inserire nel progetto sulla base delle nuove richieste pervenute dal cliente: + +- analisi statistica più dettagliata +- postare su Twitter +- traduzione dell'interfaccia in inglese. + +| La richiesta relativa alle *ricerche basate sulla geolocalizzazione*, come già comunicato al cliente, non è stata inserita per motivi tecnici legati alle features delle **API 1.1** che non permettono di eseguire query sui campi di posizione geografica. +| Le nuove User Stories sono state valutate tramite il metodo dello Scrum Poker, durante il quale ogni membro ha espresso la sua valutazione. +| Tutte le nuove richieste sono state accettate dal Product Owner e sono pronte ad essere inserite nello sprint di sviluppo in partenza. - Inserire qui lo sprint goal. Backlog ------- +.. image:: Backlog3.png + :width: 400 -.. todo:: +**Burndown Chart** - Mostrare qui lo sprint backlog di Taiga. +.. image:: Chart3.png + :width: 600 -Definition of done +Definition of Ready +------------------- + +Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri: + +* La User Story è stata compresa ed accettata da tutti i membri +* I tester hanno confermato la possibilità di poterla testare +* Il Product Owner ha la visione necessaria per definirne la priorità +* Il Team è in grado di stimarla +* La User Story è indipendente o dipendente da altre a priorità maggiore + +Definition of Done ------------------ -.. todo:: +La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita: - Inserire qui la definition of done dello sprint. +* Sviluppo completo della funzionalità richiesta +* Definizione e superamento dei test +* Bozza della documentazione della funzionalità +* Merge dei sorgenti nel branch ``main`` di GitLab Registro attività @@ -81,12 +110,24 @@ Stefano Goldoni - Durata - Attività * - - - + - 14h - Totale - * - - - - - + * - 21/05 + - 2.0h + - Analisi strumenti di test frontend + * - 24/05 + - 3.0h + - Inizio test alerts + * - 25/05 + - 2.5h + - Test alerts + * - 26/05 + - 3.0h + - Test + * - 28/05 + - 3.5h + - Test, refactory in base a Sonarqube Flavia Cocca @@ -99,13 +140,44 @@ Flavia Cocca - Durata - Attività * - - - + - 14h - Totale - * - - - - - + * - 20/05 + - 2.0h + - Trasferimento documenti in nuova documentazione + * - 21/05 + - 1.0h + - Studio Sphinx + + * - 23/05 + - 1.0h + - Studio sintassi rST + + * - 24/05 + - 1.0h + - Documentazione + + * - 25/05 + - 1.0h + - Documentazione + + * - 26/05 + - 1.0h + - Documentazione + + * - 27/05 + - 1.0h + - Documentazione + + * - 28/05 + - 3.0h + - Documentazione + + * - 29/05 + - 3.0h + - Documentazione Chiara Calzolari """""""""""""""" @@ -117,12 +189,42 @@ Chiara Calzolari - Durata - Attività * - - - + - 17h 30m - Totale - * - - - - - + * - 17/05 + - 3.0h + - Traduzione UI + * - 17/05 + - 1.5h + - Traduzione UI + * - 18/05 + - 1.5h + - Traduzione UI + * - 20/05 + - 1.0h + - Traduzione UI + * - 22/05 + - 1.0h + - Traduzione UI + * - 24/05 + - 2.0h + - Traduzione UI + * - 24/05 + - 1.0h + - Traduzione UI + * - 25/05 + - 1.0h + - Traduzione UI + * - 27/05 + - 0.5h + - Traduzione UI + * - 28/05 + - 2.0h + - Configurazione ambiente di sviluppo + * - 28/05 + - 3.0h + - Creazione video-demo Stefano Pigozzi @@ -153,12 +255,45 @@ Giovanni Anniballi - Durata - Attività * - - - + - 18h - Totale - * - - - - - + * - 17/05 + - 1h + - Ricontrollo generale codice, fix piccoli typo + + * - 18/05 + - 1h + - Aggiornati files di log e refactoring documentazione + + + * - 21/05 + - 2h + - Studio Jest, valutazione di test sul frontend + + * - 24/05 + - 3h + - Primi test sulle autorizzazioni + + * - 26/05 + - 2h + - Fix ai test + + * - 27/05 + - 2h + - Test autorizzazioni completati, fix + + * - 28/05 + - 4h + - Fix test malfunzionanti, refactoring test + + * - 29/05 + - 3h + - Aggiornamento documentazione, aggiunti ulteriori test seguendo i suggerimenti di SQ + + + + Giorgio Minoccari @@ -189,12 +324,33 @@ Lorenzo Balugani - Durata - Attività * - - - + - 22h - Totale - * - - - - - + * - 17/05 + - 4h + - Bugfixing, supporto alla localizzazione degli errori + * - 18/05 + - 3h + - Bugfixing + * - 20/05 + - 3h + - API autorizzazioni, refactoring + * - 21/05 + - 2h + - Gestione tweet, rappresentazione tweet + * - 24/05 + - 2h + - Bugfixing + * - 25/05 + - 4h + - Docs, refactoring + * - 27/05 + - 3h + - Bugfixing + * - 28/05 + - 6h + - Bugfixing Statistiche @@ -219,6 +375,9 @@ Retrospettiva finale Schermata finale di SonarQube ----------------------------- -.. todo:: +- :download:`Schermata finale Sonarqube ` - Inserire qui uno screenshot della schermata finale di SonarQube. +Demo +---- + +- https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view?usp=sharing diff --git a/docs/build/html/_sources/development/suggestions.rst.txt b/docs/build/html/_sources/development/suggestions.rst.txt index 8973af5..547206d 100644 --- a/docs/build/html/_sources/development/suggestions.rst.txt +++ b/docs/build/html/_sources/development/suggestions.rst.txt @@ -1,6 +1,15 @@ Suggerimenti relativi al corso ============================== +* Il *team* concorda **sull'utilità del progetto** poiché permette di utlizzare le nozioni viste a lezione praticamente (le varie metodologie da adottare e le problematiche in cui si può incorrere). +* Il *team* concorda nel dire che **il progetto è eccessivamente corposo**: + + * Tecnicamente a 6 cfu dovrebbero corrispondere circa 125 ore di lavoro, mentre questo progetto ne ha richieste molte di più. + * Suggeriamo quindi di alleggerire il carico di lavoro, e renderlo più proporzionale ai crediti assegnati. + +* Il *team* suggerisce di **utilizzare GitHub al posto di Gitlab**, poiché più comodo e funzionale. +* Il *team* concorda nel dire che sarebbe molto utile la **partecipazione diretta del prof** durante le prime fasi di progetto, all'inizio del lavoro, per instradare il gruppo nella giusta direzione ed evitare l'effetto "salto nel buio": + + * Sarebbe stato piacevole avere una buona spiegazione delle regole dello Scrumble + * Avere qualche lezione più specifica sui tool da utilizzare (sonarqube ecc..) -.. todo:: - Che suggerimenti avete da dare al prof. Missiroli? :) diff --git a/docs/build/html/_sources/guide/installation.rst.txt b/docs/build/html/_sources/guide/installation.rst.txt index 1961106..9d4b51f 100644 --- a/docs/build/html/_sources/guide/installation.rst.txt +++ b/docs/build/html/_sources/guide/installation.rst.txt @@ -19,6 +19,8 @@ Per installare ed eseguire N.E.S.T., è necessario: - `Poetry ^1.0 `_ - `NodeJS ^16.0 `_ - `npm ^7.13.0 `_ +- Un mail server (interno o esterno) che supporti + l'`SMTP `_ Creare un nuovo utente @@ -280,17 +282,143 @@ Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del Creare un servizio SystemD per il crawler ----------------------------------------- -.. todo:: +Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di *SystemD*: - Scrivere una guida all'installazione di un servizio SystemD per il crawler. +.. code-block:: console + + root:~# systemctl edit --force --full nest-crawler + +All'interno del file, inserire le seguenti direttive: + +.. code-block:: systemd + + [Unit] + Description=N.E.S.T. Crawler + Wants=network-online.target nest-backend.service + After=network-online.target nss-lookup.target nest-backend.service + + [Service] + Type=exec + Environment=FLASK_CONFIG=../config.py + User=nest + Group=nest + WorkingDirectory=/srv/nest/g2-progetto + # Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m nest_crawler + + [Install] + WantedBy=multi-user.target + + +Configurare il crawler +---------------------- + +.. note:: + + Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter. + + È dunque necessario `fare richiesta `_, e sarà possibile + procedere con l'installazione solo una volta ricevute le credenziali per l'utilizzo. + +Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un *file di override* di SystemD: + +.. code-block:: console + + root:~# systemctl edit nest-crawler + +All'interno del file, inserire le seguenti direttive: + +.. code-block:: systemd + + [Service] + + # Sostituire a questi caratteri la Consumer Key ricevuta da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=C_K=0000000000000000000000000 + + + # Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=C_S=00000000000000000000000000000000000000000000000000 + + # Sostituire a questi caratteri l'Access Token ricevuto da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=A_T=00000000000000000000000000000000000000000000000000 + + # Sostituire a questi caratteri l'Access Token Secret ricevuto da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=A_T_S=000000000000000000000000000000000000000000000 + + # Sostituire con l'indirizzo del proprio SMTP mail server + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=SMTP_HOST=mail.gandi.net + + # Sostituire con le proprie credenziali dell'SMTP mail server + # ↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=SMTP_USERNAME=bot@ryg.one + # ↓↓↓↓↓↓↓↓ + Environment=SMTP_PASSWORD=password + + # Sostituire con l'email da cui si desidera che vengano inviate le allerte + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=SMTP_FROM_EMAIL=nest-bot@ryg.one + + +Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con: + +.. code-block:: console + + root:~# systemctl start nest-crawler + +Nel log di sistema non dovrebbe comparire nessun errore: + +.. code-block:: console + + root:~# journalctl nest-crawler Creare un timer SystemD per il crawler ----------------------------------------- -.. todo:: +Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD: - Scrivere una guida all'esecuzione ripetuta del crawler attraverso un timer SystemD. +.. code-block:: console + + root:~# systemctl edit --force --full nest-crawler.timer + +Si inseriscano all'interno del file le seguenti direttive: + +.. code-block:: systemd + + [Unit] + Description=Run nest-crawler every 60 minutes + + [Timer] + OnBootSec=60min + OnUnitActiveSec=60min + Unit=nest-crawler.service + + [Install] + WantedBy=timers.target + +Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con: + +.. code-block:: console + + root:~# systemctl start nest-crawler.timer + +Nello stato del timer non dovrebbe comparire nessun errore: + +.. code-block:: console + + root:~# systemctl status nest-crawler.timer + +Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema: + +.. code-block:: console + + root:~# systemctl enable nest-crawler.timer Configurare Apache come reverse proxy diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index af54e51..01cc340 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -9,6 +9,7 @@ Benvenuto alla documentazione di N.E.S.T.! guide/about guide/installation + guide/updating .. toctree:: @@ -28,6 +29,7 @@ Benvenuto alla documentazione di N.E.S.T.! .. toctree:: + :maxdepth: 2 :caption: Documentazione tecnica code/meta/index @@ -37,12 +39,6 @@ Benvenuto alla documentazione di N.E.S.T.! code/frontend/index -.. toctree:: - :hidden: - - development/clientinterview - - Cose rimaste da fare -------------------- diff --git a/docs/build/html/development/conclusions.html b/docs/build/html/development/conclusions.html index e80acd0..1b2bc45 100644 --- a/docs/build/html/development/conclusions.html +++ b/docs/build/html/development/conclusions.html @@ -180,13 +180,9 @@

Conclusioni

-
-

Da fare

-

Scrivere le conclusioni.

-
-

«cosa avete imparato, cosa è andato bene, cosa cambiereste»

-
-
+

Abbiamo imparato molto, acquisendo dimestichezza con vari linguaggi o software che prima non conoscevamo. +Un lato che è andato molto bene di questo progetto è stata l’organizzazione e collaborazione tra tutti i membri del gruppo: ciascuno aveva un suo compito e non sono sorti conflitti. In generale questo ha velocizzato molto la lavorazione, e il progetto è proseguito con velocità sostenuta anche per questo. +Alcune di queste attività, come le varie riunioni, sarebbero state più edificanti e veloci se fatte in presenza, ma purtroppo la pandemia e la distanza non lo hanno reso possibile.

diff --git a/docs/build/html/development/process.html b/docs/build/html/development/process.html index 649c8b9..39fbdb5 100644 --- a/docs/build/html/development/process.html +++ b/docs/build/html/development/process.html @@ -180,14 +180,72 @@

Processo di sviluppo

+

Lo sviluppo è stato suddiviso in 4 sprint, ciascuno della durata di 2 settimane: +Sprint 0 - dal 5 Aprile al 18 Aprile

+
+

System Message: ERROR/3 (/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, line 6)

+

Unexpected indentation.

+
+
+
+
+

System Message: WARNING/2 (/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, line 10)

+

Block quote ends without a blank line; unexpected unindent.

+
+
+
Sprint 1 - dal 19 Aprile al 2 Maggio
+
Burndown dello sprint 1
../_images/Burndown1.png +
+
+
+

System Message: WARNING/2 (/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, line 14)

+

Definition list ends without a blank line; unexpected unindent.

+
+

`Diari`_ dei partecipanti +`Retrospettiva`_ dello sprint 1 +.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#registro-attivita +.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#retrospettiva-finale

+
+
Sprint 2 - dal 3 Maggio al 16 Maggio
+
Burndown dello sprint 2
../_images/Burndown2.png +
+
+
+

System Message: WARNING/2 (/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, line 22)

+

Definition list ends without a blank line; unexpected unindent.

+
+

`Diari`_ dei partecipanti +`Retrospettiva`_ dello sprint 2 +.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#registro-attivita +.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#retrospettiva-finale

+
+
Sprint 3 - dal 19 Maggio al 30 Maggio
+
Burndown dello sprint 3
../_images/Burndown3.png +
+
+
+

System Message: WARNING/2 (/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, line 30)

+

Definition list ends without a blank line; unexpected unindent.

+
+

`Diari`_ dei partecipanti +`Retrospettiva`_ dello sprint 3 +.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#registro-attivita +.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#retrospettiva-finale

+
+
In generale:
+
Burndown totale
../_images/Burndown4.png +
+
+
+

Da fare

-

Descrivere genericamente il processo di sviluppo seguito, includendo:

-
-

«numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo, -retrospettiva finale»

-
-

Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando :ref:.

+

Mi dicono che qui non funzionano alcune robe, mettere a posto +Also, fixare i link interni

diff --git a/docs/build/html/development/sprint0/index.html b/docs/build/html/development/sprint0/index.html index 504980b..b87482b 100644 --- a/docs/build/html/development/sprint0/index.html +++ b/docs/build/html/development/sprint0/index.html @@ -119,8 +119,9 @@
  • Gitinspector
  • -
  • Artefatti
  • +
  • Sprint Retrospective
  • Sprint review
  • +
  • Artefatti
  • Sprint 1: 19 Apr - 02 Mag
  • @@ -1171,11 +1172,10 @@ definita:

    -
    -

    Artefatti

    -

    In questo sprint è stato realizzato il seguente documento:

    + +
    +

    Artefatti

    +

    In questo sprint è stato realizzato il seguente documento:

    + +
    diff --git a/docs/build/html/development/sprint1/index.html b/docs/build/html/development/sprint1/index.html index d474018..959b74c 100644 --- a/docs/build/html/development/sprint1/index.html +++ b/docs/build/html/development/sprint1/index.html @@ -101,7 +101,8 @@
  • Consegna
  • Goal
  • Backlog
  • -
  • Definition of done
  • +
  • Definition of Ready
  • +
  • Definition of Done
  • Registro attività
  • Sprint 2: 03 Mag - 16 Mag
  • @@ -205,10 +208,6 @@

    Sprint 1: 19 Apr - 02 Mag

    -
    -

    Da fare

    -

    Inserire informazioni generali sullo sprint, come inizio e fine.

    -

    Consegna

    La seguente documentazione è stata fornita dal cliente durante questo sprint:

    @@ -218,24 +217,41 @@

    Goal

    -
    -

    Da fare

    -

    Inserire qui lo sprint goal.

    -
    +

    Il goal per questo sprint è stato costruire una codebase facilmente mantenibile e modulare, che potesse accomodare grossi +cambiamenti nei sottomoduli senza impattare gli altri:

    +
      +
    • Dal punto di vista del backend: l’obiettivo è stato predisporre la struttura del database e creare le api calls per illogin degli utenti e la creazione dei repository

    • +
    • Dal punto di vista del frontend: creare la struttura con le componenti importate da figma e implementare le schermate principali

    • +
    +

    Tutto ciò è visibile dai task completati:

    +../../_images/Sprint1Task.png

    Backlog

    -
    -

    Da fare

    -

    Mostrare qui lo sprint backlog di Taiga.

    +../../_images/BacklogSprint1.png +

    Burndown Chart

    +../../_images/Chart1.png
    +
    +

    Definition of Ready

    +

    Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:

    +
      +
    • La User Story è stata compresa ed accettata da tutti i membri

    • +
    • I tester hanno confermato la possibilità di poterla testare

    • +
    • Il Product Owner ha la visione necessaria per definirne la priorità

    • +
    • Il Team è in grado di stimarla

    • +
    • La User Story è indipendente o dipendente da altre a priorità maggiore

    • +
    -

    Definition of done

    -
    -

    Da fare

    -

    Inserire qui la definition of done dello sprint.

    -
    +

    Definition of Done

    +

    La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:

    +
      +
    • Sviluppo completo della funzionalità richiesta

    • +
    • Definizione e superamento dei test

    • +
    • Bozza della documentazione della funzionalità

    • +
    • Merge dei sorgenti nel branch main di GitLab

    • +

    Registro attività

    @@ -836,12 +852,25 @@
    +
    +

    Sprint retrospective

    + +

    Sprint review

    -
    -

    Da fare

    -

    Inserire un link alla sprint review.

    +

    Il video di sprint review è disponibile al seguente link:

    +
    +
    diff --git a/docs/build/html/development/sprint2/index.html b/docs/build/html/development/sprint2/index.html index 4eaf074..7071afe 100644 --- a/docs/build/html/development/sprint2/index.html +++ b/docs/build/html/development/sprint2/index.html @@ -90,6 +90,7 @@

    Relazione sul progetto

      @@ -102,7 +103,8 @@
    • Consegna
    • Goal
    • Backlog
    • -
    • Definition of done
    • +
    • Definition of Ready
    • +
    • Definition of Done
    • Registro attività
    • @@ -205,10 +208,6 @@

      Sprint 2: 03 Mag - 16 Mag

      -
      -

      Da fare

      -

      Inserire informazioni generali sullo sprint, come inizio e fine.

      -

      Consegna

      La seguente documentazione è stata fornita dal cliente durante questo sprint:

      @@ -218,24 +217,37 @@

      Goal

      -
      -

      Da fare

      -

      Inserire qui lo sprint goal.

      -
      +

      Il goal del secondo sprint è stato la creazione, cancellazione e modifica dei repository, ovvero permettere agli utenti +di creare repo partendo da una ricerca che rispetta determinate condizioni.

      +

      Tutto ciò è visibile dai task completati:

      +../../_images/Sprint2Task.png

      Backlog

      -
      -

      Da fare

      -

      Mostrare qui lo sprint backlog di Taiga.

      +development/sprint2/BacklogSprint2.png +

      Burndown Chart

      +../../_images/Chart2.png
      +
      +

      Definition of Ready

      +

      Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:

      +
        +
      • La User Story è stata compresa ed accettata da tutti i membri

      • +
      • I tester hanno confermato la possibilità di poterla testare

      • +
      • Il Product Owner ha la visione necessaria per definirne la priorità

      • +
      • Il Team è in grado di stimarla

      • +
      • La User Story è indipendente o dipendente da altre a priorità maggiore

      • +
      -

      Definition of done

      -
      -

      Da fare

      -

      Inserire qui la definition of done dello sprint.

      -
      +

      Definition of Done

      +

      La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:

      +
        +
      • Sviluppo completo della funzionalità richiesta

      • +
      • Definizione e superamento dei test

      • +
      • Bozza della documentazione della funzionalità

      • +
      • Merge dei sorgenti nel branch main di GitLab

      • +

      Registro attività

      @@ -755,12 +767,18 @@
    +
    +

    Sprint retrospective

    + +

    Sprint review

    -
    -

    Da fare

    -

    Inserire un link alla sprint review.

    -
    +

    Il video di sprint review è disponibile al seguente link:

    +
    diff --git a/docs/build/html/development/sprint3/index.html b/docs/build/html/development/sprint3/index.html index 5f29858..dce83ef 100644 --- a/docs/build/html/development/sprint3/index.html +++ b/docs/build/html/development/sprint3/index.html @@ -102,8 +102,10 @@
  • Sprint 3: 17 Mag - 30 Mag
    • Consegna
    • Goal
    • +
    • Grooming session
    • Backlog
    • -
    • Definition of done
    • +
    • Definition of Ready
    • +
    • Definition of Done
    • Registro attività
      • Riunioni collettive
      • Attività individuali
      • Artefatti
      • @@ -206,10 +209,6 @@

        Sprint 3: 17 Mag - 30 Mag

        -
        -

        Da fare

        -

        Inserire informazioni generali sullo sprint, come inizio e fine.

        -

        Consegna

        La seguente documentazione è stata fornita dal cliente durante questo sprint:

        @@ -220,28 +219,54 @@

        Goal

        -
        -

        Da fare

        -

        Inserire qui lo sprint goal.

        +

        Il goal del terzo Sprint è stato far funzionare il crawler, gli alert e completare tutte i task rimanenti.

        +

        Tutto ciò è visibile dai task completati:

        +../../_images/Task3.png +
        +
        +

        Grooming session

        +

        Sono state definite le nuove User Stories da inserire nel progetto sulla base delle nuove richieste pervenute dal cliente:

        +
          +
        • analisi statistica più dettagliata

        • +
        • postare su Twitter

        • +
        • traduzione dell’interfaccia in inglese.

        • +
        +
        +
        La richiesta relativa alle ricerche basate sulla geolocalizzazione, come già comunicato al cliente, non è stata inserita per motivi tecnici legati alle features delle API 1.1 che non permettono di eseguire query sui campi di posizione geografica.
        +
        Le nuove User Stories sono state valutate tramite il metodo dello Scrum Poker, durante il quale ogni membro ha espresso la sua valutazione.
        +
        Tutte le nuove richieste sono state accettate dal Product Owner e sono pronte ad essere inserite nello sprint di sviluppo in partenza.

        Backlog

        -
        -

        Da fare

        -

        Mostrare qui lo sprint backlog di Taiga.

        +../../_images/Backlog3.png +

        Burndown Chart

        +../../_images/Chart3.png
        +
        +

        Definition of Ready

        +

        Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:

        +
          +
        • La User Story è stata compresa ed accettata da tutti i membri

        • +
        • I tester hanno confermato la possibilità di poterla testare

        • +
        • Il Product Owner ha la visione necessaria per definirne la priorità

        • +
        • Il Team è in grado di stimarla

        • +
        • La User Story è indipendente o dipendente da altre a priorità maggiore

        • +
        -

        Definition of done

        -
        -

        Da fare

        -

        Inserire qui la definition of done dello sprint.

        -
        +

        Definition of Done

        +

        La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:

        +
          +
        • Sviluppo completo della funzionalità richiesta

        • +
        • Definizione e superamento dei test

        • +
        • Bozza della documentazione della funzionalità

        • +
        • Merge dei sorgenti nel branch main di GitLab

        • +

        Registro attività

        -
        +

        Da fare

        Compilare il registro attività dello sprint 3.

        @@ -291,14 +316,30 @@

        Attività

        - +

        14h

        Totale

        - - - +

        21/05

        +

        2.0h

        +

        Analisi strumenti di test frontend

        + +

        24/05

        +

        3.0h

        +

        Inizio test alerts

        + +

        25/05

        +

        2.5h

        +

        Test alerts

        + +

        26/05

        +

        3.0h

        +

        Test

        + +

        28/05

        +

        3.5h

        +

        Test, refactory in base a Sonarqube

        @@ -317,14 +358,46 @@

        Attività

        - +

        14h

        Totale

        - - - +

        20/05

        +

        2.0h

        +

        Trasferimento documenti in nuova documentazione

        + +

        21/05

        +

        1.0h

        +

        Studio Sphinx

        + +

        23/05

        +

        1.0h

        +

        Studio sintassi rST

        + +

        24/05

        +

        1.0h

        +

        Documentazione

        + +

        25/05

        +

        1.0h

        +

        Documentazione

        + +

        26/05

        +

        1.0h

        +

        Documentazione

        + +

        27/05

        +

        1.0h

        +

        Documentazione

        + +

        28/05

        +

        3.0h

        +

        Documentazione

        + +

        29/05

        +

        3.0h

        +

        Documentazione

        @@ -343,14 +416,54 @@

        Attività

        - +

        17h 30m

        Totale

        - - - +

        17/05

        +

        3.0h

        +

        Traduzione UI

        + +

        17/05

        +

        1.5h

        +

        Traduzione UI

        + +

        18/05

        +

        1.5h

        +

        Traduzione UI

        + +

        20/05

        +

        1.0h

        +

        Traduzione UI

        + +

        22/05

        +

        1.0h

        +

        Traduzione UI

        + +

        24/05

        +

        2.0h

        +

        Traduzione UI

        + +

        24/05

        +

        1.0h

        +

        Traduzione UI

        + +

        25/05

        +

        1.0h

        +

        Traduzione UI

        + +

        27/05

        +

        0.5h

        +

        Traduzione UI

        + +

        28/05

        +

        2.0h

        +

        Configurazione ambiente di sviluppo

        + +

        28/05

        +

        3.0h

        +

        Creazione video-demo

        @@ -395,14 +508,42 @@

        Attività

        - +

        18h

        Totale

        - - - +

        17/05

        +

        1h

        +

        Ricontrollo generale codice, fix piccoli typo

        + +

        18/05

        +

        1h

        +

        Aggiornati files di log e refactoring documentazione

        + +

        21/05

        +

        2h

        +

        Studio Jest, valutazione di test sul frontend

        + +

        24/05

        +

        3h

        +

        Primi test sulle autorizzazioni

        + +

        26/05

        +

        2h

        +

        Fix ai test

        + +

        27/05

        +

        2h

        +

        Test autorizzazioni completati, fix

        + +

        28/05

        +

        4h

        +

        Fix test malfunzionanti, refactoring test

        + +

        29/05

        +

        3h

        +

        Aggiornamento documentazione, aggiunti ulteriori test seguendo i suggerimenti di SQ

        @@ -447,14 +588,42 @@

        Attività

        - +

        22h

        Totale

        - - - +

        17/05

        +

        4h

        +

        Bugfixing, supporto alla localizzazione degli errori

        + +

        18/05

        +

        3h

        +

        Bugfixing

        + +

        20/05

        +

        3h

        +

        API autorizzazioni, refactoring

        + +

        21/05

        +

        2h

        +

        Gestione tweet, rappresentazione tweet

        + +

        24/05

        +

        2h

        +

        Bugfixing

        + +

        25/05

        +

        4h

        +

        Docs, refactoring

        + +

        27/05

        +

        3h

        +

        Bugfixing

        + +

        28/05

        +

        6h

        +

        Bugfixing

        @@ -465,7 +634,7 @@

        Statistiche

        Gitinspector

        -
        +

        Da fare

        Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3.

        @@ -473,17 +642,22 @@

        Retrospettiva finale

        -
        +

        Da fare

        Inserire qui la Retrospettiva finale.

        Schermata finale di SonarQube

        -
        -

        Da fare

        -

        Inserire qui uno screenshot della schermata finale di SonarQube.

        +
        +
        diff --git a/docs/build/html/development/suggestions.html b/docs/build/html/development/suggestions.html index 2adfe7b..ca2bddf 100644 --- a/docs/build/html/development/suggestions.html +++ b/docs/build/html/development/suggestions.html @@ -180,10 +180,26 @@

        Suggerimenti relativi al corso

        -
        -

        Da fare

        -

        Che suggerimenti avete da dare al prof. Missiroli? :)

        -
        +
          +
        • Il team concorda sull’utilità del progetto poiché permette di utlizzare le nozioni viste a lezione praticamente (le varie metodologie da adottare e le problematiche in cui si può incorrere).

        • +
        • Il team concorda nel dire che il progetto è eccessivamente corposo:

          +
          +
            +
          • Tecnicamente a 6 cfu dovrebbero corrispondere circa 125 ore di lavoro, mentre questo progetto ne ha richieste molte di più.

          • +
          • Suggeriamo quindi di alleggerire il carico di lavoro, e renderlo più proporzionale ai crediti assegnati.

          • +
          +
          +
        • +
        • Il team suggerisce di utilizzare GitHub al posto di Gitlab, poiché più comodo e funzionale.

        • +
        • Il team concorda nel dire che sarebbe molto utile la partecipazione diretta del prof durante le prime fasi di progetto, all’inizio del lavoro, per instradare il gruppo nella giusta direzione ed evitare l’effetto «salto nel buio»:

          +
          +
            +
          • Sarebbe stato piacevole avere una buona spiegazione delle regole dello Scrumble

          • +
          • Avere qualche lezione più specifica sui tool da utilizzare (sonarqube ecc..)

          • +
          +
          +
        • +
        diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index b1a9065..f2a28ee 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -88,6 +88,7 @@

        Relazione sul progetto

        @@ -210,6 +211,8 @@
      • Poetry ^1.0

      • NodeJS ^16.0

      • npm ^7.13.0

      • +
      • Un mail server (interno o esterno) che supporti +l”SMTP

      @@ -409,16 +412,117 @@ WantedBy=multi-user.target

      Creare un servizio SystemD per il crawler

      -
      -

      Da fare

      -

      Scrivere una guida all’installazione di un servizio SystemD per il crawler.

      +

      Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di SystemD:

      +
      root:~# systemctl edit --force --full nest-crawler
      +
      +
      +

      All’interno del file, inserire le seguenti direttive:

      +
      [Unit]
      +Description=N.E.S.T. Crawler
      +Wants=network-online.target nest-backend.service
      +After=network-online.target nss-lookup.target nest-backend.service
      +
      +[Service]
      +Type=exec
      +Environment=FLASK_CONFIG=../config.py
      +User=nest
      +Group=nest
      +WorkingDirectory=/srv/nest/g2-progetto
      +# Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry
      +#         ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      +ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m nest_crawler
      +
      +[Install]
      +WantedBy=multi-user.target
      +
      +
      +
      +
      +

      Configurare il crawler

      +
      +

      Nota

      +

      Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter.

      +

      È dunque necessario fare richiesta, e sarà possibile +procedere con l’installazione solo una volta ricevute le credenziali per l’utilizzo.

      +
      +

      Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un file di override di SystemD:

      +
      root:~# systemctl edit nest-crawler
      +
      +
      +

      All’interno del file, inserire le seguenti direttive:

      +
      [Service]
      +
      +# Sostituire a questi caratteri la Consumer Key ricevuta da Twitter
      +#               ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      +Environment=C_K=0000000000000000000000000
      +
      +
      +# Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter
      +#               ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      +Environment=C_S=00000000000000000000000000000000000000000000000000
      +
      +# Sostituire a questi caratteri l'Access Token ricevuto da Twitter
      +#               ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      +Environment=A_T=00000000000000000000000000000000000000000000000000
      +
      +# Sostituire a questi caratteri l'Access Token Secret ricevuto da Twitter
      +#                 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      +Environment=A_T_S=000000000000000000000000000000000000000000000
      +
      +# Sostituire con l'indirizzo del proprio SMTP mail server
      +#                     ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      +Environment=SMTP_HOST=mail.gandi.net
      +
      +# Sostituire con le proprie credenziali dell'SMTP mail server
      +#                         ↓↓↓↓↓↓↓↓↓↓↓↓
      +Environment=SMTP_USERNAME=bot@ryg.one
      +#                         ↓↓↓↓↓↓↓↓
      +Environment=SMTP_PASSWORD=password
      +
      +# Sostituire con l'email da cui si desidera che vengano inviate le allerte
      +#                           ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      +Environment=SMTP_FROM_EMAIL=nest-bot@ryg.one
      +
      +
      +

      Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:

      +
      root:~# systemctl start nest-crawler
      +
      +
      +

      Nel log di sistema non dovrebbe comparire nessun errore:

      +
      root:~# journalctl nest-crawler
      +

      Creare un timer SystemD per il crawler

      -
      -

      Da fare

      -

      Scrivere una guida all’esecuzione ripetuta del crawler attraverso un timer SystemD.

      +

      Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD:

      +
      root:~# systemctl edit --force --full nest-crawler.timer
      +
      +
      +

      Si inseriscano all’interno del file le seguenti direttive:

      +
      [Unit]
      +Description=Run nest-crawler every 60 minutes
      +
      +[Timer]
      +OnBootSec=60min
      +OnUnitActiveSec=60min
      +Unit=nest-crawler.service
      +
      +[Install]
      +WantedBy=timers.target
      +
      +
      +

      Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con:

      +
      root:~# systemctl start nest-crawler.timer
      +
      +
      +

      Nello stato del timer non dovrebbe comparire nessun errore:

      +
      root:~# systemctl status nest-crawler.timer
      +
      +
      +

      Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema:

      +
      root:~# systemctl enable nest-crawler.timer
      +
      diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 2dd70d4..2c49a87 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -89,6 +89,7 @@

      Relazione sul progetto

    • +
    • Aggiornamento
    @@ -228,39 +231,48 @@
  • Registro attività
  • Risultati della partita di Scrumble
  • Statistiche
  • -
  • Artefatti
  • +
  • Sprint Retrospective
  • Sprint review
  • +
  • Artefatti
  • Sprint 1: 19 Apr - 02 Mag
  • Sprint 2: 03 Mag - 16 Mag
  • Sprint 3: 17 Mag - 30 Mag
  • Artefatti -
    -

    System Message: WARNING/2 (/mnt/tera/ext4/code/g2-progetto-2/docs/source/index.rst, line 40)

    -

    toctree contains reference to nonexisting document “development/clientinterview”

    -
    -
    -

    Cose rimaste da fare

    @@ -315,14 +317,6 @@

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/artifacts.rst, linea 12.)

    Da fare

    -

    Scrivere le conclusioni.

    -
    -

    «cosa avete imparato, cosa è andato bene, cosa cambiereste»

    -
    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/conclusions.rst, linea 4.)

    -
    -

    Da fare

    Lasciamo il tempo al futuro?

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 4.)

    @@ -333,119 +327,25 @@

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 64.)

    Da fare

    -

    Descrivere genericamente il processo di sviluppo seguito, includendo:

    -
    -

    «numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo, -retrospettiva finale»

    -
    -

    Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando :ref:.

    +

    Mi dicono che qui non funzionano alcune robe, mettere a posto +Also, fixare i link interni

    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, linea 4.)

    -
    -

    Da fare

    -

    Inserire informazioni generali sullo sprint, come inizio e fine.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 4.)

    -
    -

    Da fare

    -

    Inserire qui lo sprint goal.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 20.)

    -
    -

    Da fare

    -

    Mostrare qui lo sprint backlog di Taiga.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 28.)

    -
    -

    Da fare

    -

    Inserire qui la definition of done dello sprint.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 36.)

    -
    -

    Da fare

    -

    Inserire un link alla sprint review.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 492.)

    -
    -

    Da fare

    -

    Inserire informazioni generali sullo sprint, come inizio e fine.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 4.)

    -
    -

    Da fare

    -

    Inserire qui lo sprint goal.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 20.)

    -
    -

    Da fare

    -

    Mostrare qui lo sprint backlog di Taiga.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 28.)

    -
    -

    Da fare

    -

    Inserire qui la definition of done dello sprint.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 36.)

    -
    -

    Da fare

    -

    Inserire un link alla sprint review.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 429.)

    -
    -

    Da fare

    -

    Inserire informazioni generali sullo sprint, come inizio e fine.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 4.)

    -
    -

    Da fare

    -

    Inserire qui lo sprint goal.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 21.)

    -
    -

    Da fare

    -

    Mostrare qui lo sprint backlog di Taiga.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 29.)

    -
    -

    Da fare

    -

    Inserire qui la definition of done dello sprint.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 37.)

    +

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, linea 39.)

    Da fare

    Compilare il registro attività dello sprint 3.

    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 45.)

    +

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 74.)

    Da fare

    Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3.

    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 206.)

    +

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 362.)

    Da fare

    Inserire qui la Retrospettiva finale.

    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 214.)

    -
    -

    Da fare

    -

    Inserire qui uno screenshot della schermata finale di SonarQube.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 222.)

    -
    -

    Da fare

    -

    Che suggerimenti avete da dare al prof. Missiroli? :)

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/suggestions.rst, linea 4.)

    -
    -

    Da fare

    -

    Scrivere una guida all’installazione di un servizio SystemD per il crawler.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/guide/installation.rst, linea 283.)

    -
    -

    Da fare

    -

    Scrivere una guida all’esecuzione ripetuta del crawler attraverso un timer SystemD.

    -
    -

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/guide/installation.rst, linea 291.)

    +

    (L'riga originale si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 370.)

    Altri collegamenti

    diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index 8ba9a80..a90f154 100644 Binary files a/docs/build/html/objects.inv and b/docs/build/html/objects.inv differ diff --git a/docs/build/html/py-modindex.html b/docs/build/html/py-modindex.html index 5810762..b24be99 100644 --- a/docs/build/html/py-modindex.html +++ b/docs/build/html/py-modindex.html @@ -91,6 +91,7 @@

    Relazione sul progetto

      diff --git a/docs/build/html/search.html b/docs/build/html/search.html index 3e5be15..b6fdca2 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -91,6 +91,7 @@

      Relazione sul progetto

        diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 7d4cc50..6c5a9bc 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["code/backend/index","code/crawler/index","code/database/index","code/frontend/index","code/meta/index","development/artifacts","development/conclusions","development/goals","development/process","development/sprint0/index","development/sprint1/index","development/sprint2/index","development/sprint3/index","development/suggestions","development/tools","guide/about","guide/installation","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,sphinx:56},filenames:["code/backend/index.rst","code/crawler/index.rst","code/database/index.rst","code/frontend/index.rst","code/meta/index.rst","development/artifacts.rst","development/conclusions.rst","development/goals.rst","development/process.rst","development/sprint0/index.rst","development/sprint1/index.rst","development/sprint2/index.rst","development/sprint3/index.rst","development/suggestions.rst","development/tools.rst","guide/about.rst","guide/installation.rst","index.rst"],objects:{"":{Alert:[2,0,1,""],Authorization:[2,0,1,""],Composed:[2,0,1,""],Condition:[2,0,1,""],Contains:[2,0,1,""],MadeOf:[2,0,1,""],Notification:[2,0,1,""],Repository:[2,0,1,""],Tweet:[2,0,1,""],User:[2,0,1,""],nest_backend:[0,1,0,"-"],nest_crawler:[1,1,0,"-"]},"nest_backend.database":{base:[0,1,0,"-"],tables:[0,1,0,"-"]},"nest_backend.database.tables":{Alert:[0,0,1,""],Authorization:[0,0,1,""],Composed:[0,0,1,""],Condition:[0,0,1,""],ConditionMode:[0,0,1,""],ConditionType:[0,0,1,""],Contains:[0,0,1,""],MadeOf:[0,0,1,""],Notification:[0,0,1,""],OperationType:[0,0,1,""],Repository:[0,0,1,""],Tweet:[0,0,1,""],User:[0,0,1,""]},"nest_backend.database.tables.Alert":{__init__:[0,2,1,""],conditions:[0,3,1,""],evaluation_mode:[0,3,1,""],id:[0,3,1,""],limit:[0,3,1,""],name:[0,3,1,""],notifications:[0,3,1,""],repository:[0,3,1,""],repository_id:[0,3,1,""],to_json:[0,2,1,""],window_size:[0,3,1,""]},"nest_backend.database.tables.Authorization":{__init__:[0,2,1,""],email:[0,3,1,""],repository:[0,3,1,""],rid:[0,3,1,""],to_json:[0,2,1,""],user:[0,3,1,""]},"nest_backend.database.tables.Composed":{__init__:[0,2,1,""],repository:[0,3,1,""],rid:[0,3,1,""],snowflake:[0,3,1,""],tweet:[0,3,1,""]},"nest_backend.database.tables.Condition":{__init__:[0,2,1,""],alerts:[0,3,1,""],content:[0,3,1,""],id:[0,3,1,""],repository:[0,3,1,""],repository_id:[0,3,1,""],to_json:[0,2,1,""],tweets:[0,3,1,""],type:[0,3,1,""]},"nest_backend.database.tables.ConditionMode":{all_and:[0,3,1,""],all_or:[0,3,1,""]},"nest_backend.database.tables.ConditionType":{coordinates:[0,3,1,""],hashtag:[0,3,1,""],location:[0,3,1,""],place:[0,3,1,""],time:[0,3,1,""],user:[0,3,1,""]},"nest_backend.database.tables.Contains":{__init__:[0,2,1,""],cid:[0,3,1,""],condition:[0,3,1,""],snowflake:[0,3,1,""],tweet:[0,3,1,""]},"nest_backend.database.tables.MadeOf":{__init__:[0,2,1,""],aid:[0,3,1,""],alert:[0,3,1,""],cid:[0,3,1,""],condition:[0,3,1,""]},"nest_backend.database.tables.Notification":{__init__:[0,2,1,""],alert:[0,3,1,""],alert_id:[0,3,1,""],id:[0,3,1,""],ora:[0,3,1,""],to_json:[0,2,1,""]},"nest_backend.database.tables.OperationType":{assign:[0,3,1,""]},"nest_backend.database.tables.Repository":{__init__:[0,2,1,""],alerts:[0,3,1,""],authorizations:[0,3,1,""],conditions:[0,3,1,""],end:[0,3,1,""],evaluation_mode:[0,3,1,""],id:[0,3,1,""],is_active:[0,3,1,""],is_deleted:[0,3,1,""],name:[0,3,1,""],owner:[0,3,1,""],owner_id:[0,3,1,""],start:[0,3,1,""],to_json:[0,2,1,""],tweets:[0,3,1,""]},"nest_backend.database.tables.Tweet":{__init__:[0,2,1,""],conditions:[0,3,1,""],content:[0,3,1,""],image_url:[0,3,1,""],insert_time:[0,3,1,""],location:[0,3,1,""],place:[0,3,1,""],post_time:[0,3,1,""],poster:[0,3,1,""],repositories:[0,3,1,""],snowflake:[0,3,1,""],to_json:[0,2,1,""]},"nest_backend.database.tables.User":{__init__:[0,2,1,""],authorizations:[0,3,1,""],email:[0,3,1,""],isAdmin:[0,3,1,""],owner_of:[0,3,1,""],password:[0,3,1,""],to_json:[0,2,1,""],username:[0,3,1,""]},"nest_backend.gestione":{admin_or_403:[0,4,1,""],authenticate:[0,4,1,""],error_handler:[0,4,1,""],find_user:[0,4,1,""],gen_password:[0,4,1,""],hashtag_validator:[0,4,1,""],identity:[0,4,1,""],json_error:[0,4,1,""],json_request_authorizer:[0,4,1,""],json_success:[0,4,1,""],repository_auth:[0,4,1,""]},nest_backend:{database:[0,1,0,"-"],gestione:[0,1,0,"-"]},nest_crawler:{associate_condition_tweet:[1,4,1,""],authenticate:[1,4,1,""],is_coordinate_inside_bounding_box:[1,4,1,""],is_repo_alert_triggered:[1,4,1,""],search_repo_conditions:[1,4,1,""],send_notification_email:[1,4,1,""],send_notification_tweet:[1,4,1,""]}},objnames:{"0":["py","class","Python classe"],"1":["py","module","Python modulo"],"2":["py","method","Python metodo"],"3":["py","attribute","Python attributo"],"4":["py","function","Python funzione"]},objtypes:{"0":"py:class","1":"py:module","2":"py:method","3":"py:attribute","4":"py:function"},terms:{"00m":11,"10h":[9,10,11],"10m":[10,11],"11h":11,"11m":11,"127":16,"12h":9,"12m":10,"12worwecx":9,"13h":10,"13m":[10,11],"14m":10,"15h":9,"15m":[10,11],"16h":[10,11],"16m":10,"17h":11,"17m":11,"18m":[10,11],"19h":11,"19m":10,"2021":[9,10,11,15],"206":17,"20m":11,"214":17,"21m":11,"222":17,"23h":[9,10],"23m":10,"248":16,"25m":11,"26m":10,"27h":11,"283":17,"28m":10,"291":17,"29h":10,"29m":[10,11],"30040":16,"30041":16,"301":16,"30m":[9,10,11],"32m":10,"34m":[10,11],"35m":[9,10],"36m":10,"39m":[9,11],"40m":11,"429":17,"42m":10,"443":16,"44m":11,"45m":11,"46m":10,"47m":11,"48m":10,"492":17,"51m":11,"52m":9,"56m":10,"57m":11,"58m":10,"59m":10,"63072000":16,"7c2fm2vd":16,"andr\u00e0":7,"boolean":2,"class":[0,2],"default":2,"else":0,"enum":[0,2],"final":[8,17],"for":[0,9],"function":0,"gi\u00e0":[8,10,17],"null":2,"pu\u00f2":2,"return":0,"static":14,"super":[2,9],"this":[0,16],"var":[10,16],"with":9,Che:[13,17],Gli:[2,7],Nello:14,Noi:15,Non:[5,17],None:0,Per:[10,16],Una:[2,4,7,15,16],Uno:2,__init__:0,abbiam:[8,17],abil:16,abnormal:9,about:9,absent:9,accad:2,access:14,accett:9,according:0,account:[2,7],acme:16,actually:0,adatt:16,adds:0,adegu:[10,11],admin:2,admin_or_403:0,advices:9,after:16,age:16,agent:7,aggiunt:[7,10,11],aggreg:[7,10],aid:[0,2],alcun:[7,11,16],alert:[0,1,2,11],alert_id:[0,2],alerts:[0,9],algoritm:2,all_and:0,all_not:2,all_or:[0,2],allarm:[2,7],allert:[2,7],allowed:0,allows:0,almen:4,alon:0,altre:[9,10],altri:7,altro:2,altrov:[8,17],always:[9,16],ambient:[10,11],ambit:7,amministr:[7,16],analis:[2,7,9,10,14],analizz:7,ancor:[12,17],and:[0,2,9],andat:[6,17],andrann:11,any:[0,9],anyon:9,apac:17,apert:2,api:[10,11,15,16,17],app:16,appartenent:2,applic:[14,15,17],application:0,appost:16,approcc:11,apr:17,arch:16,archiv:[2,7],are:[0,9],artefatt:17,artifacts:17,asks:9,assign:0,associate_condition_tweet:1,attiv:[2,7,16,17],attravers:[7,15,16,17],attributes:0,autent:[10,15],authentic:[0,1],authentication:0,authorization:[0,2],authorizations:0,automat:[14,16],autor:7,autorizz:[2,15],aver:16,averag:9,avet:[6,13,17],avvi:[0,7,16],backend:[0,10,15,17],background:16,backlog:[9,17],bas:[2,7,9,10,17],based:16,bash:16,basic:4,bat:4,bcrypt:2,becaus:0,behav:9,ben:[6,17],benven:17,better:9,bin:16,bisogn:[5,17],board:9,bord:7,bozz:9,brainstorming:9,branc:9,brev:17,bug:11,bugfixing:[10,11],build:[4,16],burndown:[8,17],bytearray:2,cach:16,camb:[6,17],camp:17,cancell:10,cap:10,caratterist:17,cartell:[4,7,16],cas:[16,17],cases:[9,10],casual:16,cattur:11,centralizz:14,cer:16,cerc:2,cert:[2,7],check:9,checks:0,chiam:[10,14],chiav:10,chiusur:2,chown:16,cid:[0,2],classes:0,classific:2,client:[7,9,10,11,12],clientinterview:17,clon:16,cod:[0,17],codic:[10,11,14,17],codific:2,coherent:9,collabor:[10,14],collegues:9,colonn:2,columns:0,com:[4,7,9,10,11,12,17],comand:16,combination:0,compil:[12,17],compless:[8,10,16,17],complet:[9,11],completed:9,completing:9,component:[2,9],composed:[0,2],compost:15,comprens:15,compres:9,comun:[14,15],concess:2,conclusion:[11,17],conclusions:17,concord:9,condition:[0,2],conditionmod:0,conditions:[0,11],conditions_typ:1,conditiontyp:0,condivid:7,condivision:7,condizion:[2,7,10,11,15],conferm:9,config:16,configur:[7,9,10,11,17],configuration:4,connession:16,conoscent:7,consegn:17,consent:2,consigl:16,constructed:0,constructor:0,consult:9,cont:[2,7],contains:[0,2,17],conten:[2,16],contenent:2,conteng:2,contenitor:2,content:[0,2],contien:2,continuous:4,contribution:9,controll:[10,14],cooper:9,cooperation:9,coordin:2,coordinates:[0,2],cop:16,cor:16,correct:0,corrett:16,correzion:11,cors:[10,15,17],cos:[2,4,5,6,9],costant:16,could:[0,9],couldn:9,coverag:[11,14],crawler:[2,17],cre:[2,7,17],createdb:16,createuser:16,creating:16,creator:2,creazion:[2,7,9,10,14],credentials:0,criter:9,css:9,curl:16,dar:[13,17],dark:9,dashboard:[9,11],dat:[0,2,4,7,9,10,11,12,15,16],databas:[9,10,11,15,17],dbms:16,deb:10,debt:9,decl_ap:0,declar:0,decreases:9,defin:[7,9],definit:9,definition:17,definizion:[2,9,10],dem:[11,16,17],denomin:16,depends:0,description:16,descriv:[8,17],descrizion:9,design:9,determin:7,dettagl:16,dev:7,development:17,diagramm:9,diar:[8,17],differenc:9,dipendent:[4,7,9,11,17],dir:16,directory:[4,16],dirett:[7,16],discord:[9,14],discret:7,discuss:9,discussion:11,dispon:[0,4,9,11,16],disponessim:4,distribu:16,div:2,diven:2,divers:10,doa:16,docs:[0,4,16,17],document:[0,9,10,11,12,14],documentation:4,does:9,doesn:9,doing:9,don:17,dop:[2,16],doppiagg:9,dovr:16,dovrebb:16,driv:9,driving:9,dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj:16,due:7,dur:[8,9,10,11,12,17],durant:[7,9,10,11,12],during:9,each:9,edit:16,effectiveness:9,effettu:[7,10],efficent:10,efficiently:9,effort:9,elabor:15,element:[2,7],elenc:9,elimin:[2,7,10],email:[0,2,7],enabl:16,encourag:9,end:[0,2,9],engines:16,entit:[2,10],entrarv:16,entri:4,entro:2,entry:2,enumeration:0,env:16,environment:[4,16],epic:[7,9],error:[0,10],error_handler:0,errorunknownerror:0,esam:15,esecu:[14,16,17],esegu:[2,4,7,16],esemp:[10,16],esperient:7,espost:16,esse:10,essend:7,esser:[2,7,16],essi:[2,7],esso:2,estend:[7,17],estension:17,estim:9,estraiam:15,evaluating:9,evaluation:9,evaluation_mod:[0,2],event:7,eventual:2,every:9,everyon:9,exampl:0,exec:16,execstart:16,explain:9,explorer:10,expr:16,express:9,ext4:17,facing:9,fact:0,fallimentar:11,fancy:0,farl:16,fas:7,feedback:7,feel:9,feels:9,figm:[9,14],fil:[9,17],filtr:7,fin:[10,11,12,16,17],finc:16,find_user:0,finestr:7,fix:[10,11],fixtures:11,flag:2,flask:[15,17],flask_config:16,forc:16,form:15,format:0,formatted:0,forn:[7,9,10,11,12,15,16],forwarded:16,foss:4,fram:9,framework:15,friendly:9,from:[0,9],frontend:[10,11,17],full:16,fullchain:16,fundamental:9,funzion:10,funzional:[9,17],futur:[2,7,15,17],gam:9,gen_password:0,gener:[4,8,9,10,11,12,16,17],general:[9,10,11,12,17],generates:0,geograf:7,geolocalizz:[10,11],gest:[0,15,16],gestion:[7,10,17],get:9,giorn:14,git:[9,14,16],github:4,gitlab:[0,9,11,14,16],glossar:17,gnu:17,goal:[9,17],goals:17,going:9,good:9,googl:9,grad:9,grafic:[7,14],gratuit:11,graz:10,grig:7,grooming:10,group:[9,16],grupp:[7,8,17],guid:[16,17],gunicorn:16,hann:9,happy:0,hash:0,hashed:0,hashtag:[0,2,7,10],hashtag_validator:0,header:16,help:9,helpful:9,higher:9,himself:9,hom:16,hosted:14,hosting:14,html:[4,9,16],http:[15,16],http_host:16,https:[9,14,16],ide:[5,9,10,14,17],ideas:9,identif:2,identity:0,illustr:16,image_url:[0,2],immagin:2,immediat:15,impar:[6,17],impieg:9,implement:10,imports:0,impost:[2,16],includ:[8,17],incontr:[7,11,17],index:17,indic:[2,17],indipendent:9,indirizz:[14,16],individu:7,inerent:10,infin:[4,7],info:10,inform:[2,10,11,12,16,17],informat:[7,15],initialization:0,iniz:[7,9,10,11,12,17],inizial:9,innesc:2,inoltr:2,inser:[2,5,10,11,12,16,17],insert_tim:[0,2],install:[4,17],installation:17,instanc:0,integer:2,integr:[4,7,11,16],intellij:[10,14,17],inter:16,interfacc:[7,14,17],intern:[4,15,16],internet:16,interrott:7,interv:9,introdu:17,inutil:10,invi:[2,7],involved:9,is_act:[0,2],is_coordinate_inside_bounding_box:1,is_deleted:[0,2],is_repo_alert_triggered:1,isadmin:[0,2],isol:16,ispezion:2,issu:11,issues:11,istantane:14,ital:11,its:0,jobs:9,json:[0,10,16],json_error:0,json_request_authorizer:0,json_success:0,jsx:15,jwt:[0,16],keep:9,key:16,keys:0,keyword:7,know:9,knowledg:9,kwargs:0,lasc:[7,11,17],latitud:1,lavor:10,leads:9,learn:9,learned:9,left:9,leg:[2,10],legam:2,let:9,lettur:2,level:9,librer:16,licenz:4,light:9,limit:[0,2,10],lin:9,line:17,link:[2,5,8,9,10,11,17],linux:[4,16],littl:0,local:[7,10,16],location:[0,2],log:9,logg:10,logic:7,login:[0,7,10],longitud:1,lookup:16,loopback:16,lor:7,lost:9,lowest:9,macr:17,macroscop:7,madeof:[0,2],mag:17,maggior:[9,16],mail:2,main:9,mak:17,makefil:4,makes:9,manag:10,management:[9,10,11,14],manipol:15,manten:16,manual:[4,16],many:0,mapped:0,marcell:[9,10,11,12,17],master:9,matc:0,max:16,mechanics:9,member:9,members:9,membr:[9,14],men:2,mentr:4,merg:9,mess:2,messag:0,messaggist:14,met:17,method:0,metod:[10,17],metric:9,mett:[8,17],mezz:7,miglior:[10,14],missirol:[9,10,11,12,13,17],mkdir:16,mnt:17,mockup:[9,10,11],mod:[7,9,10,14,16],model:0,modic:10,modif:[10,11,14],modul:[0,10,17],molt:16,moment:[2,7,10],most:9,mostr:[7,10,11,12,15,17],mot:16,motivation:9,msg:0,mult:16,multilinguagg:14,nam:[0,2],names:0,necess:16,necessar:[4,9,16],need:9,needs:0,nest:16,nest_backend:[15,16,17],nest_crawler:[15,17],nest_frontend:[15,17],network:16,never:9,next:9,node_env:16,node_modules:16,node_version:16,nodejs:17,nom:[2,10,16],nonexisting:17,not:[0,2,9],notif:[2,7],notification:[0,2],notifications:[0,2,9],npm:16,nss:16,number:9,numer:[2,7,8,17],nuov:[2,7,11,17],nvm:16,oauth:10,obiett:17,oggett:2,ogni:2,one:9,onlin:16,only:0,oper:16,operation:0,operationtyp:0,opinion:9,opinions:9,oppur:[2,7],opzional:2,ora:[0,2,9,10,11,12,16],orar:2,ore:2,org:16,organiz:9,organizz:10,original:17,orm:0,ospit:[4,14],other:9,ottimizz:16,output:10,ove:7,ovver:2,owner:[0,9,16],owner_id:[0,2],owner_of:0,pacchett:16,pagin:9,pair:10,param:0,parametr:4,parents:16,parol:10,part:[7,10,14,15,17],partecip:[8,17],partenz:2,participants:9,particol:[4,7],particolar:7,pass:11,password:[0,2],pawn:9,payload:0,penpot:9,perc:[11,16],percors:[16,17],perfect:9,permess:2,permett:[2,4,7],pertant:16,piattaform:[2,7,14],piccol:[7,11],pien:16,plac:[0,2],place_id:11,plan:9,planning:9,platform:0,play:9,played:9,player:9,players:9,plugin:10,poetry:[4,16],poi:4,point:9,poker:9,poor:9,port:16,porting:11,posizion:[2,7],poss:[2,16],possibil:[4,7,9,16],post:2,post_tim:[0,2],poster:[0,2],postgres:16,postgresql:16,pot:9,poter:10,potr:7,potrann:7,powershell:17,practic:9,precedent:16,predic:7,predisposizion:10,preferibil:16,prem:16,prepar:11,prerequis:17,present:[0,2,7,9,10,15],presenz:2,preved:7,prim:[2,4,7,9,10,11,16],principal:[7,10],priorit:9,priority:9,problem:9,process:[9,17],prod:16,prodott:[7,9],product:9,production:16,prof:[9,10,11,12,13,17],progett:[4,7,9,10,14,16],programming:10,project:[9,10,11,14],properly:9,propr:[7,16],propriet:10,proprietar:2,prosegu:16,prot:16,protocols:16,prov:10,proxy:17,proxypass:16,proxypassrevers:16,pubblic:[2,7,11,16],punt:7,put:11,puts:9,py3:16,pypoetry:16,pytest:11,python:[4,15,17],qual:[2,7,11,16],qualit:14,quality:9,qualor:[4,7,17],qualsias:7,quand:2,quant:16,quel:10,quell:[7,10],query:11,quest:[2,4,9,10,11,12,16],question:9,questions:9,qui:[5,7,10,11,12,17],raccogl:[7,9],raccolt:[2,7],radius:1,ragg:2,rappresent:[2,16],react:[15,17],readthedocs:4,ready:17,realizz:[9,10,11,15],recuper:15,recurs:16,ref:[8,17],refactor:10,refactoring:[10,11,14],referenc:17,registered:0,registr:17,regol:7,regolar:7,relat:[2,4,7,9,17],relationships:0,relazion:10,rend:16,rep:[2,10],repeat:9,repeatabl:9,report:12,repositories:[0,9],repository:[0,2,7,9,10,11,14],repository_auth:0,repository_id:[0,1,2],reqest:0,request_schem:16,requestheader:16,required:[0,9],resocont:9,rest:16,restitu:10,restructuredtext:4,ret:16,retrieval:10,retrospect:[9,10,11],retrospett:[8,11,17],returned:0,returns:0,revers:17,review:17,rewriteengin:16,rewriterul:16,riavv:16,ricerc:[7,10],ricev:7,richied:2,richiest:[7,9,10],ricord:16,rid:[0,2],riemp:2,rig:[16,17],righ:2,riguard:10,rilev:7,rimang:16,rimoss:7,rimozion:10,ripet:[16,17],riport:7,riserv:2,risolt:11,risolu:11,rispett:2,risult:17,ritocc:[9,10],ritorn:[10,11],riusc:11,roles:9,root:16,routes:17,rp_app:16,rst:17,run:[4,16],ruol:16,sal:2,salv:[15,16],sar:[7,16],sarann:7,scanner:11,scaric:17,scegl:7,scherm:17,scop:7,screenshot:[12,17],screenshots:17,script:[4,16],scritt:[4,10,15],scrittur:[10,14],scriv:[5,6,16,17],scrum:9,scrumbl:17,search_repo_conditions:1,second:15,secret_key:16,security:16,see:16,segnal:[2,11],segret:16,segu:[7,8,17],seguent:[2,9,10,11,12,14,16],selezion:7,self:14,semplic:7,send_notification_email:1,send_notification_tweet:1,senz:7,serenity:9,serializabl:0,serv:16,server:[0,15,16],servernam:16,servic:16,serviz:17,session:[10,11],set:16,sets:0,setting:11,settings:9,setup:[11,16],shar:9,sharing:9,shell:[4,16],shouldnt:0,sicurezz:16,simpl:0,sincron:14,sint:16,sistem:[4,7,16],sit:10,situation:9,siz:9,smallint:2,snowflak:[0,2],soddisf:7,soddisfacent:7,soddisfatt:7,softw:[7,14,15],sogl:2,sol:[8,16,17],solving:9,something:9,son:[2,7,14,16],sonarqub:[9,10,11,14,17],sorgent:[4,9,17],sostitu:16,sourc:[4,17],speaks:9,spec:0,specif:[0,9],specific:10,sphinx:4,sprint1:[10,17],sprint2:[11,17],sprint3:17,sprint:[7,8,17],sprints:9,sqlalchemy:[0,16],sqlalchemy_database_ur:16,srs:9,srv:16,sslcertificatefil:16,sslcertificatekeyfil:16,sslengin:16,stag:9,standard:4,standardizz:10,start:[0,2,16],stat:[2,7,9,10,11,12,14,16],statist:[7,15,17],stats:9,steff:[14,16],stess:16,stesur:[9,10],stim:9,stories:9,story:[7,9],strict:16,string:[0,2,16],strument:[4,17],struttur:[4,10,17],stud:10,success:[9,16],successful:0,such:0,suddivision:17,sugger:[8,16,17],suggestions:[9,17],support:10,sur:9,svilupp:[2,7,9,10,11,14,17],svolt:10,swagger:[0,11],system:0,systemctl:16,systemd:17,tabell:[2,17],tables:17,taig:[9,10,11,12,14,17],talks:9,talvolt:16,target:[4,16],tasks:9,tast:16,tastier:16,team:[9,10,11,14],technical:9,tecnic:10,telemat:7,temp:[2,7,9,17],temporal:7,ten:2,tentat:11,ter:17,termin:[7,9,10,11,17],test:[9,10,11,16],tester:9,testing:[10,11,14],tests:11,that:0,the:[0,9,16],thes:0,they:9,thing:0,thingamajigs:0,throughout:9,tim:[0,2,9],timer:17,timestamp:2,tip:[2,10],tipolog:7,to_json:0,toctre:17,tod:12,token:16,topic:9,total:[9,10,11,12],totally:9,tracc:[2,14],traduzion:11,tram:[7,10,16],transport:16,tre:[7,15],trigger:2,trov:[4,7,17],tru:2,tutt:[7,9,10,14,16],tweepy:15,tweet:[0,1,2,7,10,11,15],tweet_latitud:1,tweet_longitud:1,tweets:0,twitter:[2,7,9,10,15],type:[0,2,16],uf2up4_lneoovhzpvr77msg:9,ulterior:11,ultim:[2,4,9,10,14],uml:7,understand:9,uniform:9,uniformity:9,unimor:15,unit:16,univoc:2,unrepeatabl:9,usa:16,usand:[2,8,15,17],usat:[2,14],use:9,used:0,user:[0,2,4,7,9,10,11,16],useradd:16,usernam:[0,2],users:[10,11],using:0,uso:[16,17],usr:16,utent:[2,10,11,15],utility:17,utilizz:[2,7,10,11,16,17],valid:0,valor:2,valu:0,values:0,valut:11,varc:2,variabil:16,ved:[0,16],ven:[2,10],veng:[7,16,17],venv:[4,16],verif:16,verification:0,verr:16,verrann:7,version:[4,9,11,14,16],vide:[5,9,10,11,17],vien:2,view:9,vim:16,virtual:4,virtualenv:16,virtualenvs:16,virtualhost:16,vision:9,vist:[7,8,17],visualizz:[7,14,15],vocal:14,volt:[0,2,4,7,10],want:0,wantedby:16,wants:[9,16],was:0,web:[14,15,16,17],webserver:0,well:9,what:9,when:9,whether:0,willing:9,window_siz:[0,2],windows:17,wis:9,working:16,workingdirectory:16,you:[0,16]},titles:["nest_backend - Web API in Python","nest_crawler - Crawler in Python","Struttura del database","nest_frontend - Interfaccia utente in React","Meta-documentazione","Artefatti","Conclusioni","Introduzione","Processo di sviluppo","Sprint 0: 04 Apr - 18 Apr","Sprint 1: 19 Apr - 02 Mag","Sprint 2: 03 Mag - 16 Mag","Sprint 3: 17 Mag - 30 Mag","Suggerimenti relativi al corso","Strumenti utilizzati","Il progetto in breve","Installazione","N.E.S.T."],titleterms:{"final":12,altri:17,anniball:[9,10,11,12],apac:16,api:0,applic:7,apr:[9,10],artefatt:[5,9],attiv:[9,10,11,12],backend:16,backlog:[7,10,11,12],balugan:[9,10,11,12],bas:0,brev:15,calzolar:[9,10,11,12],camp:7,caratterist:7,cas:7,chiar:[9,10,11,12],cocc:[9,10,11,12],codic:16,colleg:17,collett:[9,10,11,12],com:16,compil:[4,16],conclusion:6,configur:16,consegn:[9,10,11,12],cors:13,cos:17,crawler:[1,16],cre:16,databas:[0,2,16],definition:[9,10,11,12],dem:5,dipendent:16,document:[4,17],don:[9,10,11,12],estension:0,far:[5,6,7,8,10,11,12,13,16,17],fil:16,flask:0,flav:[9,10,11,12],frontend:16,funzional:7,general:7,gestion:0,giorg:[9,10,11,12],giovann:[9,10,11,12],gitinspector:[9,10,11,12],glossar:7,gnu:4,goal:[10,11,12],goldon:[9,10,11,12],ide:4,individual:[9,10,11,12],install:16,intellij:4,interfacc:3,introdu:7,lorenz:[9,10,11,12],macr:7,mag:[10,11,12],mak:4,manual:17,met:4,metod:0,minoccar:[9,10,11,12],modul:15,nest_backend:0,nest_crawler:1,nest_frontend:3,nodejs:16,nuov:16,obiett:7,part:9,percors:0,pigozz:[9,10,11,12],powershell:4,prerequis:16,process:8,progett:[15,17],proxy:16,python:[0,1,16],react:3,ready:9,registr:[9,10,11,12],relat:13,relazion:17,retrospett:12,revers:16,review:[9,10,11],rimast:17,risult:9,riunion:[9,10,11,12],routes:0,scaric:16,scherm:12,screenshots:15,scrumbl:9,serviz:16,sonarqub:12,sorgent:16,sprint:[9,10,11,12],statist:[9,10,11,12],stef:[9,10,11,12],strument:14,struttur:2,suddivision:15,sugger:13,svilupp:8,systemd:16,tabell:0,tables:0,tecnic:17,timer:16,uso:7,utent:[3,7,16,17],utility:0,utilizz:14,web:0,windows:4}}) \ No newline at end of file +Search.setIndex({docnames:["code/backend/index","code/crawler/index","code/database/index","code/frontend/index","code/meta/index","development/artifacts","development/conclusions","development/goals","development/process","development/sprint0/index","development/sprint1/index","development/sprint2/index","development/sprint3/index","development/suggestions","development/tools","guide/about","guide/installation","guide/updating","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,sphinx:56},filenames:["code/backend/index.rst","code/crawler/index.rst","code/database/index.rst","code/frontend/index.rst","code/meta/index.rst","development/artifacts.rst","development/conclusions.rst","development/goals.rst","development/process.rst","development/sprint0/index.rst","development/sprint1/index.rst","development/sprint2/index.rst","development/sprint3/index.rst","development/suggestions.rst","development/tools.rst","guide/about.rst","guide/installation.rst","guide/updating.rst","index.rst"],objects:{"":{Alert:[2,0,1,""],Authorization:[2,0,1,""],Composed:[2,0,1,""],Condition:[2,0,1,""],Contains:[2,0,1,""],MadeOf:[2,0,1,""],Notification:[2,0,1,""],Repository:[2,0,1,""],Tweet:[2,0,1,""],User:[2,0,1,""],nest_backend:[0,1,0,"-"],nest_crawler:[1,1,0,"-"]},"nest_backend.database":{base:[0,1,0,"-"],tables:[0,1,0,"-"]},"nest_backend.database.tables":{Alert:[0,0,1,""],Authorization:[0,0,1,""],Composed:[0,0,1,""],Condition:[0,0,1,""],ConditionMode:[0,0,1,""],ConditionType:[0,0,1,""],Contains:[0,0,1,""],MadeOf:[0,0,1,""],Notification:[0,0,1,""],OperationType:[0,0,1,""],Repository:[0,0,1,""],Tweet:[0,0,1,""],User:[0,0,1,""]},"nest_backend.database.tables.Alert":{__init__:[0,2,1,""],conditions:[0,3,1,""],evaluation_mode:[0,3,1,""],id:[0,3,1,""],limit:[0,3,1,""],name:[0,3,1,""],notifications:[0,3,1,""],repository:[0,3,1,""],repository_id:[0,3,1,""],to_json:[0,2,1,""],window_size:[0,3,1,""]},"nest_backend.database.tables.Authorization":{__init__:[0,2,1,""],email:[0,3,1,""],repository:[0,3,1,""],rid:[0,3,1,""],to_json:[0,2,1,""],user:[0,3,1,""]},"nest_backend.database.tables.Composed":{__init__:[0,2,1,""],repository:[0,3,1,""],rid:[0,3,1,""],snowflake:[0,3,1,""],tweet:[0,3,1,""]},"nest_backend.database.tables.Condition":{__init__:[0,2,1,""],alerts:[0,3,1,""],content:[0,3,1,""],id:[0,3,1,""],repository:[0,3,1,""],repository_id:[0,3,1,""],to_json:[0,2,1,""],tweets:[0,3,1,""],type:[0,3,1,""]},"nest_backend.database.tables.ConditionMode":{all_and:[0,3,1,""],all_or:[0,3,1,""]},"nest_backend.database.tables.ConditionType":{coordinates:[0,3,1,""],hashtag:[0,3,1,""],location:[0,3,1,""],place:[0,3,1,""],time:[0,3,1,""],user:[0,3,1,""]},"nest_backend.database.tables.Contains":{__init__:[0,2,1,""],cid:[0,3,1,""],condition:[0,3,1,""],snowflake:[0,3,1,""],tweet:[0,3,1,""]},"nest_backend.database.tables.MadeOf":{__init__:[0,2,1,""],aid:[0,3,1,""],alert:[0,3,1,""],cid:[0,3,1,""],condition:[0,3,1,""]},"nest_backend.database.tables.Notification":{__init__:[0,2,1,""],alert:[0,3,1,""],alert_id:[0,3,1,""],id:[0,3,1,""],ora:[0,3,1,""],to_json:[0,2,1,""]},"nest_backend.database.tables.OperationType":{assign:[0,3,1,""]},"nest_backend.database.tables.Repository":{__init__:[0,2,1,""],alerts:[0,3,1,""],authorizations:[0,3,1,""],conditions:[0,3,1,""],end:[0,3,1,""],evaluation_mode:[0,3,1,""],id:[0,3,1,""],is_active:[0,3,1,""],is_deleted:[0,3,1,""],name:[0,3,1,""],owner:[0,3,1,""],owner_id:[0,3,1,""],start:[0,3,1,""],to_json:[0,2,1,""],tweets:[0,3,1,""]},"nest_backend.database.tables.Tweet":{__init__:[0,2,1,""],conditions:[0,3,1,""],content:[0,3,1,""],image_url:[0,3,1,""],insert_time:[0,3,1,""],location:[0,3,1,""],place:[0,3,1,""],post_time:[0,3,1,""],poster:[0,3,1,""],repositories:[0,3,1,""],snowflake:[0,3,1,""],to_json:[0,2,1,""]},"nest_backend.database.tables.User":{__init__:[0,2,1,""],authorizations:[0,3,1,""],email:[0,3,1,""],isAdmin:[0,3,1,""],owner_of:[0,3,1,""],password:[0,3,1,""],to_json:[0,2,1,""],username:[0,3,1,""]},"nest_backend.gestione":{admin_or_403:[0,4,1,""],authenticate:[0,4,1,""],error_handler:[0,4,1,""],find_user:[0,4,1,""],gen_password:[0,4,1,""],hashtag_validator:[0,4,1,""],identity:[0,4,1,""],json_error:[0,4,1,""],json_request_authorizer:[0,4,1,""],json_success:[0,4,1,""],repository_auth:[0,4,1,""]},nest_backend:{database:[0,1,0,"-"],gestione:[0,1,0,"-"]},nest_crawler:{associate_condition_tweet:[1,4,1,""],authenticate:[1,4,1,""],is_coordinate_inside_bounding_box:[1,4,1,""],is_repo_alert_triggered:[1,4,1,""],search_repo_conditions:[1,4,1,""],send_notification_email:[1,4,1,""],send_notification_tweet:[1,4,1,""]}},objnames:{"0":["py","class","Python classe"],"1":["py","module","Python modulo"],"2":["py","method","Python metodo"],"3":["py","attribute","Python attributo"],"4":["py","function","Python funzione"]},objtypes:{"0":"py:class","1":"py:module","2":"py:method","3":"py:attribute","4":"py:function"},terms:{"0000000000000000000000000":16,"000000000000000000000000000000000000000000000":16,"00000000000000000000000000000000000000000000000000":16,"00m":11,"10h":[9,10,11],"10m":[10,11],"11h":11,"11m":11,"125":13,"127":16,"12h":9,"12m":10,"12worwecx":9,"13h":10,"13m":[10,11],"14h":12,"14m":10,"15h":9,"15m":[10,11],"15o70ffe51cnj8ltkhc9dgiqrvnbv9upz":12,"16h":[10,11],"16m":10,"17h":[11,12],"17m":11,"18h":12,"18m":[10,11],"19h":11,"19m":10,"1dsis_cgcrnvgzakzjevizkt4nndkycaf":10,"1x1kub":11,"2021":[9,10,11,15],"206":[],"20m":11,"20unic":8,"214":[],"21m":11,"222":[],"22h":12,"23h":[9,10],"23m":10,"248":16,"25m":11,"26m":10,"27h":11,"283":[],"28m":10,"291":[],"29h":10,"29m":[10,11],"30040":16,"30041":16,"301":16,"30m":[9,10,11,12],"32m":10,"34m":[10,11],"35m":[9,10],"362":18,"36m":10,"370":18,"39m":[9,11],"40m":11,"429":[],"42m":10,"443":16,"44m":11,"45m":11,"46m":10,"47m":11,"48m":10,"492":[],"51m":11,"52m":9,"56m":10,"57m":11,"58m":10,"59m":10,"60min":16,"63072000":16,"63342":8,"7c2fm2vd":16,"andr\u00e0":7,"boolean":2,"ci\u00f2":[10,11,12],"class":[0,2],"default":2,"else":0,"enum":[0,2],"final":[8,18],"for":[0,9],"function":0,"gi\u00e0":[10,12],"import":10,"null":2,"pu\u00f2":[2,13],"return":0,"static":14,"super":[2,9,10,11,12],"this":[0,16],"var":[6,10,13,16],"with":9,All:16,Che:[],Dal:10,Gli:[2,7],Nel:16,Nello:[14,16],Noi:15,Non:[5,18],None:0,Per:[10,16,17],Una:[2,4,7,15,16],Uno:2,__init__:0,_diar:8,_retrospett:8,a_t:16,a_t_s:16,abbiam:6,abil:16,abnormal:9,about:9,absent:9,accad:2,access:[14,16],accett:[9,10,11,12],accomod:10,according:0,account:[2,7],acme:16,acquis:6,actually:0,adatt:16,adds:0,adegu:[10,11],admin:2,admin_or_403:0,adott:13,advices:9,after:16,age:16,agent:7,aggiorn:[12,18],aggiunt:[7,10,11,12],aggreg:[7,10],aid:[0,2],alcun:[6,7,8,11,16,18],alert:[0,1,2,11,12],alert_id:[0,2],alerts:[0,9,12],algoritm:2,all_and:0,all_not:2,all_or:[0,2],allarm:[2,7],allegger:13,allert:[2,7,16],allowed:0,allows:0,almen:4,alon:0,also:[8,18],altre:[9,10,11,12],altri:[7,10],altro:2,altrov:[],always:[9,16],ambient:[10,11,12,16],ambit:7,amministr:[7,16],analis:[2,7,9,10,12,14],analizz:7,ancor:[12,18],and:[0,2,9],andat:6,andrann:11,any:[0,9],anyon:9,apac:18,apert:2,api:[10,11,12,15,16,18],app:16,appartenent:2,applic:[14,15,18],application:0,appost:16,approcc:11,approv:16,apr:18,april:8,arch:16,archiv:[2,7],are:[0,9],artefatt:18,artifacts:18,asks:9,assegn:13,assign:0,associate_condition_tweet:1,attiv:[2,6,7,8,16,18],attravers:[7,15],attributes:0,autent:[10,15],authentic:[0,1],authentication:0,authorization:[0,2],authorizations:0,automat:[14,16],autor:7,autorizz:[2,12,15],aver:[13,16],averag:9,avet:[],avev:6,avvi:[0,7,16,17],backend:[0,10,15,17,18],background:16,backlog:[9,18],bas:[2,7,9,10,11,12],based:16,bash:16,basic:4,bat:4,bcrypt:2,becaus:0,behav:9,ben:6,benven:18,better:9,bin:16,bisogn:[5,18],blank:8,block:8,board:9,bord:7,bot:16,bozz:[9,10,11,12],bpvjrwmgrn5llu8ecqcbxfaokg:11,brainstorming:9,branc:[9,10,11,12],brev:18,bug:11,bugfixing:[10,11,12],bui:13,build:[4,8,16],buon:13,burndown:[8,10,11,12],bytearray:2,c_k:16,c_s:16,cach:16,calls:10,camb:10,camp:[12,18],cancell:[10,11],cap:10,caratter:16,caratterist:18,caric:13,cartell:[4,7,16],cas:[16,18],cases:[9,10],casual:16,cattur:11,centralizz:14,cer:16,cerc:2,cert:[2,7],cfu:13,chart:[10,11,12],check:9,checks:0,chiam:[10,14],chiav:10,chiusur:2,chown:16,ciascun:[6,8],cid:[0,2],circ:13,classes:0,classific:2,client:[7,9,10,11,12],clientinterview:[],clon:16,cod:[0,18],codebas:10,codic:[10,11,12,14,17,18],codific:2,coherent:9,collabor:[6,10,14],collegues:9,colonn:2,columns:0,com:[4,6,7,9,10,11,12,17,18],comand:16,combination:0,comod:13,comp:6,compar:16,compil:[12,18],compless:[10,16],complet:[9,10,11,12],completed:9,completing:9,component:[2,9,10],composed:[0,2],compost:15,comprens:15,compres:[9,10,11,12],comun:[14,15],comunic:12,concess:2,conclusion:[11,18],conclusions:[],concord:[9,10,11,12,13],condition:[0,2],conditionmod:0,conditions:[0,11],conditions_typ:1,conditiontyp:0,condivid:7,condivision:7,condizion:[2,7,10,11,15],conferm:[9,10,11,12],config:16,configur:[7,9,10,11,12,18],configuration:4,conflitt:6,connession:16,conosc:6,conoscent:7,consegn:18,consent:2,consigl:16,constructed:0,constructor:0,consult:9,consumer:16,cont:[2,7],contains:[0,2],conten:[2,16],contenent:2,conteng:2,contenitor:2,content:[0,2],contien:2,continuous:4,contribution:9,controll:[10,14],cooper:9,cooperation:9,coordin:2,coordinates:[0,2],cop:16,cor:16,corpos:13,correct:0,corrett:[16,17],correzion:11,corrispond:13,cors:[10,15,18],cos:[2,4,5,9,10,11,12],costant:16,costru:10,could:[0,9],couldn:9,coverag:[11,14],crawler:[2,12,17,18],cre:[2,7,10,11,18],createdb:16,createuser:16,creating:16,creator:2,creazion:[2,7,9,10,11,12,14],cred:13,credentials:0,credenzial:16,criter:[9,10,11,12],css:9,curl:16,dar:[],dark:9,dashboard:[9,11],dat:[0,2,4,7,9,10,11,12,15,16],databas:[9,10,11,15,18],dbms:16,deb:10,debt:9,decl_ap:0,declar:0,decreases:9,defin:[7,9,10,11,12],definit:9,definition:[8,18],definizion:[2,9,10,11,12],dem:[11,16,18],denomin:16,depends:0,description:16,descriv:[],descrizion:9,desider:16,design:9,determin:[7,11],dettagl:[12,16],dev:7,development:[8,18],diagramm:9,diar:8,dic:[8,18],differenc:9,dimestichezz:6,dipendent:[4,7,9,10,11,12,18],dir:[13,16],directory:[4,16,17],dirett:[7,13,16],direzion:13,discord:[9,14],discret:7,discuss:9,discussion:11,dispon:[0,4,9,10,11,16],disponessim:4,distanz:6,distribu:16,div:2,diven:2,divers:10,doa:16,docs:[0,4,8,12,16,18],document:[0,9,10,11,12,14],documentation:4,does:9,doesn:9,doing:9,don:18,dop:[2,16],doppiagg:9,dovr:16,dovrebb:16,dovrebber:13,driv:[9,10,11,12],driving:9,dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj:16,due:7,dunqu:16,dur:[8,9,10,11,12],durant:[7,9,10,11,12,13],during:9,each:9,ecc:13,eccess:13,edific:6,edit:16,effectiveness:9,effett:13,effettu:[7,10],efficent:10,efficiently:9,effort:9,elabor:15,element:[2,7],elenc:9,elimin:[2,7,10],email:[0,2,7,16],enabl:16,encourag:9,end:[0,2,9],ends:8,engines:16,entit:[2,10],entrarv:16,entri:4,entro:2,entry:2,enumeration:0,env:16,environment:[4,16],epic:[7,9],error:[0,10,12,16],error_handler:0,errorunknownerror:0,esam:15,esecu:[14,16],esegu:[2,4,7,12,16,17],esemp:[10,16],esperient:7,espost:16,espress:12,esse:10,essend:7,esser:[2,7,12,16],essi:[2,7],esso:2,estend:[7,18],estension:[],estern:16,estim:9,estraiam:15,evaluating:9,evaluation:9,evaluation_mod:[0,2],event:7,eventual:2,every:[9,16],everyon:9,evit:13,exampl:0,exec:16,execstart:16,explain:9,explorer:10,expr:16,express:9,ext4:18,facil:10,facing:9,fact:0,fallimentar:11,fancy:0,far:16,farl:16,fas:[7,13],fatt:6,features:12,feedback:7,feel:9,feels:9,figm:[9,10,14],fil:[9,11,12,18],files:12,filtr:7,fin:[10,16],finc:16,find_user:0,finestr:7,fix:[8,10,11,12,18],fixtures:11,flag:2,flask:15,flask_config:16,folders:10,forc:16,form:15,format:0,formatted:0,forn:[7,9,10,11,12,15,16],forwarded:16,foss:4,fram:9,framework:15,friendly:9,from:[0,9],frontend:[10,11,12,17,18],full:16,fullchain:16,fundamental:9,funzion:[8,10,12,18],funzional:[9,10,11,12,13,18],futur:[2,7,15,18],gam:9,gand:16,gen_password:0,gener:[4,9,10,11,12,16,18],general:[6,8,9,10,12,18],generates:0,geograf:[7,12],geolocalizz:[10,11,12],gest:[0,15,16],gestion:[7,10,12,18],get:9,giorn:14,git:[9,14,16,17],github:[4,13],gitlab:[0,9,10,11,12,13,14,16],giust:13,glossar:18,gnu:18,goal:[9,18],goals:18,going:9,good:9,googl:[9,10,11,12],grad:[9,10,11,12],grafic:[7,14],gratuit:11,graz:10,grig:7,grooming:[10,18],gross:10,group:[9,16],grupp:[6,7,13],guid:16,gunicorn:16,hann:[6,9,10,11,12],happy:0,hash:0,hashed:0,hashtag:[0,2,7,10],hashtag_validator:0,header:16,help:9,helpful:9,higher:9,himself:9,hom:16,hosted:14,hosting:14,html:[4,8,9,16],http:[8,15,16],http_host:16,https:[9,10,11,12,14,16],ide:[5,9,10,14,18],ideas:9,identif:2,identity:0,illogin:10,illustr:16,image_url:[0,2],immagin:2,immediat:15,impar:6,impatt:10,impieg:9,implement:10,imports:0,impost:[2,16],includ:[],incontr:[7,11,18],incorr:13,indentation:8,index:[8,18],indic:[2,18],indipendent:[9,10,11,12],indirizz:[14,16],individu:7,inerent:10,infin:[4,7,17],info:10,inform:[2,16],informat:[7,15],ingles:12,initialization:0,iniz:[7,9,12,13],inizial:9,innesc:2,inoltr:2,inser:[2,5,11,12,16,18],insert_tim:[0,2],install:[4,18],installation:[],instanc:0,instrad:13,integer:2,integr:[4,7,11,16],intellij:[10,14,18],inter:16,interfacc:[7,12,14,18],intern:[4,8,15,16,18],internet:16,interrott:7,interv:9,introdu:18,inutil:10,invi:[2,7,16],involved:9,is_act:[0,2],is_coordinate_inside_bounding_box:1,is_deleted:[0,2],is_repo_alert_triggered:1,isadmin:[0,2],isol:16,ispezion:2,issu:11,issues:11,istantane:14,ital:11,its:0,jest:12,jobs:9,journalctl:16,json:[0,10,16],json_error:0,json_request_authorizer:0,json_success:0,jsx:15,jwt:[0,16],keep:9,key:16,keys:0,keyword:7,know:9,knowledg:9,kwargs:0,lasc:[7,11,18],lat:6,latitud:1,lavor:[6,10,13],leads:9,learn:9,learned:9,left:9,leg:[2,10,12],legam:2,let:9,lettur:2,level:9,lezion:13,librer:16,licenz:4,light:9,limit:[0,2,10],lin:[8,9],line:18,linguagg:6,link:[2,5,8,9,10,11,18],linux:[4,16],list:8,littl:0,local:[7,10,16],localhost:8,localizz:12,location:[0,2],log:[9,12,16],logg:10,logic:7,login:[0,7,10],longitud:1,lookup:16,loopback:16,lor:7,lost:9,lowest:9,macr:18,macroscop:7,madeof:[0,2],mag:18,magg:8,maggior:[9,10,11,12,16],mail:[2,16],main:[9,10,11,12],mak:18,makefil:4,makes:9,malfunzion:12,manag:10,management:[9,10,11,14],manipol:15,manten:[10,16],manual:[4,16],many:0,mapped:0,marcell:[9,10,11,12,18],master:9,matc:0,max:16,mechanics:9,member:9,members:9,membr:[6,9,10,11,12,14],men:2,mentr:[4,13],merg:[9,10,11,12],mess:2,messag:0,messaggist:14,met:18,method:0,metod:[10,12,18],metodolog:13,metric:9,mett:[8,18],mezz:7,miglior:[10,14],minutes:16,missirol:[9,10,11,12,18],mkdir:16,mnt:18,mockup:[9,10,11],mod:[7,9,10,14,16],model:0,modic:10,modif:[10,11,14],modul:[0,8,10,18],molt:[6,13,16],moment:[2,7,10],most:9,mostr:[7,15],mot:[12,16],motivation:9,msg:0,mult:16,multilinguagg:14,nam:[0,2],names:0,necess:16,necessar:[4,9,10,11,12,16],need:9,needs:0,nessun:16,nest:[16,17],nest_backend:[15,16,18],nest_crawler:[15,16,18],nest_frontend:[15,18],net:16,network:16,never:9,next:9,node_env:16,node_modules:16,node_version:16,nodejs:18,nom:[2,10,16],nonexisting:[],not:[0,2,9],notif:[2,7],notification:[0,2],notifications:[0,2,9],nozion:13,npm:16,nss:16,number:9,numer:[2,7],nuov:[2,7,11,12,18],nvm:16,oauth:10,obiett:[10,18],oggett:2,ogni:[2,12],onbootsec:16,one:[9,16],onlin:16,only:0,onunitactivesec:16,oper:16,operation:0,operationtyp:0,opinion:9,opinions:9,oppur:[2,7],opzional:2,ora:[0,2,9,10,11,12,16],orar:2,ore:[2,13],org:16,organiz:9,organizz:[6,10],original:18,orm:0,ospit:[4,14],other:9,ottimizz:16,output:10,ove:7,overrid:16,ovver:[2,11],owner:[0,9,10,11,12,16],owner_id:[0,2],owner_of:0,pacchett:16,pagin:9,pair:10,pandem:6,param:0,parametr:4,parents:16,parol:10,part:[7,10,11,14,15,18],partecip:[8,13],partenz:[2,12],participants:9,particol:[4,7],particolar:7,pass:11,password:[0,2,16],pawn:9,payload:0,penpot:9,perc:[11,16],percors:[16,18],perfect:9,period:16,permess:2,permett:[2,4,7,11,12,13],pertant:16,perven:12,piacevol:13,piattaform:[2,7,14],piccol:[7,11,12],pien:16,plac:[0,2],place_id:11,plan:9,planning:9,platform:0,play:9,played:9,player:9,players:9,plugin:10,poetry:[4,16],poi:4,poic:13,point:9,poker:[9,12],poor:9,popol:16,port:16,porting:11,posizion:[2,7,12],poss:[2,16],possibil:[4,6,7,9,10,11,12,16],post:[2,8,12,13,18],post_tim:[0,2],poster:[0,2],postgres:16,postgresql:16,pot:[9,10,11,12],poter:10,potess:10,potr:7,potrann:7,powershell:18,practic:9,pratic:13,precedent:16,predic:7,predisporr:10,predisposizion:10,preferibil:16,prem:16,prepar:11,prerequis:18,present:[0,2,7,9,10,15],presenz:[2,6],preved:7,prim:[2,4,6,7,9,10,11,12,13,16],principal:[7,10],priorit:[9,10,11,12],priority:9,problem:9,problemat:13,proced:16,process:[9,18],prod:16,prodott:[7,9],product:[9,10,11,12],production:16,prof:[9,10,11,12,13,18],progett:[4,6,7,9,10,12,13,14,16,17],programming:10,project:[9,10,11,14],pront:12,properly:9,proporzional:13,propr:[7,16],propriet:10,proprietar:2,prosegu:[6,16],prot:16,protocols:16,prov:10,proxy:18,proxypass:16,proxypassrevers:16,pubblic:[2,7,11,16],pull:17,punt:[7,10],purtropp:6,put:11,puts:9,py3:16,pypoetry:16,pytest:11,python:[4,15,18],qual:[2,7,11,12,16],qualc:13,qualit:14,quality:9,qualor:[4,7,18],qualsias:7,quand:2,quant:16,quel:10,quell:[7,10],query:[11,12],quest:[2,4,6,9,10,11,12,13,16],question:9,questions:9,qui:[5,7,8,12,18],quind:13,quot:8,raccogl:[7,9],raccolt:[2,7],radius:1,ragg:2,rappresent:[2,12,16],react:[15,18],readthedocs:4,ready:18,realizz:[9,10,11,15],recuper:15,recurs:16,ref:[],refactor:10,refactoring:[10,11,12,14],refactory:12,referenc:[],registered:0,registr:[8,18],regol:[7,13],regolar:7,relat:[2,4,7,9,12,18],relationships:0,relazion:10,rend:[13,16],rep:[2,10,11],repeat:9,repeatabl:9,report:12,repositories:[0,9],repository:[0,2,7,9,10,11,14,16],repository_auth:0,repository_id:[0,1,2],reqest:0,request_schem:16,requestheader:16,required:[0,9],res:6,resocont:9,rest:16,restart:17,restitu:10,restructuredtext:4,ret:16,retrieval:10,retrospect:18,retrospett:[8,11,18],returned:0,returns:0,revers:18,review:18,rewriteengin:16,rewriterul:16,riavv:16,riavviin:17,ricerc:[7,10,11,12],ricev:[7,16],richied:2,richiest:[7,9,10,11,12,13,16],ricontroll:12,ricord:16,rid:[0,2],riemp:2,rig:[16,18],righ:2,riguard:10,rilev:7,rimanent:12,rimang:16,rimoss:7,rimozion:10,ripet:[],riport:7,riserv:2,risolt:11,risolu:11,rispett:[2,11],risult:18,ritocc:[9,10],ritorn:[10,11],riunion:6,riusc:11,rob:[8,18],roles:9,root:[16,17],routes:18,rp_app:16,rst:[12,18],run:[4,16],ruol:16,ryg:16,sal:2,salt:13,salv:[15,16],sar:[7,16],sarann:7,sarebb:13,sarebber:6,scanner:11,scaric:[17,18],scegl:7,scherm:[10,18],scop:7,screenshot:[],screenshots:18,script:[4,16],scritt:[4,10,15],scrittur:[10,14],scriv:[5,18],scrum:[9,12],scrumbl:[13,18],search_repo_conditions:1,second:[11,15],secret:16,secret_key:16,security:16,see:16,segnal:[2,11],segret:16,segu:[7,12,17],seguent:[2,9,10,11,12,14,16,17],selezion:7,self:14,semplic:7,send_notification_email:1,send_notification_tweet:1,senz:[7,10],serenity:9,serializabl:0,serv:16,server:[0,15,16],servernam:16,servic:16,serviz:[17,18],session:[10,11,18],set:16,sets:0,settiman:8,setting:11,settings:9,setup:[11,16],shar:9,sharing:[9,10,11,12],shell:[4,16],shouldnt:0,sicurezz:16,simpl:0,sincron:14,sint:[12,16],sistem:[4,7,16],sit:10,situation:9,siz:9,smallint:2,smtp:16,smtp_from_email:16,smtp_host:16,smtp_password:16,smtp_usernam:16,snowflak:[0,2],soddisf:7,soddisfacent:7,soddisfatt:7,softw:[6,7,14,15],sogl:2,sol:16,solving:9,something:9,son:[2,6,7,12,14,16],sonarqub:[9,10,11,13,14,18],sorgent:[4,9,10,11,12,17,18],sort:6,sosten:6,sostitu:16,sottomodul:10,sourc:[4,18],speaks:9,spec:0,specif:[0,9,13],specific:10,sphinx:[4,12],spiegazion:13,sprint0:8,sprint1:[8,10],sprint2:[8,11],sprint3:[8,18],sprint:[7,8,18],sprints:9,sqlalchemy:[0,16],sqlalchemy_database_ur:16,srs:9,srv:16,sslcertificatefil:16,sslcertificatekeyfil:16,sslengin:16,stag:9,standard:4,standardizz:10,start:[0,2,16],stat:[2,6,7,8,9,10,11,12,13,14,16],statist:[7,15,18],stats:9,status:[16,17],steff:[14,16],stess:16,stesur:[9,10],stim:[9,10,11,12],stories:[9,10,12],story:[7,9,10,11,12],strict:16,string:[0,2,16],strument:[4,12,18],struttur:[4,10,18],stud:[10,12],success:[9,16],successful:0,such:0,suddivis:8,suddivision:18,sugger:[12,16,18],suggestions:9,support:[10,12,16],sur:9,svilupp:[2,7,9,10,11,12,14,18],svolt:10,swagger:[0,11],system:0,systemctl:[16,17],systemd:18,tabell:2,tables:[],taig:[9,10,11,14],talks:9,talvolt:16,target:[4,16],task:[10,11,12],tasks:9,tast:16,tastier:16,team:[9,10,11,12,13,14],technical:9,tecnic:[10,12,13,16],telemat:7,temp:[2,7,9,18],temporal:7,ten:2,tentat:11,ter:18,termin:[7,9,10,11,18],terz:12,test:[9,10,11,12,16],tester:[9,10,11,12],testing:[10,11,14],tests:11,that:0,the:[0,9,16],thes:0,they:9,thing:0,thingamajigs:0,throughout:9,tim:[0,2,9],timer:[17,18],timers:16,timestamp:2,tip:[2,10],tipolog:7,to_json:0,toctre:[],tod:12,token:16,tool:13,topic:9,total:[8,9,10,11,12],totally:9,tracc:[2,14],traduzion:[11,12],tram:[7,10,12,16],transport:16,trasfer:12,tre:[7,15],trigger:2,trov:[4,7,18],tru:2,tutt:[6,7,9,10,11,12,14,16,17],tweepy:15,tweet:[0,1,2,7,10,11,12,15,16],tweet_latitud:1,tweet_longitud:1,tweets:0,twitter:[2,7,9,10,12,15,16],type:[0,2,16],typo:12,uf2up4_lneoovhzpvr77msg:9,ulterior:[11,12],ultim:[2,4,9,10,14],uml:7,understand:9,unexpected:8,uniform:9,uniformity:9,unimor:15,unindent:8,unit:16,univoc:2,unrepeatabl:9,usa:16,usand:[2,15],usat:[2,14],use:9,used:0,user:[0,2,4,7,9,10,11,12,16],useradd:16,usernam:[0,2],users:[10,11],using:0,uso:[16,18],usp:[10,11,12],usr:16,utent:[2,10,11,15],util:13,utility:18,utilizz:[2,7,10,11,13,16,18],utlizz:13,valid:0,valor:2,valu:0,values:0,valut:[10,11,12],valutazion:10,varc:2,variabil:16,ved:[0,16],veloc:6,velocizz:6,ven:[2,10],veng:[7,16,18],venv:[4,16],verif:[16,17],verification:0,verr:16,verrann:7,version:[4,9,11,14,16],vide:[5,9,10,11,12,18],vien:2,view:[9,11,12],vim:16,virtual:4,virtualenv:16,virtualenvs:16,virtualhost:16,visibil:[10,11,12],vision:[9,10,11,12],vist:[7,10,13],visualizz:[7,14,15],vocal:14,volt:[0,2,4,7,10,16],want:0,wantedby:16,wants:[9,16],was:0,web:[14,15,16,18],webserver:0,well:9,what:9,when:9,whether:0,willing:9,window_siz:[0,2],windows:18,wis:9,without:8,working:16,workingdirectory:16,you:[0,16]},titles:["nest_backend - Web API in Python","nest_crawler - Crawler in Python","Struttura del database","nest_frontend - Interfaccia utente in React","Meta-documentazione","Artefatti","Conclusioni","Introduzione","Processo di sviluppo","Sprint 0: 04 Apr - 18 Apr","Sprint 1: 19 Apr - 02 Mag","Sprint 2: 03 Mag - 16 Mag","Sprint 3: 17 Mag - 30 Mag","Suggerimenti relativi al corso","Strumenti utilizzati","Il progetto in breve","Installazione","Aggiornamento","N.E.S.T."],titleterms:{"final":12,aggiorn:17,altri:18,anniball:[9,10,11,12],apac:16,api:0,applic:7,apr:[9,10],artefatt:[5,9,10],attiv:[9,10,11,12],backend:16,backlog:[7,10,11,12],balugan:[9,10,11,12],bas:0,brev:15,calzolar:[9,10,11,12],camp:7,caratterist:7,cas:7,chiar:[9,10,11,12],cocc:[9,10,11,12],codic:16,colleg:18,collett:[9,10,11,12],com:16,compil:[4,16],conclusion:6,configur:16,consegn:[9,10,11,12],cors:13,cos:18,crawler:[1,16],cre:16,databas:[0,2,16],definition:[9,10,11,12],dem:[5,12],dipendent:16,document:[4,18],don:[9,10,11,12],estension:0,far:[5,7,8,12,18],fil:16,flask:0,flav:[9,10,11,12],frontend:16,funzional:7,general:7,gestion:0,giorg:[9,10,11,12],giovann:[9,10,11,12],gitinspector:[9,10,11,12],glossar:7,gnu:4,goal:[10,11,12],goldon:[9,10,11,12],grooming:12,ide:4,individual:[9,10,11,12],install:16,intellij:4,interfacc:3,introdu:7,lorenz:[9,10,11,12],macr:7,mag:[10,11,12],mak:4,manual:18,met:4,metod:0,minoccar:[9,10,11,12],modul:15,nest_backend:0,nest_crawler:1,nest_frontend:3,nodejs:16,nuov:16,obiett:7,part:9,percors:0,pigozz:[9,10,11,12],powershell:4,prerequis:16,process:8,progett:[15,18],proxy:16,python:[0,1,16],react:3,ready:[9,10,11,12],registr:[9,10,11,12],relat:13,relazion:18,retrospect:[9,10,11],retrospett:12,revers:16,review:[9,10,11],rimast:18,risult:9,riunion:[9,10,11,12],routes:0,scaric:16,scherm:12,screenshots:15,scrumbl:9,serviz:16,session:12,sonarqub:12,sorgent:16,sprint:[9,10,11,12],statist:[9,10,11,12],stef:[9,10,11,12],strument:14,struttur:2,suddivision:15,sugger:13,svilupp:8,systemd:16,tabell:0,tables:0,tecnic:18,timer:16,uso:7,utent:[3,7,16,18],utility:0,utilizz:14,web:0,windows:4}}) \ No newline at end of file diff --git a/docs/source/guide/installation.rst b/docs/source/guide/installation.rst index 1961106..9d4b51f 100644 --- a/docs/source/guide/installation.rst +++ b/docs/source/guide/installation.rst @@ -19,6 +19,8 @@ Per installare ed eseguire N.E.S.T., è necessario: - `Poetry ^1.0 `_ - `NodeJS ^16.0 `_ - `npm ^7.13.0 `_ +- Un mail server (interno o esterno) che supporti + l'`SMTP `_ Creare un nuovo utente @@ -280,17 +282,143 @@ Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del Creare un servizio SystemD per il crawler ----------------------------------------- -.. todo:: +Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di *SystemD*: - Scrivere una guida all'installazione di un servizio SystemD per il crawler. +.. code-block:: console + + root:~# systemctl edit --force --full nest-crawler + +All'interno del file, inserire le seguenti direttive: + +.. code-block:: systemd + + [Unit] + Description=N.E.S.T. Crawler + Wants=network-online.target nest-backend.service + After=network-online.target nss-lookup.target nest-backend.service + + [Service] + Type=exec + Environment=FLASK_CONFIG=../config.py + User=nest + Group=nest + WorkingDirectory=/srv/nest/g2-progetto + # Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m nest_crawler + + [Install] + WantedBy=multi-user.target + + +Configurare il crawler +---------------------- + +.. note:: + + Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter. + + È dunque necessario `fare richiesta `_, e sarà possibile + procedere con l'installazione solo una volta ricevute le credenziali per l'utilizzo. + +Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un *file di override* di SystemD: + +.. code-block:: console + + root:~# systemctl edit nest-crawler + +All'interno del file, inserire le seguenti direttive: + +.. code-block:: systemd + + [Service] + + # Sostituire a questi caratteri la Consumer Key ricevuta da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=C_K=0000000000000000000000000 + + + # Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=C_S=00000000000000000000000000000000000000000000000000 + + # Sostituire a questi caratteri l'Access Token ricevuto da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=A_T=00000000000000000000000000000000000000000000000000 + + # Sostituire a questi caratteri l'Access Token Secret ricevuto da Twitter + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=A_T_S=000000000000000000000000000000000000000000000 + + # Sostituire con l'indirizzo del proprio SMTP mail server + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=SMTP_HOST=mail.gandi.net + + # Sostituire con le proprie credenziali dell'SMTP mail server + # ↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=SMTP_USERNAME=bot@ryg.one + # ↓↓↓↓↓↓↓↓ + Environment=SMTP_PASSWORD=password + + # Sostituire con l'email da cui si desidera che vengano inviate le allerte + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + Environment=SMTP_FROM_EMAIL=nest-bot@ryg.one + + +Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con: + +.. code-block:: console + + root:~# systemctl start nest-crawler + +Nel log di sistema non dovrebbe comparire nessun errore: + +.. code-block:: console + + root:~# journalctl nest-crawler Creare un timer SystemD per il crawler ----------------------------------------- -.. todo:: +Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD: - Scrivere una guida all'esecuzione ripetuta del crawler attraverso un timer SystemD. +.. code-block:: console + + root:~# systemctl edit --force --full nest-crawler.timer + +Si inseriscano all'interno del file le seguenti direttive: + +.. code-block:: systemd + + [Unit] + Description=Run nest-crawler every 60 minutes + + [Timer] + OnBootSec=60min + OnUnitActiveSec=60min + Unit=nest-crawler.service + + [Install] + WantedBy=timers.target + +Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con: + +.. code-block:: console + + root:~# systemctl start nest-crawler.timer + +Nello stato del timer non dovrebbe comparire nessun errore: + +.. code-block:: console + + root:~# systemctl status nest-crawler.timer + +Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema: + +.. code-block:: console + + root:~# systemctl enable nest-crawler.timer Configurare Apache come reverse proxy diff --git a/docs/source/guide/updating.rst b/docs/source/guide/updating.rst new file mode 100644 index 0000000..2086e9b --- /dev/null +++ b/docs/source/guide/updating.rst @@ -0,0 +1,20 @@ +Aggiornamento +============= + +Per scaricare gli aggiornamenti di N.E.S.T. si esegua il seguente comando nella directory del codice sorgente: + +.. code-block:: console + + nest:g2-progetto$ git pull + +In seguito, si riavviino tutti i servizi di N.E.S.T.: + +.. code-block:: console + + root:~# systemctl restart nest-frontend nest-backend nest-crawler nest-crawler.timer + +Si verifichi infine il corretto avvio di tutti i servizi: + +.. code-block:: console + + root:~# systemctl status nest-frontend nest-backend nest-crawler nest-crawler.timer diff --git a/docs/source/index.rst b/docs/source/index.rst index af54e51..01cc340 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -9,6 +9,7 @@ Benvenuto alla documentazione di N.E.S.T.! guide/about guide/installation + guide/updating .. toctree:: @@ -28,6 +29,7 @@ Benvenuto alla documentazione di N.E.S.T.! .. toctree:: + :maxdepth: 2 :caption: Documentazione tecnica code/meta/index @@ -37,12 +39,6 @@ Benvenuto alla documentazione di N.E.S.T.! code/frontend/index -.. toctree:: - :hidden: - - development/clientinterview - - Cose rimaste da fare --------------------