1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-22 04:54:18 +00:00

Merge remote-tracking branch 'origin/main'

This commit is contained in:
g.minoccari 2021-05-28 16:02:51 +02:00
commit 418df99ac6
65 changed files with 25853 additions and 18 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/build/doctrees/guide/about.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,37 @@
``nest_backend`` - Web API in Python
====================================
.. automodule:: nest_backend
``.gestione`` - Metodi di utility
---------------------------------
.. automodule:: nest_backend.gestione
``.database`` - Database
------------------------
.. automodule:: nest_backend.database
``.base`` - Estensione flask
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. automodule:: nest_backend.database.base
``.tables`` - Tabelle
~~~~~~~~~~~~~~~~~~~~~
.. automodule:: nest_backend.database.tables
:imported-members:
``.routes`` - Percorsi API
--------------------------
.. automodule:: nest_backend.database.routes
:imported-members:

View file

@ -0,0 +1,4 @@
``nest_crawler`` - Crawler in Python
====================================
.. automodule:: nest_crawler

View file

@ -0,0 +1,2 @@
``nest_frontend`` - Interfaccia utente in React
===============================================

View file

@ -0,0 +1,84 @@
Meta-documentazione
===================
La documentazione è scritta in `reStructuredText <https://docutils.sourceforge.io/rst.html>`_, ed è generata con
`Sphinx <https://www.sphinx-doc.org/en/master/>`_.
I dati relativi alla documentazione si trovano nella directory standard ``/docs``;
in particolare, le sorgenti reStructuredText si trovano in ``/docs/source``,
mentre l'ultima versione compilata si trova in ``/docs/build``.
Questa struttura permetterebbe l'integrazione con lo strumento di "Continuous Documentation"
`ReadTheDocs <https://readthedocs.com/>`_, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza
almeno `Basic <https://readthedocs.com/pricing/>`_.
Compilazione con IntelliJ IDEA
------------------------------
È possibile compilare manualmente la documentazione con IntelliJ IDEA.
Su sistemi Linux, è disponibile la Run Configuration ``Docs``, che compilerà la versione HTML della documentazione se
eseguita.
.. image:: docsRunConfig.png
Compilazione con GNU Make
-------------------------
È possibile compilare manualmente la documentazione con GNU Make.
Come prima cosa, è necessario :ref:`Installare le dipendenze Python` del progetto:
.. code-block:: console
user:g2-progetto$ poetry install
Poi, si entri all'interno del virtual environment:
.. code-block:: console
user:g2-progetto$ poetry shell
Una volta all'interno del venv, si entri nella cartella della documentazione:
.. code-block:: console
user:g2-progetto$ cd docs
Infine, si esegua il target ``html`` del Makefile:
.. code-block:: console
user:g2-progetto/docs$ make html
Compilazione con Windows Powershell
-----------------------------------
È possibile compilare manualmente la documentazione con Windows Powershell.
Come prima cosa, è necessario :ref:`Installare le dipendenze Python` del progetto:
.. code-block:: doscon
g2-progetto> poetry install
Poi, si entri all'interno del virtual environment:
.. code-block:: doscon
g2-progetto> poetry shell
Una volta all'interno del venv, si entri nella cartella della documentazione:
.. code-block:: doscon
g2-progetto> cd docs
Infine, si esegua lo script ``make.bat`` con il parametro ``html``:
.. code-block:: doscon
g2-progetto/docs> make html

View file

@ -0,0 +1,14 @@
Artefatti
=========
.. todo::
Non ho idea di cosa bisogna scrivere qui.
Demo
----
.. todo::
Inserire un link al video della demo.

View file

@ -0,0 +1,9 @@
Conclusioni
===========
.. todo::
Scrivere le conclusioni.
"cosa avete imparato, cosa è andato bene, cosa cambiereste"

View file

@ -0,0 +1,30 @@
Obiettivo del progetto
======================
.. todo::
Scrivere l'obiettivo generale del progetto.
Scope
-----
.. todo::
Scrivere lo scope del progetto.
Casi d'uso
----------
.. todo::
Scrivere i casi d'uso del progetto.
Backlog generale
----------------
.. todo::
Elencare qui tutte le user story del backlog, senza specificare lo sprint in cui sono state realizzate.

View file

@ -0,0 +1,11 @@
Processo di sviluppo
====================
.. 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:``.

View file

@ -0,0 +1,292 @@
Sprint 0: 04 Apr - 18 Apr
=========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna
--------
La seguente documentazione è stata fornita dal cliente durante questo sprint:
- :download:`Descrizione iniziale del prodotto <0-initial.pdf>`
- :download:`Sprint 0 <0-sprint-requirements.pdf>`
Goal
----
.. todo::
Inserire qui lo sprint goal.
Backlog
-------
.. todo::
Mostrare qui lo sprint backlog di Taiga.
Definition of done
------------------
.. todo::
Inserire qui la definition of done dello sprint.
Registro attività
-----------------
Riunioni collettive
^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 2
* - Data
- Ora
- Durata
- Attività
* -
-
- 10h 6m
- Totale
* - 2021-04-08
- 20:45
- 1h
- Analisi documento di specifiche
* - 2021-04-09
- 14:15
- 35m
- Intervista con il cliente
* - 2021-04-09
- 15:00
- 1h
- Resoconto intervista
* - 2021-04-11
- 15:03
- 2h 39m
- Documentazione e planning poker
* - 2021-04-15
- 18:15
- 52m
- Documentazione
* - 2021-04-17
- 15:05
- 4h
- Documentazione e partita a Scrumble
Attività individuali
^^^^^^^^^^^^^^^^^^^^
Stefano Goldoni
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 6h 30m
- Totale
* - 2021-04-08
- 1h
- user stories
* - 2021-04-09
- 1h
- epic
* - 2021-04-10
- 30m
- use cases
* - 2021-04-11
- 30m
- use cases
* - 2021-04-14
- 30m
- documentazione SRS
* - 2021-04-15
- 30m
- documentazione SRS
* - 2021-04-17
- 1h 30m
- diagrammi di attività
Flavia Cocca
""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 15h
- Totale
* - 2021-04-08
- 2h 30m
- brainstorming Ui
* - 2021-04-10
- 2h
- creazione frame in figma con relativo css
* - 2021-04-11
- 1h 30m
- mockup UI con relativo css (creazione componenti)
* - 2021-04-12
- 1h 30m
- mockup UI con relativo css (creazione componenti)
* - 2021-04-14
- 3h
- mockup UI con relativo css (creazione pagine)
* - 2021-04-15
- 2h
- mockup UI con relativo css (creazioni pagine)
* - 2021-04-16
- 2h
- ultimi ritocchi UI
* - 2021-04-17
- 30m
- Stesura documentazione partita scrumble
Chiara Calzolari
""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* - 2021-04-09
- 2.5h
- Brainstorming UI
* - 2021-04-10
- 1.5h
- mockup UI con relativo css (dashboard ed elenco repositories)
* - 2021-04-11
- 1.0h
- mockup UI con relativo css (settings)
* - 2021-04-11
- 0.5h
- Prima versione del logo
* - 2021-04-12
- 3.0h
- mockup UI con relativo css (creazione componenti, light/dark mode)
* - 2021-04-13
- 1.0h
- mockup UI con relativo css (alerts)
* - 2021-04-15
- 1.0h
- Versione definitiva del logo
* - 2021-04-16
- 0.5h
- mockup UI con relativo css (Notifications e Share)
* - 2021-04-17
- 1.0h
- Documentazione Mockup
* - 2021-04-17
- 0.5h
- Doppiaggio video di presentazione
Stefano Pigozzi
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 23h 30m
- Totale
* - 2021-04-08
- 4h 30m
- Configurazione Discord e GitLab
* - 2021-04-09
- 3h 30m
- Riunione con il cliente e configurazione Taiga
* - 2021-04-10
- 4h
- Configurazione Penpot, Taiga, UI Design, progettazione Database
* - 2021-04-11
- 3h 30m
- Riunione, configurazione GitLab e project management
* - 2021-04-12
- 30m
- Configurazione Twitter e UI Design
* - 2021-04-15
- 2h 30m
- Partita a Scrumble e project management
* - 2021-04-16
- 1h 30m
- Project management e configurazione SonarQube
* - 2021-04-17
- 3h 30m
- Riunione e partita a scrumble
Giovanni Anniballi
""""""""""""""""""
.. note::
Giovanni ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.
Giorgio Minoccari
""""""""""""""""""
.. note::
Giorgio ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.
Lorenzo Balugani
""""""""""""""""
.. note::
Lorenzo ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.
Risultati della partita di Scrumble
-----------------------------------
.. todo::
Trascrivere qui i risultati della partita di Scrumble.
Statistiche
-----------
Gitinspector
^^^^^^^^^^^^^
Questa statistica è stata generata dal prof. Marcello Missiroli con
`Gitinspector`_ al termine dello Sprint.
- :download:`Sprint 0 <0-stats.html>`
.. _Gitinspector: https://github.com/ejwa/gitinspector

View file

@ -0,0 +1,495 @@
Sprint 1: 19 Apr - 02 Mag
=========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna
--------
La seguente documentazione è stata fornita dal cliente durante questo sprint:
- :download:`Sprint 1 <1-sprint-requirements.pdf>`
Goal
----
.. todo::
Inserire qui lo sprint goal.
Backlog
-------
.. todo::
Mostrare qui lo sprint backlog di Taiga.
Definition of done
------------------
.. todo::
Inserire qui la definition of done dello sprint.
Registro attività
-----------------
Riunioni collettive
^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 2
* - Data
- Ora
- Durata
- Attività
* -
-
- 2h
- Totale
* - 2021-05-01
- 15:30
- 2h
- backlog grooming session
Attività individuali
^^^^^^^^^^^^^^^^^^^^
Stefano Goldoni
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 23h 30m
- Totale
* - 2021-04-20
- 30m
- analisi test
* - 2021-04-20
- 1h 30m
- scrittura test cases
* - 2021-04-26
- 30m
- predisposizione progetto in locale per il test
* - 2021-04-26
- 2h
- metodi di test login e creazione utente
* - 2021-04-28
- 2h
- metodi ti test
* - 2021-04-29
- 2h
- metodi di test
* - 2021-04-30
- 2h
- metodi di test backend
* - 2021-05-01
- 1h
- test frontend
* - 2021-05-01
- 1h
- test backend in pair programming
* - 2021-05-02
- 1h
- documentazione
* - 2021-05-02
- 2h 30m
- test backend
Flavia Cocca
""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 8h
- Totale
* - 2021-04-27
- 1h
- modifica mockup UI
* - 2021-04-28
- 1h
- Organizzazione Sprint retrospective
* - 2021-04-30
- 1h
- modifica mockup UI
* - 2021-05-01
- 2h
- Riunione con il team per sprint review e sprint retrospective
* - 2021-05-02
- 3h
- Stesura documenti Sprint 1 (debito tecnico e relazione sprint retrospective), realizzazione video Sprint1 review
Chiara Calzolari
""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 6h 30m
- Totale
* - 2021-04-26
- 3h
- Configurazione ambiente di sviluppo
* - 2021-04-27
- 1h
- modifica mockup UI (adeguamento al JS)
* - 2021-04-29
- 2h
- modifica mockup UI (Manage users)
* - 2021-05-01
- 30m
- Ultimi ritocchi al mockup UI
Stefano Pigozzi
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 29h
- Totale
* - 2021-04-19
- 18m
- Configurazione IntelliJ IDEA
* - 2021-04-19
- 10m
- Configurazione IntelliJ IDEA
* - 2021-04-20
- 1h 26m
- Sviluppo
* - 2021-04-21
- 1h 3m
- Sviluppo
* - 2021-04-21
- 3m
- Configurazione IntelliJ IDEA
* - 2021-04-21
- 58m
- Sviluppo
* - 2021-04-21
- 13m
- Sviluppo
* - 2021-04-21
- 7m
- Sviluppo
* - 2021-04-21
- 6m
- Project management
* - 2021-04-21
- 15m
- Sviluppo
* - 2021-04-21
- 32m
- Sviluppo
* - 2021-04-21
- 10m
- Sviluppo
* - 2021-04-22
- 5m
- Sviluppo
* - 2021-04-22
- 16m
- Presentazione
* - 2021-04-22
- 36m
- Riunione
* - 2021-04-22
- 1h 23m
- Sviluppo
* - 2021-04-23
- 18m
- Studio
* - 2021-04-23
- 42m
- Sviluppo
* - 2021-04-23
- 10m
- Sviluppo
* - 2021-04-23
- 1h 9m
- Sviluppo
* - 2021-04-23
- 3m
- Sviluppo
* - 2021-04-24
- 19m
- Sviluppo
* - 2021-04-24
- 19m
- Sviluppo
* - 2021-04-25
- 2h 59m
- Sviluppo
* - 2021-04-25
- 10m
- Documentazione
* - 2021-04-26
- 13m
- Configurazione SonarQube
* - 2021-04-26
- 12m
- Documentazione
* - 2021-04-26
- 30m
- Documentazione
* - 2021-04-26
- 4m
- Riunione
* - 2021-04-26
- 2h 58m
- Sviluppo
* - 2021-04-26
- 1h 4m
- Sviluppo
* - 2021-04-26
- 56m
- Sviluppo
* - 2021-04-26
- 6m
- Project management
* - 2021-04-27
- 7m
- Sviluppo
* - 2021-04-27
- 15m
- Configurazione Taiga
* - 2021-04-27
- 29m
- Sviluppo
* - 2021-04-27
- 35m
- Collaborazione
* - 2021-04-28
- 34m
- Collaborazione
* - 2021-04-29
- 1h 42m
- Sviluppo
* - 2021-04-29
- 1h 26m
- Sviluppo
* - 2021-04-29
- 48m
- Project management
* - 2021-04-30
- 56m
- Sviluppo
* - 2021-04-30
- 46m
- Sviluppo
* - 2021-05-01
- 12m
- Sviluppo
* - 2021-05-02
- 14m
- Documentazione
* - 2021-05-02
- 28m
- Bugfixing
* - 2021-05-02
- 15m
- Collaborazione
* - 2021-05-02
- 3m
- Bugfixing
Giovanni Anniballi
""""""""""""""""""
Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dell'IDE utilizzato.
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 16h 30m
- Totale
* - 2021-04-22
- 30m
- Riunione con il team
* - 2021-04-23
- 1h
- Studio struttura del backend
* - 2021-04-24
- 1h 30m
- Studio del backend, volto a capire il funzionamento delle varie API
* - 2021-04-26
- 2h
- Testing login e retrieval dei dati inerenti a tutti gli utenti registrati
* - 2021-04-27
- 1h
- Testing creazione user
* - 2021-04-28
- 2h
- Test cancellazione utente e ritorno dei dati inerenti a quellutente
* - 2021-04-29
- 1h 30m
- Test modica utenti e creazione della prima repository
* - 2021-04-30
- 2h
- Testing ritorno di tutte le repository di proprietà dellutente loggato, ritorno delle info inerenti alla repository specificata
* - 2021-05-01
- 2h
- Riunione con il team per sprint review e sprint retrospective
* - 2021-05-01
- 1h
- Testing modifica ed eliminazione di una repository (nome, stato)
* - 2021-05-02
- 2h
- Testing del frontend tramite UI, controllo generale dei test già effettuati.
Giorgio Minoccari
"""""""""""""""""
Durante lo sprint ho principalmente svolto sviluppo e test riguardo alla API di twitter, in modo da poter effettuare chiamate efficenti e non venire limitati dal sito riguardo alle richieste effettuate.
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 10h
- Totale
* - 2021-04-21
- 1h
- Primi test riguardo autenticazione Oauth per API twitter
* - 2021-04-23
- 1h 30m
- Autenticazione funzionante
* - 2021-04-24
- 30m
- Test su ricerche generali con parole chiave
* - 2021-04-26
- 1h
- Test su ricerche geolocalizzate
* - 2021-04-27
- 1h
- Definizione di entita' di esempio nei database per provare funzioni legate ad esse
* - 2021-04-28
- 2h
- Definizione di funzioni per l'aggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API
* - 2021-04-29
- 1h
- Refactor codice scritto fino a quel momento, eliminazione di dati inutili
* - 2021-05-01
- 1h
- Implementazioni di analisi su termini e hashtag restituiti dall'API
* - 2021-05-02
- 1h
- Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate
Lorenzo Balugani
""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 13h 30m
- Totale
* - 2021-04-21
- 2h
- Implementazione Base di Dati
* - 2021-04-22
- 2h
- Login, creazione utenti
* - 2021-04-25
- 1h
- Rimozione utenti, CORS, Creazione repo
* - 2021-04-25
- 3h
- Altre funzioni API
* - 2021-04-26
- 30m
- Standardizzazione output json
* - 2021-04-26
- 1h
- Documentazione
* - 2021-04-27
- 30m
- Aggiunto supporto al modulo explorer, fix
* - 2021-04-28
- 30m
- Bugfixing
* - 2021-04-29
- 1h
- Gestione migliorata errori
* - 2021-04-29
- 1h
- Refactoring
* - 2021-05-02
- 1h
- Bugfixing
Statistiche
-----------
Gitinspector
^^^^^^^^^^^^^
Questa statistica è stata generata dal prof. Marcello Missiroli con
`Gitinspector`_ al termine dello Sprint.
- :download:`Sprint 1 <1-stats.html>`
.. _Gitinspector: https://github.com/ejwa/gitinspector
Sprint review
-------------
.. todo::
Inserire un link alla sprint review.

View file

@ -0,0 +1,431 @@
Sprint 2: 03 Mag - 16 Mag
=========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna
--------
La seguente documentazione è stata fornita dal cliente durante questo sprint:
- :download:`Sprint 2 <2-sprint-requirements.pdf>`
Goal
----
.. todo::
Inserire qui lo sprint goal.
Backlog
-------
.. todo::
Mostrare qui lo sprint backlog di Taiga.
Definition of done
------------------
.. todo::
Inserire qui la definition of done dello sprint.
Registro attività
-----------------
Riunioni collettive
^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 2
* - Data
- Ora
- Durata
- Attività
* -
-
- 1h
- Totale
* - 2021-05-14
- 10:00
- 1h
- Sprint Retrospective session
Attività individuali
^^^^^^^^^^^^^^^^^^^^
Stefano Goldoni
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 16h
- Totale
* - 2021-05-04
- 1h
- preparazione backlog sprint 2
* - 2021-05-10
- 3h
- test sprint 2
* - 2021-05-11
- 2h 30m
- test utenti e repository
* - 2021-05-12
- 2h
- test repository
* - 2021-05-13
- 2h 30m
- test repository
* - 2021-05-14
- 3h
- test conditions
* - 2021-05-15
- 2h
- test conditions + sonarqube scanner
Flavia Cocca
""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 16h
- Totale
* - 2021-05-04
- 30m
- Riunione per con PO, nuovo backlog
* - 2021-05-05
- 1h
- Riunione
* - 2021-05-07
- 3h
- Refactoring test
* - 2021-05-08
- 2h
- Refactoring test
* - 2021-05-09
- 3h
- Nuovi test
* - 2021-05-11
- 2h 30m
- Discussione test e risoluzione di alcune issue
* - 2021-05-13
- 1h
- Bugfixing
* - 2021-05-14
- 1h
- Sprint Retrospective
* - 2021-05-15
- 2h
- Documentazione
Stefano Pigozzi
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 27h 30m
- Totale
* - 2021-05-05
- 40m
- Riunione
* - 2021-05-05
- 21m
- Documentazione
* - 2021-05-06
- 9m
- Sviluppo
* - 2021-05-06
- 3m
- Configurazione Taiga
* - 2021-05-06
- 11m
- Documentazione
* - 2021-05-06
- 9m
- Riunione
* - 2021-05-06
- 20m
- Documentazione
* - 2021-05-06
- 39m
- Sviluppo
* - 2021-05-06
- 15m
- Riunione
* - 2021-05-06
- 1h 4m
- Riunione
* - 2021-05-07
- 1h 47m
- Sviluppo
* - 2021-05-07
- 17m
- Sviluppo
* - 2021-05-07
- 34m
- Sviluppo
* - 2021-05-07
- 34m
- Project management
* - 2021-05-07
- 2h 44m
- Sviluppo
* - 2021-05-08
- 13m
- Sviluppo
* - 2021-05-08
- 29m
- Sviluppo
* - 2021-05-08
- 18m
- Sviluppo
* - 2021-05-10
- 1h 00m
- Sviluppo
* - 2021-05-10
- 1h 15m
- Configurazione GitLab
* - 2021-05-10
- 25m
- Sviluppo
* - 2021-05-10
- 39m
- Sviluppo
* - 2021-05-11
- 25m
- Bugfixing
* - 2021-05-11
- 3h 57m
- Sviluppo
* - 2021-05-11
- 1h 45m
- Sviluppo
* - 2021-05-12
- 10m
- Sviluppo
* - 2021-05-12
- 1h 51m
- Sviluppo
* - 2021-05-13
- 1h 00m
- Sviluppo
* - 2021-05-13
- 1h 20m
- Sviluppo
* - 2021-05-14
- 20m
- Sviluppo
* - 2021-05-14
- 3h 17m
- Documentazione
* - 2021-05-15
- 1h 8m
- Porting dipendenze
Chiara Calzolari
""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 11h
- Totale
* - 2021-05-03
- 1h
- Testing frontend e segnalazione issues
* - 2021-05-03
- 1h
- Modifica mockup UI (Dashboard repository)
* - 2021-05-04
- 1h
- Modifica mockup UI (adeguamento al JS)
* - 2021-05-10
- 3h
- Configurazione ambiente di sviluppo
* - 2021-05-11
- 1h 30m
- Modifica UI (traduzione in Italiano)
* - 2021-05-12
- 30m
- Modifica UI (traduzione in Italiano)
* - 2021-05-14
- 3h
- Realizzazione video demo sprint 2
Giovanni Anniballi
""""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 17h
- Totale
* - 2021-05-04
- 30m
- Incontro con SM e PO per valutare quali US andranno nello sprint2
* - 2021-05-05
- 1h
- Incontro con il team
* - 2021-05-07
- 2h
- Refactoring tests sugli user e primi utilizzi delle fixtures
* - 2021-05-08
- 2h
- Completamento test users
* - 2021-05-10
- 1h
- Ulteriori approcci (fallimentari) al coverage di SonarQube
* - 2021-05-11
- 2h
- Discussione sui test e correzioni bug
* - 2021-05-12
- 1h
- Test repository
* - 2021-05-13
- 1h
- Generazione coverage pytest e setting sonarqube (riuscito!)
* - 2021-05-14
- 4h
- Sprint review e retrospettiva, conclusione test repository
* - 2021-05-15
- 2h
- generazione nuovo coverage e fix a sonarqube
* - 2021-05-15
- 30m
- fix piccoli bug segnalati da sonarqube
Giorgio Minoccari
"""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 10h
- Totale
* - 2021-05-04
- 30m
- Aggiunta della condizione sull'utente
* - 2021-05-10
- 2h
- Tentativo di inserimento delle query con place_id
* - 2021-05-11
- 1h 30m
- Test per passare alla versione 2.0 delle API
* - 2021-05-12
- 1h
- Ritorno alla versione 1.1 perche' lascia disponibili le query sulla geolocalizzazione gratuitamente
* - 2021-05-14
- 5h
- Integrazione e inserimento dei tweet catturati nel database
Lorenzo Balugani
""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
- 19h
- Totale
* - 2021-05-05
- 4h
- Setup di swagger, documentazione
* - 2021-05-06
- 4h
- Documentazione, sviluppo
* - 2021-05-07
- 3h
- Alert, documentazione
* - 2021-05-10
- 2h
- Alert Put, bugfixing
* - 2021-05-11
- 3h
- Bugfixing, sviluppo
* - 2021-05-12
- 3h
- Risolti issue pubblicati su Taiga
* - 2021-05-13
- 1h
- Bugfixing
* - 2021-05-14
- 1h
- Bugfixing
Statistiche
-----------
Gitinspector
^^^^^^^^^^^^^
Questa statistica è stata generata dal prof. Marcello Missiroli con
`Gitinspector`_ al termine dello Sprint.
- :download:`Sprint 2 (codice) <2-stats.html>`
- :download:`Sprint 2 (documentazione) <2D-stats.html>`
.. _Gitinspector: https://github.com/ejwa/gitinspector
Sprint review
-------------
.. todo::
Inserire un link alla sprint review.

View file

@ -0,0 +1,224 @@
Sprint 3: 17 Mag - 30 Mag
=========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna
--------
La seguente documentazione è stata fornita dal cliente durante questo sprint:
- :download:`Sprint 3 <3-sprint-requirements.pdf>`
- :download:`Report finale <3-report.pdf>`
Goal
----
.. todo::
Inserire qui lo sprint goal.
Backlog
-------
.. todo::
Mostrare qui lo sprint backlog di Taiga.
Definition of done
------------------
.. todo::
Inserire qui la definition of done dello sprint.
Registro attività
-----------------
.. todo::
Compilare il registro attività dello sprint 3.
Riunioni collettive
^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 2
* - Data
- Ora
- Durata
- Attività
* -
-
- TODO
- Totale
* -
-
-
-
Attività individuali
^^^^^^^^^^^^^^^^^^^^
Stefano Goldoni
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* -
-
-
Flavia Cocca
""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* -
-
-
Chiara Calzolari
""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* -
-
-
Stefano Pigozzi
"""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* -
-
-
Giovanni Anniballi
""""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* -
-
-
Giorgio Minoccari
"""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* -
-
-
Lorenzo Balugani
""""""""""""""""
.. list-table::
:header-rows: 2
* - Data
- Durata
- Attività
* -
-
- Totale
* -
-
-
Statistiche
-----------
Gitinspector
^^^^^^^^^^^^^
.. todo::
Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3.
Retrospettiva finale
--------------------
.. todo::
Inserire qui la Retrospettiva finale.
Schermata finale di SonarQube
-----------------------------
.. todo::
Inserire qui uno screenshot della schermata finale di SonarQube.

View file

@ -0,0 +1,6 @@
Suggerimenti relativi al corso
==============================
.. todo::
Che suggerimenti avete da dare al prof. Missiroli? :)

View file

@ -0,0 +1,42 @@
Il progetto in breve
====================
**N.E.S.T.** (Noi Estraiamo Statistiche Tweet) è un progetto realizzato nel 2021 per
l'**esame di Progetto del Software** del corso di Informatica all'Unimore.
Suddivisione in moduli
----------------------
Il progetto è composto da tre parti:
:py:mod:`nest_crawler`
Un modulo scritto in `Python`_ usando :py:mod:`tweepy` che recupera tweet attraverso la `Twitter API`_ secondo le
condizioni presenti all'interno del database e li salva per future elaborazioni.
:py:mod:`nest_backend`
Un web server scritto in `Python`_ usando il framework :py:mod:`flask` che fornisce un'API HTTP per visualizzare e
manipolare i dati dell'applicazione, gestendo autenticazione, autorizzazione e comunicazione con il database.
:js:mod:`nest_frontend`
Una applicazione web scritta in `JSX`_ usando il framework :js:mod:`react` che comunica con il backend, mostrando
all'utente i dati del backend in una formato immediatamente comprensibile.
.. _Python: https://www.python.org/
.. _Twitter API: https://developer.twitter.com/en/docs/twitter-api
.. _JSX: https://reactjs.org/docs/introducing-jsx.html
Screenshots
-----------
.. image:: frontendDashboard.png
.. image:: frontendRepositoryCreate.png
.. image:: frontendAnalysis.png
.. image:: frontendRepositoryShare.png
.. image:: frontendAlertCreate.png

View file

@ -0,0 +1,344 @@
Installazione
=============
Questa guida illustra come installare interamente N.E.S.T. su un server Linux.
Prerequisiti
------------
Per installare ed eseguire N.E.S.T., è necessario:
- Una connessione a Internet
- Un sistema operativo Linux-based (preferibilmente `Arch Linux <https://wiki.archlinux.org/title/Main_page>`_)
- `SystemD ^248.2 <https://www.freedesktop.org/wiki/Software/systemd/>`_
- `Apache HTTP Server ^2.4.46 <https://httpd.apache.org/>`_
- `PostgreSQL ^13.2 <https://www.postgresql.org/download/>`_
- `Git ^2.31.1 <https://git-scm.com/>`_
- `Python ^3.8 <https://www.python.org/downloads/>`_
- `Poetry ^1.0 <https://python-poetry.org/>`_
- `NodeJS ^16.0 <https://nodejs.org/>`_
- `npm ^7.13.0 <https://www.npmjs.com/>`_
Creare un nuovo utente
----------------------
Per motivi di sicurezza, si suggerisce di creare un nuovo utente con il quale eseguire il progetto:
.. note::
È necessario essere amministratori di sistema per eseguire i seguenti comandi.
Si veda il manuale di `useradd <https://linux.die.net/man/8/useradd>`_ per più dettagli.
.. code-block:: console
root:~# mkdir --parents /srv/nest
root:~# useradd --home-dir /srv/nest --shell /bin/bash nest
root:~# chown --recursive nest: /srv/nest
Scaricare il codice sorgente
----------------------------
Per installare N.E.S.T., è necessario avere il codice sorgente disponibile sul server.
Si consiglia di scaricarlo tramite *Git*:
.. code-block:: console
nest:~$ git clone https://gitlab.steffo.eu/nest/g2-progetto.git
Questo creerà una nuova cartella ``g2-progetto`` nella directory in cui è stato eseguito il comando.
Per proseguire, sarà necessario entrarvi:
.. code-block:: console
nest:~$ cd g2-progetto
Creare il database
------------------
N.E.S.T. necessita di un database PostgreSQL in cui salvare i dati.
Per motivi di sicurezza, si suggerisce di creare un ruolo isolato dal resto del DBMS apposta per N.E.S.T.:
.. code-block:: console
postgres:~$ createuser nest
Per creare il database PostgreSQL, si esegua:
.. code-block:: console
postgres:~$ createdb --owner=nest nest
Creare un file di configurazione per il backend
-----------------------------------------------
Il backend usa un file di configurazione per impostare alcune variabili.
Si crei un nuovo file nella working directory del progetto denominato ``config.py``:
.. code-block:: console
nest:~/g2-progetto$ vim config.py
Il file dovrà avere i seguenti contenuti:
.. code-block:: python
# Una stringa rappresentante il database da utilizzare
# Per maggiori informazioni sulla sintassi, si veda https://docs.sqlalchemy.org/en/14/core/engines.html
SQLALCHEMY_DATABASE_URI = "postgresql://nest@/nest"
# Una stringa casuale utilizzata per generare i JSON Web Token (JWT)
# Va mantenuta segreta e costante per tutta l'operazione del backend!
# Si suggerisce di premere tasti casuali sulla tastiera finchè la riga non è piena.
SECRET_KEY = "dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj"
Installare le dipendenze Python
-------------------------------
Le dipendenze Python sono gestite da *Poetry*, e possono essere installate con:
.. code-block:: console
nest:~/g2-progetto$ poetry install
Poetry creerà automaticamente un `venv <https://docs.python.org/3/library/venv.html>`_ e vi installerà all'interno tutti
i pacchetti necessari all'esecuzione del backend e del crawler di N.E.S.T. .
**Si suggerisce di ricordare il nome del venv creato da Poetry**, in quanto sarà necessario per
:ref:`Creare un servizio SystemD per il backend`:
.. code-block:: console
Creating virtualenv nest-7C2fm2VD-py3.9 in /srv/nest/.cache/pypoetry/virtualenvs
Installare le dipendenze NodeJS
-------------------------------
Le dipendenze NodeJS sono gestite da *npm*, e possono essere installate con:
.. code-block:: console
nest:~/g2-progetto$ npm install
npm creerà automaticamente una cartella
`node_modules <https://docs.npmjs.com/cli/v7/configuring-npm/folders#node-modules>`_ e vi installerà all'interno tutte
le librerie necessarie all'esecuzione del frontend di N.E.S.T. .
Creare un servizio SystemD per il backend
-----------------------------------------
Per fare in modo che il backend rimanga attivo in background, anche dopo un riavvio, si suggerisce di installarlo come
servizio di sistema di *SystemD*:
.. code-block:: console
root:~# systemctl edit --force --full nest-backend
Inserire all'interno del file le seguenti direttive:
.. code-block:: systemd
[Unit]
Description=N.E.S.T. Backend
Wants=network-online.target postgresql.service
After=network-online.target nss-lookup.target postgresql.service
[Service]
Type=exec
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 gunicorn -b 127.0.0.1:30040 --env="FLASK_CONFIG=../config.py" nest_backend.app:rp_app
[Install]
WantedBy=multi-user.target
Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:
.. code-block:: console
root:~# systemctl start nest-backend
In caso di successo, l'API dovrebbe essere esposto sulla porta ``30040`` dell'indirizzo di loopback ``127.0.0.1``:
.. code-block:: console
root:~# curl 127.0.0.1:30040/doa
If you see this, the server is fine.
Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema:
.. code-block:: console
root:~# systemctl enable nest-backend
Compilare il frontend
---------------------
Perchè sia possibile servire il frontend agli utenti, è necessario prima crearne una versione compilata ottimizzata.
È possibile farlo con il comando:
.. code-block:: console
nest:~/g2-progetto$ npm run build
Verrà creata una cartella ``build`` con all'interno la versione compilata.
Creare un servizio SystemD per il frontend
------------------------------------------
Per rendere disponibile alla rete la copia locale del frontend, si suggerisce di avviare lo script npm ``serve``
integrato con N.E.S.T. come un servizio di sistema di *SystemD*:
.. code-block:: console
root:~# systemctl edit --force --full nest-frontend
Inserire all'interno del file le seguenti direttive:
.. code-block:: systemd
[Unit]
Description=N.E.S.T. Frontend
Wants=network-online.target nest-backend.service
After=network-online.target nss-lookup.target nest-backend.service
[Service]
Type=exec
Environment=NODE_ENV=production
User=nest
Group=nest
WorkingDirectory=/srv/nest/g2-progetto
ExecStart=/usr/bin/npm run serve
[Install]
WantedBy=multi-user.target
.. warning::
Questo file non è stato testato, in quanto sul server demo è in uso una versione più complessa che usa
`nvm <https://github.com/nvm-sh/nvm>`_ per gestire più versioni di NodeJS sullo stesso sistema.
La versione in uso sul server demo è:
.. code-block:: systemd
[Unit]
Description=N.E.S.T. Frontend
Wants=network-online.target nest-backend.service
After=network-online.target nss-lookup.target nest-backend.service
[Service]
Type=exec
Environment=NODE_ENV=production
Environment=NODE_VERSION=16
User=nest
Group=nest
WorkingDirectory=/srv/nest/g2-progetto
ExecStart=/srv/nest/.nvm/nvm-exec npm run serve
[Install]
WantedBy=multi-user.target
Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:
.. code-block:: console
root:~# systemctl start nest-frontend
In caso di successo, il frontend dovrebbe essere esposto sulla porta ``30041`` dell'indirizzo di loopback ``127.0.0.1``:
.. code-block:: console
root:~# curl 127.0.0.1:30041
[...]
Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema:
.. code-block:: console
root:~# systemctl enable nest-frontend
Creare un servizio SystemD per il crawler
-----------------------------------------
.. todo::
Scrivere una guida all'installazione di un servizio SystemD per il crawler.
Creare un timer SystemD per il crawler
-----------------------------------------
.. todo::
Scrivere una guida all'esecuzione ripetuta del crawler attraverso un timer SystemD.
Configurare Apache come reverse proxy
-------------------------------------
Per rendere l'API e il frontend disponibili al pubblico, si suggerisce di configurare Apache HTTP Server
come reverse proxy.
La configurazione di Apache varia molto da distribuzione a distribuzione Linux, e talvolta anche da server a server;
pertanto, si fornisce solamente un file `VirtualHost <https://httpd.apache.org/docs/2.4/vhosts/examples.html>`_ di
esempio da adattare al proprio setup:
.. code-block:: apacheconf
<VirtualHost *:80>
ServerName "api.nest.steffo.eu"
ServerName "prod.nest.steffo.eu"
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName "api.nest.steffo.eu"
SSLEngine on
SSLCertificateFile "/root/.acme.sh/*.nest.steffo.eu/fullchain.cer"
SSLCertificateKeyFile "/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key"
ProxyPass "/" "http://127.0.0.1:30040/"
ProxyPassReverse "/" "http://127.0.0.1:30040/"
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
Protocols h2 http/1.1
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>
<VirtualHost *:443>
ServerName "prod.nest.steffo.eu"
SSLEngine on
SSLCertificateFile "/root/.acme.sh/*.nest.steffo.eu/fullchain.cer"
SSLCertificateKeyFile "/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key"
ProxyPass "/" "http://127.0.0.1:30041/"
ProxyPassReverse "/" "http://127.0.0.1:30041/"
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
Protocols h2 http/1.1
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>

949
docs/build/html/code/backend/index.html vendored Normal file
View file

@ -0,0 +1,949 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>nest_backend - Web API in Python &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="nest_crawler - Crawler in Python" href="../crawler/index.html" />
<link rel="prev" title="Meta-documentazione" href="../meta/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#module-nest_backend.gestione"><code class="docutils literal notranslate"><span class="pre">.gestione</span></code> - Metodi di utility</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#module-nest_backend.database.base"><code class="docutils literal notranslate"><span class="pre">.base</span></code> - Estensione flask</a></li>
<li class="toctree-l3"><a class="reference internal" href="#module-nest_backend.database.tables"><code class="docutils literal notranslate"><span class="pre">.tables</span></code> - Tabelle</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#routes-percorsi-api"><code class="docutils literal notranslate"><span class="pre">.routes</span></code> - Percorsi API</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/code/backend/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="module-nest_backend">
<span id="nest-backend-web-api-in-python"></span><h1><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python<a class="headerlink" href="#module-nest_backend" title="Link a questa intestazione"></a></h1>
<div class="section" id="module-nest_backend.gestione">
<span id="gestione-metodi-di-utility"></span><h2><code class="docutils literal notranslate"><span class="pre">.gestione</span></code> - Metodi di utility<a class="headerlink" href="#module-nest_backend.gestione" title="Link a questa intestazione"></a></h2>
<p>Gestione adds many fancy thingamajigs to the flask application, such as a login system and such.</p>
<dl class="py function">
<dt id="nest_backend.gestione.authenticate">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">authenticate</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">username</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.authenticate" title="Link a questa definizione"></a></dt>
<dd><p>Authentication method. It checks if the combination of username+password is a valid match. If not, it returns None.
:param username: the users email
:param password: the users password
:return: if the credentials are correct, it returns the user. Else, it returns None.</p>
</dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.identity">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">identity</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">payload</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.identity" title="Link a questa definizione"></a></dt>
<dd><p>Authentication verification method. It checks if the user is in fact registered on the server.
It is required by Flask-JWT, and shouldnt be used alone.
:param payload: the reqest payload.
:return: an User or None. It depends whether the user is actually registered on the platform.</p>
</dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.gen_password">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">gen_password</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">password</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.gen_password" title="Link a questa definizione"></a></dt>
<dd><p>It generates an hashed password.
:param password: the password that needs to be hashed.
:return: the passwords hash.</p>
</dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.find_user">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">find_user</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">email</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.find_user" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.admin_or_403">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">admin_or_403</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.admin_or_403" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.repository_auth">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">repository_auth</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.repository_auth" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.json_request_authorizer">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">json_request_authorizer</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">json</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">serializable</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.json_request_authorizer" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.json_error">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">json_error</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msg</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">code</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'errorUnknownError'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.json_error" title="Link a questa definizione"></a></dt>
<dd><p>Returns an error in json format
:param code: the code of the error according to the spec.
:param msg: the error message.
:return: a json formatted string.</p>
</dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.json_success">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">json_success</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.json_success" title="Link a questa definizione"></a></dt>
<dd><p>An happy little function. Its happy because the operation was successful.
:param data: the thing you want to be returned
:return: a json formatted string</p>
</dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.error_handler">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">error_handler</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">e</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.error_handler" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_backend.gestione.hashtag_validator">
<code class="sig-prename descclassname"><span class="pre">nest_backend.gestione.</span></code><code class="sig-name descname"><span class="pre">hashtag_validator</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">hashtag</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.hashtag_validator" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-nest_backend.database">
<span id="database-database"></span><h2><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database<a class="headerlink" href="#module-nest_backend.database" title="Link a questa intestazione"></a></h2>
<p>This module imports all the tables and the declarative base</p>
<div class="section" id="module-nest_backend.database.base">
<span id="base-estensione-flask"></span><h3><code class="docutils literal notranslate"><span class="pre">.base</span></code> - Estensione flask<a class="headerlink" href="#module-nest_backend.database.base" title="Link a questa intestazione"></a></h3>
</div>
<div class="section" id="module-nest_backend.database.tables">
<span id="tables-tabelle"></span><h3><code class="docutils literal notranslate"><span class="pre">.tables</span></code> - Tabelle<a class="headerlink" href="#module-nest_backend.database.tables" title="Link a questa intestazione"></a></h3>
<p>This module contains all database classes.</p>
<dl class="py class">
<dt id="nest_backend.database.tables.Alert">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Alert</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Alert" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.id">
<code class="sig-name descname"><span class="pre">id</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.name">
<code class="sig-name descname"><span class="pre">name</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.name" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.limit">
<code class="sig-name descname"><span class="pre">limit</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.limit" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.window_size">
<code class="sig-name descname"><span class="pre">window_size</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.window_size" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.evaluation_mode">
<code class="sig-name descname"><span class="pre">evaluation_mode</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.evaluation_mode" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.repository_id">
<code class="sig-name descname"><span class="pre">repository_id</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.repository_id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.repository">
<code class="sig-name descname"><span class="pre">repository</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.repository" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.notifications">
<code class="sig-name descname"><span class="pre">notifications</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.notifications" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Alert.conditions">
<code class="sig-name descname"><span class="pre">conditions</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.conditions" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Alert.to_json">
<code class="sig-name descname"><span class="pre">to_json</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Alert.to_json" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Alert.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Alert.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.Authorization">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Authorization</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Authorization" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Authorization.rid">
<code class="sig-name descname"><span class="pre">rid</span></code><a class="headerlink" href="#nest_backend.database.tables.Authorization.rid" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Authorization.email">
<code class="sig-name descname"><span class="pre">email</span></code><a class="headerlink" href="#nest_backend.database.tables.Authorization.email" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Authorization.repository">
<code class="sig-name descname"><span class="pre">repository</span></code><a class="headerlink" href="#nest_backend.database.tables.Authorization.repository" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Authorization.user">
<code class="sig-name descname"><span class="pre">user</span></code><a class="headerlink" href="#nest_backend.database.tables.Authorization.user" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Authorization.to_json">
<code class="sig-name descname"><span class="pre">to_json</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Authorization.to_json" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Authorization.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Authorization.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.Composed">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Composed</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Composed" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Composed.rid">
<code class="sig-name descname"><span class="pre">rid</span></code><a class="headerlink" href="#nest_backend.database.tables.Composed.rid" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Composed.snowflake">
<code class="sig-name descname"><span class="pre">snowflake</span></code><a class="headerlink" href="#nest_backend.database.tables.Composed.snowflake" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Composed.repository">
<code class="sig-name descname"><span class="pre">repository</span></code><a class="headerlink" href="#nest_backend.database.tables.Composed.repository" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Composed.tweet">
<code class="sig-name descname"><span class="pre">tweet</span></code><a class="headerlink" href="#nest_backend.database.tables.Composed.tweet" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Composed.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Composed.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.Condition">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Condition</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Condition" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Condition.id">
<code class="sig-name descname"><span class="pre">id</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Condition.type">
<code class="sig-name descname"><span class="pre">type</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.type" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Condition.content">
<code class="sig-name descname"><span class="pre">content</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.content" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Condition.repository_id">
<code class="sig-name descname"><span class="pre">repository_id</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.repository_id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Condition.repository">
<code class="sig-name descname"><span class="pre">repository</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.repository" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Condition.tweets">
<code class="sig-name descname"><span class="pre">tweets</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.tweets" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Condition.alerts">
<code class="sig-name descname"><span class="pre">alerts</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.alerts" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Condition.to_json">
<code class="sig-name descname"><span class="pre">to_json</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Condition.to_json" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Condition.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Condition.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.Contains">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Contains</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Contains" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Contains.cid">
<code class="sig-name descname"><span class="pre">cid</span></code><a class="headerlink" href="#nest_backend.database.tables.Contains.cid" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Contains.snowflake">
<code class="sig-name descname"><span class="pre">snowflake</span></code><a class="headerlink" href="#nest_backend.database.tables.Contains.snowflake" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Contains.condition">
<code class="sig-name descname"><span class="pre">condition</span></code><a class="headerlink" href="#nest_backend.database.tables.Contains.condition" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Contains.tweet">
<code class="sig-name descname"><span class="pre">tweet</span></code><a class="headerlink" href="#nest_backend.database.tables.Contains.tweet" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Contains.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Contains.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.Notification">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Notification</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Notification" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Notification.id">
<code class="sig-name descname"><span class="pre">id</span></code><a class="headerlink" href="#nest_backend.database.tables.Notification.id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Notification.ora">
<code class="sig-name descname"><span class="pre">ora</span></code><a class="headerlink" href="#nest_backend.database.tables.Notification.ora" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Notification.alert_id">
<code class="sig-name descname"><span class="pre">alert_id</span></code><a class="headerlink" href="#nest_backend.database.tables.Notification.alert_id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Notification.alert">
<code class="sig-name descname"><span class="pre">alert</span></code><a class="headerlink" href="#nest_backend.database.tables.Notification.alert" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Notification.to_json">
<code class="sig-name descname"><span class="pre">to_json</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Notification.to_json" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Notification.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Notification.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.Repository">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Repository</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Repository" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.id">
<code class="sig-name descname"><span class="pre">id</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.name">
<code class="sig-name descname"><span class="pre">name</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.name" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.start">
<code class="sig-name descname"><span class="pre">start</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.start" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.end">
<code class="sig-name descname"><span class="pre">end</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.end" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.is_active">
<code class="sig-name descname"><span class="pre">is_active</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.is_active" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.evaluation_mode">
<code class="sig-name descname"><span class="pre">evaluation_mode</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.evaluation_mode" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.owner_id">
<code class="sig-name descname"><span class="pre">owner_id</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.owner_id" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.owner">
<code class="sig-name descname"><span class="pre">owner</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.owner" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.authorizations">
<code class="sig-name descname"><span class="pre">authorizations</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.authorizations" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.tweets">
<code class="sig-name descname"><span class="pre">tweets</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.tweets" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.alerts">
<code class="sig-name descname"><span class="pre">alerts</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.alerts" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.conditions">
<code class="sig-name descname"><span class="pre">conditions</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.conditions" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Repository.to_json">
<code class="sig-name descname"><span class="pre">to_json</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Repository.to_json" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Repository.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Repository.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.Tweet">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">Tweet</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Tweet" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.snowflake">
<code class="sig-name descname"><span class="pre">snowflake</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.snowflake" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.content">
<code class="sig-name descname"><span class="pre">content</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.content" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.location">
<code class="sig-name descname"><span class="pre">location</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.location" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.place">
<code class="sig-name descname"><span class="pre">place</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.place" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.poster">
<code class="sig-name descname"><span class="pre">poster</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.poster" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.insert_time">
<code class="sig-name descname"><span class="pre">insert_time</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.insert_time" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.post_time">
<code class="sig-name descname"><span class="pre">post_time</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.post_time" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.image_url">
<code class="sig-name descname"><span class="pre">image_url</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.image_url" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.repositories">
<code class="sig-name descname"><span class="pre">repositories</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.repositories" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Tweet.conditions">
<code class="sig-name descname"><span class="pre">conditions</span></code><a class="headerlink" href="#nest_backend.database.tables.Tweet.conditions" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Tweet.to_json">
<code class="sig-name descname"><span class="pre">to_json</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Tweet.to_json" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.Tweet.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.Tweet.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.User">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">User</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.User" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.User.email">
<code class="sig-name descname"><span class="pre">email</span></code><a class="headerlink" href="#nest_backend.database.tables.User.email" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.User.username">
<code class="sig-name descname"><span class="pre">username</span></code><a class="headerlink" href="#nest_backend.database.tables.User.username" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.User.password">
<code class="sig-name descname"><span class="pre">password</span></code><a class="headerlink" href="#nest_backend.database.tables.User.password" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.User.isAdmin">
<code class="sig-name descname"><span class="pre">isAdmin</span></code><a class="headerlink" href="#nest_backend.database.tables.User.isAdmin" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.User.owner_of">
<code class="sig-name descname"><span class="pre">owner_of</span></code><a class="headerlink" href="#nest_backend.database.tables.User.owner_of" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.User.authorizations">
<code class="sig-name descname"><span class="pre">authorizations</span></code><a class="headerlink" href="#nest_backend.database.tables.User.authorizations" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.User.to_json">
<code class="sig-name descname"><span class="pre">to_json</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.User.to_json" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.User.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.User.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.MadeOf">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">MadeOf</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.MadeOf" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.orm.decl_api.Model</span></code></p>
</div></blockquote>
<dl class="py attribute">
<dt id="nest_backend.database.tables.MadeOf.aid">
<code class="sig-name descname"><span class="pre">aid</span></code><a class="headerlink" href="#nest_backend.database.tables.MadeOf.aid" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.MadeOf.cid">
<code class="sig-name descname"><span class="pre">cid</span></code><a class="headerlink" href="#nest_backend.database.tables.MadeOf.cid" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.MadeOf.alert">
<code class="sig-name descname"><span class="pre">alert</span></code><a class="headerlink" href="#nest_backend.database.tables.MadeOf.alert" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.MadeOf.condition">
<code class="sig-name descname"><span class="pre">condition</span></code><a class="headerlink" href="#nest_backend.database.tables.MadeOf.condition" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="nest_backend.database.tables.MadeOf.__init__">
<code class="sig-name descname"><span class="pre">__init__</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.MadeOf.__init__" title="Link a questa definizione"></a></dt>
<dd><p>A simple constructor that allows initialization from kwargs.</p>
<p>Sets attributes on the constructed instance using the names and
values in <code class="docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
<p>Only keys that are present as
attributes of the instances class are allowed. These could be,
for example, any mapped columns or relationships.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.ConditionType">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">ConditionType</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.ConditionType" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <a class="reference external" href="https://docs.python.org/3.8/library/enum.html#enum.Enum" title="(in Python v3.8)"><code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></a></p>
</div></blockquote>
<p>Vedi <a class="reference external" href="https://gitlab.steffo.eu/nest/g2-progetto/-/wikis/Specifica-delle-Conditions">Specifica delle Conditions su
GitLab</a> .</p>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionType.hashtag">
<code class="sig-name descname"><span class="pre">hashtag</span></code><em class="property"> <span class="pre">=</span> <span class="pre">0</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionType.hashtag" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionType.location">
<code class="sig-name descname"><span class="pre">location</span></code><em class="property"> <span class="pre">=</span> <span class="pre">1</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionType.location" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionType.time">
<code class="sig-name descname"><span class="pre">time</span></code><em class="property"> <span class="pre">=</span> <span class="pre">2</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionType.time" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionType.coordinates">
<code class="sig-name descname"><span class="pre">coordinates</span></code><em class="property"> <span class="pre">=</span> <span class="pre">3</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionType.coordinates" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionType.place">
<code class="sig-name descname"><span class="pre">place</span></code><em class="property"> <span class="pre">=</span> <span class="pre">4</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionType.place" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionType.user">
<code class="sig-name descname"><span class="pre">user</span></code><em class="property"> <span class="pre">=</span> <span class="pre">5</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionType.user" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.OperationType">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">OperationType</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.OperationType" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <a class="reference external" href="https://docs.python.org/3.8/library/enum.html#enum.Enum" title="(in Python v3.8)"><code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></a></p>
</div></blockquote>
<p>An enumeration.</p>
<dl class="py attribute">
<dt id="nest_backend.database.tables.OperationType.assign">
<code class="sig-name descname"><span class="pre">assign</span></code><em class="property"> <span class="pre">=</span> <span class="pre">3</span></em><a class="headerlink" href="#nest_backend.database.tables.OperationType.assign" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="nest_backend.database.tables.ConditionMode">
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">nest_backend.database.tables.</span></code><code class="sig-name descname"><span class="pre">ConditionMode</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.ConditionMode" title="Link a questa definizione"></a></dt>
<dd><blockquote>
<div><p>Basi: <a class="reference external" href="https://docs.python.org/3.8/library/enum.html#enum.Enum" title="(in Python v3.8)"><code class="xref py py-class docutils literal notranslate"><span class="pre">enum.Enum</span></code></a></p>
</div></blockquote>
<p>An enumeration.</p>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionMode.all_or">
<code class="sig-name descname"><span class="pre">all_or</span></code><em class="property"> <span class="pre">=</span> <span class="pre">0</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionMode.all_or" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.ConditionMode.all_and">
<code class="sig-name descname"><span class="pre">all_and</span></code><em class="property"> <span class="pre">=</span> <span class="pre">1</span></em><a class="headerlink" href="#nest_backend.database.tables.ConditionMode.all_and" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
<div class="section" id="routes-percorsi-api">
<h2><code class="docutils literal notranslate"><span class="pre">.routes</span></code> - Percorsi API<a class="headerlink" href="#routes-percorsi-api" title="Link a questa intestazione"></a></h2>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../crawler/index.html" class="btn btn-neutral float-right" title="nest_crawler - Crawler in Python" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../meta/index.html" class="btn btn-neutral float-left" title="Meta-documentazione" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

231
docs/build/html/code/crawler/index.html vendored Normal file
View file

@ -0,0 +1,231 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>nest_crawler - Crawler in Python &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="nest_frontend - Interfaccia utente in React" href="../frontend/index.html" />
<link rel="prev" title="nest_backend - Web API in Python" href="../backend/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/code/crawler/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="module-nest_crawler">
<span id="nest-crawler-crawler-in-python"></span><h1><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python<a class="headerlink" href="#module-nest_crawler" title="Link a questa intestazione"></a></h1>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../frontend/index.html" class="btn btn-neutral float-right" title="nest_frontend - Interfaccia utente in React" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../backend/index.html" class="btn btn-neutral float-left" title="nest_backend - Web API in Python" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

229
docs/build/html/code/frontend/index.html vendored Normal file
View file

@ -0,0 +1,229 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>nest_frontend - Interfaccia utente in React &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="prev" title="nest_crawler - Crawler in Python" href="../crawler/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/code/frontend/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="nest-frontend-interfaccia-utente-in-react">
<h1><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React<a class="headerlink" href="#nest-frontend-interfaccia-utente-in-react" title="Link a questa intestazione"></a></h1>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../crawler/index.html" class="btn btn-neutral float-left" title="nest_crawler - Crawler in Python" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

291
docs/build/html/code/meta/index.html vendored Normal file
View file

@ -0,0 +1,291 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Meta-documentazione &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="nest_backend - Web API in Python" href="../backend/index.html" />
<link rel="prev" title="Suggerimenti relativi al corso" href="../../development/suggestions.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Meta-documentazione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#compilazione-con-intellij-idea">Compilazione con IntelliJ IDEA</a></li>
<li class="toctree-l2"><a class="reference internal" href="#compilazione-con-gnu-make">Compilazione con GNU Make</a></li>
<li class="toctree-l2"><a class="reference internal" href="#compilazione-con-windows-powershell">Compilazione con Windows Powershell</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Meta-documentazione</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/code/meta/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="meta-documentazione">
<h1>Meta-documentazione<a class="headerlink" href="#meta-documentazione" title="Link a questa intestazione"></a></h1>
<p>La documentazione è scritta in <a class="reference external" href="https://docutils.sourceforge.io/rst.html">reStructuredText</a>, ed è generata con
<a class="reference external" href="https://www.sphinx-doc.org/en/master/">Sphinx</a>.</p>
<p>I dati relativi alla documentazione si trovano nella directory standard <code class="docutils literal notranslate"><span class="pre">/docs</span></code>;
in particolare, le sorgenti reStructuredText si trovano in <code class="docutils literal notranslate"><span class="pre">/docs/source</span></code>,
mentre lultima versione compilata si trova in <code class="docutils literal notranslate"><span class="pre">/docs/build</span></code>.</p>
<p>Questa struttura permetterebbe lintegrazione con lo strumento di «Continuous Documentation»
<a class="reference external" href="https://readthedocs.com/">ReadTheDocs</a>, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza
almeno <a class="reference external" href="https://readthedocs.com/pricing/">Basic</a>.</p>
<div class="section" id="compilazione-con-intellij-idea">
<h2>Compilazione con IntelliJ IDEA<a class="headerlink" href="#compilazione-con-intellij-idea" title="Link a questa intestazione"></a></h2>
<p>È possibile compilare manualmente la documentazione con IntelliJ IDEA.</p>
<p>Su sistemi Linux, è disponibile la Run Configuration <code class="docutils literal notranslate"><span class="pre">Docs</span></code>, che compilerà la versione HTML della documentazione se
eseguita.</p>
<img alt="../../_images/docsRunConfig.png" src="../../_images/docsRunConfig.png" />
</div>
<div class="section" id="compilazione-con-gnu-make">
<h2>Compilazione con GNU Make<a class="headerlink" href="#compilazione-con-gnu-make" title="Link a questa intestazione"></a></h2>
<p>È possibile compilare manualmente la documentazione con GNU Make.</p>
<p>Come prima cosa, è necessario <a class="reference internal" href="../../guide/installation.html#installare-le-dipendenze-python"><span class="std std-ref">Installare le dipendenze Python</span></a> del progetto:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">user:g2-progetto$ </span>poetry install
</pre></div>
</div>
<p>Poi, si entri allinterno del virtual environment:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">user:g2-progetto$ </span>poetry shell
</pre></div>
</div>
<p>Una volta allinterno del venv, si entri nella cartella della documentazione:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">user:g2-progetto$ </span><span class="nb">cd</span> docs
</pre></div>
</div>
<p>Infine, si esegua il target <code class="docutils literal notranslate"><span class="pre">html</span></code> del Makefile:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">user:g2-progetto/docs$ </span>make html
</pre></div>
</div>
</div>
<div class="section" id="compilazione-con-windows-powershell">
<h2>Compilazione con Windows Powershell<a class="headerlink" href="#compilazione-con-windows-powershell" title="Link a questa intestazione"></a></h2>
<p>È possibile compilare manualmente la documentazione con Windows Powershell.</p>
<p>Come prima cosa, è necessario <a class="reference internal" href="../../guide/installation.html#installare-le-dipendenze-python"><span class="std std-ref">Installare le dipendenze Python</span></a> del progetto:</p>
<div class="highlight-doscon notranslate"><div class="highlight"><pre><span></span><span class="gp">g2-progetto&gt;</span> poetry install
</pre></div>
</div>
<p>Poi, si entri allinterno del virtual environment:</p>
<div class="highlight-doscon notranslate"><div class="highlight"><pre><span></span><span class="gp">g2-progetto&gt;</span> poetry shell
</pre></div>
</div>
<p>Una volta allinterno del venv, si entri nella cartella della documentazione:</p>
<div class="highlight-doscon notranslate"><div class="highlight"><pre><span></span><span class="gp">g2-progetto&gt;</span> <span class="k">cd</span> docs
</pre></div>
</div>
<p>Infine, si esegua lo script <code class="docutils literal notranslate"><span class="pre">make.bat</span></code> con il parametro <code class="docutils literal notranslate"><span class="pre">html</span></code>:</p>
<div class="highlight-doscon notranslate"><div class="highlight"><pre><span></span><span class="gp">g2-progetto/docs&gt;</span> make html
</pre></div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../backend/index.html" class="btn btn-neutral float-right" title="nest_backend - Web API in Python" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../../development/suggestions.html" class="btn btn-neutral float-left" title="Suggerimenti relativi al corso" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,245 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Artefatti &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Conclusioni" href="conclusions.html" />
<link rel="prev" title="Sprint 3: 17 Mag - 30 Mag" href="sprint3/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Artefatti</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#demo">Demo</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Artefatti</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/development/artifacts.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="artefatti">
<h1>Artefatti<a class="headerlink" href="#artefatti" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Non ho idea di cosa bisogna scrivere qui.</p>
</div>
<div class="section" id="demo">
<h2>Demo<a class="headerlink" href="#demo" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire un link al video della demo.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="conclusions.html" class="btn btn-neutral float-right" title="Conclusioni" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="sprint3/index.html" class="btn btn-neutral float-left" title="Sprint 3: 17 Mag - 30 Mag" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,238 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Conclusioni &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Suggerimenti relativi al corso" href="suggestions.html" />
<link rel="prev" title="Artefatti" href="artifacts.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="artifacts.html">Artefatti</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Conclusioni</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/development/conclusions.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="conclusioni">
<h1>Conclusioni<a class="headerlink" href="#conclusioni" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Scrivere le conclusioni.</p>
<blockquote>
<div><p>«cosa avete imparato, cosa è andato bene, cosa cambiereste»</p>
</div></blockquote>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="suggestions.html" class="btn btn-neutral float-right" title="Suggerimenti relativi al corso" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="artifacts.html" class="btn btn-neutral float-left" title="Artefatti" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

261
docs/build/html/development/goals.html vendored Normal file
View file

@ -0,0 +1,261 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Obiettivo del progetto &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Processo di sviluppo" href="process.html" />
<link rel="prev" title="Installazione" href="../guide/installation.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Obiettivo del progetto</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#scope">Scope</a></li>
<li class="toctree-l2"><a class="reference internal" href="#casi-d-uso">Casi duso</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog-generale">Backlog generale</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Obiettivo del progetto</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/development/goals.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="obiettivo-del-progetto">
<h1>Obiettivo del progetto<a class="headerlink" href="#obiettivo-del-progetto" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Scrivere lobiettivo generale del progetto.</p>
</div>
<div class="section" id="scope">
<h2>Scope<a class="headerlink" href="#scope" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Scrivere lo scope del progetto.</p>
</div>
</div>
<div class="section" id="casi-d-uso">
<h2>Casi duso<a class="headerlink" href="#casi-d-uso" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Scrivere i casi duso del progetto.</p>
</div>
</div>
<div class="section" id="backlog-generale">
<h2>Backlog generale<a class="headerlink" href="#backlog-generale" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Elencare qui tutte le user story del backlog, senza specificare lo sprint in cui sono state realizzate.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="process.html" class="btn btn-neutral float-right" title="Processo di sviluppo" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../guide/installation.html" class="btn btn-neutral float-left" title="Installazione" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

240
docs/build/html/development/process.html vendored Normal file
View file

@ -0,0 +1,240 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Processo di sviluppo &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Strumenti utilizzati" href="tools.html" />
<link rel="prev" title="Obiettivo del progetto" href="goals.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Processo di sviluppo</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/development/process.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="processo-di-sviluppo">
<h1>Processo di sviluppo<a class="headerlink" href="#processo-di-sviluppo" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Descrivere genericamente il processo di sviluppo seguito, includendo:</p>
<blockquote>
<div><p>«numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo,
retrospettiva finale»</p>
</div></blockquote>
<p>Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando <code class="docutils literal notranslate"><span class="pre">:ref:</span></code>.</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="tools.html" class="btn btn-neutral float-right" title="Strumenti utilizzati" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="goals.html" class="btn btn-neutral float-left" title="Obiettivo del progetto" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,609 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sprint 0: 04 Apr - 18 Apr &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="Sprint 1: 19 Apr - 02 Mag" href="../sprint1/index.html" />
<link rel="prev" title="Strumenti utilizzati" href="../tools.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sprint 0: 04 Apr - 18 Apr</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#registro-attivita">Registro attività</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#stefano-goldoni">Stefano Goldoni</a></li>
<li class="toctree-l4"><a class="reference internal" href="#flavia-cocca">Flavia Cocca</a></li>
<li class="toctree-l4"><a class="reference internal" href="#chiara-calzolari">Chiara Calzolari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#stefano-pigozzi">Stefano Pigozzi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giovanni-anniballi">Giovanni Anniballi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giorgio-minoccari">Giorgio Minoccari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#lorenzo-balugani">Lorenzo Balugani</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#risultati-della-partita-di-scrumble">Risultati della partita di Scrumble</a></li>
<li class="toctree-l2"><a class="reference internal" href="#statistiche">Statistiche</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Sprint 0: 04 Apr - 18 Apr</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/development/sprint0/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="sprint-0-04-apr-18-apr">
<h1>Sprint 0: 04 Apr - 18 Apr<a class="headerlink" href="#sprint-0-04-apr-18-apr" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2>
<p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/a4f29d39f4f9d7a16e572fb50f1054c7/0-initial.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Descrizione</span> <span class="pre">iniziale</span> <span class="pre">del</span> <span class="pre">prodotto</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/56a7b936d5f736eeed714f4fad53c4c3/0-sprint-requirements.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">0</span></code></a></p></li>
</ul>
</div>
<div class="section" id="goal">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
</div>
<div class="section" id="backlog">
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
</div>
<div class="section" id="definition-of-done">
<h2>Definition of done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
</div>
<div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
<div class="section" id="riunioni-collettive">
<h3>Riunioni collettive<a class="headerlink" href="#riunioni-collettive" title="Link a questa intestazione"></a></h3>
<table class="docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Ora</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>10h 6m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-08</p></td>
<td><p>20:45</p></td>
<td><p>1h</p></td>
<td><p>Analisi documento di specifiche</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-09</p></td>
<td><p>14:15</p></td>
<td><p>35m</p></td>
<td><p>Intervista con il cliente</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-09</p></td>
<td><p>15:00</p></td>
<td><p>1h</p></td>
<td><p>Resoconto intervista</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-11</p></td>
<td><p>15:03</p></td>
<td><p>2h 39m</p></td>
<td><p>Documentazione e planning poker</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-15</p></td>
<td><p>18:15</p></td>
<td><p>52m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-17</p></td>
<td><p>15:05</p></td>
<td><p>4h</p></td>
<td><p>Documentazione e partita a Scrumble</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="attivita-individuali">
<h3>Attività individuali<a class="headerlink" href="#attivita-individuali" title="Link a questa intestazione"></a></h3>
<div class="section" id="stefano-goldoni">
<h4>Stefano Goldoni<a class="headerlink" href="#stefano-goldoni" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>6h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-08</p></td>
<td><p>1h</p></td>
<td><p>user stories</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-09</p></td>
<td><p>1h</p></td>
<td><p>epic</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-10</p></td>
<td><p>30m</p></td>
<td><p>use cases</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-11</p></td>
<td><p>30m</p></td>
<td><p>use cases</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-14</p></td>
<td><p>30m</p></td>
<td><p>documentazione SRS</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-15</p></td>
<td><p>30m</p></td>
<td><p>documentazione SRS</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-17</p></td>
<td><p>1h 30m</p></td>
<td><p>diagrammi di attività</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="flavia-cocca">
<h4>Flavia Cocca<a class="headerlink" href="#flavia-cocca" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>15h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-08</p></td>
<td><p>2h 30m</p></td>
<td><p>brainstorming Ui</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-10</p></td>
<td><p>2h</p></td>
<td><p>creazione frame in figma con relativo css</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-11</p></td>
<td><p>1h 30m</p></td>
<td><p>mockup UI con relativo css (creazione componenti)</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-12</p></td>
<td><p>1h 30m</p></td>
<td><p>mockup UI con relativo css (creazione componenti)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-14</p></td>
<td><p>3h</p></td>
<td><p>mockup UI con relativo css (creazione pagine)</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-15</p></td>
<td><p>2h</p></td>
<td><p>mockup UI con relativo css (creazioni pagine)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-16</p></td>
<td><p>2h</p></td>
<td><p>ultimi ritocchi UI</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-17</p></td>
<td><p>30m</p></td>
<td><p>Stesura documentazione partita scrumble</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="chiara-calzolari">
<h4>Chiara Calzolari<a class="headerlink" href="#chiara-calzolari" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-09</p></td>
<td><p>2.5h</p></td>
<td><p>Brainstorming UI</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-10</p></td>
<td><p>1.5h</p></td>
<td><p>mockup UI con relativo css (dashboard ed elenco repositories)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-11</p></td>
<td><p>1.0h</p></td>
<td><p>mockup UI con relativo css (settings)</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-11</p></td>
<td><p>0.5h</p></td>
<td><p>Prima versione del logo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-12</p></td>
<td><p>3.0h</p></td>
<td><p>mockup UI con relativo css (creazione componenti, light/dark mode)</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-13</p></td>
<td><p>1.0h</p></td>
<td><p>mockup UI con relativo css (alerts)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-15</p></td>
<td><p>1.0h</p></td>
<td><p>Versione definitiva del logo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-16</p></td>
<td><p>0.5h</p></td>
<td><p>mockup UI con relativo css (Notifications e Share)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-17</p></td>
<td><p>1.0h</p></td>
<td><p>Documentazione Mockup</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-17</p></td>
<td><p>0.5h</p></td>
<td><p>Doppiaggio video di presentazione</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="stefano-pigozzi">
<h4>Stefano Pigozzi<a class="headerlink" href="#stefano-pigozzi" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>23h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-08</p></td>
<td><p>4h 30m</p></td>
<td><p>Configurazione Discord e GitLab</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-09</p></td>
<td><p>3h 30m</p></td>
<td><p>Riunione con il cliente e configurazione Taiga</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-10</p></td>
<td><p>4h</p></td>
<td><p>Configurazione Penpot, Taiga, UI Design, progettazione Database</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-11</p></td>
<td><p>3h 30m</p></td>
<td><p>Riunione, configurazione GitLab e project management</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-12</p></td>
<td><p>30m</p></td>
<td><p>Configurazione Twitter e UI Design</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-15</p></td>
<td><p>2h 30m</p></td>
<td><p>Partita a Scrumble e project management</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-16</p></td>
<td><p>1h 30m</p></td>
<td><p>Project management e configurazione SonarQube</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-17</p></td>
<td><p>3h 30m</p></td>
<td><p>Riunione e partita a scrumble</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="giovanni-anniballi">
<h4>Giovanni Anniballi<a class="headerlink" href="#giovanni-anniballi" title="Link a questa intestazione"></a></h4>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Giovanni ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.</p>
</div>
</div>
<div class="section" id="giorgio-minoccari">
<h4>Giorgio Minoccari<a class="headerlink" href="#giorgio-minoccari" title="Link a questa intestazione"></a></h4>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Giorgio ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.</p>
</div>
</div>
<div class="section" id="lorenzo-balugani">
<h4>Lorenzo Balugani<a class="headerlink" href="#lorenzo-balugani" title="Link a questa intestazione"></a></h4>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Lorenzo ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.</p>
</div>
</div>
</div>
</div>
<div class="section" id="risultati-della-partita-di-scrumble">
<h2>Risultati della partita di Scrumble<a class="headerlink" href="#risultati-della-partita-di-scrumble" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id5">
<p class="admonition-title">Da fare</p>
<p>Trascrivere qui i risultati della partita di Scrumble.</p>
</div>
</div>
<div class="section" id="statistiche">
<h2>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h2>
<div class="section" id="gitinspector">
<h3>Gitinspector<a class="headerlink" href="#gitinspector" title="Link a questa intestazione"></a></h3>
<p>Questa statistica è stata generata dal prof. Marcello Missiroli con
<a class="reference external" href="https://github.com/ejwa/gitinspector">Gitinspector</a> al termine dello Sprint.</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/b39447cc9fdf36619aeebedbc640599a/0-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">0</span></code></a></p></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../sprint1/index.html" class="btn btn-neutral float-right" title="Sprint 1: 19 Apr - 02 Mag" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../tools.html" class="btn btn-neutral float-left" title="Strumenti utilizzati" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,894 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sprint 1: 19 Apr - 02 Mag &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="Sprint 2: 03 Mag - 16 Mag" href="../sprint2/index.html" />
<link rel="prev" title="Sprint 0: 04 Apr - 18 Apr" href="../sprint0/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sprint 1: 19 Apr - 02 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#registro-attivita">Registro attività</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#stefano-goldoni">Stefano Goldoni</a></li>
<li class="toctree-l4"><a class="reference internal" href="#flavia-cocca">Flavia Cocca</a></li>
<li class="toctree-l4"><a class="reference internal" href="#chiara-calzolari">Chiara Calzolari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#stefano-pigozzi">Stefano Pigozzi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giovanni-anniballi">Giovanni Anniballi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giorgio-minoccari">Giorgio Minoccari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#lorenzo-balugani">Lorenzo Balugani</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#statistiche">Statistiche</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-review">Sprint review</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Sprint 1: 19 Apr - 02 Mag</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/development/sprint1/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="sprint-1-19-apr-02-mag">
<h1>Sprint 1: 19 Apr - 02 Mag<a class="headerlink" href="#sprint-1-19-apr-02-mag" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2>
<p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/0f0b0c14c0cb349854d86cde0fd97dd0/1-sprint-requirements.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">1</span></code></a></p></li>
</ul>
</div>
<div class="section" id="goal">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
</div>
<div class="section" id="backlog">
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
</div>
<div class="section" id="definition-of-done">
<h2>Definition of done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
</div>
<div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
<div class="section" id="riunioni-collettive">
<h3>Riunioni collettive<a class="headerlink" href="#riunioni-collettive" title="Link a questa intestazione"></a></h3>
<table class="docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Ora</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>2h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-01</p></td>
<td><p>15:30</p></td>
<td><p>2h</p></td>
<td><p>backlog grooming session</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="attivita-individuali">
<h3>Attività individuali<a class="headerlink" href="#attivita-individuali" title="Link a questa intestazione"></a></h3>
<div class="section" id="stefano-goldoni">
<h4>Stefano Goldoni<a class="headerlink" href="#stefano-goldoni" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>23h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-20</p></td>
<td><p>30m</p></td>
<td><p>analisi test</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-20</p></td>
<td><p>1h 30m</p></td>
<td><p>scrittura test cases</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-26</p></td>
<td><p>30m</p></td>
<td><p>predisposizione progetto in locale per il test</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>2h</p></td>
<td><p>metodi di test login e creazione utente</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-28</p></td>
<td><p>2h</p></td>
<td><p>metodi ti test</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-29</p></td>
<td><p>2h</p></td>
<td><p>metodi di test</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-30</p></td>
<td><p>2h</p></td>
<td><p>metodi di test backend</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-01</p></td>
<td><p>1h</p></td>
<td><p>test frontend</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-01</p></td>
<td><p>1h</p></td>
<td><p>test backend in pair programming</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-02</p></td>
<td><p>1h</p></td>
<td><p>documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-02</p></td>
<td><p>2h 30m</p></td>
<td><p>test backend</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="flavia-cocca">
<h4>Flavia Cocca<a class="headerlink" href="#flavia-cocca" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>8h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-27</p></td>
<td><p>1h</p></td>
<td><p>modifica mockup UI</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-28</p></td>
<td><p>1h</p></td>
<td><p>Organizzazione Sprint retrospective</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-30</p></td>
<td><p>1h</p></td>
<td><p>modifica mockup UI</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-01</p></td>
<td><p>2h</p></td>
<td><p>Riunione con il team per sprint review e sprint retrospective</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-02</p></td>
<td><p>3h</p></td>
<td><p>Stesura documenti Sprint 1 (debito tecnico e relazione sprint retrospective), realizzazione video Sprint1 review</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="chiara-calzolari">
<h4>Chiara Calzolari<a class="headerlink" href="#chiara-calzolari" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>6h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-26</p></td>
<td><p>3h</p></td>
<td><p>Configurazione ambiente di sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-27</p></td>
<td><p>1h</p></td>
<td><p>modifica mockup UI (adeguamento al JS)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-29</p></td>
<td><p>2h</p></td>
<td><p>modifica mockup UI (Manage users)</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-01</p></td>
<td><p>30m</p></td>
<td><p>Ultimi ritocchi al mockup UI</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="stefano-pigozzi">
<h4>Stefano Pigozzi<a class="headerlink" href="#stefano-pigozzi" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>29h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-19</p></td>
<td><p>18m</p></td>
<td><p>Configurazione IntelliJ IDEA</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-19</p></td>
<td><p>10m</p></td>
<td><p>Configurazione IntelliJ IDEA</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-20</p></td>
<td><p>1h 26m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-21</p></td>
<td><p>1h 3m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-21</p></td>
<td><p>3m</p></td>
<td><p>Configurazione IntelliJ IDEA</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-21</p></td>
<td><p>58m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-21</p></td>
<td><p>13m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-21</p></td>
<td><p>7m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-21</p></td>
<td><p>6m</p></td>
<td><p>Project management</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-21</p></td>
<td><p>15m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-21</p></td>
<td><p>32m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-21</p></td>
<td><p>10m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-22</p></td>
<td><p>5m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-22</p></td>
<td><p>16m</p></td>
<td><p>Presentazione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-22</p></td>
<td><p>36m</p></td>
<td><p>Riunione</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-22</p></td>
<td><p>1h 23m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-23</p></td>
<td><p>18m</p></td>
<td><p>Studio</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-23</p></td>
<td><p>42m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-23</p></td>
<td><p>10m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-23</p></td>
<td><p>1h 9m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-23</p></td>
<td><p>3m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-24</p></td>
<td><p>19m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-24</p></td>
<td><p>19m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-25</p></td>
<td><p>2h 59m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-25</p></td>
<td><p>10m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>13m</p></td>
<td><p>Configurazione SonarQube</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-26</p></td>
<td><p>12m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>30m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-26</p></td>
<td><p>4m</p></td>
<td><p>Riunione</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>2h 58m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-26</p></td>
<td><p>1h 4m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>56m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-26</p></td>
<td><p>6m</p></td>
<td><p>Project management</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-27</p></td>
<td><p>7m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-27</p></td>
<td><p>15m</p></td>
<td><p>Configurazione Taiga</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-27</p></td>
<td><p>29m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-27</p></td>
<td><p>35m</p></td>
<td><p>Collaborazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-28</p></td>
<td><p>34m</p></td>
<td><p>Collaborazione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-29</p></td>
<td><p>1h 42m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-29</p></td>
<td><p>1h 26m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-29</p></td>
<td><p>48m</p></td>
<td><p>Project management</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-30</p></td>
<td><p>56m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-30</p></td>
<td><p>46m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-01</p></td>
<td><p>12m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-02</p></td>
<td><p>14m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-02</p></td>
<td><p>28m</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-02</p></td>
<td><p>15m</p></td>
<td><p>Collaborazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-02</p></td>
<td><p>3m</p></td>
<td><p>Bugfixing</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="giovanni-anniballi">
<h4>Giovanni Anniballi<a class="headerlink" href="#giovanni-anniballi" title="Link a questa intestazione"></a></h4>
<p>Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dellIDE utilizzato.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>16h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-22</p></td>
<td><p>30m</p></td>
<td><p>Riunione con il team</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-23</p></td>
<td><p>1h</p></td>
<td><p>Studio struttura del backend</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-24</p></td>
<td><p>1h 30m</p></td>
<td><p>Studio del backend, volto a capire il funzionamento delle varie API</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>2h</p></td>
<td><p>Testing login e retrieval dei dati inerenti a tutti gli utenti registrati</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-27</p></td>
<td><p>1h</p></td>
<td><p>Testing creazione user</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-28</p></td>
<td><p>2h</p></td>
<td><p>Test cancellazione utente e ritorno dei dati inerenti a quellutente</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-29</p></td>
<td><p>1h 30m</p></td>
<td><p>Test modica utenti e creazione della prima repository</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-30</p></td>
<td><p>2h</p></td>
<td><p>Testing ritorno di tutte le repository di proprietà dellutente loggato, ritorno delle info inerenti alla repository specificata</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-01</p></td>
<td><p>2h</p></td>
<td><p>Riunione con il team per sprint review e sprint retrospective</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-01</p></td>
<td><p>1h</p></td>
<td><p>Testing modifica ed eliminazione di una repository (nome, stato)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-02</p></td>
<td><p>2h</p></td>
<td><p>Testing del frontend tramite UI, controllo generale dei test già effettuati.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="giorgio-minoccari">
<h4>Giorgio Minoccari<a class="headerlink" href="#giorgio-minoccari" title="Link a questa intestazione"></a></h4>
<p>Durante lo sprint ho principalmente svolto sviluppo e test riguardo alla API di twitter, in modo da poter effettuare chiamate efficenti e non venire limitati dal sito riguardo alle richieste effettuate.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>10h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-21</p></td>
<td><p>1h</p></td>
<td><p>Primi test riguardo autenticazione Oauth per API twitter</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-23</p></td>
<td><p>1h 30m</p></td>
<td><p>Autenticazione funzionante</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-24</p></td>
<td><p>30m</p></td>
<td><p>Test su ricerche generali con parole chiave</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>1h</p></td>
<td><p>Test su ricerche geolocalizzate</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-27</p></td>
<td><p>1h</p></td>
<td><p>Definizione di entita” di esempio nei database per provare funzioni legate ad esse</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-28</p></td>
<td><p>2h</p></td>
<td><p>Definizione di funzioni per laggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-29</p></td>
<td><p>1h</p></td>
<td><p>Refactor codice scritto fino a quel momento, eliminazione di dati inutili</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-01</p></td>
<td><p>1h</p></td>
<td><p>Implementazioni di analisi su termini e hashtag restituiti dallAPI</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-02</p></td>
<td><p>1h</p></td>
<td><p>Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="lorenzo-balugani">
<h4>Lorenzo Balugani<a class="headerlink" href="#lorenzo-balugani" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>13h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-04-21</p></td>
<td><p>2h</p></td>
<td><p>Implementazione Base di Dati</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-22</p></td>
<td><p>2h</p></td>
<td><p>Login, creazione utenti</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-25</p></td>
<td><p>1h</p></td>
<td><p>Rimozione utenti, CORS, Creazione repo</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-25</p></td>
<td><p>3h</p></td>
<td><p>Altre funzioni API</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-26</p></td>
<td><p>30m</p></td>
<td><p>Standardizzazione output json</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-26</p></td>
<td><p>1h</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-27</p></td>
<td><p>30m</p></td>
<td><p>Aggiunto supporto al modulo explorer, fix</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-28</p></td>
<td><p>30m</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-odd"><td><p>2021-04-29</p></td>
<td><p>1h</p></td>
<td><p>Gestione migliorata errori</p></td>
</tr>
<tr class="row-even"><td><p>2021-04-29</p></td>
<td><p>1h</p></td>
<td><p>Refactoring</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-02</p></td>
<td><p>1h</p></td>
<td><p>Bugfixing</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="section" id="statistiche">
<h2>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h2>
<div class="section" id="gitinspector">
<h3>Gitinspector<a class="headerlink" href="#gitinspector" title="Link a questa intestazione"></a></h3>
<p>Questa statistica è stata generata dal prof. Marcello Missiroli con
<a class="reference external" href="https://github.com/ejwa/gitinspector">Gitinspector</a> al termine dello Sprint.</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/78e5f647ad2041b6942f022e5c1ba6f0/1-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">1</span></code></a></p></li>
</ul>
</div>
</div>
<div class="section" id="sprint-review">
<h2>Sprint review<a class="headerlink" href="#sprint-review" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id6">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../sprint2/index.html" class="btn btn-neutral float-right" title="Sprint 2: 03 Mag - 16 Mag" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../sprint0/index.html" class="btn btn-neutral float-left" title="Sprint 0: 04 Apr - 18 Apr" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,813 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sprint 2: 03 Mag - 16 Mag &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="Sprint 3: 17 Mag - 30 Mag" href="../sprint3/index.html" />
<link rel="prev" title="Sprint 1: 19 Apr - 02 Mag" href="../sprint1/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sprint 2: 03 Mag - 16 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#registro-attivita">Registro attività</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#stefano-goldoni">Stefano Goldoni</a></li>
<li class="toctree-l4"><a class="reference internal" href="#flavia-cocca">Flavia Cocca</a></li>
<li class="toctree-l4"><a class="reference internal" href="#stefano-pigozzi">Stefano Pigozzi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#chiara-calzolari">Chiara Calzolari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giovanni-anniballi">Giovanni Anniballi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giorgio-minoccari">Giorgio Minoccari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#lorenzo-balugani">Lorenzo Balugani</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#statistiche">Statistiche</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-review">Sprint review</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Sprint 2: 03 Mag - 16 Mag</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/development/sprint2/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="sprint-2-03-mag-16-mag">
<h1>Sprint 2: 03 Mag - 16 Mag<a class="headerlink" href="#sprint-2-03-mag-16-mag" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2>
<p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/e8dd818dc8524e2e5ac00e576ab3af22/2-sprint-requirements.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span></code></a></p></li>
</ul>
</div>
<div class="section" id="goal">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
</div>
<div class="section" id="backlog">
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
</div>
<div class="section" id="definition-of-done">
<h2>Definition of done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
</div>
<div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
<div class="section" id="riunioni-collettive">
<h3>Riunioni collettive<a class="headerlink" href="#riunioni-collettive" title="Link a questa intestazione"></a></h3>
<table class="docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Ora</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>1h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-14</p></td>
<td><p>10:00</p></td>
<td><p>1h</p></td>
<td><p>Sprint Retrospective session</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="attivita-individuali">
<h3>Attività individuali<a class="headerlink" href="#attivita-individuali" title="Link a questa intestazione"></a></h3>
<div class="section" id="stefano-goldoni">
<h4>Stefano Goldoni<a class="headerlink" href="#stefano-goldoni" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>16h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-04</p></td>
<td><p>1h</p></td>
<td><p>preparazione backlog sprint 2</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-10</p></td>
<td><p>3h</p></td>
<td><p>test sprint 2</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-11</p></td>
<td><p>2h 30m</p></td>
<td><p>test utenti e repository</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-12</p></td>
<td><p>2h</p></td>
<td><p>test repository</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-13</p></td>
<td><p>2h 30m</p></td>
<td><p>test repository</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-14</p></td>
<td><p>3h</p></td>
<td><p>test conditions</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-15</p></td>
<td><p>2h</p></td>
<td><p>test conditions + sonarqube scanner</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="flavia-cocca">
<h4>Flavia Cocca<a class="headerlink" href="#flavia-cocca" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>16h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-04</p></td>
<td><p>30m</p></td>
<td><p>Riunione per con PO, nuovo backlog</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-05</p></td>
<td><p>1h</p></td>
<td><p>Riunione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-07</p></td>
<td><p>3h</p></td>
<td><p>Refactoring test</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-08</p></td>
<td><p>2h</p></td>
<td><p>Refactoring test</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-09</p></td>
<td><p>3h</p></td>
<td><p>Nuovi test</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-11</p></td>
<td><p>2h 30m</p></td>
<td><p>Discussione test e risoluzione di alcune issue</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-13</p></td>
<td><p>1h</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-14</p></td>
<td><p>1h</p></td>
<td><p>Sprint Retrospective</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-15</p></td>
<td><p>2h</p></td>
<td><p>Documentazione</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="stefano-pigozzi">
<h4>Stefano Pigozzi<a class="headerlink" href="#stefano-pigozzi" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>27h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-05</p></td>
<td><p>40m</p></td>
<td><p>Riunione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-05</p></td>
<td><p>21m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-06</p></td>
<td><p>9m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-06</p></td>
<td><p>3m</p></td>
<td><p>Configurazione Taiga</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-06</p></td>
<td><p>11m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-06</p></td>
<td><p>9m</p></td>
<td><p>Riunione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-06</p></td>
<td><p>20m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-06</p></td>
<td><p>39m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-06</p></td>
<td><p>15m</p></td>
<td><p>Riunione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-06</p></td>
<td><p>1h 4m</p></td>
<td><p>Riunione</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-07</p></td>
<td><p>1h 47m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-07</p></td>
<td><p>17m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-07</p></td>
<td><p>34m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-07</p></td>
<td><p>34m</p></td>
<td><p>Project management</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-07</p></td>
<td><p>2h 44m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-08</p></td>
<td><p>13m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-08</p></td>
<td><p>29m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-08</p></td>
<td><p>18m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-10</p></td>
<td><p>1h 00m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-10</p></td>
<td><p>1h 15m</p></td>
<td><p>Configurazione GitLab</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-10</p></td>
<td><p>25m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-10</p></td>
<td><p>39m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-11</p></td>
<td><p>25m</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-11</p></td>
<td><p>3h 57m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-11</p></td>
<td><p>1h 45m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-12</p></td>
<td><p>10m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-12</p></td>
<td><p>1h 51m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-13</p></td>
<td><p>1h 00m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-13</p></td>
<td><p>1h 20m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-14</p></td>
<td><p>20m</p></td>
<td><p>Sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-14</p></td>
<td><p>3h 17m</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-15</p></td>
<td><p>1h 8m</p></td>
<td><p>Porting dipendenze</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="chiara-calzolari">
<h4>Chiara Calzolari<a class="headerlink" href="#chiara-calzolari" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>11h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-03</p></td>
<td><p>1h</p></td>
<td><p>Testing frontend e segnalazione issues</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-03</p></td>
<td><p>1h</p></td>
<td><p>Modifica mockup UI (Dashboard repository)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-04</p></td>
<td><p>1h</p></td>
<td><p>Modifica mockup UI (adeguamento al JS)</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-10</p></td>
<td><p>3h</p></td>
<td><p>Configurazione ambiente di sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-11</p></td>
<td><p>1h 30m</p></td>
<td><p>Modifica UI (traduzione in Italiano)</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-12</p></td>
<td><p>30m</p></td>
<td><p>Modifica UI (traduzione in Italiano)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-14</p></td>
<td><p>3h</p></td>
<td><p>Realizzazione video demo sprint 2</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="giovanni-anniballi">
<h4>Giovanni Anniballi<a class="headerlink" href="#giovanni-anniballi" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>17h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-04</p></td>
<td><p>30m</p></td>
<td><p>Incontro con SM e PO per valutare quali US andranno nello sprint2</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-05</p></td>
<td><p>1h</p></td>
<td><p>Incontro con il team</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-07</p></td>
<td><p>2h</p></td>
<td><p>Refactoring tests sugli user e primi utilizzi delle fixtures</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-08</p></td>
<td><p>2h</p></td>
<td><p>Completamento test users</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-10</p></td>
<td><p>1h</p></td>
<td><p>Ulteriori approcci (fallimentari) al coverage di SonarQube</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-11</p></td>
<td><p>2h</p></td>
<td><p>Discussione sui test e correzioni bug</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-12</p></td>
<td><p>1h</p></td>
<td><p>Test repository</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-13</p></td>
<td><p>1h</p></td>
<td><p>Generazione coverage pytest e setting sonarqube (riuscito!)</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-14</p></td>
<td><p>4h</p></td>
<td><p>Sprint review e retrospettiva, conclusione test repository</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-15</p></td>
<td><p>2h</p></td>
<td><p>generazione nuovo coverage e fix a sonarqube</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-15</p></td>
<td><p>30m</p></td>
<td><p>fix piccoli bug segnalati da sonarqube</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="giorgio-minoccari">
<h4>Giorgio Minoccari<a class="headerlink" href="#giorgio-minoccari" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>10h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-04</p></td>
<td><p>30m</p></td>
<td><p>Aggiunta della condizione sullutente</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-10</p></td>
<td><p>2h</p></td>
<td><p>Tentativo di inserimento delle query con place_id</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-11</p></td>
<td><p>1h 30m</p></td>
<td><p>Test per passare alla versione 2.0 delle API</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-12</p></td>
<td><p>1h</p></td>
<td><p>Ritorno alla versione 1.1 perche” lascia disponibili le query sulla geolocalizzazione gratuitamente</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-14</p></td>
<td><p>5h</p></td>
<td><p>Integrazione e inserimento dei tweet catturati nel database</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="lorenzo-balugani">
<h4>Lorenzo Balugani<a class="headerlink" href="#lorenzo-balugani" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"><p>19h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td><p>2021-05-05</p></td>
<td><p>4h</p></td>
<td><p>Setup di swagger, documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-06</p></td>
<td><p>4h</p></td>
<td><p>Documentazione, sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-07</p></td>
<td><p>3h</p></td>
<td><p>Alert, documentazione</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-10</p></td>
<td><p>2h</p></td>
<td><p>Alert Put, bugfixing</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-11</p></td>
<td><p>3h</p></td>
<td><p>Bugfixing, sviluppo</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-12</p></td>
<td><p>3h</p></td>
<td><p>Risolti issue pubblicati su Taiga</p></td>
</tr>
<tr class="row-odd"><td><p>2021-05-13</p></td>
<td><p>1h</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-even"><td><p>2021-05-14</p></td>
<td><p>1h</p></td>
<td><p>Bugfixing</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="section" id="statistiche">
<h2>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h2>
<div class="section" id="gitinspector">
<h3>Gitinspector<a class="headerlink" href="#gitinspector" title="Link a questa intestazione"></a></h3>
<p>Questa statistica è stata generata dal prof. Marcello Missiroli con
<a class="reference external" href="https://github.com/ejwa/gitinspector">Gitinspector</a> al termine dello Sprint.</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/b4c90bf7e7222c3dec541abe0ca8065c/2-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span> <span class="pre">(codice)</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/d3f17d7c3d7250ff8d833b228fd66367/2D-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span> <span class="pre">(documentazione)</span></code></a></p></li>
</ul>
</div>
</div>
<div class="section" id="sprint-review">
<h2>Sprint review<a class="headerlink" href="#sprint-review" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id6">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../sprint3/index.html" class="btn btn-neutral float-right" title="Sprint 3: 17 Mag - 30 Mag" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../sprint1/index.html" class="btn btn-neutral float-left" title="Sprint 1: 19 Apr - 02 Mag" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,536 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sprint 3: 17 Mag - 30 Mag &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="Artefatti" href="../artifacts.html" />
<link rel="prev" title="Sprint 2: 03 Mag - 16 Mag" href="../sprint2/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sprint 3: 17 Mag - 30 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#registro-attivita">Registro attività</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#stefano-goldoni">Stefano Goldoni</a></li>
<li class="toctree-l4"><a class="reference internal" href="#flavia-cocca">Flavia Cocca</a></li>
<li class="toctree-l4"><a class="reference internal" href="#chiara-calzolari">Chiara Calzolari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#stefano-pigozzi">Stefano Pigozzi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giovanni-anniballi">Giovanni Anniballi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#giorgio-minoccari">Giorgio Minoccari</a></li>
<li class="toctree-l4"><a class="reference internal" href="#lorenzo-balugani">Lorenzo Balugani</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#statistiche">Statistiche</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#retrospettiva-finale">Retrospettiva finale</a></li>
<li class="toctree-l2"><a class="reference internal" href="#schermata-finale-di-sonarqube">Schermata finale di SonarQube</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Sprint 3: 17 Mag - 30 Mag</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/development/sprint3/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="sprint-3-17-mag-30-mag">
<h1>Sprint 3: 17 Mag - 30 Mag<a class="headerlink" href="#sprint-3-17-mag-30-mag" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2>
<p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/99492e10545c21e4562ee297a6a7f8fc/3-sprint-requirements.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">3</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/97887f76be086e7133e1b3c7e2c38379/3-report.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Report</span> <span class="pre">finale</span></code></a></p></li>
</ul>
</div>
<div class="section" id="goal">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
</div>
<div class="section" id="backlog">
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
</div>
<div class="section" id="definition-of-done">
<h2>Definition of done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
</div>
<div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id5">
<p class="admonition-title">Da fare</p>
<p>Compilare il registro attività dello sprint 3.</p>
</div>
<div class="section" id="riunioni-collettive">
<h3>Riunioni collettive<a class="headerlink" href="#riunioni-collettive" title="Link a questa intestazione"></a></h3>
<table class="docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Ora</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>TODO</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="attivita-individuali">
<h3>Attività individuali<a class="headerlink" href="#attivita-individuali" title="Link a questa intestazione"></a></h3>
<div class="section" id="stefano-goldoni">
<h4>Stefano Goldoni<a class="headerlink" href="#stefano-goldoni" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="flavia-cocca">
<h4>Flavia Cocca<a class="headerlink" href="#flavia-cocca" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="chiara-calzolari">
<h4>Chiara Calzolari<a class="headerlink" href="#chiara-calzolari" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="stefano-pigozzi">
<h4>Stefano Pigozzi<a class="headerlink" href="#stefano-pigozzi" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="giovanni-anniballi">
<h4>Giovanni Anniballi<a class="headerlink" href="#giovanni-anniballi" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="giorgio-minoccari">
<h4>Giorgio Minoccari<a class="headerlink" href="#giorgio-minoccari" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="lorenzo-balugani">
<h4>Lorenzo Balugani<a class="headerlink" href="#lorenzo-balugani" title="Link a questa intestazione"></a></h4>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Data</p></th>
<th class="head"><p>Durata</p></th>
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="section" id="statistiche">
<h2>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h2>
<div class="section" id="gitinspector">
<h3>Gitinspector<a class="headerlink" href="#gitinspector" title="Link a questa intestazione"></a></h3>
<div class="admonition-todo admonition" id="id6">
<p class="admonition-title">Da fare</p>
<p>Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3.</p>
</div>
</div>
</div>
<div class="section" id="retrospettiva-finale">
<h2>Retrospettiva finale<a class="headerlink" href="#retrospettiva-finale" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id7">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la Retrospettiva finale.</p>
</div>
</div>
<div class="section" id="schermata-finale-di-sonarqube">
<h2>Schermata finale di SonarQube<a class="headerlink" href="#schermata-finale-di-sonarqube" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id8">
<p class="admonition-title">Da fare</p>
<p>Inserire qui uno screenshot della schermata finale di SonarQube.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../artifacts.html" class="btn btn-neutral float-right" title="Artefatti" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../sprint2/index.html" class="btn btn-neutral float-left" title="Sprint 2: 03 Mag - 16 Mag" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,235 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Suggerimenti relativi al corso &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Meta-documentazione" href="../code/meta/index.html" />
<link rel="prev" title="Conclusioni" href="conclusions.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guide/installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="conclusions.html">Conclusioni</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Suggerimenti relativi al corso</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/development/suggestions.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="suggerimenti-relativi-al-corso">
<h1>Suggerimenti relativi al corso<a class="headerlink" href="#suggerimenti-relativi-al-corso" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Che suggerimenti avete da dare al prof. Missiroli? :)</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../code/meta/index.html" class="btn btn-neutral float-right" title="Meta-documentazione" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="conclusions.html" class="btn btn-neutral float-left" title="Conclusioni" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

260
docs/build/html/guide/about.html vendored Normal file
View file

@ -0,0 +1,260 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Il progetto in breve &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Installazione" href="installation.html" />
<link rel="prev" title="N.E.S.T." href="../index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Il progetto in breve</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#suddivisione-in-moduli">Suddivisione in moduli</a></li>
<li class="toctree-l2"><a class="reference internal" href="#screenshots">Screenshots</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Il progetto in breve</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/guide/about.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="il-progetto-in-breve">
<h1>Il progetto in breve<a class="headerlink" href="#il-progetto-in-breve" title="Link a questa intestazione"></a></h1>
<p><strong>N.E.S.T.</strong> (Noi Estraiamo Statistiche Tweet) è un progetto realizzato nel 2021 per
l”<strong>esame di Progetto del Software</strong> del corso di Informatica allUnimore.</p>
<div class="section" id="suddivisione-in-moduli">
<h2>Suddivisione in moduli<a class="headerlink" href="#suddivisione-in-moduli" title="Link a questa intestazione"></a></h2>
<p>Il progetto è composto da tre parti:</p>
<dl class="simple">
<dt><a class="reference internal" href="../code/crawler/index.html#module-nest_crawler" title="nest_crawler"><code class="xref py py-mod docutils literal notranslate"><span class="pre">nest_crawler</span></code></a></dt><dd><p>Un modulo scritto in <a class="reference external" href="https://www.python.org/">Python</a> usando <code class="xref py py-mod docutils literal notranslate"><span class="pre">tweepy</span></code> che recupera tweet attraverso la <a class="reference external" href="https://developer.twitter.com/en/docs/twitter-api">Twitter API</a> secondo le
condizioni presenti allinterno del database e li salva per future elaborazioni.</p>
</dd>
<dt><a class="reference internal" href="../code/backend/index.html#module-nest_backend" title="nest_backend"><code class="xref py py-mod docutils literal notranslate"><span class="pre">nest_backend</span></code></a></dt><dd><p>Un web server scritto in <a class="reference external" href="https://www.python.org/">Python</a> usando il framework <a class="reference external" href="https://flask.palletsprojects.com/en/1.1.x/api/#module-flask" title="(in Flask v1.1.x)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">flask</span></code></a> che fornisce unAPI HTTP per visualizzare e
manipolare i dati dellapplicazione, gestendo autenticazione, autorizzazione e comunicazione con il database.</p>
</dd>
<dt><code class="xref js js-mod docutils literal notranslate"><span class="pre">nest_frontend</span></code></dt><dd><p>Una applicazione web scritta in <a class="reference external" href="https://reactjs.org/docs/introducing-jsx.html">JSX</a> usando il framework <code class="xref js js-mod docutils literal notranslate"><span class="pre">react</span></code> che comunica con il backend, mostrando
allutente i dati del backend in una formato immediatamente comprensibile.</p>
</dd>
</dl>
</div>
<div class="section" id="screenshots">
<h2>Screenshots<a class="headerlink" href="#screenshots" title="Link a questa intestazione"></a></h2>
<img alt="../_images/frontendDashboard.png" src="../_images/frontendDashboard.png" />
<img alt="../_images/frontendRepositoryCreate.png" src="../_images/frontendRepositoryCreate.png" />
<img alt="../_images/frontendAnalysis.png" src="../_images/frontendAnalysis.png" />
<img alt="../_images/frontendRepositoryShare.png" src="../_images/frontendRepositoryShare.png" />
<img alt="../_images/frontendAlertCreate.png" src="../_images/frontendAlertCreate.png" />
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="installation.html" class="btn btn-neutral float-right" title="Installazione" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../index.html" class="btn btn-neutral float-left" title="N.E.S.T." accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

519
docs/build/html/guide/installation.html vendored Normal file
View file

@ -0,0 +1,519 @@
<!DOCTYPE html>
<html class="writer-html5" lang="it" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Installazione &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Obiettivo del progetto" href="../development/goals.html" />
<link rel="prev" title="Il progetto in breve" href="about.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="about.html">Il progetto in breve</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installazione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#prerequisiti">Prerequisiti</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-nuovo-utente">Creare un nuovo utente</a></li>
<li class="toctree-l2"><a class="reference internal" href="#scaricare-il-codice-sorgente">Scaricare il codice sorgente</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-il-database">Creare il database</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-file-di-configurazione-per-il-backend">Creare un file di configurazione per il backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#installare-le-dipendenze-python">Installare le dipendenze Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="#installare-le-dipendenze-nodejs">Installare le dipendenze NodeJS</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-servizio-systemd-per-il-backend">Creare un servizio SystemD per il backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#compilare-il-frontend">Compilare il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-servizio-systemd-per-il-frontend">Creare un servizio SystemD per il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-servizio-systemd-per-il-crawler">Creare un servizio SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-timer-systemd-per-il-crawler">Creare un timer SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="#configurare-apache-come-reverse-proxy">Configurare Apache come reverse proxy</a></li>
</ul>
</li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/conclusions.html">Conclusioni</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../code/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Installazione</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/guide/installation.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="installazione">
<h1>Installazione<a class="headerlink" href="#installazione" title="Link a questa intestazione"></a></h1>
<p>Questa guida illustra come installare interamente N.E.S.T. su un server Linux.</p>
<div class="section" id="prerequisiti">
<h2>Prerequisiti<a class="headerlink" href="#prerequisiti" title="Link a questa intestazione"></a></h2>
<p>Per installare ed eseguire N.E.S.T., è necessario:</p>
<ul class="simple">
<li><p>Una connessione a Internet</p></li>
<li><p>Un sistema operativo Linux-based (preferibilmente <a class="reference external" href="https://wiki.archlinux.org/title/Main_page">Arch Linux</a>)</p></li>
<li><p><a class="reference external" href="https://www.freedesktop.org/wiki/Software/systemd/">SystemD ^248.2</a></p></li>
<li><p><a class="reference external" href="https://httpd.apache.org/">Apache HTTP Server ^2.4.46</a></p></li>
<li><p><a class="reference external" href="https://www.postgresql.org/download/">PostgreSQL ^13.2</a></p></li>
<li><p><a class="reference external" href="https://git-scm.com/">Git ^2.31.1</a></p></li>
<li><p><a class="reference external" href="https://www.python.org/downloads/">Python ^3.8</a></p></li>
<li><p><a class="reference external" href="https://python-poetry.org/">Poetry ^1.0</a></p></li>
<li><p><a class="reference external" href="https://nodejs.org/">NodeJS ^16.0</a></p></li>
<li><p><a class="reference external" href="https://www.npmjs.com/">npm ^7.13.0</a></p></li>
</ul>
</div>
<div class="section" id="creare-un-nuovo-utente">
<h2>Creare un nuovo utente<a class="headerlink" href="#creare-un-nuovo-utente" title="Link a questa intestazione"></a></h2>
<p>Per motivi di sicurezza, si suggerisce di creare un nuovo utente con il quale eseguire il progetto:</p>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>È necessario essere amministratori di sistema per eseguire i seguenti comandi.
Si veda il manuale di <a class="reference external" href="https://linux.die.net/man/8/useradd">useradd</a> per più dettagli.</p>
</div>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>mkdir --parents /srv/nest
<span class="gp">root:~# </span>useradd --home-dir /srv/nest --shell /bin/bash nest
<span class="gp">root:~# </span>chown --recursive nest: /srv/nest
</pre></div>
</div>
</div>
<div class="section" id="scaricare-il-codice-sorgente">
<h2>Scaricare il codice sorgente<a class="headerlink" href="#scaricare-il-codice-sorgente" title="Link a questa intestazione"></a></h2>
<p>Per installare N.E.S.T., è necessario avere il codice sorgente disponibile sul server.</p>
<p>Si consiglia di scaricarlo tramite <em>Git</em>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">nest:~$ </span>git clone https://gitlab.steffo.eu/nest/g2-progetto.git
</pre></div>
</div>
<p>Questo creerà una nuova cartella <code class="docutils literal notranslate"><span class="pre">g2-progetto</span></code> nella directory in cui è stato eseguito il comando.</p>
<p>Per proseguire, sarà necessario entrarvi:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">nest:~$ </span><span class="nb">cd</span> g2-progetto
</pre></div>
</div>
</div>
<div class="section" id="creare-il-database">
<h2>Creare il database<a class="headerlink" href="#creare-il-database" title="Link a questa intestazione"></a></h2>
<p>N.E.S.T. necessita di un database PostgreSQL in cui salvare i dati.</p>
<p>Per motivi di sicurezza, si suggerisce di creare un ruolo isolato dal resto del DBMS apposta per N.E.S.T.:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">postgres:~$ </span>createuser nest
</pre></div>
</div>
<p>Per creare il database PostgreSQL, si esegua:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">postgres:~$ </span>createdb --owner<span class="o">=</span>nest nest
</pre></div>
</div>
</div>
<div class="section" id="creare-un-file-di-configurazione-per-il-backend">
<h2>Creare un file di configurazione per il backend<a class="headerlink" href="#creare-un-file-di-configurazione-per-il-backend" title="Link a questa intestazione"></a></h2>
<p>Il backend usa un file di configurazione per impostare alcune variabili.</p>
<p>Si crei un nuovo file nella working directory del progetto denominato <code class="docutils literal notranslate"><span class="pre">config.py</span></code>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">nest:~/g2-progetto$ </span>vim config.py
</pre></div>
</div>
<p>Il file dovrà avere i seguenti contenuti:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Una stringa rappresentante il database da utilizzare</span>
<span class="c1"># Per maggiori informazioni sulla sintassi, si veda https://docs.sqlalchemy.org/en/14/core/engines.html</span>
<span class="n">SQLALCHEMY_DATABASE_URI</span> <span class="o">=</span> <span class="s2">&quot;postgresql://nest@/nest&quot;</span>
<span class="c1"># Una stringa casuale utilizzata per generare i JSON Web Token (JWT)</span>
<span class="c1"># Va mantenuta segreta e costante per tutta l&#39;operazione del backend!</span>
<span class="c1"># Si suggerisce di premere tasti casuali sulla tastiera finchè la riga non è piena.</span>
<span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="s2">&quot;dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="installare-le-dipendenze-python">
<h2>Installare le dipendenze Python<a class="headerlink" href="#installare-le-dipendenze-python" title="Link a questa intestazione"></a></h2>
<p>Le dipendenze Python sono gestite da <em>Poetry</em>, e possono essere installate con:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">nest:~/g2-progetto$ </span>poetry install
</pre></div>
</div>
<p>Poetry creerà automaticamente un <a class="reference external" href="https://docs.python.org/3/library/venv.html">venv</a> e vi installerà allinterno tutti
i pacchetti necessari allesecuzione del backend e del crawler di N.E.S.T. .</p>
<p><strong>Si suggerisce di ricordare il nome del venv creato da Poetry</strong>, in quanto sarà necessario per
<a class="reference internal" href="#creare-un-servizio-systemd-per-il-backend"><span class="std std-ref">Creare un servizio SystemD per il backend</span></a>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">Creating virtualenv nest-7C2fm2VD-py3.9 in /srv/nest/.cache/pypoetry/virtualenvs</span>
</pre></div>
</div>
</div>
<div class="section" id="installare-le-dipendenze-nodejs">
<h2>Installare le dipendenze NodeJS<a class="headerlink" href="#installare-le-dipendenze-nodejs" title="Link a questa intestazione"></a></h2>
<p>Le dipendenze NodeJS sono gestite da <em>npm</em>, e possono essere installate con:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">nest:~/g2-progetto$ </span>npm install
</pre></div>
</div>
<p>npm creerà automaticamente una cartella
<a class="reference external" href="https://docs.npmjs.com/cli/v7/configuring-npm/folders#node-modules">node_modules</a> e vi installerà allinterno tutte
le librerie necessarie allesecuzione del frontend di N.E.S.T. .</p>
</div>
<div class="section" id="creare-un-servizio-systemd-per-il-backend">
<h2>Creare un servizio SystemD per il backend<a class="headerlink" href="#creare-un-servizio-systemd-per-il-backend" title="Link a questa intestazione"></a></h2>
<p>Per fare in modo che il backend rimanga attivo in background, anche dopo un riavvio, si suggerisce di installarlo come
servizio di sistema di <em>SystemD</em>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl edit --force --full nest-backend
</pre></div>
</div>
<p>Inserire allinterno del file le seguenti direttive:</p>
<div class="highlight-systemd notranslate"><div class="highlight"><pre><span></span>[Unit]
Description=N.E.S.T. Backend
Wants=network-online.target postgresql.service
After=network-online.target nss-lookup.target postgresql.service
[Service]
Type=exec
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 gunicorn -b 127.0.0.1:30040 --env=&quot;FLASK_CONFIG=../config.py&quot; nest_backend.app:rp_app
[Install]
WantedBy=multi-user.target
</pre></div>
</div>
<p>Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl start nest-backend
</pre></div>
</div>
<p>In caso di successo, lAPI dovrebbe essere esposto sulla porta <code class="docutils literal notranslate"><span class="pre">30040</span></code> dellindirizzo di loopback <code class="docutils literal notranslate"><span class="pre">127.0.0.1</span></code>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>curl <span class="m">127</span>.0.0.1:30040/doa
<span class="go">If you see this, the server is fine.</span>
</pre></div>
</div>
<p>Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl <span class="nb">enable</span> nest-backend
</pre></div>
</div>
</div>
<div class="section" id="compilare-il-frontend">
<h2>Compilare il frontend<a class="headerlink" href="#compilare-il-frontend" title="Link a questa intestazione"></a></h2>
<p>Perchè sia possibile servire il frontend agli utenti, è necessario prima crearne una versione compilata ottimizzata.</p>
<p>È possibile farlo con il comando:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">nest:~/g2-progetto$ </span>npm run build
</pre></div>
</div>
<p>Verrà creata una cartella <code class="docutils literal notranslate"><span class="pre">build</span></code> con allinterno la versione compilata.</p>
</div>
<div class="section" id="creare-un-servizio-systemd-per-il-frontend">
<h2>Creare un servizio SystemD per il frontend<a class="headerlink" href="#creare-un-servizio-systemd-per-il-frontend" title="Link a questa intestazione"></a></h2>
<p>Per rendere disponibile alla rete la copia locale del frontend, si suggerisce di avviare lo script npm <code class="docutils literal notranslate"><span class="pre">serve</span></code>
integrato con N.E.S.T. come un servizio di sistema di <em>SystemD</em>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl edit --force --full nest-frontend
</pre></div>
</div>
<p>Inserire allinterno del file le seguenti direttive:</p>
<div class="highlight-systemd notranslate"><div class="highlight"><pre><span></span>[Unit]
Description=N.E.S.T. Frontend
Wants=network-online.target nest-backend.service
After=network-online.target nss-lookup.target nest-backend.service
[Service]
Type=exec
Environment=NODE_ENV=production
User=nest
Group=nest
WorkingDirectory=/srv/nest/g2-progetto
ExecStart=/usr/bin/npm run serve
[Install]
WantedBy=multi-user.target
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Avvertimento</p>
<p>Questo file non è stato testato, in quanto sul server demo è in uso una versione più complessa che usa
<a class="reference external" href="https://github.com/nvm-sh/nvm">nvm</a> per gestire più versioni di NodeJS sullo stesso sistema.</p>
<p>La versione in uso sul server demo è:</p>
<div class="highlight-systemd notranslate"><div class="highlight"><pre><span></span>[Unit]
Description=N.E.S.T. Frontend
Wants=network-online.target nest-backend.service
After=network-online.target nss-lookup.target nest-backend.service
[Service]
Type=exec
Environment=NODE_ENV=production
Environment=NODE_VERSION=16
User=nest
Group=nest
WorkingDirectory=/srv/nest/g2-progetto
ExecStart=/srv/nest/.nvm/nvm-exec npm run serve
[Install]
WantedBy=multi-user.target
</pre></div>
</div>
</div>
<p>Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl start nest-frontend
</pre></div>
</div>
<p>In caso di successo, il frontend dovrebbe essere esposto sulla porta <code class="docutils literal notranslate"><span class="pre">30041</span></code> dellindirizzo di loopback <code class="docutils literal notranslate"><span class="pre">127.0.0.1</span></code>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>curl <span class="m">127</span>.0.0.1:30041
<span class="go">[...]</span>
</pre></div>
</div>
<p>Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl <span class="nb">enable</span> nest-frontend
</pre></div>
</div>
</div>
<div class="section" id="creare-un-servizio-systemd-per-il-crawler">
<h2>Creare un servizio SystemD per il crawler<a class="headerlink" href="#creare-un-servizio-systemd-per-il-crawler" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allinstallazione di un servizio SystemD per il crawler.</p>
</div>
</div>
<div class="section" id="creare-un-timer-systemd-per-il-crawler">
<h2>Creare un timer SystemD per il crawler<a class="headerlink" href="#creare-un-timer-systemd-per-il-crawler" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allesecuzione ripetuta del crawler attraverso un timer SystemD.</p>
</div>
</div>
<div class="section" id="configurare-apache-come-reverse-proxy">
<h2>Configurare Apache come reverse proxy<a class="headerlink" href="#configurare-apache-come-reverse-proxy" title="Link a questa intestazione"></a></h2>
<p>Per rendere lAPI e il frontend disponibili al pubblico, si suggerisce di configurare Apache HTTP Server
come reverse proxy.</p>
<p>La configurazione di Apache varia molto da distribuzione a distribuzione Linux, e talvolta anche da server a server;
pertanto, si fornisce solamente un file <a class="reference external" href="https://httpd.apache.org/docs/2.4/vhosts/examples.html">VirtualHost</a> di
esempio da adattare al proprio setup:</p>
<div class="highlight-apacheconf notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;VirtualHost</span> <span class="s">*:80</span><span class="nt">&gt;</span>
<span class="nb">ServerName</span> <span class="s2">&quot;api.nest.steffo.eu&quot;</span>
<span class="nb">ServerName</span> <span class="s2">&quot;prod.nest.steffo.eu&quot;</span>
<span class="nb">RewriteEngine</span> <span class="k">On</span>
<span class="nb">RewriteRule</span> ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
<span class="nt">&lt;/VirtualHost&gt;</span>
<span class="nt">&lt;VirtualHost</span> <span class="s">*:443</span><span class="nt">&gt;</span>
<span class="nb">ServerName</span> <span class="s2">&quot;api.nest.steffo.eu&quot;</span>
<span class="nb">SSLEngine</span> <span class="k">on</span>
<span class="nb">SSLCertificateFile</span> <span class="s2">&quot;/root/.acme.sh/*.nest.steffo.eu/fullchain.cer&quot;</span>
<span class="nb">SSLCertificateKeyFile</span> <span class="s2">&quot;/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key&quot;</span>
<span class="nb">ProxyPass</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;http://127.0.0.1:30040/&quot;</span>
<span class="nb">ProxyPassReverse</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;http://127.0.0.1:30040/&quot;</span>
<span class="nb">RequestHeader</span> set <span class="s2">&quot;X-Forwarded-Proto&quot;</span> expr=%{REQUEST_SCHEME}
<span class="nb">Protocols</span> h2 http/1.1
<span class="nb">Header</span> always set Strict-Transport-Security <span class="s2">&quot;max-age=63072000&quot;</span>
<span class="nt">&lt;/VirtualHost&gt;</span>
<span class="nt">&lt;VirtualHost</span> <span class="s">*:443</span><span class="nt">&gt;</span>
<span class="nb">ServerName</span> <span class="s2">&quot;prod.nest.steffo.eu&quot;</span>
<span class="nb">SSLEngine</span> <span class="k">on</span>
<span class="nb">SSLCertificateFile</span> <span class="s2">&quot;/root/.acme.sh/*.nest.steffo.eu/fullchain.cer&quot;</span>
<span class="nb">SSLCertificateKeyFile</span> <span class="s2">&quot;/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key&quot;</span>
<span class="nb">ProxyPass</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;http://127.0.0.1:30041/&quot;</span>
<span class="nb">ProxyPassReverse</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;http://127.0.0.1:30041/&quot;</span>
<span class="nb">RequestHeader</span> set <span class="s2">&quot;X-Forwarded-Proto&quot;</span> expr=%{REQUEST_SCHEME}
<span class="nb">Protocols</span> h2 http/1.1
<span class="nb">Header</span> always set Strict-Transport-Security <span class="s2">&quot;max-age=63072000&quot;</span>
<span class="nt">&lt;/VirtualHost&gt;</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../development/goals.html" class="btn btn-neutral float-right" title="Obiettivo del progetto" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="about.html" class="btn btn-neutral float-left" title="Il progetto in breve" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

0
nest_backend/routes.py Normal file
View file

View file

@ -78,15 +78,15 @@ def page_repository_conditions(rid):
return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404 return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404
user = find_user(get_jwt_identity()) user = find_user(get_jwt_identity())
if user.email != repository.owner_id:
return json_error("You are not authorized.", REPOSITORY_NOT_OWNER), 403
if request.method == "GET": if request.method == "GET":
try: try:
return json_success([u.to_json() for u in repository.conditions]) return json_success([u.to_json() for u in repository.conditions])
except Exception as e: except Exception as e:
return json_error("Unknown error:" + str(e), GENERIC_UFO), 400 return json_error("Unknown error:" + str(e), GENERIC_UFO), 400
if user.email != repository.owner_id:
return json_error("You are not authorized.", REPOSITORY_NOT_OWNER), 403
if request.method == "POST": if request.method == "POST":
if request.json is None: if request.json is None:
return json_error("Missing json content.", GENERIC_NO_JSON), 400 return json_error("Missing json content.", GENERIC_NO_JSON), 400

View file

@ -5,8 +5,16 @@ from nest_backend.gestione import *
import datetime import datetime
from flask_cors import cross_origin from flask_cors import cross_origin
from nest_backend.errors import * from nest_backend.errors import *
import nest_backend.app
from nest_crawler.repo_search import search_repo_conditions from nest_crawler.repo_search import search_repo_conditions
import threading
def tweet_importer(rid):
with nest_backend.app.app.app_context():
search_repo_conditions(rid)
@cross_origin() @cross_origin()
@jwt_required() @jwt_required()
@ -107,7 +115,8 @@ def page_repositories():
repository.start = datetime.datetime.now() repository.start = datetime.datetime.now()
ext.session.commit() ext.session.commit()
try: try:
search_repo_conditions(repository.id) thread = threading.Thread(target=tweet_importer, args=(repository.id,))
thread.start()
except Exception: except Exception:
return json_success(repository.to_json()), 201 return json_success(repository.to_json()), 201
return json_success(repository.to_json()), 201 return json_success(repository.to_json()), 201

View file

@ -159,9 +159,9 @@ def page_repository(rid):
return json_error("Could not find repository.", REPOSITORY_NOT_FOUND), 404 return json_error("Could not find repository.", REPOSITORY_NOT_FOUND), 404
if request.method == "GET": if request.method == "GET":
return json_success(repository.to_json()), 200 return json_success(repository.to_json()), 200
if user.email != repository.owner_id:
return json_error("You are not the owner of this repository.", REPOSITORY_NOT_OWNER), 403
elif request.method == "PATCH": elif request.method == "PATCH":
if repository.owner_id != user.email:
return json_error("You are not the owner of this repository.", REPOSITORY_NOT_OWNER), 403
if 'name' in request.json: if 'name' in request.json:
repository.name = request.json['name'] repository.name = request.json['name']
if 'close' in request.json and not repository.end and repository.is_active: if 'close' in request.json and not repository.end and repository.is_active:
@ -178,8 +178,6 @@ def page_repository(rid):
ext.session.commit() ext.session.commit()
return json_success(repository.to_json()), 204 return json_success(repository.to_json()), 204
elif request.method == "DELETE": elif request.method == "DELETE":
if repository.owner_id != user.email and not user.isAdmin:
return json_error("You are not the owner of this repository.", REPOSITORY_NOT_OWNER), 403
try: try:
repository.is_deleted = True repository.is_deleted = True
ext.session.commit() ext.session.commit()

View file

@ -128,10 +128,17 @@ def page_user(email):
return json_error("User is not admin.", USER_NOT_ADMIN), 403 return json_error("User is not admin.", USER_NOT_ADMIN), 403
if user == target: if user == target:
return json_error("The user cant delete himself. Its a sin.", USER_PREVENT_SEPPUKU), 406 return json_error("The user cant delete himself. Its a sin.", USER_PREVENT_SEPPUKU), 406
repos = target.owner_of
for repository in repos:
repository.owner_id = user.email
repository.is_active = False
for authorization in target.authorizations:
ext.session.delete(authorization)
ext.session.commit()
ext.session.delete(target) ext.session.delete(target)
try: try:
ext.session.commit() ext.session.commit()
except Exception: except Exception as e:
ext.session.rollback() ext.session.rollback()
return json_error("Could not delete the user.", USER_DELETION_ERROR), 500 return json_error("Could not delete the user.", USER_DELETION_ERROR), 500
return json_success(""), 204 # "The user has been deleted." return json_success(""), 204 # "The user has been deleted."

View file

@ -1,6 +1,6 @@
from nest_backend.database import * from nest_backend.database import *
from nest_backend.app import app, extension_sqlalchemy from nest_backend.app import app, extension_sqlalchemy
from repo_search import search_repo_conditions from nest_crawler.repo_search import search_repo_conditions
from alert_trigger import is_repo_alert_triggered from alert_trigger import is_repo_alert_triggered
ext.init_app(app=app) ext.init_app(app=app)
@ -9,7 +9,7 @@ ext.init_app(app=app)
def search_all_repo(): def search_all_repo():
active_repos = Repository.query.filter_by(is_active=True) active_repos = Repository.query.filter_by(is_active=True)
for repo_id in [active_repo.id for active_repo in active_repos]: for repo_id in [active_repo.id for active_repo in active_repos]:
#search_repo_conditions(repo_id) search_repo_conditions(repo_id)
is_repo_alert_triggered(repo_id) is_repo_alert_triggered(repo_id)
if __name__ == "__main__": if __name__ == "__main__":

View file

@ -45,6 +45,7 @@ def send_notification_email(alert):
for condition in alert.conditions: for condition in alert.conditions:
conditions_string += condition.condition.content + ',' conditions_string += condition.condition.content + ','
conditions_string = conditions_string[:-1] conditions_string = conditions_string[:-1]
smtpObj = None
try: try:
smtpObj = smtplib.SMTP('localhost') smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail("alert@nest.com", owner_repo.email, "Alert triggered") smtpObj.sendmail("alert@nest.com", owner_repo.email, "Alert triggered")

View file

@ -1,8 +1,9 @@
from nest_backend.database import * from nest_backend.database import *
import authentication import nest_crawler.authentication as authentication
from datetime import datetime, timedelta from datetime import datetime, timedelta
import tweepy as tw import tweepy as tw
from associate_condition_tweet import associate_condition_tweet from nest_crawler.associate_condition_tweet import associate_condition_tweet
def search_repo_conditions(repository_id): def search_repo_conditions(repository_id):

View file

@ -32,7 +32,7 @@ export default function BoxLoggedIn({ ...props }) {
<Button <Button
color={"Red"} onClick={() => { color={"Red"} onClick={() => {
logout() logout()
history.push("/login") history.push("/")
}} icon={faSignOutAlt} }} icon={faSignOutAlt}
>{strings.logout}</Button> >{strings.logout}</Button>
</div> </div>

View file

@ -50,11 +50,11 @@ export default function BoxRepositories(
key={repo["id"]} key={repo["id"]}
repo={repo} repo={repo}
view={view ? () => view(repo["id"]) : null} view={view ? () => view(repo["id"]) : null}
alerts={alerts ? () => alerts(repo["id"]) : null} alerts={(alerts && user["email"] === repo["owner"]["email"]) ? () => alerts(repo["id"]) : null}
share={(share && user["email"] === repo["owner"]["email"]) ? () => share(repo["id"]) : null} share={(share && user["email"] === repo["owner"]["email"]) ? () => share(repo["id"]) : null}
archive={archive ? () => archive(repo["id"]) : null} archive={(archive && user["email"] === repo["owner"]["email"]) ? () => archive(repo["id"]) : null}
edit={edit ? () => edit(repo["id"]) : null} edit={(edit && user["email"] === repo["owner"]["email"]) ? () => edit(repo["id"]) : null}
destroy={destroy ? () => destroy(repo["id"]) : null} destroy={(destroy && user["email"] === repo["owner"]["email"]) ? () => destroy(repo["id"]) : null}
running={running} running={running}
/> />
)) ))