1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-25 14:34:19 +00:00

Merge remote-tracking branch 'origin/main'

This commit is contained in:
g.minoccari 2021-05-29 15:30:51 +02:00
commit 8fd323a21d
119 changed files with 2584 additions and 674 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.

View file

@ -32,6 +32,8 @@
``.routes`` - Percorsi API ``.routes`` - Percorsi API
-------------------------- --------------------------
.. automodule:: nest_backend.database.routes .. note::
:imported-members:
La documentazione dei percorsi API è gestita da Swagger UI, disponibile a ``/docs`` una volta che il webserver
del backend è avviato.

View file

@ -2,3 +2,4 @@
==================================== ====================================
.. automodule:: nest_crawler .. automodule:: nest_crawler
:imported-members:

View file

@ -1,30 +1,152 @@
Obiettivo del progetto Introduzione
====================== ============
.. todo:: .. todo::
Lasciamo il tempo al futuro?
Scrivere l'obiettivo generale del progetto. Obiettivo
---------
L'obiettivo del progetto è la creazione di un software per fornire l'aggregazione e l'analisi di `Tweet`_, in modo da
rilevare eventi *macroscopici*, *locali* o più semplicemente filtrarli in base a delle *keyword*.
Il prodotto sarà utilizzato dal cliente e da un piccolo gruppo di suoi dipendenti per effettuare ricerche statistiche.
Il software andrà ad integrarsi direttamente con `Twitter`_, da cui verranno raccolti dati e su cui verranno pubblicate
allerte su di essi.
.. _Tweet: https://help.twitter.com/it/using-twitter#tweets
.. _Twitter: https://twitter.com/
Scope Campo di applicazione
----- ---------------------
Il software trova utilizzo principalmente in **ambito statistico**, essendo il suo scopo quello di raccogliere dati e
permettere di analizzarli tramite un'interfaccia grafica.
Caratteristiche degli utenti
----------------------------
Il software potrà essere utilizzato da utenti con una discreta esperienza nell'analisi di dati ma senza particolari
conoscenze informatiche.
Glossario
---------
Repository
Raccolta di tweet che soddisfano determinate condizioni.
Condizione
Predicato logico che deve essere soddisfatto da un tweet per essere raccolto in fase di raccolta dati, o per essere
contato in fase di allertamento utente.
Filtro
Predicato logico che deve essere soddisfatto da un tweet per essere visualizzato in fase di analisi dati.
Allarme
Notifica inviata all'utente attraverso un mezzo telematico, come email oppure un tweet.
Utente
Utilizzatore del software con un proprio account creato dall'amministratore della piattaforma.
In particolare, la piattaforma prevederà due tipologie di utenti:
Utente regolare
Potranno eseguire attività di creazione, analisi, condivisione, archiviazione ed eliminazione dei propri repository.
Utente amministratore
Potrà effettuare tutte le attività dell'utente regolare, e in aggiunta potrà creare ed eliminare nuovi utenti
regolari.
.. todo:: .. todo::
Estendere il glossario qualora vengano incontrati altri termini.
Scrivere lo scope del progetto.
Macro-funzionalità
------------------
Il software permetterà di selezionare **condizioni** con cui scegliere quali tweet raccogliere:
- in base ai loro `hashtag`_
- in base al loro autore
- in base alla loro `posizione geografica`_ (ove presente)
- in base alla loro data di pubblicazione
Selezionate le condizioni, l'utente potrà creare una **repository**: una cartella in cui verranno raccolti i tweet
soddisfacenti le condizioni richieste.
Una volta raccolti, i tweet di una repository potranno essere **analizzati** in qualsiasi momento: durante l'analisi,
saranno mostrate statistiche e grafici relativi ai tweet.
La raccolta potrà essere interrotta in qualsiasi momento **archiviando** il repository.
Sarà possibile **condividere** una repository con altri utenti della piattaforma, permettendo loro di analizzarla.
Infine, l'utente potrà configurare una repository in modo che gli invii una **allerta** qualora vengano raccolti un dato
numero di tweet in una certa *finestra temporale*.
.. _hashtag: https://help.twitter.com/it/using-twitter/how-to-use-hashtags
.. _posizione geografica: https://help.twitter.com/en/safety-and-security/tweet-location-settings
Casi d'uso Casi d'uso
---------- ----------
.. todo:: N.E.S.T. prevede tre tipologie di *agenti* ("utenti" UML): **utente**, **amministratore** e **sistema**.
Scrivere i casi d'uso del progetto. .. image:: Utenti.png
I principali casi duso individuati durante la progettazione di N.E.S.T. sono:
- La gestione degli utenti da parte di un Amministratore:
.. image:: CasiUso1.PNG
:width: 400
- La gestione del login da parte di un Utente:
.. image:: CasiUso2.PNG
:width: 400
- La gestione delle Allerte sia dal punto di vista dellUtente che del Sistema:
.. image:: CasiUso3.PNG
:width: 800
- La gestione della raccolta da parte dell'utente:
.. image:: CasiUso4.PNG
:width: 400
- La gestione di un repository da parte dell'utente:
.. image:: CasiUso5.PNG
:width: 400
- La visualizzazione di un repository:
.. image:: CasiUso6.PNG
:width: 400
Backlog generale Backlog generale
---------------- ----------------
.. todo:: Si riporta qui di seguito il Backlog definito ad inizio progetto, prima dellavvio dello sviluppo.
Gli elementi dal bordo grigio sono le epiche:
Elencare qui tutte le user story del backlog, senza specificare lo sprint in cui sono state realizzate. .. note::
Alcune user story sono state rimosse in seguito al feedback ricevuto durante il primo sprint!
.. image:: Backlog1.PNG
.. image:: Backlog2.PNG
.. image:: Backlog3.PNG
.. image:: Backlog4.PNG
.. image:: Backlog5.PNG

View file

@ -1,24 +0,0 @@
Registro attività
=================
Questo registro attività delinea le attività effettuate dai membri del team e ne indica la durata.
.. note::
Per informazioni più dettagliate sulle attività di sviluppo, si suggerisce di guardare il log dei commit di Git:
.. code-block:: console
nest:g2-progetto$ git log
Sprint 1: 19 Apr - 02 Mag
-------------------------
Sprint 2: 03 Mag - 16 Mag
-------------------------

View file

@ -1,11 +1,6 @@
Sprint 0: 04 Apr - 18 Apr Sprint 0: 04 Apr - 18 Apr
========================= =========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna Consegna
-------- --------
@ -15,28 +10,28 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
- :download:`Sprint 0 <0-sprint-requirements.pdf>` - :download:`Sprint 0 <0-sprint-requirements.pdf>`
Goal Definition of Ready
---- -------------------
.. todo:: Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
Inserire qui lo sprint goal. * La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Backlog Definition of Done
-------
.. todo::
Mostrare qui lo sprint backlog di Taiga.
Definition of done
------------------ ------------------
.. todo:: La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così
definita:
Inserire qui la definition of done dello sprint. * Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch ``main`` del repository Git
Registro attività Registro attività
@ -171,7 +166,7 @@ Chiara Calzolari
- Durata - Durata
- Attività - Attività
* - * -
- - 12h 30m
- Totale - Totale
* - 2021-04-09 * - 2021-04-09
@ -272,9 +267,192 @@ Lorenzo Balugani
Risultati della partita di Scrumble Risultati della partita di Scrumble
----------------------------------- -----------------------------------
.. todo:: #. :Goal: Learn
:Question: Do team members understand the Scrum roles?
:Metric: Knowledge of Scrum roles by questions
:Evaluation: :1: no idea of the Scrum roles
:5: perfect knowledge of the roles and their jobs
:Chiara: 4
:Giorgio: 4
:Giovanni: 4
:Stefano P.: 4
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 4
Trascrivere qui i risultati della partita di Scrumble. #. :Goal: Learn
:Question: Do team members feel they learned the process?
:Metric: Opinions from the participants
:Evaluation: :1: couldn't repeat the game
:5: could play the game as a Scrum Master by himself
:Chiara: 3
:Giorgio: 3
:Giovanni: 4
:Stefano P.: 5
:Lorenzo: 3
:Stefano G.: 3
:Flavia: 3
#. :Goal: Learn
:Question: Does everyone keep up with the other players?
:Metric: Check during every sprint retrospective if every one is on point
:Evaluation: :1: totally lost
:5: leads the game driving the other players
:Chiara: 3
:Giorgio: 4
:Giovanni: 4
:Stefano P.: 4
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Practice
:Question: Are the game mechanics linear and repeatable?
:Metric: Opinions from the participants
:Evaluation: :1: feels the game is unrepeatable
:5: feels the game could be played in any situation
:Chiara: 1
:Giorgio: 2
:Giovanni: 1
:Stefano P.: 1
:Lorenzo: 1
:Stefano G.: 2
:Flavia: 1
#. :Goal: Practice
:Question: Do team success in completing the game?
:Metric: Number of User Stories completed
:Evaluation: :1: 0 to 3 stories
:2: 4 to 6
:3: 7 to 9
:4: 10 to 12
:5: 13 to 15
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Practice
:Question: Do team members efficiently estimate during sprint planning?
:Metric: Uniformity in evaluating the size and the priority of user stories
:Evaluation: :1: abnormal difference from the other players
:5: coherent and uniform with the group most of the time
:Chiara: 5
:Giorgio: 4
:Giovanni: 5
:Stefano P.: 4
:Lorenzo: 5
#. :Goal: Cooperation
:Question: Do team members know each other better?
:Metric: Level of players' serenity throughout the game
:Evaluation: :1: never speaks with the other players
:5: talks friendly to anyone in every situation
:Chiara: 4
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 4
#. :Goal: Cooperation
:Question: Does the game let all players cooperate?
:Metric: Contribution of every player during the game
:Evaluation: :1: never puts effort in doing something
:5: every time is willing to understand what is going on
:Chiara: 4
:Giorgio: 3
:Giovanni: 3
:Stefano P.: 2
:Lorenzo: 3
:Stefano G.: 4
:Flavia: 3
#. :Goal: Cooperation
:Question: Do team member consult each other about a topic?
:Metric: Sharing of ideas
:Evaluation: :1: never asks for an opinion
:5: wants to discuss about every topic
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 3
:Lorenzo: 5
:Stefano G.: 4
:Flavia: 5
#. :Goal: Motivation
:Question: Do team members encourage collegues in need?
:Metric: Players explain something other players don't understand
:Evaluation: :1: not involved by the game
:5: always makes sure everyone is on point
:Chiara: 3
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 4
:Lorenzo: 5
:Stefano G.: 4
:Flavia: 4
#. :Goal: Motivation
:Question: Does PO help the team?
:Metric: Quality of PO's advices to get better in the next sprints
:Evaluation: :1: poor/absent advices
:5: wise and helpful suggestions when is required
:Stefano G.: 4
#. :Goal: Motivation
:Question: Does the team come up with good ideas?
:Metric: Effectiveness of sprint retrospective
:Evaluation: :1: doesn't express opinions during retrospective
:5: feels the retrospective fundamental to express opinions
:Chiara: 4
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Problem Solving
:Question: Do team members behave well when facing a problem?
:Metric: Level of the technical debt at the end of the game
:Evaluation: On the game board, if the debt pawn is on the lowest stage,the evaluation is 5, for every higher stage it decreases by 1
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Problem Solving
:Question: Does team organize their tasks properly?
:Metric: Average of tasks left at the end of each sprint
:Evaluation: :1: 21+ average tasks left
:2: 16-20 average tasks left
:3: 11-15 average tasks left
:4: 6-10 average tasks left
:5: 0-5 average tasks left
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
#. :Goal: Problem Solving
:Question: Does PO plan efficiently the Sprint Backlog?
:Metric: Average of tasks left at the end of each sprint
:Evaluation: :1: 21+ average tasks left
:2: 16-20 average tasks left
:3: 11-15 average tasks left
:4: 6-10 average tasks left
:5: 0-5 average tasks left
:Stefano G.: 5
Statistiche Statistiche
@ -286,7 +464,24 @@ Gitinspector
Questa statistica è stata generata dal prof. Marcello Missiroli con Questa statistica è stata generata dal prof. Marcello Missiroli con
`Gitinspector`_ al termine dello Sprint. `Gitinspector`_ al termine dello Sprint.
- :download:`Sprint 0 <0-stats.html>` - :download:`0-stats.html`
.. _Gitinspector: https://github.com/ejwa/gitinspector .. _Gitinspector: https://github.com/ejwa/gitinspector
Artefatti
---------
In questo sprint è stato realizzato il seguente documento:
- :download:`Documento generale dello Sprint 0 <0-result.pdf>`
Sprint review
-------------
Il video di sprint review è disponibile al seguente link:
- https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view

View file

@ -40,8 +40,20 @@ Nello sviluppo di N.E.S.T. sono stati usati i seguenti strumenti software:
È accessibile al seguente indirizzo: https://sonarqube.steffo.eu/ È accessibile al seguente indirizzo: https://sonarqube.steffo.eu/
`Figma`_
Applicazione web centralizzata per la creazione collaborativa di interfacce grafiche moderne.
`Discord`_
Piattaforma centralizzata di messaggistica istantanea e chiamate vocali utilizzata per la comunicazione sincrona
tra i membri del team.
.. _IntelliJ IDEA Ultimate: https://www.jetbrains.com/idea/ .. _IntelliJ IDEA Ultimate: https://www.jetbrains.com/idea/
.. _Git: https://git-scm.com/ .. _Git: https://git-scm.com/
.. _GitLab: https://about.gitlab.com/ .. _GitLab: https://about.gitlab.com/
.. _Taiga: https://www.taiga.io/ .. _Taiga: https://www.taiga.io/
.. _SonarQube: https://www.sonarqube.org/ .. _SonarQube: https://www.sonarqube.org/
.. _Figma: https://www.figma.com/
.. _Discord: https://discord.com/

View file

@ -31,11 +31,18 @@ Benvenuto alla documentazione di N.E.S.T.!
:caption: Documentazione tecnica :caption: Documentazione tecnica
code/meta/index code/meta/index
code/database/index
code/backend/index code/backend/index
code/crawler/index code/crawler/index
code/frontend/index code/frontend/index
.. toctree::
:hidden:
development/clientinterview
Cose rimaste da fare Cose rimaste da fare
-------------------- --------------------

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -40,7 +41,7 @@
<link rel="index" title="Indice" href="../../genindex.html" /> <link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" /> <link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="nest_crawler - Crawler in Python" href="../crawler/index.html" /> <link rel="next" title="nest_crawler - Crawler in Python" href="../crawler/index.html" />
<link rel="prev" title="Meta-documentazione" href="../meta/index.html" /> <link rel="prev" title="Struttura del database" href="../database/index.html" />
</head> </head>
<body class="wy-body-for-nav"> <body class="wy-body-for-nav">
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -106,6 +107,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul class="current"> <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="../meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Struttura del database</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-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.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-l2"><a class="reference internal" href="#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a><ul>
@ -598,6 +600,11 @@ for example, any mapped columns or relationships.</p>
<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> <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> <dd></dd></dl>
<dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.is_deleted">
<code class="sig-name descname"><span class="pre">is_deleted</span></code><a class="headerlink" href="#nest_backend.database.tables.Repository.is_deleted" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py attribute"> <dl class="py attribute">
<dt id="nest_backend.database.tables.Repository.evaluation_mode"> <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> <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>
@ -895,6 +902,11 @@ GitLab</a> .</p>
</div> </div>
<div class="section" id="routes-percorsi-api"> <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> <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 class="admonition note">
<p class="admonition-title">Nota</p>
<p>La documentazione dei percorsi API è gestita da Swagger UI, disponibile a <code class="docutils literal notranslate"><span class="pre">/docs</span></code> una volta che il webserver
del backend è avviato.</p>
</div>
</div> </div>
</div> </div>
@ -905,7 +917,7 @@ GitLab</a> .</p>
<footer> <footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <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="../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> <a href="../database/index.html" class="btn btn-neutral float-left" title="Struttura del database" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div> </div>
<hr/> <hr/>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -106,6 +107,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul class="current"> <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="../meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Struttura del database</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="../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 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> <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>
@ -178,6 +180,41 @@
<div class="section" id="module-nest_crawler"> <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> <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>
<dl class="py function">
<dt id="nest_crawler.associate_condition_tweet">
<code class="sig-prename descclassname"><span class="pre">nest_crawler.</span></code><code class="sig-name descname"><span class="pre">associate_condition_tweet</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">conditions_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tweet</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_crawler.associate_condition_tweet" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_crawler.authenticate">
<code class="sig-prename descclassname"><span class="pre">nest_crawler.</span></code><code class="sig-name descname"><span class="pre">authenticate</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nest_crawler.authenticate" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_crawler.is_coordinate_inside_bounding_box">
<code class="sig-prename descclassname"><span class="pre">nest_crawler.</span></code><code class="sig-name descname"><span class="pre">is_coordinate_inside_bounding_box</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">latitude</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">longitude</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">radius</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tweet_latitude</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tweet_longitude</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_crawler.is_coordinate_inside_bounding_box" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_crawler.is_repo_alert_triggered">
<code class="sig-prename descclassname"><span class="pre">nest_crawler.</span></code><code class="sig-name descname"><span class="pre">is_repo_alert_triggered</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repository_id</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_crawler.is_repo_alert_triggered" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_crawler.search_repo_conditions">
<code class="sig-prename descclassname"><span class="pre">nest_crawler.</span></code><code class="sig-name descname"><span class="pre">search_repo_conditions</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repository_id</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_crawler.search_repo_conditions" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_crawler.send_notification_email">
<code class="sig-prename descclassname"><span class="pre">nest_crawler.</span></code><code class="sig-name descname"><span class="pre">send_notification_email</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">alert</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_crawler.send_notification_email" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="nest_crawler.send_notification_tweet">
<code class="sig-prename descclassname"><span class="pre">nest_crawler.</span></code><code class="sig-name descname"><span class="pre">send_notification_tweet</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">alert</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_crawler.send_notification_tweet" title="Link a questa definizione"></a></dt>
<dd></dd></dl>
</div> </div>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -91,7 +92,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -105,6 +106,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul class="current"> <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="../meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Struttura del database</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="../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="../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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -39,7 +40,7 @@
<link rel="index" title="Indice" href="../../genindex.html" /> <link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.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="next" title="Struttura del database" href="../database/index.html" />
<link rel="prev" title="Suggerimenti relativi al corso" href="../../development/suggestions.html" /> <link rel="prev" title="Suggerimenti relativi al corso" href="../../development/suggestions.html" />
</head> </head>
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -111,6 +112,7 @@
<li class="toctree-l2"><a class="reference internal" href="#compilazione-con-windows-powershell">Compilazione con Windows Powershell</a></li> <li class="toctree-l2"><a class="reference internal" href="#compilazione-con-windows-powershell">Compilazione con Windows Powershell</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Struttura del database</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="../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="../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> <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>
@ -246,7 +248,7 @@ eseguita.</p>
</div> </div>
<footer> <footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <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="../database/index.html" class="btn btn-neutral float-right" title="Struttura del database" 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> <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> </div>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="goals.html">Introduzione</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="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="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="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -109,6 +110,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="goals.html">Introduzione</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="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="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="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -106,6 +107,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -7,12 +7,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <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> <title>Introduzione &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/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -92,8 +93,12 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Obiettivo del progetto</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">Introduzione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#scope">Scope</a></li> <li class="toctree-l2"><a class="reference internal" href="#obiettivo">Obiettivo</a></li>
<li class="toctree-l2"><a class="reference internal" href="#campo-di-applicazione">Campo di applicazione</a></li>
<li class="toctree-l2"><a class="reference internal" href="#caratteristiche-degli-utenti">Caratteristiche degli utenti</a></li>
<li class="toctree-l2"><a class="reference internal" href="#glossario">Glossario</a></li>
<li class="toctree-l2"><a class="reference internal" href="#macro-funzionalita">Macro-funzionalità</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="#casi-d-uso">Casi duso</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog-generale">Backlog generale</a></li> <li class="toctree-l2"><a class="reference internal" href="#backlog-generale">Backlog generale</a></li>
</ul> </ul>
@ -111,6 +116,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>
@ -162,7 +168,7 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li> <li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Obiettivo del progetto</li> <li>Introduzione</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
@ -181,32 +187,115 @@
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody"> <div itemprop="articleBody">
<div class="section" id="obiettivo-del-progetto"> <div class="section" id="introduzione">
<h1>Obiettivo del progetto<a class="headerlink" href="#obiettivo-del-progetto" title="Link a questa intestazione"></a></h1> <h1>Introduzione<a class="headerlink" href="#introduzione" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1"> <div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p> <p class="admonition-title">Da fare</p>
<p>Scrivere lobiettivo generale del progetto.</p> <p>Lasciamo il tempo al futuro?</p>
</div> </div>
<div class="section" id="scope"> <div class="section" id="obiettivo">
<h2>Scope<a class="headerlink" href="#scope" title="Link a questa intestazione"></a></h2> <h2>Obiettivo<a class="headerlink" href="#obiettivo" title="Link a questa intestazione"></a></h2>
<p>Lobiettivo del progetto è la creazione di un software per fornire laggregazione e lanalisi di <a class="reference external" href="https://help.twitter.com/it/using-twitter#tweets">Tweet</a>, in modo da
rilevare eventi <em>macroscopici</em>, <em>locali</em> o più semplicemente filtrarli in base a delle <em>keyword</em>.</p>
<p>Il prodotto sarà utilizzato dal cliente e da un piccolo gruppo di suoi dipendenti per effettuare ricerche statistiche.</p>
<p>Il software andrà ad integrarsi direttamente con <a class="reference external" href="https://twitter.com/">Twitter</a>, da cui verranno raccolti dati e su cui verranno pubblicate
allerte su di essi.</p>
</div>
<div class="section" id="campo-di-applicazione">
<h2>Campo di applicazione<a class="headerlink" href="#campo-di-applicazione" title="Link a questa intestazione"></a></h2>
<p>Il software trova utilizzo principalmente in <strong>ambito statistico</strong>, essendo il suo scopo quello di raccogliere dati e
permettere di analizzarli tramite uninterfaccia grafica.</p>
</div>
<div class="section" id="caratteristiche-degli-utenti">
<h2>Caratteristiche degli utenti<a class="headerlink" href="#caratteristiche-degli-utenti" title="Link a questa intestazione"></a></h2>
<p>Il software potrà essere utilizzato da utenti con una discreta esperienza nellanalisi di dati ma senza particolari
conoscenze informatiche.</p>
</div>
<div class="section" id="glossario">
<h2>Glossario<a class="headerlink" href="#glossario" title="Link a questa intestazione"></a></h2>
<dl>
<dt>Repository</dt><dd><p>Raccolta di tweet che soddisfano determinate condizioni.</p>
</dd>
<dt>Condizione</dt><dd><p>Predicato logico che deve essere soddisfatto da un tweet per essere raccolto in fase di raccolta dati, o per essere
contato in fase di allertamento utente.</p>
</dd>
<dt>Filtro</dt><dd><p>Predicato logico che deve essere soddisfatto da un tweet per essere visualizzato in fase di analisi dati.</p>
</dd>
<dt>Allarme</dt><dd><p>Notifica inviata allutente attraverso un mezzo telematico, come email oppure un tweet.</p>
</dd>
<dt>Utente</dt><dd><p>Utilizzatore del software con un proprio account creato dallamministratore della piattaforma.</p>
<p>In particolare, la piattaforma prevederà due tipologie di utenti:</p>
<dl class="simple">
<dt>Utente regolare</dt><dd><p>Potranno eseguire attività di creazione, analisi, condivisione, archiviazione ed eliminazione dei propri repository.</p>
</dd>
<dt>Utente amministratore</dt><dd><p>Potrà effettuare tutte le attività dellutente regolare, e in aggiunta potrà creare ed eliminare nuovi utenti
regolari.</p>
</dd>
</dl>
</dd>
</dl>
<div class="admonition-todo admonition" id="id2"> <div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p> <p class="admonition-title">Da fare</p>
<p>Scrivere lo scope del progetto.</p> <p>Estendere il glossario qualora vengano incontrati altri termini.</p>
</div> </div>
</div> </div>
<div class="section" id="macro-funzionalita">
<h2>Macro-funzionalità<a class="headerlink" href="#macro-funzionalita" title="Link a questa intestazione"></a></h2>
<p>Il software permetterà di selezionare <strong>condizioni</strong> con cui scegliere quali tweet raccogliere:</p>
<ul class="simple">
<li><p>in base ai loro <a class="reference external" href="https://help.twitter.com/it/using-twitter/how-to-use-hashtags">hashtag</a></p></li>
<li><p>in base al loro autore</p></li>
<li><p>in base alla loro <a class="reference external" href="https://help.twitter.com/en/safety-and-security/tweet-location-settings">posizione geografica</a> (ove presente)</p></li>
<li><p>in base alla loro data di pubblicazione</p></li>
</ul>
<p>Selezionate le condizioni, lutente potrà creare una <strong>repository</strong>: una cartella in cui verranno raccolti i tweet
soddisfacenti le condizioni richieste.</p>
<p>Una volta raccolti, i tweet di una repository potranno essere <strong>analizzati</strong> in qualsiasi momento: durante lanalisi,
saranno mostrate statistiche e grafici relativi ai tweet.</p>
<p>La raccolta potrà essere interrotta in qualsiasi momento <strong>archiviando</strong> il repository.</p>
<p>Sarà possibile <strong>condividere</strong> una repository con altri utenti della piattaforma, permettendo loro di analizzarla.</p>
<p>Infine, lutente potrà configurare una repository in modo che gli invii una <strong>allerta</strong> qualora vengano raccolti un dato
numero di tweet in una certa <em>finestra temporale</em>.</p>
</div>
<div class="section" id="casi-d-uso"> <div class="section" id="casi-d-uso">
<h2>Casi duso<a class="headerlink" href="#casi-d-uso" title="Link a questa intestazione"></a></h2> <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>N.E.S.T. prevede tre tipologie di <em>agenti</em> («utenti» UML): <strong>utente</strong>, <strong>amministratore</strong> e <strong>sistema</strong>.</p>
<p class="admonition-title">Da fare</p> <img alt="../_images/Utenti.png" src="../_images/Utenti.png" />
<p>Scrivere i casi duso del progetto.</p> <p>I principali casi duso individuati durante la progettazione di N.E.S.T. sono:</p>
</div> <ul>
<li><p>La gestione degli utenti da parte di un Amministratore:</p>
<a class="reference internal image-reference" href="../_images/CasiUso1.PNG"><img alt="../_images/CasiUso1.PNG" src="../_images/CasiUso1.PNG" style="width: 400px;" /></a>
</li>
<li><p>La gestione del login da parte di un Utente:</p>
<a class="reference internal image-reference" href="../_images/CasiUso2.PNG"><img alt="../_images/CasiUso2.PNG" src="../_images/CasiUso2.PNG" style="width: 400px;" /></a>
</li>
<li><p>La gestione delle Allerte sia dal punto di vista dellUtente che del Sistema:</p>
<a class="reference internal image-reference" href="../_images/CasiUso3.PNG"><img alt="../_images/CasiUso3.PNG" src="../_images/CasiUso3.PNG" style="width: 800px;" /></a>
</li>
<li><p>La gestione della raccolta da parte dellutente:</p>
<a class="reference internal image-reference" href="../_images/CasiUso4.PNG"><img alt="../_images/CasiUso4.PNG" src="../_images/CasiUso4.PNG" style="width: 400px;" /></a>
</li>
<li><p>La gestione di un repository da parte dellutente:</p>
<a class="reference internal image-reference" href="../_images/CasiUso5.PNG"><img alt="../_images/CasiUso5.PNG" src="../_images/CasiUso5.PNG" style="width: 400px;" /></a>
</li>
<li><p>La visualizzazione di un repository:</p>
<a class="reference internal image-reference" href="../_images/CasiUso6.PNG"><img alt="../_images/CasiUso6.PNG" src="../_images/CasiUso6.PNG" style="width: 400px;" /></a>
</li>
</ul>
</div> </div>
<div class="section" id="backlog-generale"> <div class="section" id="backlog-generale">
<h2>Backlog generale<a class="headerlink" href="#backlog-generale" title="Link a questa intestazione"></a></h2> <h2>Backlog generale<a class="headerlink" href="#backlog-generale" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4"> <p>Si riporta qui di seguito il Backlog definito ad inizio progetto, prima dellavvio dello sviluppo.
<p class="admonition-title">Da fare</p> Gli elementi dal bordo grigio sono le epiche:</p>
<p>Elencare qui tutte le user story del backlog, senza specificare lo sprint in cui sono state realizzate.</p> <div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Alcune user story sono state rimosse in seguito al feedback ricevuto durante il primo sprint!</p>
</div> </div>
<img alt="../_images/Backlog1.PNG" src="../_images/Backlog1.PNG" />
<img alt="../_images/Backlog2.PNG" src="../_images/Backlog2.PNG" />
<img alt="../_images/Backlog3.PNG" src="../_images/Backlog3.PNG" />
<img alt="../_images/Backlog4.PNG" src="../_images/Backlog4.PNG" />
<img alt="../_images/Backlog5.PNG" src="../_images/Backlog5.PNG" />
</div> </div>
</div> </div>

View file

@ -1,239 +0,0 @@
<!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>Registro attività &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" />
</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="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"><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>Registro attività</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/development/log.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="registro-attivita">
<h1>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h1>
<p>Questo registro attività delinea le attività effettuate dai membri del team e ne indica la durata.</p>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Per informazioni più dettagliate sulle attività di sviluppo, si suggerisce di guardare il log dei commit di Git:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">nest:g2-progetto$ </span>git log
</pre></div>
</div>
</div>
<div class="section" id="sprint-1-19-apr-02-mag">
<h2>Sprint 1: 19 Apr - 02 Mag<a class="headerlink" href="#sprint-1-19-apr-02-mag" title="Link a questa intestazione"></a></h2>
</div>
<div class="section" id="sprint-2-03-mag-16-mag">
<h2>Sprint 2: 03 Mag - 16 Mag<a class="headerlink" href="#sprint-2-03-mag-16-mag" title="Link a questa intestazione"></a></h2>
</div>
</div>
</div>
</div>
<footer>
<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

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -40,7 +41,7 @@
<link rel="index" title="Indice" href="../genindex.html" /> <link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" /> <link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Strumenti utilizzati" href="tools.html" /> <link rel="next" title="Strumenti utilizzati" href="tools.html" />
<link rel="prev" title="Obiettivo del progetto" href="goals.html" /> <link rel="prev" title="Introduzione" href="goals.html" />
</head> </head>
<body class="wy-body-for-nav"> <body class="wy-body-for-nav">
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="goals.html">Introduzione</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Processo di sviluppo</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="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="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -106,6 +107,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>
@ -196,7 +198,7 @@ retrospettiva finale»</p>
<footer> <footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <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="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> <a href="goals.html" class="btn btn-neutral float-left" title="Introduzione" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div> </div>
<hr/> <hr/>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -92,14 +93,13 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="../goals.html">Introduzione</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="../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="../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-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="#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="#definition-of-ready">Definition of Ready</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="#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-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="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul> <li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
@ -119,6 +119,8 @@
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li> <li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="#artefatti">Artefatti</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-review">Sprint review</a></li>
</ul> </ul>
</li> </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="../sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
@ -131,6 +133,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/database/index.html">Struttura del database</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/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/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> <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>
@ -203,10 +206,6 @@
<div class="section" id="sprint-0-04-apr-18-apr"> <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> <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"> <div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2> <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> <p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
@ -215,26 +214,27 @@
<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> <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> </ul>
</div> </div>
<div class="section" id="goal"> <div class="section" id="definition-of-ready">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2> <h2>Definition of Ready<a class="headerlink" href="#definition-of-ready" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2"> <p>Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:</p>
<p class="admonition-title">Da fare</p> <ul class="simple">
<p>Inserire qui lo sprint goal.</p> <li><p>La User Story è stata compresa ed accettata da tutti i membri</p></li>
</div> <li><p>I tester hanno confermato la possibilità di poterla testare</p></li>
</div> <li><p>Il Product Owner ha la visione necessaria per definirne la priorità</p></li>
<div class="section" id="backlog"> <li><p>Il Team è in grado di stimarla</p></li>
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2> <li><p>La User Story è indipendente o dipendente da altre a priorità maggiore</p></li>
<div class="admonition-todo admonition" id="id3"> </ul>
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
</div> </div>
<div class="section" id="definition-of-done"> <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> <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>La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così
<p class="admonition-title">Da fare</p> definita:</p>
<p>Inserire qui la definition of done dello sprint.</p> <ul class="simple">
</div> <li><p>Sviluppo completo della funzionalità richiesta</p></li>
<li><p>Definizione e superamento dei test</p></li>
<li><p>Bozza della documentazione della funzionalità</p></li>
<li><p>Merge dei sorgenti nel branch <code class="docutils literal notranslate"><span class="pre">main</span></code> del repository Git</p></li>
</ul>
</div> </div>
<div class="section" id="registro-attivita"> <div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2> <h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
@ -413,7 +413,7 @@
<th class="head"><p>Attività</p></th> <th class="head"><p>Attività</p></th>
</tr> </tr>
<tr class="row-even"><th class="head"></th> <tr class="row-even"><th class="head"></th>
<th class="head"></th> <th class="head"><p>12h 30m</p></th>
<th class="head"><p>Totale</p></th> <th class="head"><p>Totale</p></th>
</tr> </tr>
</thead> </thead>
@ -540,10 +540,625 @@
</div> </div>
<div class="section" id="risultati-della-partita-di-scrumble"> <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> <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"> <ol class="arabic simple">
<p class="admonition-title">Da fare</p> <li><dl class="field-list simple">
<p>Trascrivere qui i risultati della partita di Scrumble.</p> <dt class="field-odd">Goal</dt>
</div> <dd class="field-odd"><p>Learn</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team members understand the Scrum roles?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Knowledge of Scrum roles by questions</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>no idea of the Scrum roles</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>perfect knowledge of the roles and their jobs</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>4</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>4</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>4</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Learn</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team members feel they learned the process?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Opinions from the participants</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>couldnt repeat the game</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>could play the game as a Scrum Master by himself</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>3</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>3</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>4</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>3</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>3</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>3</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Learn</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Does everyone keep up with the other players?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Check during every sprint retrospective if every one is on point</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>totally lost</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>leads the game driving the other players</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>3</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>4</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>5</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Practice</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Are the game mechanics linear and repeatable?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Opinions from the participants</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>feels the game is unrepeatable</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>feels the game could be played in any situation</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>1</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>2</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>1</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>1</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>1</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>2</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>1</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Practice</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team success in completing the game?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Number of User Stories completed</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>0 to 3 stories</p>
</dd>
<dt class="field-even">2</dt>
<dd class="field-even"><p>4 to 6</p>
</dd>
<dt class="field-odd">3</dt>
<dd class="field-odd"><p>7 to 9</p>
</dd>
<dt class="field-even">4</dt>
<dd class="field-even"><p>10 to 12</p>
</dd>
<dt class="field-odd">5</dt>
<dd class="field-odd"><p>13 to 15</p>
</dd>
</dl>
</dd>
<dt class="field-even">Chiara</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Giorgio</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Giovanni</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Stefano P.</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Lorenzo</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Stefano G.</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Flavia</dt>
<dd class="field-even"><p>5</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Practice</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team members efficiently estimate during sprint planning?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Uniformity in evaluating the size and the priority of user stories</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>abnormal difference from the other players</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>coherent and uniform with the group most of the time</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Cooperation</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team members know each other better?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Level of players” serenity throughout the game</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>never speaks with the other players</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>talks friendly to anyone in every situation</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>4</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>4</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Cooperation</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Does the game let all players cooperate?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Contribution of every player during the game</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>never puts effort in doing something</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>every time is willing to understand what is going on</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>4</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>3</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>3</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>2</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>3</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>3</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Cooperation</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team member consult each other about a topic?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Sharing of ideas</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>never asks for an opinion</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>wants to discuss about every topic</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>3</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>5</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Motivation</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team members encourage collegues in need?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Players explain something other players dont understand</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>not involved by the game</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>always makes sure everyone is on point</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>3</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>4</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>4</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Motivation</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Does PO help the team?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Quality of POs advices to get better in the next sprints</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>poor/absent advices</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>wise and helpful suggestions when is required</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Stefano G.</dt>
<dd class="field-odd"><p>4</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Motivation</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Does the team come up with good ideas?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Effectiveness of sprint retrospective</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>doesnt express opinions during retrospective</p>
</dd>
<dt class="field-even">5</dt>
<dd class="field-even"><p>feels the retrospective fundamental to express opinions</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>4</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>5</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Problem Solving</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Do team members behave well when facing a problem?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Level of the technical debt at the end of the game</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><p>On the game board, if the debt pawn is on the lowest stage,the evaluation is 5, for every higher stage it decreases by 1</p>
</dd>
<dt class="field-odd">Chiara</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Giorgio</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Giovanni</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano P.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Lorenzo</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Flavia</dt>
<dd class="field-odd"><p>5</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Problem Solving</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Does team organize their tasks properly?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Average of tasks left at the end of each sprint</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>21+ average tasks left</p>
</dd>
<dt class="field-even">2</dt>
<dd class="field-even"><p>16-20 average tasks left</p>
</dd>
<dt class="field-odd">3</dt>
<dd class="field-odd"><p>11-15 average tasks left</p>
</dd>
<dt class="field-even">4</dt>
<dd class="field-even"><p>6-10 average tasks left</p>
</dd>
<dt class="field-odd">5</dt>
<dd class="field-odd"><p>0-5 average tasks left</p>
</dd>
</dl>
</dd>
<dt class="field-even">Chiara</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Giorgio</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Giovanni</dt>
<dd class="field-even"><p>5</p>
</dd>
<dt class="field-odd">Stefano P.</dt>
<dd class="field-odd"><p>5</p>
</dd>
<dt class="field-even">Lorenzo</dt>
<dd class="field-even"><p>5</p>
</dd>
</dl>
</li>
<li><dl class="field-list simple">
<dt class="field-odd">Goal</dt>
<dd class="field-odd"><p>Problem Solving</p>
</dd>
<dt class="field-even">Question</dt>
<dd class="field-even"><p>Does PO plan efficiently the Sprint Backlog?</p>
</dd>
<dt class="field-odd">Metric</dt>
<dd class="field-odd"><p>Average of tasks left at the end of each sprint</p>
</dd>
<dt class="field-even">Evaluation</dt>
<dd class="field-even"><dl class="field-list simple">
<dt class="field-odd">1</dt>
<dd class="field-odd"><p>21+ average tasks left</p>
</dd>
<dt class="field-even">2</dt>
<dd class="field-even"><p>16-20 average tasks left</p>
</dd>
<dt class="field-odd">3</dt>
<dd class="field-odd"><p>11-15 average tasks left</p>
</dd>
<dt class="field-even">4</dt>
<dd class="field-even"><p>6-10 average tasks left</p>
</dd>
<dt class="field-odd">5</dt>
<dd class="field-odd"><p>0-5 average tasks left</p>
</dd>
</dl>
</dd>
<dt class="field-even">Stefano G.</dt>
<dd class="field-even"><p>5</p>
</dd>
</dl>
</li>
</ol>
</div> </div>
<div class="section" id="statistiche"> <div class="section" id="statistiche">
<h2>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h2> <h2>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h2>
@ -552,10 +1167,24 @@
<p>Questa statistica è stata generata dal prof. Marcello Missiroli con <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> <a class="reference external" href="https://github.com/ejwa/gitinspector">Gitinspector</a> al termine dello Sprint.</p>
<ul class="simple"> <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> <li><p><a class="reference download internal" download="" href="../../_downloads/b39447cc9fdf36619aeebedbc640599a/0-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">0-stats.html</span></code></a></p></li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="section" id="artefatti">
<h2>Artefatti<a class="headerlink" href="#artefatti" title="Link a questa intestazione"></a></h2>
<p>In questo sprint è stato realizzato il seguente documento:</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/d8e10120028bfd129b2cd34bea08128f/0-result.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Documento</span> <span class="pre">generale</span> <span class="pre">dello</span> <span class="pre">Sprint</span> <span class="pre">0</span></code></a></p></li>
</ul>
</div>
<div class="section" id="sprint-review">
<h2>Sprint review<a class="headerlink" href="#sprint-review" title="Link a questa intestazione"></a></h2>
<p>Il video di sprint review è disponibile al seguente link:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view">https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view</a></p></li>
</ul>
</div>
</div> </div>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="../goals.html">Introduzione</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="../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="../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="../sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -131,6 +132,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="../goals.html">Introduzione</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="../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="../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="../sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -131,6 +132,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="../goals.html">Introduzione</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="../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="../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="../sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -132,6 +133,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="goals.html">Introduzione</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="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="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="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -106,6 +107,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -92,7 +93,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current"> <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="goals.html">Introduzione</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="process.html">Processo di sviluppo</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Strumenti utilizzati</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">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="sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -106,6 +107,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>
@ -215,6 +217,15 @@ il miglioramento della qualità del codice del progetto.</p>
<p>È accessibile al seguente indirizzo: <a class="reference external" href="https://sonarqube.steffo.eu/">https://sonarqube.steffo.eu/</a></p> <p>È accessibile al seguente indirizzo: <a class="reference external" href="https://sonarqube.steffo.eu/">https://sonarqube.steffo.eu/</a></p>
</div> </div>
</div></blockquote> </div></blockquote>
<p><a class="reference external" href="https://www.figma.com/">Figma</a></p>
<blockquote>
<div><p>Applicazione web centralizzata per la creazione collaborativa di interfacce grafiche moderne.</p>
</div></blockquote>
<p><a class="reference external" href="https://discord.com/">Discord</a></p>
<blockquote>
<div><p>Piattaforma centralizzata di messaggistica istantanea e chiamate vocali utilizzata per la comunicazione sincrona
tra i membri del team.</p>
</div></blockquote>
</div> </div>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
@ -90,7 +91,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -104,6 +105,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</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/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/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> <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>
@ -232,8 +234,12 @@
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.aid">aid (nest_backend.database.tables.MadeOf attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.aid">aid (nest_backend.database.tables.MadeOf attributo)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert">Alert (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#Alert">Alert (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.alert">alert (nest_backend.database.tables.MadeOf attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.alert">alert (nest_backend.database.tables.MadeOf attributo)</a>
<ul> <ul>
@ -255,11 +261,21 @@
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionMode.all_or">all_or (nest_backend.database.tables.ConditionMode attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.ConditionMode.all_or">all_or (nest_backend.database.tables.ConditionMode attributo)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.OperationType.assign">assign (nest_backend.database.tables.OperationType attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.OperationType.assign">assign (nest_backend.database.tables.OperationType attributo)</a>
</li>
<li><a href="code/crawler/index.html#nest_crawler.associate_condition_tweet">associate_condition_tweet() (nel modulo nest_crawler)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.gestione.authenticate">authenticate() (nel modulo nest_backend.gestione)</a> <li><a href="code/backend/index.html#nest_backend.gestione.authenticate">authenticate() (nel modulo nest_backend.gestione)</a>
<ul>
<li><a href="code/crawler/index.html#nest_crawler.authenticate">(nel modulo nest_crawler)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization">Authorization (classe in nest_backend.database.tables)</a> </ul></li>
<li><a href="code/database/index.html#Authorization">Authorization (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.authorizations">authorizations (nest_backend.database.tables.Repository attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Repository.authorizations">authorizations (nest_backend.database.tables.Repository attributo)</a>
<ul> <ul>
@ -278,10 +294,18 @@
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.cid">(nest_backend.database.tables.MadeOf attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.cid">(nest_backend.database.tables.MadeOf attributo)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed">Composed (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#Composed">Composed (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed">(classe in nest_backend.database.tables)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition">Condition (classe in nest_backend.database.tables)</a> </ul></li>
<li><a href="code/database/index.html#Condition">Condition (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains.condition">condition (nest_backend.database.tables.Contains attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Contains.condition">condition (nest_backend.database.tables.Contains attributo)</a>
<ul> <ul>
@ -302,8 +326,12 @@
</ul></li> </ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType">ConditionType (classe in nest_backend.database.tables)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType">ConditionType (classe in nest_backend.database.tables)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains">Contains (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#Contains">Contains (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.content">content (nest_backend.database.tables.Condition attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Condition.content">content (nest_backend.database.tables.Condition attributo)</a>
<ul> <ul>
@ -380,15 +408,21 @@
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.id">(nest_backend.database.tables.Repository attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Repository.id">(nest_backend.database.tables.Repository attributo)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.gestione.identity">identity() (nel modulo nest_backend.gestione)</a> <li><a href="code/backend/index.html#nest_backend.gestione.identity">identity() (nel modulo nest_backend.gestione)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.image_url">image_url (nest_backend.database.tables.Tweet attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.image_url">image_url (nest_backend.database.tables.Tweet attributo)</a>
</li> </li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.insert_time">insert_time (nest_backend.database.tables.Tweet attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.insert_time">insert_time (nest_backend.database.tables.Tweet attributo)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.is_active">is_active (nest_backend.database.tables.Repository attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Repository.is_active">is_active (nest_backend.database.tables.Repository attributo)</a>
</li>
<li><a href="code/crawler/index.html#nest_crawler.is_coordinate_inside_bounding_box">is_coordinate_inside_bounding_box() (nel modulo nest_crawler)</a>
</li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.is_deleted">is_deleted (nest_backend.database.tables.Repository attributo)</a>
</li>
<li><a href="code/crawler/index.html#nest_crawler.is_repo_alert_triggered">is_repo_alert_triggered() (nel modulo nest_crawler)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.isAdmin">isAdmin (nest_backend.database.tables.User attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.User.isAdmin">isAdmin (nest_backend.database.tables.User attributo)</a>
</li> </li>
@ -428,8 +462,12 @@
<h2 id="M">M</h2> <h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf">MadeOf (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#MadeOf">MadeOf (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li> <li>
modulo modulo
@ -503,8 +541,12 @@
<li><a href="code/crawler/index.html#module-nest_crawler">modulo</a> <li><a href="code/crawler/index.html#module-nest_crawler">modulo</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification">Notification (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#Notification">Notification (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.notifications">notifications (nest_backend.database.tables.Alert attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Alert.notifications">notifications (nest_backend.database.tables.Alert attributo)</a>
</li> </li>
</ul></td> </ul></td>
@ -553,8 +595,12 @@
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.repositories">repositories (nest_backend.database.tables.Tweet attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.repositories">repositories (nest_backend.database.tables.Tweet attributo)</a>
</li> </li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository">Repository (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#Repository">Repository (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.repository">repository (nest_backend.database.tables.Alert attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Alert.repository">repository (nest_backend.database.tables.Alert attributo)</a>
<ul> <ul>
@ -586,6 +632,14 @@
<h2 id="S">S</h2> <h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/crawler/index.html#nest_crawler.search_repo_conditions">search_repo_conditions() (nel modulo nest_crawler)</a>
</li>
<li><a href="code/crawler/index.html#nest_crawler.send_notification_email">send_notification_email() (nel modulo nest_crawler)</a>
</li>
<li><a href="code/crawler/index.html#nest_crawler.send_notification_tweet">send_notification_tweet() (nel modulo nest_crawler)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed.snowflake">snowflake (nest_backend.database.tables.Composed attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Composed.snowflake">snowflake (nest_backend.database.tables.Composed attributo)</a>
@ -595,8 +649,6 @@
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.snowflake">(nest_backend.database.tables.Tweet attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.snowflake">(nest_backend.database.tables.Tweet attributo)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.start">start (nest_backend.database.tables.Repository attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Repository.start">start (nest_backend.database.tables.Repository attributo)</a>
</li> </li>
</ul></td> </ul></td>
@ -625,8 +677,12 @@
</ul></li> </ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet">Tweet (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#Tweet">Tweet (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed.tweet">tweet (nest_backend.database.tables.Composed attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Composed.tweet">tweet (nest_backend.database.tables.Composed attributo)</a>
<ul> <ul>
@ -647,16 +703,20 @@
<h2 id="U">U</h2> <h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.User">User (classe in nest_backend.database.tables)</a> <li><a href="code/database/index.html#User">User (classe built-in)</a>
<ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.User">(classe in nest_backend.database.tables)</a>
</li> </li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.user">user (nest_backend.database.tables.Authorization attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.user">user (nest_backend.database.tables.Authorization attributo)</a>
<ul> <ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.user">(nest_backend.database.tables.ConditionType attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.user">(nest_backend.database.tables.ConditionType attributo)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.username">username (nest_backend.database.tables.User attributo)</a> <li><a href="code/backend/index.html#nest_backend.database.tables.User.username">username (nest_backend.database.tables.User attributo)</a>
</li> </li>
</ul></td> </ul></td>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -96,7 +97,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -110,6 +111,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@ -39,7 +40,7 @@
<link rel="index" title="Indice" href="../genindex.html" /> <link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" /> <link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="Obiettivo del progetto" href="../development/goals.html" /> <link rel="next" title="Introduzione" href="../development/goals.html" />
<link rel="prev" title="Il progetto in breve" href="about.html" /> <link rel="prev" title="Il progetto in breve" href="about.html" />
</head> </head>
@ -107,7 +108,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -121,6 +122,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code/database/index.html">Struttura del database</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/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/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> <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>
@ -474,7 +476,7 @@ esempio da adattare al proprio setup:</p>
</div> </div>
<footer> <footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <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="../development/goals.html" class="btn btn-neutral float-right" title="Introduzione" 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> <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> </div>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
@ -91,7 +92,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -105,6 +106,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</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/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/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> <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>
@ -207,8 +209,12 @@
<div class="toctree-wrapper compound"> <div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="development/goals.html">Obiettivo del progetto</a><ul> <li class="toctree-l1"><a class="reference internal" href="development/goals.html">Introduzione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#scope">Scope</a></li> <li class="toctree-l2"><a class="reference internal" href="development/goals.html#obiettivo">Obiettivo</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#campo-di-applicazione">Campo di applicazione</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#caratteristiche-degli-utenti">Caratteristiche degli utenti</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#glossario">Glossario</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#macro-funzionalita">Macro-funzionalità</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#casi-d-uso">Casi duso</a></li> <li class="toctree-l2"><a class="reference internal" href="development/goals.html#casi-d-uso">Casi duso</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/goals.html#backlog-generale">Backlog generale</a></li> <li class="toctree-l2"><a class="reference internal" href="development/goals.html#backlog-generale">Backlog generale</a></li>
</ul> </ul>
@ -217,12 +223,13 @@
<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/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><ul> <li class="toctree-l1"><a class="reference internal" href="development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#consegna">Consegna</a></li> <li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#goal">Goal</a></li> <li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#definition-of-ready">Definition of Ready</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#backlog">Backlog</a></li> <li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#definition-of-done">Definition of Done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#registro-attivita">Registro attività</a></li> <li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#risultati-della-partita-di-scrumble">Risultati della partita di Scrumble</a></li> <li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#risultati-della-partita-di-scrumble">Risultati della partita di Scrumble</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#statistiche">Statistiche</a></li> <li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#artefatti">Artefatti</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#sprint-review">Sprint review</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a><ul> <li class="toctree-l1"><a class="reference internal" href="development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a><ul>
@ -273,6 +280,7 @@
<li class="toctree-l2"><a class="reference internal" href="code/meta/index.html#compilazione-con-windows-powershell">Compilazione con Windows Powershell</a></li> <li class="toctree-l2"><a class="reference internal" href="code/meta/index.html#compilazione-con-windows-powershell">Compilazione con Windows Powershell</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</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><ul> <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><ul>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#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="code/backend/index.html#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="code/backend/index.html#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a><ul> <li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a><ul>
@ -287,6 +295,12 @@
<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> <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> </ul>
</div> </div>
<div class="system-message">
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/index.rst</span>, line 40)</p>
<p>toctree contains reference to nonexisting document “development/clientinterview”</p>
</div>
<div class="toctree-wrapper compound">
</div>
<div class="section" id="cose-rimaste-da-fare"> <div class="section" id="cose-rimaste-da-fare">
<h2>Cose rimaste da fare<a class="headerlink" href="#cose-rimaste-da-fare" title="Link a questa intestazione"></a></h2> <h2>Cose rimaste da fare<a class="headerlink" href="#cose-rimaste-da-fare" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition"> <div class="admonition-todo admonition">
@ -309,24 +323,14 @@
<p class="todo-source">(L'<a class="reference internal" href="development/conclusions.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/conclusions.rst, linea 4.)</p> <p class="todo-source">(L'<a class="reference internal" href="development/conclusions.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/conclusions.rst, linea 4.)</p>
<div class="admonition-todo admonition"> <div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p> <p class="admonition-title">Da fare</p>
<p>Scrivere lobiettivo generale del progetto.</p> <p>Lasciamo il tempo al futuro?</p>
</div> </div>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 4.)</p> <p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 4.)</p>
<div class="admonition-todo admonition"> <div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p> <p class="admonition-title">Da fare</p>
<p>Scrivere lo scope del progetto.</p> <p>Estendere il glossario qualora vengano incontrati altri termini.</p>
</div> </div>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 12.)</p> <p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 64.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere i casi duso del progetto.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 20.)</p>
<div class="admonition-todo admonition">
<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>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 28.)</p>
<div class="admonition-todo admonition"> <div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p> <p class="admonition-title">Da fare</p>
<p>Descrivere genericamente il processo di sviluppo seguito, includendo:</p> <p>Descrivere genericamente il processo di sviluppo seguito, includendo:</p>
@ -341,31 +345,6 @@ retrospettiva finale»</p>
<p class="admonition-title">Da fare</p> <p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p> <p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div> </div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint0/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint0/index.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint0/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint0/index.rst, linea 21.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint0/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint0/index.rst, linea 29.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint0/index.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint0/index.rst, linea 37.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Trascrivere qui i risultati della partita di Scrumble.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint0/index.html#id5"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint0/index.rst, linea 275.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 4.)</p> <p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 4.)</p>
<div class="admonition-todo admonition"> <div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p> <p class="admonition-title">Da fare</p>

Binary file not shown.

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
@ -93,7 +94,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -107,6 +108,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</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/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/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> <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>

View file

@ -13,6 +13,7 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
@ -93,7 +94,7 @@
</ul> </ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p> <p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul> <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/goals.html">Introduzione</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/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/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/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
@ -107,6 +108,7 @@
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p> <p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul> <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/meta/index.html">Meta-documentazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</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/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/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> <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>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,7 @@
dl > dd > dl {
margin-bottom: 0 !important;
}
li > dl {
margin-bottom: 24px !important;
}

View file

@ -32,6 +32,8 @@
``.routes`` - Percorsi API ``.routes`` - Percorsi API
-------------------------- --------------------------
.. automodule:: nest_backend.database.routes .. note::
:imported-members:
La documentazione dei percorsi API è gestita da Swagger UI, disponibile a ``/docs`` una volta che il webserver
del backend è avviato.

View file

@ -2,3 +2,4 @@
==================================== ====================================
.. automodule:: nest_crawler .. automodule:: nest_crawler
:imported-members:

View file

@ -0,0 +1,265 @@
Struttura del database
======================
.. class:: Alert
Un alert è un allarme impostato da un utente che si "attiva" quando un numero di tweet che rispetta certe condizioni
(poste in and oppure or) supera una certa soglia, indicata dall'utente.
Ogni volta che l'alert si attiva, viene creata una "notifica", ovvero una entry nella tabella Notifications.
Questo permette di tenere conto del numero di volte in cui l'alert viene triggerato.
Gli alert sono legati al repository di appartenenza, e quando uno di essi viene allertato viene inviata una mail
all'admin e pubblicato un tweet sull'account Twitter usato per le analisi.
La tabella alert contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- l'identificativo dell'alert
* - name (VARCHAR, NOT NULL)
- il nome dell'alert
* - limit (INTEGER, NOT NULL)
- il numero di tweet che innescano l'alert
* - window_size (INTEGER, NOT NULL)
- numero di ore in cui il limit può venire superato
* - evaluation_mode (ENUM/SMALLINT, NOT NULL)
- può essere posto a all_or oppure all_not
* - repository_id (INTEGER, FK, NOT NULL)
-
.. class:: Authorization
Una autorizzazione è un'entità che rappresenta il permesso, concesso dal creatore del repository ad un altro utente,
di ispezionare il contenuto di un repo e di eseguire analisi su di esso.
La tabella authorization contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - rid (INTEGER, PK, FK)
- id del repository
* - email (VARCHAR, PK, FK)
- email dell'utente
.. class:: Composed
Composed è una tabella le cui righe indicano l'appartenenza di un Tweet ad un certo repository.
La tabella Composed contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - rid (INTEGER, PK, FK)
- id del repository
* - snowflake (VARCHAR, PK, FK)
- id del tweet
.. class:: Condition
Una condizione è un elemento che viene usato da repository e alert per cercare e classificare i tweet.
Le condizioni possono essere di diversi tipi:
- **hashtag**: valore ``0``, richiede che il tweet contenga un dato hashtag
- **time**: valore ``2``, richiede che il tweet sia stato pubblicato prima o dopo una certa data
- **coordinates**: valore ``3``, richiede che il tweet sia stato pubblicato entro un certo raggio da delle
coordinate
- **user**: valore ``5``, richiede che il tweet sia stato pubblicato da un dato utente
La tabella condition contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id della condition
* - type (ENUM/SMALLINT, NOT NULL)
- tipo del contenuto
* - content (VARCHAR, NOT NULL)
- contenuto della condition
* - repository_id (INTEGER, FK, NOT NULL)
-
.. class:: Contains
Contains è una tabella le cui righe indicano la presenza di una certa condition rispetto ad un certo tweet.
La tabella contains contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - cid (INTEGER, PK, FK)
- id della condition
* - snowflake (VARCHAR, PK, FK)
- id del tweet
.. class:: MadeOf
MadeOf è una tabella le cui righe indicano il legame tra un alert e una certa condition.
La tabella madeof contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - aid (INTEGER, PK, FK)
- id dell'alert
* - cid (INTEGER, PK, FK)
- id della condition
.. class:: Notification
Una notification è un'entità che consente di tenere traccia del momento in cui un certo alert si è attivato
per l'ultima volta.
La tabella notification contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id della notifica
* - ora (TIMESTAMP, NOT NULL)
- timestamp di attivazione
* - alert_id (INTEGER, FK, NOT NULL)
-
.. class:: Repository
Un repository è un "contenitore" di tweet, a cui sono legati alert, autorizzazioni di lettura e condizioni.
Le condizioni possono essere messe in and oppure or, inoltre un repository può venire archiviato prima divenire
eliminato. Quando un repository non è archiviato, questo viene riempito di tweet su base oraria, cosa che non
accade se viene archiviato.
La tabella repository contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - id (INTEGER, PK)
- id del repository
* - name (VARCHAR, NOT NULL)
- nome del repository
* - start (TIMESTAMP)
- timestamp di partenza del repository
* - end (TIMESTAMP)
- timestamp di chiusura del repository
* - is_active (BOOLEAN, NOT NULL)
- flag per segnalare se il repo è aperto o meno
* - evaluation_mode (ENUM/SMALLINT, NOT NULL)
- può essere posto a all_or oppure all_not
* - owner_id (VARCHAR, FK, NOT NULL)
- email del proprietario
* - is_deleted (BOOLEAN, NOT NULL)
- flag per segnalare se l'oggetto è eliminato o meno
.. class:: Tweet
Un tweet è un'entità che viene raccolta dal componente crawler, e quando viene inserita nella base di dati viene
legata ad un repository e alle condition che contiene. Un tweet contiene informazioni relativamente a chi l'ha
creato, eventuali immagini, il tempo di creazione, il tempo di inserimento nel db e l'opzionale posizione legata
al tweet.
La tabella tweet contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - snowflake (VARCHAR, PK)
- id univoco del tweet
* - content (VARCHAR)
- contenuto del tweet
* - location (VARCHAR)
- stringa contenente informazioni sulla posizione
* - place (VARCHAR)
- riservato per sviluppi futuri
* - poster (VARCHAR)
- informazioni sull'utente che ha creato il tweet
* - insert_time (TIMESTAMP, NOT NULL)
- timestamp dell'inserimento del tweet
* - image_url (VARCHAR)
- link alle immagini, se presenti
* - post_time (TIMESTAMP)
- timestamp relativo all'invio del tweet
.. class:: User
Uno user è l'utilizzatore della piattaforma.
E' presente di default un utente admin, il quale può creare nuovi utenti.
La tabella user contiene le seguenti colonne:
.. list-table::
:header-rows: 1
:stub-columns: 1
:align: left
* -
- Definizioni
* - email (VARCHAR, PK)
- email dell'utente
* - username (VARCHAR, NOT NULL)
- username dell'utente
* - password (BYTEARRAY, NOT NULL)
- sale della password, codificata usando l'algoritmo bcrypt
* - isAdmin (BOOLEAN, NOT NULL)
- true se l'utente è admin

View file

@ -74,8 +74,6 @@ html_theme_options = {
html_static_path = ['_static'] html_static_path = ['_static']
# -- Intersphinx options ----------------------------------------------------- # -- Intersphinx options -----------------------------------------------------
intersphinx_mapping = { intersphinx_mapping = {
@ -93,6 +91,12 @@ intersphinx_mapping = {
} }
# -- Setup function ----------------------------------------------------------
def setup(app):
app.add_css_file('custom.css')
# -- Extension configuration ------------------------------------------------- # -- Extension configuration -------------------------------------------------
todo_include_todos = True todo_include_todos = True
@ -105,6 +109,5 @@ autodoc_default_options = {
'member-order': 'bysource', 'member-order': 'bysource',
'special-members': '__init__', 'special-members': '__init__',
'undoc-members': True, 'undoc-members': True,
'show-inheritance': True, 'show-inheritance': False,
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -1,30 +1,152 @@
Obiettivo del progetto Introduzione
====================== ============
.. todo:: .. todo::
Lasciamo il tempo al futuro?
Scrivere l'obiettivo generale del progetto. Obiettivo
---------
L'obiettivo del progetto è la creazione di un software per fornire l'aggregazione e l'analisi di `Tweet`_, in modo da
rilevare eventi *macroscopici*, *locali* o più semplicemente filtrarli in base a delle *keyword*.
Il prodotto sarà utilizzato dal cliente e da un piccolo gruppo di suoi dipendenti per effettuare ricerche statistiche.
Il software andrà ad integrarsi direttamente con `Twitter`_, da cui verranno raccolti dati e su cui verranno pubblicate
allerte su di essi.
.. _Tweet: https://help.twitter.com/it/using-twitter#tweets
.. _Twitter: https://twitter.com/
Scope Campo di applicazione
----- ---------------------
Il software trova utilizzo principalmente in **ambito statistico**, essendo il suo scopo quello di raccogliere dati e
permettere di analizzarli tramite un'interfaccia grafica.
Caratteristiche degli utenti
----------------------------
Il software potrà essere utilizzato da utenti con una discreta esperienza nell'analisi di dati ma senza particolari
conoscenze informatiche.
Glossario
---------
Repository
Raccolta di tweet che soddisfano determinate condizioni.
Condizione
Predicato logico che deve essere soddisfatto da un tweet per essere raccolto in fase di raccolta dati, o per essere
contato in fase di allertamento utente.
Filtro
Predicato logico che deve essere soddisfatto da un tweet per essere visualizzato in fase di analisi dati.
Allarme
Notifica inviata all'utente attraverso un mezzo telematico, come email oppure un tweet.
Utente
Utilizzatore del software con un proprio account creato dall'amministratore della piattaforma.
In particolare, la piattaforma prevederà due tipologie di utenti:
Utente regolare
Potranno eseguire attività di creazione, analisi, condivisione, archiviazione ed eliminazione dei propri repository.
Utente amministratore
Potrà effettuare tutte le attività dell'utente regolare, e in aggiunta potrà creare ed eliminare nuovi utenti
regolari.
.. todo:: .. todo::
Estendere il glossario qualora vengano incontrati altri termini.
Scrivere lo scope del progetto.
Macro-funzionalità
------------------
Il software permetterà di selezionare **condizioni** con cui scegliere quali tweet raccogliere:
- in base ai loro `hashtag`_
- in base al loro autore
- in base alla loro `posizione geografica`_ (ove presente)
- in base alla loro data di pubblicazione
Selezionate le condizioni, l'utente potrà creare una **repository**: una cartella in cui verranno raccolti i tweet
soddisfacenti le condizioni richieste.
Una volta raccolti, i tweet di una repository potranno essere **analizzati** in qualsiasi momento: durante l'analisi,
saranno mostrate statistiche e grafici relativi ai tweet.
La raccolta potrà essere interrotta in qualsiasi momento **archiviando** il repository.
Sarà possibile **condividere** una repository con altri utenti della piattaforma, permettendo loro di analizzarla.
Infine, l'utente potrà configurare una repository in modo che gli invii una **allerta** qualora vengano raccolti un dato
numero di tweet in una certa *finestra temporale*.
.. _hashtag: https://help.twitter.com/it/using-twitter/how-to-use-hashtags
.. _posizione geografica: https://help.twitter.com/en/safety-and-security/tweet-location-settings
Casi d'uso Casi d'uso
---------- ----------
.. todo:: N.E.S.T. prevede tre tipologie di *agenti* ("utenti" UML): **utente**, **amministratore** e **sistema**.
Scrivere i casi d'uso del progetto. .. image:: Utenti.png
I principali casi duso individuati durante la progettazione di N.E.S.T. sono:
- La gestione degli utenti da parte di un Amministratore:
.. image:: CasiUso1.PNG
:width: 400
- La gestione del login da parte di un Utente:
.. image:: CasiUso2.PNG
:width: 400
- La gestione delle Allerte sia dal punto di vista dellUtente che del Sistema:
.. image:: CasiUso3.PNG
:width: 800
- La gestione della raccolta da parte dell'utente:
.. image:: CasiUso4.PNG
:width: 400
- La gestione di un repository da parte dell'utente:
.. image:: CasiUso5.PNG
:width: 400
- La visualizzazione di un repository:
.. image:: CasiUso6.PNG
:width: 400
Backlog generale Backlog generale
---------------- ----------------
.. todo:: Si riporta qui di seguito il Backlog definito ad inizio progetto, prima dellavvio dello sviluppo.
Gli elementi dal bordo grigio sono le epiche:
Elencare qui tutte le user story del backlog, senza specificare lo sprint in cui sono state realizzate. .. note::
Alcune user story sono state rimosse in seguito al feedback ricevuto durante il primo sprint!
.. image:: Backlog1.PNG
.. image:: Backlog2.PNG
.. image:: Backlog3.PNG
.. image:: Backlog4.PNG
.. image:: Backlog5.PNG

View file

@ -1,24 +0,0 @@
Registro attività
=================
Questo registro attività delinea le attività effettuate dai membri del team e ne indica la durata.
.. note::
Per informazioni più dettagliate sulle attività di sviluppo, si suggerisce di guardare il log dei commit di Git:
.. code-block:: console
nest:g2-progetto$ git log
Sprint 1: 19 Apr - 02 Mag
-------------------------
Sprint 2: 03 Mag - 16 Mag
-------------------------

View file

@ -1,11 +1,46 @@
Processo di sviluppo Processo di sviluppo
==================== ====================
Lo sviluppo è stato suddiviso in 4 sprint, ciascuno della durata di 2 settimane:
Sprint 0 - dal 5 Aprile al 18 Aprile
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 0
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#retrospettiva-finale
Sprint 1 - dal 19 Aprile al 2 Maggio
Burndown dello sprint 1
.. image:: Burndown1.png
:width: 400
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 1
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#retrospettiva-finale
Sprint 2 - dal 3 Maggio al 16 Maggio
Burndown dello sprint 2
.. image:: Burndown2.png
:width: 400
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 2
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#retrospettiva-finale
Sprint 3 - dal 19 Maggio al 30 Maggio
Burndown dello sprint 3
.. image:: Burndown3.png
:width: 400
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 3
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#retrospettiva-finale
In generale:
Burndown totale
.. image:: Burndown4.png
:width: 400
.. todo:: .. todo::
Descrivere genericamente il processo di sviluppo seguito, includendo: Descrivere genericamente il processo di sviluppo seguito, includendo:
"numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo, burndown complessivo, diari dei partecipanti e/o diario di gruppo,
retrospettiva finale" retrospettiva finale"
Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando ``:ref:``. Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando ``:ref:``.

View file

@ -1,11 +1,6 @@
Sprint 0: 04 Apr - 18 Apr Sprint 0: 04 Apr - 18 Apr
========================= =========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna Consegna
-------- --------
@ -15,28 +10,28 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
- :download:`Sprint 0 <0-sprint-requirements.pdf>` - :download:`Sprint 0 <0-sprint-requirements.pdf>`
Goal Definition of Ready
---- -------------------
.. todo:: Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
Inserire qui lo sprint goal. * La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Backlog Definition of Done
-------
.. todo::
Mostrare qui lo sprint backlog di Taiga.
Definition of done
------------------ ------------------
.. todo:: La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così
definita:
Inserire qui la definition of done dello sprint. * Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch ``main`` del repository Git
Registro attività Registro attività
@ -171,7 +166,7 @@ Chiara Calzolari
- Durata - Durata
- Attività - Attività
* - * -
- - 12h 30m
- Totale - Totale
* - 2021-04-09 * - 2021-04-09
@ -272,9 +267,192 @@ Lorenzo Balugani
Risultati della partita di Scrumble Risultati della partita di Scrumble
----------------------------------- -----------------------------------
.. todo:: #. :Goal: Learn
:Question: Do team members understand the Scrum roles?
:Metric: Knowledge of Scrum roles by questions
:Evaluation: :1: no idea of the Scrum roles
:5: perfect knowledge of the roles and their jobs
:Chiara: 4
:Giorgio: 4
:Giovanni: 4
:Stefano P.: 4
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 4
Trascrivere qui i risultati della partita di Scrumble. #. :Goal: Learn
:Question: Do team members feel they learned the process?
:Metric: Opinions from the participants
:Evaluation: :1: couldn't repeat the game
:5: could play the game as a Scrum Master by himself
:Chiara: 3
:Giorgio: 3
:Giovanni: 4
:Stefano P.: 5
:Lorenzo: 3
:Stefano G.: 3
:Flavia: 3
#. :Goal: Learn
:Question: Does everyone keep up with the other players?
:Metric: Check during every sprint retrospective if every one is on point
:Evaluation: :1: totally lost
:5: leads the game driving the other players
:Chiara: 3
:Giorgio: 4
:Giovanni: 4
:Stefano P.: 4
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Practice
:Question: Are the game mechanics linear and repeatable?
:Metric: Opinions from the participants
:Evaluation: :1: feels the game is unrepeatable
:5: feels the game could be played in any situation
:Chiara: 1
:Giorgio: 2
:Giovanni: 1
:Stefano P.: 1
:Lorenzo: 1
:Stefano G.: 2
:Flavia: 1
#. :Goal: Practice
:Question: Do team success in completing the game?
:Metric: Number of User Stories completed
:Evaluation: :1: 0 to 3 stories
:2: 4 to 6
:3: 7 to 9
:4: 10 to 12
:5: 13 to 15
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Practice
:Question: Do team members efficiently estimate during sprint planning?
:Metric: Uniformity in evaluating the size and the priority of user stories
:Evaluation: :1: abnormal difference from the other players
:5: coherent and uniform with the group most of the time
:Chiara: 5
:Giorgio: 4
:Giovanni: 5
:Stefano P.: 4
:Lorenzo: 5
#. :Goal: Cooperation
:Question: Do team members know each other better?
:Metric: Level of players' serenity throughout the game
:Evaluation: :1: never speaks with the other players
:5: talks friendly to anyone in every situation
:Chiara: 4
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 4
#. :Goal: Cooperation
:Question: Does the game let all players cooperate?
:Metric: Contribution of every player during the game
:Evaluation: :1: never puts effort in doing something
:5: every time is willing to understand what is going on
:Chiara: 4
:Giorgio: 3
:Giovanni: 3
:Stefano P.: 2
:Lorenzo: 3
:Stefano G.: 4
:Flavia: 3
#. :Goal: Cooperation
:Question: Do team member consult each other about a topic?
:Metric: Sharing of ideas
:Evaluation: :1: never asks for an opinion
:5: wants to discuss about every topic
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 3
:Lorenzo: 5
:Stefano G.: 4
:Flavia: 5
#. :Goal: Motivation
:Question: Do team members encourage collegues in need?
:Metric: Players explain something other players don't understand
:Evaluation: :1: not involved by the game
:5: always makes sure everyone is on point
:Chiara: 3
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 4
:Lorenzo: 5
:Stefano G.: 4
:Flavia: 4
#. :Goal: Motivation
:Question: Does PO help the team?
:Metric: Quality of PO's advices to get better in the next sprints
:Evaluation: :1: poor/absent advices
:5: wise and helpful suggestions when is required
:Stefano G.: 4
#. :Goal: Motivation
:Question: Does the team come up with good ideas?
:Metric: Effectiveness of sprint retrospective
:Evaluation: :1: doesn't express opinions during retrospective
:5: feels the retrospective fundamental to express opinions
:Chiara: 4
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Problem Solving
:Question: Do team members behave well when facing a problem?
:Metric: Level of the technical debt at the end of the game
:Evaluation: On the game board, if the debt pawn is on the lowest stage,the evaluation is 5, for every higher stage it decreases by 1
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
:Stefano G.: 5
:Flavia: 5
#. :Goal: Problem Solving
:Question: Does team organize their tasks properly?
:Metric: Average of tasks left at the end of each sprint
:Evaluation: :1: 21+ average tasks left
:2: 16-20 average tasks left
:3: 11-15 average tasks left
:4: 6-10 average tasks left
:5: 0-5 average tasks left
:Chiara: 5
:Giorgio: 5
:Giovanni: 5
:Stefano P.: 5
:Lorenzo: 5
#. :Goal: Problem Solving
:Question: Does PO plan efficiently the Sprint Backlog?
:Metric: Average of tasks left at the end of each sprint
:Evaluation: :1: 21+ average tasks left
:2: 16-20 average tasks left
:3: 11-15 average tasks left
:4: 6-10 average tasks left
:5: 0-5 average tasks left
:Stefano G.: 5
Statistiche Statistiche
@ -286,7 +464,30 @@ Gitinspector
Questa statistica è stata generata dal prof. Marcello Missiroli con Questa statistica è stata generata dal prof. Marcello Missiroli con
`Gitinspector`_ al termine dello Sprint. `Gitinspector`_ al termine dello Sprint.
- :download:`Sprint 0 <0-stats.html>` - :download:`0-stats.html`
.. _Gitinspector: https://github.com/ejwa/gitinspector .. _Gitinspector: https://github.com/ejwa/gitinspector
Sprint Retrospective
--------------------
- :download:`Sprint 0 Retrospective <sprint-0_retrospective.pdf>`
Sprint review
-------------
Il video di sprint review è disponibile al seguente link:
- https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view
Artefatti
---------
In questo sprint è stato realizzato il seguente documento:
- :download:`Documento generale dello Sprint 0 <0-result.pdf>`

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,16 @@
# Valutazione ScrumMaster debito tecnico
>La valutazione del debito tecnico effettuata da SonarQube è
>relativa principalmente al backend, poiché lanalisi del progetto
>sarebbe stata troppo dispendiosa a causa dellelevato numero di
>file presente nella cartella /frontend.
>Per quanto riguarda il backend invece il debito tecnico riscontrato
> è minore del 5% come si può verificare dal grado A attestato da
>SonarQube.
>Un punto chiave nellimplementazione ha permesso al team [**N.E.S.T.**]
>di diminuire il debito tecnico, questo è avvenuto grazie
>alladozione del modello architetturale REST che ha migliorato
>esponenzialmente il tempo di risposta delle richieste e la
>leggibilità del codice.

View file

@ -1,11 +1,6 @@
Sprint 1: 19 Apr - 02 Mag Sprint 1: 19 Apr - 02 Mag
========================= =========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna Consegna
-------- --------
@ -17,25 +12,47 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
Goal Goal
---- ----
.. todo:: Il **goal** per questo sprint è stato costruire una codebase facilmente mantenibile e modulare, che potesse accomodare grossi
cambiamenti nei sottomoduli senza impattare gli altri:
Inserire qui lo sprint goal. - Dal punto di vista del **backend**: l'obiettivo è stato predisporre la struttura del database e creare le api calls per illogin degli utenti e la creazione dei repository
- Dal punto di vista del **frontend**: creare la struttura con le componenti importate da figma e implementare le schermate principali
Tutto ciò è visibile dai task completati:
.. image:: Sprint1Task.png
:width: 400
Backlog Backlog
------- -------
.. todo:: .. image:: BacklogSprint1.png
:width: 400
Mostrare qui lo sprint backlog di Taiga. **Burndown Chart**
.. image:: Chart1.png
:width: 600
Definition of done Definition of Ready
------------------ ------------------
.. todo:: Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
* La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Inserire qui la definition of done dello sprint. Definition of Done
------------------
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
* Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch Main di GitLab
Registro attività Registro attività
@ -486,10 +503,19 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con
.. _Gitinspector: https://github.com/ejwa/gitinspector .. _Gitinspector: https://github.com/ejwa/gitinspector
Sprint retrospective
--------------------
- :download:`Sprint 1 Retrospective <1-retrospective.pdf>`
Sprint review Sprint review
------------- -------------
.. todo:: Il video di sprint review è disponibile al seguente link:
Inserire un link alla sprint review. - https://drive.google.com/drive/folders/1dsis_cGCRnVgZAkZjEVIZKt4NndkycaF?usp=sharing
Artefatti
---------
- :download:`Valutazion SM Debito Tecnico <ValutazioneSMDebitoTecnico.md>`
- :download:`Valutazione PO User Stories <valutazionePO__US_realizzate_o_rifiutate.md>`

View file

@ -0,0 +1,7 @@
Durante questo sprint non sono state ristimate le US in quanto non sono emerse al termine dello sprint0 valutazioni che lo rendessero necessario, di conseguenza non sono state neanche rivalutate le priorità.
Come product Owner ho individuato come criterio di accettazione l'esito positivo dei test, anche per il fatto che i test sono presenti in ogni US.
Durante lo sviluppo di questo primo sprint sono ovviamente emerse delle issue che sono state tracciate su taiga.
Una di queste, la #101 "L'API non è interamente REST" ha portato ad un refactoring di una parte del codice del backend, del frontend e naturalmente anche delle procedure di test, che erano già state abbozzate. La modifica comunque si è rilevata essere necessaria per rispondere appieno alle struttura tipica dei metodi REST.
Altre issue sono state inserite ma possono essere sistemate nello sprint successivo in quanto non influiscono sul funzionamento atteso in questo primo sprint.
Un leggero ritardo sullo sviluppo del frontend non consente di chiudere alcune US, che verranno chiuse e testate nel prossimo sprint.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View file

@ -1,11 +1,6 @@
Sprint 2: 03 Mag - 16 Mag Sprint 2: 03 Mag - 16 Mag
========================= =========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna Consegna
-------- --------
@ -16,26 +11,47 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
Goal Goal
---- ----
Il **goal** del secondo sprint è stato la creazione, cancellazione e modifica dei repository, ovvero permettere agli utenti
di creare repo partendo da una ricerca che rispetta determinate condizioni.
.. todo:: Tutto ciò è visibile dai task completati:
.. image:: Sprint2Task.png
:width: 390
Inserire qui lo sprint goal.
Backlog Backlog
------- -------
.. todo:: .. image:: BacklogSprint2.png
:width: 400
Mostrare qui lo sprint backlog di Taiga. **Burndown Chart**
.. image:: Chart2.png
:width: 600
Definition of done Definition of Ready
------------------ ------------------
.. todo:: Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
* La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Definition of Done
------------------
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
* Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch Main di GitLab
Inserire qui la definition of done dello sprint.
Registro attività Registro attività
@ -423,9 +439,14 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con
.. _Gitinspector: https://github.com/ejwa/gitinspector .. _Gitinspector: https://github.com/ejwa/gitinspector
Sprint retrospective
--------------------
- :download:`Sprint 2 Retrospective <RetrospectiveSprint2.pdf>`
Sprint review Sprint review
------------- -------------
.. todo:: Il video di sprint review è disponibile al seguente link:
Inserire un link alla sprint review. - https://drive.google.com/file/d/1x1kub-bpVJrwmGrn5LLU8ecqcbxFaoKg/view?usp=sharing

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View file

@ -1,11 +1,6 @@
Sprint 3: 17 Mag - 30 Mag Sprint 3: 17 Mag - 30 Mag
========================= =========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna Consegna
-------- --------
@ -18,25 +13,52 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
Goal Goal
---- ----
.. todo:: Il **goal** del terzo Sprint è stato far funzionare il crawler, gli alert e completare tutte i task rimanenti.
Tutto ciò è visibile dai task completati:
.. image:: Task3.png
:width: 400
Grooming session
----------------
Sono state definite le nuove User Stories da inserire nel progetto sulla base delle nuove richieste pervenute dal cliente: analisi statistica più dettagliata, postare su Twitter, traduzione dell'interfaccia in inglese.
La richiesta relativa alle ricerche basate sulla geolocalizzazione, come già comunicato al cliente, non è stata inserita per motivi tecnici legati alle features delle API 1.1 che non permettono di eseguire query sui campi di posizione geografica.
Le nuove User Stories sono state valutate tramite il metodo dello Scrum Poker, durante il quale ogni membro ha espresso la sua valutazione.
Tutte le nuove richieste sono state accettate dal Product Owner e sono pronte ad essere inserite nello sprint di sviluppo in partenza.
Inserire qui lo sprint goal.
Backlog Backlog
------- -------
.. image:: Backlog3.png
:width: 400
.. todo:: **Burndown Chart**
Mostrare qui lo sprint backlog di Taiga. .. image:: Chart3.png
:width: 600
Definition of done Definition of Ready
------------------ ------------------
.. todo:: Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
* La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Inserire qui la definition of done dello sprint. Definition of Done
------------------
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
* Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch Main di GitLab
Registro attività Registro attività
@ -81,12 +103,24 @@ Stefano Goldoni
- Durata - Durata
- Attività - Attività
* - * -
- - 14h
- Totale - Totale
* - * - 21/05
- - 2.0h
- - Analisi strumenti di test frontend
* - 24/05
- 3.0h
- Inizio test alerts
* - 25/05
- 2.5h
- Test alerts
* - 26/05
- 3.0h
- Test
* - 28/05
- 3.5h
- Test, refactory in base a Sonarqube
Flavia Cocca Flavia Cocca
@ -117,12 +151,42 @@ Chiara Calzolari
- Durata - Durata
- Attività - Attività
* - * -
- - 17h 30m
- Totale - Totale
* - * - 17/05
- - 3.0h
- - Traduzione UI
* - 17/05
- 1.5h
- Traduzione UI
* - 18/05
- 1.5h
- Traduzione UI
* - 20/05
- 1.0h
- Traduzione UI
* - 22/05
- 1.0h
- Traduzione UI
* - 24/05
- 2.0h
- Traduzione UI
* - 24/05
- 1.0h
- Traduzione UI
* - 25/05
- 1.0h
- Traduzione UI
* - 27/05
- 0.5h
- Traduzione UI
* - 28/05
- 2.0h
- Configurazione ambiente di sviluppo
* - 28/05
- 3.0h
- Creazione video-demo
Stefano Pigozzi Stefano Pigozzi
@ -189,12 +253,33 @@ Lorenzo Balugani
- Durata - Durata
- Attività - Attività
* - * -
- - 22h
- Totale - Totale
* - * - 17/05
- - 4h
- - Bugfixing, supporto alla localizzazione degli errori
* - 18/05
- 3h
- Bugfixing
* - 20/05
- 3h
- API autorizzazioni, refactoring
* - 21/05
- 2h
- Gestione tweet, rappresentazione tweet
* - 24/05
- 2h
- Bugfixing
* - 25/05
- 4h
- Docs, refactoring
* - 27/05
- 3h
- Bugfixing
* - 28/05
- 6h
- Bugfixing
Statistiche Statistiche
@ -219,6 +304,9 @@ Retrospettiva finale
Schermata finale di SonarQube Schermata finale di SonarQube
----------------------------- -----------------------------
.. todo:: - :download:`Schermata finale Sonarqube <sonarqube.pdf>`
Inserire qui uno screenshot della schermata finale di SonarQube. Demo
----
- https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view?usp=sharing

Binary file not shown.

View file

@ -40,8 +40,20 @@ Nello sviluppo di N.E.S.T. sono stati usati i seguenti strumenti software:
È accessibile al seguente indirizzo: https://sonarqube.steffo.eu/ È accessibile al seguente indirizzo: https://sonarqube.steffo.eu/
`Figma`_
Applicazione web centralizzata per la creazione collaborativa di interfacce grafiche moderne.
`Discord`_
Piattaforma centralizzata di messaggistica istantanea e chiamate vocali utilizzata per la comunicazione sincrona
tra i membri del team.
.. _IntelliJ IDEA Ultimate: https://www.jetbrains.com/idea/ .. _IntelliJ IDEA Ultimate: https://www.jetbrains.com/idea/
.. _Git: https://git-scm.com/ .. _Git: https://git-scm.com/
.. _GitLab: https://about.gitlab.com/ .. _GitLab: https://about.gitlab.com/
.. _Taiga: https://www.taiga.io/ .. _Taiga: https://www.taiga.io/
.. _SonarQube: https://www.sonarqube.org/ .. _SonarQube: https://www.sonarqube.org/
.. _Figma: https://www.figma.com/
.. _Discord: https://discord.com/

View file

@ -31,11 +31,18 @@ Benvenuto alla documentazione di N.E.S.T.!
:caption: Documentazione tecnica :caption: Documentazione tecnica
code/meta/index code/meta/index
code/database/index
code/backend/index code/backend/index
code/crawler/index code/crawler/index
code/frontend/index code/frontend/index
.. toctree::
:hidden:
development/clientinterview
Cose rimaste da fare Cose rimaste da fare
-------------------- --------------------

View file

@ -1,3 +0,0 @@
# UI Mockup
[Disponibile su Figma](https://www.figma.com/file/CA6VnMo3NIHnqSJNZGWAvT/N.E.S.T.?node-id=12%3A4)

View file

@ -1 +0,0 @@
https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view?usp=sharing

View file

@ -4,7 +4,7 @@
|------|-----|--------|----------| |------|-----|--------|----------|
| | | | | | | | | |
Totale generale di tutti i componenti: 12.5h Totale generale di tutti i componenti: 39.5h
# Log attività individuali dello Sprint 3 # Log attività individuali dello Sprint 3
@ -15,9 +15,13 @@ Stefano Goldoni - Product Owner & Tester
| Data | Durata | Attività | | Data | Durata | Attività |
|-------|--------|----------| |-------|--------|----------|
| | | | |21/05 |2.0h |analisi strumenti di test frontend
|24/05 |3.0h |inizio test alerts
|25/05 |2.5h |test alerts
|26/05 |3.0h |test
|28/05 |3.5h |test, refactory in base a sonarqube
|-------|--------| |-------|--------|
|totale| __._h | |totale| 14.0h |
Flavia Cocca - Scrum Master & UI Designer Flavia Cocca - Scrum Master & UI Designer
@ -83,8 +87,10 @@ Chiara Calzolari - UI Designer
| 24/05 | 1.0h | Traduzione UI | 24/05 | 1.0h | Traduzione UI
| 25/05 | 1.0h | Traduzione UI | 25/05 | 1.0h | Traduzione UI
| 27/05 | 0.5h | Traduzione UI | 27/05 | 0.5h | Traduzione UI
| 28/05 | 2.0h | Configurazione ambiente di sviluppo
| 28/05 | 3.0h | Creazione video-demo
|-------|--------| |-------|--------|
|totale| 12.5h | |totale| 17.5h |

View file

@ -4,7 +4,7 @@ from flask_jwt_extended import jwt_required, get_jwt_identity
from nest_backend.gestione import * from nest_backend.gestione import *
from flask_cors import cross_origin from flask_cors import cross_origin
import datetime import datetime
from nest_backend.errors import * import nest_backend.errors as errors
@cross_origin() @cross_origin()
@ -150,16 +150,16 @@ def page_alert(aid):
user = find_user(get_jwt_identity()) user = find_user(get_jwt_identity())
alert = Alert.query.filter_by(id=aid).first() alert = Alert.query.filter_by(id=aid).first()
if not alert or alert.repository.is_deleted: if not alert or alert.repository.is_deleted:
return json_error("Could not find alert.", ALERT_NOT_FOUND), 404 return json_error("Could not find alert.", errors.ALERT_NOT_FOUND), 404
if alert.repository not in [a.repository for a in user.authorizations] + user.owner_of: if alert.repository not in [a.repository for a in user.authorizations] + user.owner_of:
return json_error("You are not authorized to proceed.", USER_NOT_AUTHORIZED), 403 return json_error("You are not authorized to proceed.", errors.USER_NOT_AUTHORIZED), 403
if request.method == "GET": if request.method == "GET":
return json_success(alert.to_json()), 200 return json_success(alert.to_json()), 200
if alert.repository not in user.owner_of: if alert.repository not in user.owner_of:
return json_error("You are not authorized to proceed.", REPOSITORY_NOT_OWNER), 403 return json_error("You are not authorized to proceed.", errors.REPOSITORY_NOT_OWNER), 403
if request.method == "PATCH": if request.method == "PATCH":
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.", errors.GENERIC_NO_JSON), 400
if 'name' in request.json: if 'name' in request.json:
alert.name = request.json['name'] alert.name = request.json['name']
@ -171,9 +171,9 @@ def page_alert(aid):
try: try:
alert.evaluation_mode = ConditionMode(request.json['evaluation_mode']) alert.evaluation_mode = ConditionMode(request.json['evaluation_mode'])
except KeyError: except KeyError:
return json_error("Unknown `evaluation_mode` specified.", GENERIC_ENUM_INVALID), 400 return json_error("Unknown `evaluation_mode` specified.", errors.GENERIC_ENUM_INVALID), 400
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), errors.GENERIC_UFO), 400
ext.session.commit() ext.session.commit()
return json_success(alert.to_json()), 200 return json_success(alert.to_json()), 200
elif request.method == "DELETE": elif request.method == "DELETE":
@ -191,14 +191,14 @@ def page_alert(aid):
ext.session.delete(alert) ext.session.delete(alert)
ext.session.commit() ext.session.commit()
except Exception as e: except Exception as e:
return json_error("Something went wrong while deleting alert.", ALERT_DELETION_FAILURE), 500 return json_error("Something went wrong while deleting alert.", errors.ALERT_DELETION_FAILURE), 500
return json_success("Deletion completed."), 204 return json_success("Deletion completed."), 204
elif request.method == "PUT": elif request.method == "PUT":
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.", errors.GENERIC_NO_JSON), 400
if not json_request_authorizer(request.json, alert): if not json_request_authorizer(request.json, alert):
return json_error("Missing one or more parameters in alert json.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing one or more parameters in alert json.", errors.GENERIC_MISSING_FIELDS), 400
alert.limit = request.json['limit'] alert.limit = request.json['limit']
alert.name = request.json['name'] alert.name = request.json['name']
alert.window_size = request.json['window_size'] alert.window_size = request.json['window_size']
@ -206,9 +206,9 @@ def page_alert(aid):
try: try:
alert.evaluation_mode = ConditionMode(mode) alert.evaluation_mode = ConditionMode(mode)
except KeyError: except KeyError:
return json_error("Unknown `evaluation_mode` specified.", GENERIC_ENUM_INVALID), 400 return json_error("Unknown `evaluation_mode` specified.", errors.GENERIC_ENUM_INVALID), 400
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), errors.GENERIC_UFO), 400
if request.json['conditions'] is not None: if request.json['conditions'] is not None:
# Wow very pythonic so much wow # Wow very pythonic so much wow
# Obtain list of no longer needed connections # Obtain list of no longer needed connections
@ -223,15 +223,15 @@ def page_alert(aid):
for c in request.json['conditions']: for c in request.json['conditions']:
if not c.get("id"): if not c.get("id"):
if (type_ := c.get("type")) is None: if (type_ := c.get("type")) is None:
return json_error("Missing `type` parameter.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing `type` parameter.", errors.GENERIC_MISSING_FIELDS), 400
try: try:
type_ = ConditionType(type_) type_ = ConditionType(type_)
except KeyError: except KeyError:
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400 return json_error("Unknown `type` specified.", errors.GENERIC_ENUM_INVALID), 400
except Exception as e: except Exception as e:
return json_error("Unknown error: " + str(e)), 400 return json_error("Unknown error: " + str(e)), 400
if not (content := c.get("content")): if not (content := c.get("content")):
return json_error("Missing `content` parameter.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing `content` parameter.", errors.GENERIC_MISSING_FIELDS), 400
if type_ == ConditionType.hashtag: if type_ == ConditionType.hashtag:
content = hashtag_validator(content) content = hashtag_validator(content)
con = Condition(content=content, type=type_, repository_id=alert.repository_id) con = Condition(content=content, type=type_, repository_id=alert.repository_id)

View file

@ -3,7 +3,7 @@ from nest_backend.database import *
from flask_jwt_extended import jwt_required, get_jwt_identity from flask_jwt_extended import jwt_required, get_jwt_identity
from nest_backend.gestione import * from nest_backend.gestione import *
from flask_cors import cross_origin from flask_cors import cross_origin
from nest_backend.errors import * import nest_backend.errors as errors
@cross_origin() @cross_origin()
@ -73,30 +73,30 @@ def page_repository_alerts(rid):
repository = Repository.query.filter_by(id=rid, is_deleted=False).first() repository = Repository.query.filter_by(id=rid, is_deleted=False).first()
if not repository: if not repository:
return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404 return json_error("Could not find repository", errors.REPOSITORY_NOT_FOUND), 404
user = find_user(get_jwt_identity()) user = find_user(get_jwt_identity())
if user.email != repository.owner_id: if user.email != repository.owner_id:
return json_error("You are not authorized.", REPOSITORY_NOT_OWNER), 403 return json_error("You are not authorized.", errors.REPOSITORY_NOT_OWNER), 403
if request.method == "GET": if request.method == "GET":
return json_success([alert.to_json() for alert in repository.alerts]) return json_success([alert.to_json() for alert in repository.alerts])
if request.method == "POST": if request.method == "POST":
if 'name' not in request.json: if 'name' not in request.json:
return json_error("Missing name.", ALERT_NO_NAME), 400 return json_error("Missing name.", errors.ALERT_NO_NAME), 400
if 'limit' not in request.json: if 'limit' not in request.json:
return json_error('Missing limit', ALERT_NO_LIMIT), 400 return json_error('Missing limit', errors.ALERT_NO_LIMIT), 400
if 'window_size' not in request.json: if 'window_size' not in request.json:
return json_error('Missing window size', ALERT_NO_WINDOW), 400 return json_error('Missing window size', errors.ALERT_NO_WINDOW), 400
if (mode := request.json.get("evaluation_mode")) is not None: if (mode := request.json.get("evaluation_mode")) is not None:
try: try:
mode = ConditionMode(mode) mode = ConditionMode(mode)
except KeyError: except KeyError:
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400 return json_error("Unknown `type` specified.", errors.GENERIC_ENUM_INVALID), 400
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), errors.GENERIC_UFO), 400
else: else:
return json_error("Evaluation mode was not provided.", ALERT_NO_EVALUATION), 400 return json_error("Evaluation mode was not provided.", errors.ALERT_NO_EVALUATION), 400
alert = Alert(name=request.json['name'], limit=request.json['limit'], window_size=request.json['window_size'], alert = Alert(name=request.json['name'], limit=request.json['limit'], window_size=request.json['window_size'],
repository_id=rid, evaluation_mode=mode) repository_id=rid, evaluation_mode=mode)
@ -105,15 +105,15 @@ def page_repository_alerts(rid):
if request.json['conditions'] is not None: if request.json['conditions'] is not None:
for condition in request.json['conditions']: for condition in request.json['conditions']:
if (type_ := condition.get("type")) is None: if (type_ := condition.get("type")) is None:
return json_error("Missing `type` parameter.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing `type` parameter.", errors.GENERIC_MISSING_FIELDS), 400
try: try:
type_ = ConditionType(type_) type_ = ConditionType(type_)
except KeyError: except KeyError:
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400 return json_error("Unknown `type` specified.", errors.GENERIC_ENUM_INVALID), 400
except Exception as e: except Exception as e:
return json_error("Unknown error: " + str(e)), 400 return json_error("Unknown error: " + str(e)), 400
if not (content := condition.get("content")): if not (content := condition.get("content")):
return json_error("Missing `content` parameter.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing `content` parameter.", errors.GENERIC_MISSING_FIELDS), 400
if type_ == ConditionType.hashtag: if type_ == ConditionType.hashtag:
content = hashtag_validator(content) content = hashtag_validator(content)
c = Condition(content=content, type=type_) c = Condition(content=content, type=type_)

View file

@ -3,7 +3,7 @@ from nest_backend.database import *
from flask_jwt_extended import jwt_required, get_jwt_identity from flask_jwt_extended import jwt_required, get_jwt_identity
from nest_backend.gestione import * from nest_backend.gestione import *
from flask_cors import cross_origin from flask_cors import cross_origin
from nest_backend.errors import * import nest_backend.errors as errors
@cross_origin() @cross_origin()
@ -42,12 +42,12 @@ def page_authorization(rid, email):
repository = Repository.query.filter_by(id=rid, is_deleted=False).first() repository = Repository.query.filter_by(id=rid, is_deleted=False).first()
user = find_user(get_jwt_identity()) user = find_user(get_jwt_identity())
if not repository: if not repository:
return json_error("Could not find the repository.", REPOSITORY_NOT_FOUND), 404 return json_error("Could not find the repository.", errors.REPOSITORY_NOT_FOUND), 404
if user != repository.owner: if user != repository.owner:
return json_error("You are not authorized.", USER_NOT_AUTHORIZED), 403 return json_error("You are not authorized.", errors.USER_NOT_AUTHORIZED), 403
authorization = Authorization.query.filter_by(rid=rid, email=email).first() authorization = Authorization.query.filter_by(rid=rid, email=email).first()
if not authorization: if not authorization:
return json_error("Could not find the authorization", AUTHORIZATION_NOT_FOUND), 404 return json_error("Could not find the authorization", errors.AUTHORIZATION_NOT_FOUND), 404
if request.method == "DELETE": if request.method == "DELETE":
ext.session.delete(authorization) ext.session.delete(authorization)
ext.session.commit() ext.session.commit()

View file

@ -4,7 +4,7 @@ from nest_backend.gestione import repository_auth, json_error, json_success, fin
from nest_backend.database import ext, User, Authorization, Repository from nest_backend.database import ext, User, Authorization, Repository
from flask_cors import cross_origin from flask_cors import cross_origin
from nest_backend.gestione import hashtag_validator from nest_backend.gestione import hashtag_validator
from nest_backend.errors import * import nest_backend.errors as errors
@cross_origin() @cross_origin()
@ -114,24 +114,24 @@ def page_repository_authorizations(rid):
repository = Repository.query.filter_by(id=rid, is_deleted=False).first() repository = Repository.query.filter_by(id=rid, is_deleted=False).first()
if not repository: if not repository:
return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404 return json_error("Could not find repository", errors.REPOSITORY_NOT_FOUND), 404
user = find_user(get_jwt_identity()) user = find_user(get_jwt_identity())
if user.email != repository.owner_id: if user.email != repository.owner_id:
return json_error("You are not authorized.", REPOSITORY_NOT_OWNER), 403 return json_error("You are not authorized.", errors.REPOSITORY_NOT_OWNER), 403
if request.method == "GET": if request.method == "GET":
try: try:
return json_success([a.to_json() for a in repository.authorizations]) return json_success([a.to_json() for a in repository.authorizations])
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), errors.GENERIC_UFO), 400
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.", errors.GENERIC_NO_JSON), 400
if not request.json.get("email"): if not request.json.get("email"):
return json_error("Missing user email.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing user email.", errors.GENERIC_MISSING_FIELDS), 400
target = User.query.filter_by(email=request.json.get('email')).first() target = User.query.filter_by(email=request.json.get('email')).first()
if not target: if not target:
return json_error("User could not be located", USER_NOT_FOUND), 400 return json_error("User could not be located", errors.USER_NOT_FOUND), 400
if target == user: if target == user:
return json_error("Owner cannot be a spectator", GENERIC_ALREADY_EXISTS), 406 return json_error("Owner cannot be a spectator", errors.GENERIC_ALREADY_EXISTS), 406
if request.method == "POST": if request.method == "POST":
authorization = Authorization(email=request.json.get('email'), rid=repository.id) authorization = Authorization(email=request.json.get('email'), rid=repository.id)
ext.session.add(authorization) ext.session.add(authorization)

View file

@ -3,7 +3,7 @@ from nest_backend.database import *
from flask_jwt_extended import jwt_required, get_jwt_identity from flask_jwt_extended import jwt_required, get_jwt_identity
from nest_backend.gestione import * from nest_backend.gestione import *
from flask_cors import cross_origin from flask_cors import cross_origin
from nest_backend.errors import * import nest_backend.errors as errors
@cross_origin() @cross_origin()
@ -107,25 +107,25 @@ def page_condition(cid):
condition = Condition.query.filter_by(id=cid).first() condition = Condition.query.filter_by(id=cid).first()
user = find_user(get_jwt_identity()) user = find_user(get_jwt_identity())
if not condition or condition.repository.is_deleted: if not condition or condition.repository.is_deleted:
return json_error("Could not find the condition.", CONDITION_NOT_FOUND), 404 return json_error("Could not find the condition.", errors.CONDITION_NOT_FOUND), 404
if condition.repository not in [a.repository for a in user.authorizations] + user.owner_of and not user.isAdmin: if condition.repository not in [a.repository for a in user.authorizations] + user.owner_of and not user.isAdmin:
return json_error("You lack the authorization to proceed, pal.", USER_NOT_AUTHORIZED), 403 return json_error("You lack the authorization to proceed, pal.", errors.USER_NOT_AUTHORIZED), 403
if request.method == "GET": if request.method == "GET":
return json_success(condition.to_json()), 200 return json_success(condition.to_json()), 200
if condition.repository not in user.owner_of and not user.isAdmin: if condition.repository not in user.owner_of and not user.isAdmin:
return json_error("You lack the authorization to proceed, pal.", USER_NOT_AUTHORIZED), 403 return json_error("You lack the authorization to proceed, pal.", errors.USER_NOT_AUTHORIZED), 403
if request.method == "PATCH": if request.method == "PATCH":
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.", errors.GENERIC_NO_JSON), 400
if (type_ := request.json.get("type")) is not None: if (type_ := request.json.get("type")) is not None:
try: try:
type_ = ConditionType(type_) type_ = ConditionType(type_)
condition.type = type_ condition.type = type_
except KeyError: except KeyError:
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400 return json_error("Unknown `type` specified.", errors.GENERIC_ENUM_INVALID), 400
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), errors.GENERIC_UFO), 400
if content := request.json.get("content"): if content := request.json.get("content"):
condition.content = content condition.content = content

View file

@ -5,7 +5,7 @@ from nest_backend.gestione import repository_auth, json_error, json_success, Con
from nest_backend.database import ext from nest_backend.database import ext
from flask_cors import cross_origin from flask_cors import cross_origin
from nest_backend.gestione import hashtag_validator from nest_backend.gestione import hashtag_validator
from nest_backend.errors import * import nest_backend.errors as errors
@cross_origin() @cross_origin()
@ -75,34 +75,34 @@ def page_repository_conditions(rid):
repository = Repository.query.filter_by(id=rid, is_deleted=False).first() repository = Repository.query.filter_by(id=rid, is_deleted=False).first()
if not repository: if not repository:
return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404 return json_error("Could not find repository", errors.REPOSITORY_NOT_FOUND), 404
user = find_user(get_jwt_identity()) user = find_user(get_jwt_identity())
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), errors.GENERIC_UFO), 400
if user.email != repository.owner_id: if user.email != repository.owner_id:
return json_error("You are not authorized.", REPOSITORY_NOT_OWNER), 403 return json_error("You are not authorized.", errors.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.", errors.GENERIC_NO_JSON), 400
if (type_ := request.json.get("type")) is None: if (type_ := request.json.get("type")) is None:
return json_error("Missing `type` parameter.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing `type` parameter.", errors.GENERIC_MISSING_FIELDS), 400
try: try:
type_ = ConditionType(type_) type_ = ConditionType(type_)
except KeyError: except KeyError:
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400 return json_error("Unknown `type` specified.", errors.GENERIC_ENUM_INVALID), 400
except Exception as e: except Exception as e:
return json_error("Unknown error: " + str(e)), 400 return json_error("Unknown error: " + str(e)), 400
if not (content := request.json.get("content")): if not (content := request.json.get("content")):
return json_error("Missing `content` parameter.", GENERIC_MISSING_FIELDS), 400 return json_error("Missing `content` parameter.", errors.GENERIC_MISSING_FIELDS), 400
if type_ == ConditionType.hashtag: if type_ == ConditionType.hashtag:
content = hashtag_validator(content) content = hashtag_validator(content)
condition = Condition(content=content, type=type_, repository_id=rid) condition = Condition(content=content, type=type_, repository_id=rid)

Some files were not shown because too many files have changed in this diff Show more