1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-21 20:44:18 +00:00

📔 Complete the structure of the final report

This commit is contained in:
Steffo 2021-05-28 01:08:35 +02:00
parent 2c6f343a3e
commit 6206ce2e26
Signed by: steffo
GPG key ID: 6965406171929D01
89 changed files with 2062 additions and 42619 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

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

View file

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

View file

@ -1,11 +0,0 @@
Documenti ricevuti dal cliente
==============================
Questi sono i documenti che ci sono stati forniti dal prof. Marcello Missiroli in veste di **cliente** del progetto.
- :download:`Descrizione iniziale del prodotto <0-initial.pdf>`
- :download:`Sprint 0 <0-sprint-requirements.pdf>`
- :download:`Sprint 1 <1-sprint-requirements.pdf>`
- :download:`Sprint 2 <2-sprint-requirements.pdf>`
- :download:`Sprint 3 <3-sprint-requirements.pdf>`
- :download:`Report finale <3-report.pdf>`

File diff suppressed because it is too large Load diff

View file

@ -1,20 +0,0 @@
Statistiche di Gitinspector
===========================
Queste statistiche sono state generate dal prof. Missiroli con `Gitinspector <https://github.com/ejwa/gitinspector>`_.
.. note::
Le statistiche probabilmente sono molto inaccurate, in quanto Gitinspector sembra tenere conto anche delle directory
contenenti file vendored, come ``docs/build``.
.. todo::
Aggiungere le statistiche degli sprint mancanti!
- :download:`Sprint 0 <0-stats.html>`
- :download:`Sprint 1 <1-stats.html>`
- :download:`Sprint 2 (codice) <2-stats.html>`
- :download:`Sprint 2 (documentazione) <2D-stats.html>`
- :download:`Sprint 3 (codice) <3-stats.html>`
- :download:`Sprint 3 (documentazione) <3D-stats.html>`

View file

@ -1,32 +0,0 @@
Statistiche
===========
Burndown chart
--------------
.. todo::
Inserire qui la burndown chart del progetto terminato!
Gitinspector
------------
Queste statistiche sono state generate dal prof. Marcello Missiroli con
`Gitinspector <https://github.com/ejwa/gitinspector>`_ al termine di ogni Sprint.
.. note::
Le statistiche probabilmente sono molto inaccurate, in quanto Gitinspector sembra tenere conto anche delle directory
contenenti file vendored, come ``docs/build``.
.. todo::
Aggiungere le statistiche degli sprint mancanti!
- :download:`Sprint 0 <0-stats.html>`
- :download:`Sprint 1 <1-stats.html>`
- :download:`Sprint 2 (codice) <2-stats.html>`
- :download:`Sprint 2 (documentazione) <2D-stats.html>`
- :download:`Sprint 3 (codice) <3-stats.html>`
- :download:`Sprint 3 (documentazione) <3D-stats.html>`

View file

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

View file

@ -4,42 +4,46 @@ N.E.S.T.
Benvenuto alla documentazione di N.E.S.T.!
.. toctree::
:maxdepth: 2
:caption: Manuale utente
:maxdepth: 2
:caption: Manuale utente
about/index
installation/index
guide/about
guide/installation
.. toctree::
:maxdepth: 2
:caption: Guida sviluppatore
:maxdepth: 2
:caption: Relazione sul progetto
meta/index
development/goals
development/process
development/tools
development/sprint0/index
development/sprint1/index
development/sprint2/index
development/sprint3/index
development/artifacts
development/conclusions
development/suggestions
.. toctree::
:maxdepth: 2
:caption: Compendio del progetto
:caption: Documentazione tecnica
development/client/index
development/stats/index
development/log
development/tools
code/meta/index
code/backend/index
code/crawler/index
code/frontend/index
.. toctree::
:caption: Documentazione autogenerata
Cose rimaste da fare
--------------------
backend/index
crawler/index
frontend/index
.. todolist::
Collegamenti utili
==================
Altri collegamenti
------------------
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View file

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

View file

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

View file

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

View file

@ -1,221 +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>nest_crawler - Crawler in Python &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="nest_frontend - Interfaccia utente in React" href="../frontend/index.html" />
<link rel="prev" title="nest_backend - Web API in Python" href="../backend/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Guida sviluppatore</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/crawler/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="module-nest_crawler">
<span id="nest-crawler-crawler-in-python"></span><h1><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python<a class="headerlink" href="#module-nest_crawler" title="Link a questa intestazione"></a></h1>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../frontend/index.html" class="btn btn-neutral float-right" title="nest_frontend - Interfaccia utente in React" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../backend/index.html" class="btn btn-neutral float-left" title="nest_backend - Web API in Python" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -1,237 +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>Documenti ricevuti dal cliente &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="Statistiche" href="../stats/index.html" />
<link rel="prev" title="Meta-documentazione" href="../../meta/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Guida sviluppatore</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stats/index.html">Statistiche</a></li>
<li class="toctree-l1"><a class="reference internal" href="../log.html">Registro attività</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Documenti ricevuti dal cliente</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/development/client/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="documenti-ricevuti-dal-cliente">
<h1>Documenti ricevuti dal cliente<a class="headerlink" href="#documenti-ricevuti-dal-cliente" title="Link a questa intestazione"></a></h1>
<p>Questi sono i documenti che ci sono stati forniti dal prof. Marcello Missiroli in veste di <strong>cliente</strong> del progetto.</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/df66d1639f4dab62e4bb25a03b3731e0/0-initial.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Descrizione</span> <span class="pre">iniziale</span> <span class="pre">del</span> <span class="pre">prodotto</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/48457f6bb878a8cc02104058e6103abb/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/cd325bb944d53a976b7424fc4fd27bda/1-sprint-requirements.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">1</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/9f07f2875fec51ffcd77afa7ffc2175f/2-sprint-requirements.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/87bd73097f2de8396e5f12784148db16/3-sprint-requirements.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">3</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/b0efa036897598f4e376c332bec21102/3-report.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Report</span> <span class="pre">finale</span></code></a></p></li>
</ul>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../stats/index.html" class="btn btn-neutral float-right" title="Statistiche" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../../meta/index.html" class="btn btn-neutral float-left" title="Meta-documentazione" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -1,238 +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>Statistiche di Gitinspector &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="../../about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Guida sviluppatore</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../client/index.html">Feedback ricevuto dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Statistiche di Gitinspector</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/development/statistics/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="statistiche-di-gitinspector">
<h1>Statistiche di Gitinspector<a class="headerlink" href="#statistiche-di-gitinspector" title="Link a questa intestazione"></a></h1>
<p>Queste statistiche sono state generate dal prof. Missiroli con <a class="reference external" href="https://github.com/ejwa/gitinspector">Gitinspector</a>.</p>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Le statistiche probabilmente sono molto inaccurate, in quanto Gitinspector sembra tenere conto anche delle directory
contenenti file vendored, come <code class="docutils literal notranslate"><span class="pre">docs/build</span></code>.</p>
</div>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Aggiungere le statistiche degli sprint mancanti!</p>
</div>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/4831934cb757201fe067c48df43a74ea/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/8305c312d79edd3a41456dc3da1e0045/1-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">1</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/802f4a69bcab50834f865f69f714efe6/2-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span> <span class="pre">(codice)</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/ad524590ef981c41310736536fcd2a4e/2D-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span> <span class="pre">(documentazione)</span></code></a></p></li>
<li><p><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">3</span> <span class="pre">(codice)</span></code></p></li>
<li><p><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">3</span> <span class="pre">(documentazione)</span></code></p></li>
</ul>
</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

@ -1,261 +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>Statistiche &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/translations.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../../genindex.html" />
<link rel="search" title="Cerca" href="../../search.html" />
<link rel="next" title="Registro attività" href="../log.html" />
<link rel="prev" title="Documenti ricevuti dal cliente" href="../client/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Guida sviluppatore</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../client/index.html">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Statistiche</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#burndown-chart">Burndown chart</a></li>
<li class="toctree-l2"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../log.html">Registro attività</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools.html">Strumenti utilizzati</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Statistiche</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/development/stats/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="statistiche">
<h1>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h1>
<div class="section" id="burndown-chart">
<h2>Burndown chart<a class="headerlink" href="#burndown-chart" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la burndown chart del progetto terminato!</p>
</div>
</div>
<div class="section" id="gitinspector">
<h2>Gitinspector<a class="headerlink" href="#gitinspector" title="Link a questa intestazione"></a></h2>
<p>Queste statistiche sono state generate dal prof. Marcello Missiroli con
<a class="reference external" href="https://github.com/ejwa/gitinspector">Gitinspector</a> al termine di ogni Sprint.</p>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Le statistiche probabilmente sono molto inaccurate, in quanto Gitinspector sembra tenere conto anche delle directory
contenenti file vendored, come <code class="docutils literal notranslate"><span class="pre">docs/build</span></code>.</p>
</div>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Aggiungere le statistiche degli sprint mancanti!</p>
</div>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/cc3ed6448c65c54a6e3382427b715150/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/80aefca42623a1197bc9ca4609efd23d/1-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">1</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/affcb0b1c0baa178e323ddea9edec3b5/2-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span> <span class="pre">(codice)</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/4d0db5ecfa1dc71c9c67f8ec40e90078/2D-stats.html"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span> <span class="pre">(documentazione)</span></code></a></p></li>
<li><p><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">3</span> <span class="pre">(codice)</span></code></p></li>
<li><p><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">3</span> <span class="pre">(documentazione)</span></code></p></li>
</ul>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../log.html" class="btn btn-neutral float-right" title="Registro attività" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../client/index.html" class="btn btn-neutral float-left" title="Documenti ricevuti dal cliente" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -39,8 +39,8 @@
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="next" title="nest_backend - Web API in Python" href="../backend/index.html" />
<link rel="prev" title="Registro attività" href="log.html" />
<link rel="next" title="Sprint 0: 04 Apr - 18 Apr" href="sprint0/index.html" />
<link rel="prev" title="Processo di sviluppo" href="process.html" />
</head>
<body class="wy-body-for-nav">
@ -87,25 +87,27 @@
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installazione</a></li>
<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">Guida sviluppatore</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="client/index.html">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="stats/index.html">Statistiche di Gitinspector</a></li>
<li class="toctree-l1"><a class="reference internal" href="log.html">Registro attività</a></li>
<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 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="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="suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
<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>
@ -220,8 +222,8 @@ il miglioramento della qualità del codice del progetto.</p>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../backend/index.html" class="btn btn-neutral float-right" title="nest_backend - Web API in Python" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="log.html" class="btn btn-neutral float-left" title="Registro attività" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="sprint0/index.html" class="btn btn-neutral float-right" title="Sprint 0: 04 Apr - 18 Apr" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="process.html" class="btn btn-neutral float-left" title="Processo di sviluppo" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -1,219 +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>nest_frontend - Interfaccia utente in React &mdash; N.E.S.T. 0.1.0 documentazione</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Indice" href="../genindex.html" />
<link rel="search" title="Cerca" href="../search.html" />
<link rel="prev" title="nest_crawler - Crawler in Python" href="../crawler/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #3B7097" >
<a href="../index.html" class="icon icon-home"> N.E.S.T.
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Guida sviluppatore</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="../crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">N.E.S.T.</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/frontend/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="nest-frontend-interfaccia-utente-in-react">
<h1><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React<a class="headerlink" href="#nest-frontend-interfaccia-utente-in-react" title="Link a questa intestazione"></a></h1>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../crawler/index.html" class="btn btn-neutral float-left" title="nest_crawler - Crawler in Python" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021, Gruppo 2.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -85,25 +85,27 @@
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installazione</a></li>
<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">Guida sviluppatore</span></p>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="development/client/index.html">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/stats/index.html">Statistiche</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/log.html">Registro attività</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
<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>
@ -197,26 +199,26 @@
<h2 id="_">_</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.__init__">__init__() (nest_backend.database.tables.Alert metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.__init__">__init__() (nest_backend.database.tables.Alert metodo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Authorization.__init__">(nest_backend.database.tables.Authorization metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.__init__">(nest_backend.database.tables.Authorization metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Composed.__init__">(nest_backend.database.tables.Composed metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed.__init__">(nest_backend.database.tables.Composed metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.__init__">(nest_backend.database.tables.Condition metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.__init__">(nest_backend.database.tables.Condition metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Contains.__init__">(nest_backend.database.tables.Contains metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains.__init__">(nest_backend.database.tables.Contains metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.MadeOf.__init__">(nest_backend.database.tables.MadeOf metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.__init__">(nest_backend.database.tables.MadeOf metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Notification.__init__">(nest_backend.database.tables.Notification metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification.__init__">(nest_backend.database.tables.Notification metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.__init__">(nest_backend.database.tables.Repository metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.__init__">(nest_backend.database.tables.Repository metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.__init__">(nest_backend.database.tables.Tweet metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.__init__">(nest_backend.database.tables.Tweet metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.User.__init__">(nest_backend.database.tables.User metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.__init__">(nest_backend.database.tables.User metodo)</a>
</li>
</ul></li>
</ul></td>
@ -225,42 +227,42 @@
<h2 id="A">A</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.admin_or_403">admin_or_403() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.admin_or_403">admin_or_403() (nel modulo nest_backend.gestione)</a>
</li>
<li><a href="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><a href="backend/index.html#nest_backend.database.tables.Alert">Alert (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert">Alert (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
<li><a href="backend/index.html#nest_backend.database.tables.Notification.alert">(nest_backend.database.tables.Notification attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification.alert">(nest_backend.database.tables.Notification attributo)</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.Notification.alert_id">alert_id (nest_backend.database.tables.Notification attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification.alert_id">alert_id (nest_backend.database.tables.Notification attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.alerts">alerts (nest_backend.database.tables.Condition attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.alerts">alerts (nest_backend.database.tables.Condition attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.alerts">(nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.alerts">(nest_backend.database.tables.Repository attributo)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.ConditionMode.all_and">all_and (nest_backend.database.tables.ConditionMode attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionMode.all_and">all_and (nest_backend.database.tables.ConditionMode attributo)</a>
</li>
<li><a href="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><a href="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="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>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Authorization">Authorization (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization">Authorization (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
<li><a href="backend/index.html#nest_backend.database.tables.User.authorizations">(nest_backend.database.tables.User attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.authorizations">(nest_backend.database.tables.User attributo)</a>
</li>
</ul></li>
</ul></td>
@ -269,45 +271,45 @@
<h2 id="C">C</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Contains.cid">cid (nest_backend.database.tables.Contains attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains.cid">cid (nest_backend.database.tables.Contains attributo)</a>
<ul>
<li><a href="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>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.Composed">Composed (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed">Composed (classe in nest_backend.database.tables)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Condition">Condition (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition">Condition (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
<li><a href="backend/index.html#nest_backend.database.tables.MadeOf.condition">(nest_backend.database.tables.MadeOf attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf.condition">(nest_backend.database.tables.MadeOf attributo)</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.ConditionMode">ConditionMode (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionMode">ConditionMode (classe in nest_backend.database.tables)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.conditions">conditions (nest_backend.database.tables.Alert attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.conditions">conditions (nest_backend.database.tables.Alert attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.conditions">(nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.conditions">(nest_backend.database.tables.Repository attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.conditions">(nest_backend.database.tables.Tweet attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.conditions">(nest_backend.database.tables.Tweet attributo)</a>
</li>
</ul></li>
<li><a href="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><a href="backend/index.html#nest_backend.database.tables.Contains">Contains (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains">Contains (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.content">(nest_backend.database.tables.Tweet attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.content">(nest_backend.database.tables.Tweet attributo)</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.ConditionType.coordinates">coordinates (nest_backend.database.tables.ConditionType attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.coordinates">coordinates (nest_backend.database.tables.ConditionType attributo)</a>
</li>
</ul></td>
</tr></table>
@ -315,22 +317,22 @@
<h2 id="E">E</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Authorization.email">email (nest_backend.database.tables.Authorization attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.email">email (nest_backend.database.tables.Authorization attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.User.email">(nest_backend.database.tables.User attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.email">(nest_backend.database.tables.User attributo)</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.end">end (nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.end">end (nest_backend.database.tables.Repository attributo)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.error_handler">error_handler() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.error_handler">error_handler() (nel modulo nest_backend.gestione)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.evaluation_mode">evaluation_mode (nest_backend.database.tables.Alert attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.evaluation_mode">evaluation_mode (nest_backend.database.tables.Alert attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.evaluation_mode">(nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.evaluation_mode">(nest_backend.database.tables.Repository attributo)</a>
</li>
</ul></li>
</ul></td>
@ -339,7 +341,7 @@
<h2 id="F">F</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.find_user">find_user() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.find_user">find_user() (nel modulo nest_backend.gestione)</a>
</li>
</ul></td>
</tr></table>
@ -347,7 +349,7 @@
<h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.gen_password">gen_password() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.gen_password">gen_password() (nel modulo nest_backend.gestione)</a>
</li>
</ul></td>
</tr></table>
@ -355,11 +357,11 @@
<h2 id="H">H</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.ConditionType.hashtag">hashtag (nest_backend.database.tables.ConditionType attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.hashtag">hashtag (nest_backend.database.tables.ConditionType attributo)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.hashtag_validator">hashtag_validator() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.hashtag_validator">hashtag_validator() (nel modulo nest_backend.gestione)</a>
</li>
</ul></td>
</tr></table>
@ -367,27 +369,27 @@
<h2 id="I">I</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.id">id (nest_backend.database.tables.Alert attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.id">id (nest_backend.database.tables.Alert attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.id">(nest_backend.database.tables.Condition attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.id">(nest_backend.database.tables.Condition attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Notification.id">(nest_backend.database.tables.Notification attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification.id">(nest_backend.database.tables.Notification attributo)</a>
</li>
<li><a href="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>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="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><a href="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><a href="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><a href="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="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>
</ul></td>
</tr></table>
@ -395,13 +397,13 @@
<h2 id="J">J</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.json_error">json_error() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.json_error">json_error() (nel modulo nest_backend.gestione)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.json_request_authorizer">json_request_authorizer() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.json_request_authorizer">json_request_authorizer() (nel modulo nest_backend.gestione)</a>
</li>
<li><a href="backend/index.html#nest_backend.gestione.json_success">json_success() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.json_success">json_success() (nel modulo nest_backend.gestione)</a>
</li>
</ul></td>
</tr></table>
@ -409,14 +411,14 @@
<h2 id="L">L</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.limit">limit (nest_backend.database.tables.Alert attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.limit">limit (nest_backend.database.tables.Alert attributo)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.ConditionType.location">location (nest_backend.database.tables.ConditionType attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.location">location (nest_backend.database.tables.ConditionType attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.location">(nest_backend.database.tables.Tweet attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.location">(nest_backend.database.tables.Tweet attributo)</a>
</li>
</ul></li>
</ul></td>
@ -425,23 +427,23 @@
<h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.MadeOf">MadeOf (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.MadeOf">MadeOf (classe in nest_backend.database.tables)</a>
</li>
<li>
modulo
<ul>
<li><a href="backend/index.html#module-nest_backend">nest_backend</a>
<li><a href="code/backend/index.html#module-nest_backend">nest_backend</a>
</li>
<li><a href="backend/index.html#module-nest_backend.database">nest_backend.database</a>
<li><a href="code/backend/index.html#module-nest_backend.database">nest_backend.database</a>
</li>
<li><a href="backend/index.html#module-nest_backend.database.base">nest_backend.database.base</a>
<li><a href="code/backend/index.html#module-nest_backend.database.base">nest_backend.database.base</a>
</li>
<li><a href="backend/index.html#module-nest_backend.database.tables">nest_backend.database.tables</a>
<li><a href="code/backend/index.html#module-nest_backend.database.tables">nest_backend.database.tables</a>
</li>
<li><a href="backend/index.html#module-nest_backend.gestione">nest_backend.gestione</a>
<li><a href="code/backend/index.html#module-nest_backend.gestione">nest_backend.gestione</a>
</li>
<li><a href="crawler/index.html#module-nest_crawler">nest_crawler</a>
<li><a href="code/crawler/index.html#module-nest_crawler">nest_crawler</a>
</li>
</ul></li>
</ul></td>
@ -450,31 +452,31 @@
<h2 id="N">N</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.name">name (nest_backend.database.tables.Alert attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.name">name (nest_backend.database.tables.Alert attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.name">(nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.name">(nest_backend.database.tables.Repository attributo)</a>
</li>
</ul></li>
<li>
nest_backend
<ul>
<li><a href="backend/index.html#module-nest_backend">modulo</a>
<li><a href="code/backend/index.html#module-nest_backend">modulo</a>
</li>
</ul></li>
<li>
nest_backend.database
<ul>
<li><a href="backend/index.html#module-nest_backend.database">modulo</a>
<li><a href="code/backend/index.html#module-nest_backend.database">modulo</a>
</li>
</ul></li>
<li>
nest_backend.database.base
<ul>
<li><a href="backend/index.html#module-nest_backend.database.base">modulo</a>
<li><a href="code/backend/index.html#module-nest_backend.database.base">modulo</a>
</li>
</ul></li>
</ul></td>
@ -483,26 +485,26 @@
nest_backend.database.tables
<ul>
<li><a href="backend/index.html#module-nest_backend.database.tables">modulo</a>
<li><a href="code/backend/index.html#module-nest_backend.database.tables">modulo</a>
</li>
</ul></li>
<li>
nest_backend.gestione
<ul>
<li><a href="backend/index.html#module-nest_backend.gestione">modulo</a>
<li><a href="code/backend/index.html#module-nest_backend.gestione">modulo</a>
</li>
</ul></li>
<li>
nest_crawler
<ul>
<li><a href="crawler/index.html#module-nest_crawler">modulo</a>
<li><a href="code/crawler/index.html#module-nest_crawler">modulo</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.Notification">Notification (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification">Notification (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
</ul></td>
</tr></table>
@ -510,17 +512,17 @@
<h2 id="O">O</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.OperationType">OperationType (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.OperationType">OperationType (classe in nest_backend.database.tables)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Notification.ora">ora (nest_backend.database.tables.Notification attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification.ora">ora (nest_backend.database.tables.Notification attributo)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.owner">owner (nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.owner">owner (nest_backend.database.tables.Repository attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.owner_id">owner_id (nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.owner_id">owner_id (nest_backend.database.tables.Repository attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.User.owner_of">owner_of (nest_backend.database.tables.User attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.owner_of">owner_of (nest_backend.database.tables.User attributo)</a>
</li>
</ul></td>
</tr></table>
@ -528,19 +530,19 @@
<h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.User.password">password (nest_backend.database.tables.User attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.password">password (nest_backend.database.tables.User attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.ConditionType.place">place (nest_backend.database.tables.ConditionType attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.place">place (nest_backend.database.tables.ConditionType attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.place">(nest_backend.database.tables.Tweet attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.place">(nest_backend.database.tables.Tweet attributo)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.post_time">post_time (nest_backend.database.tables.Tweet attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.post_time">post_time (nest_backend.database.tables.Tweet attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.poster">poster (nest_backend.database.tables.Tweet attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.poster">poster (nest_backend.database.tables.Tweet attributo)</a>
</li>
</ul></td>
</tr></table>
@ -548,34 +550,34 @@
<h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="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><a href="backend/index.html#nest_backend.database.tables.Repository">Repository (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository">Repository (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
<li><a href="backend/index.html#nest_backend.database.tables.Authorization.repository">(nest_backend.database.tables.Authorization attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.repository">(nest_backend.database.tables.Authorization attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Composed.repository">(nest_backend.database.tables.Composed attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed.repository">(nest_backend.database.tables.Composed attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.repository">(nest_backend.database.tables.Condition attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.repository">(nest_backend.database.tables.Condition attributo)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.gestione.repository_auth">repository_auth() (nel modulo nest_backend.gestione)</a>
<li><a href="code/backend/index.html#nest_backend.gestione.repository_auth">repository_auth() (nel modulo nest_backend.gestione)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.repository_id">repository_id (nest_backend.database.tables.Alert attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.repository_id">repository_id (nest_backend.database.tables.Alert attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.repository_id">(nest_backend.database.tables.Condition attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.repository_id">(nest_backend.database.tables.Condition attributo)</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.Authorization.rid">rid (nest_backend.database.tables.Authorization attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.rid">rid (nest_backend.database.tables.Authorization attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Composed.rid">(nest_backend.database.tables.Composed attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Composed.rid">(nest_backend.database.tables.Composed attributo)</a>
</li>
</ul></li>
</ul></td>
@ -584,17 +586,17 @@
<h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="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>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Contains.snowflake">(nest_backend.database.tables.Contains attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains.snowflake">(nest_backend.database.tables.Contains attributo)</a>
</li>
<li><a href="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>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="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>
</ul></td>
</tr></table>
@ -602,41 +604,41 @@
<h2 id="T">T</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.ConditionType.time">time (nest_backend.database.tables.ConditionType attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.ConditionType.time">time (nest_backend.database.tables.ConditionType attributo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.to_json">to_json() (nest_backend.database.tables.Alert metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.to_json">to_json() (nest_backend.database.tables.Alert metodo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Authorization.to_json">(nest_backend.database.tables.Authorization metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Authorization.to_json">(nest_backend.database.tables.Authorization metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.to_json">(nest_backend.database.tables.Condition metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.to_json">(nest_backend.database.tables.Condition metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Notification.to_json">(nest_backend.database.tables.Notification metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Notification.to_json">(nest_backend.database.tables.Notification metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.to_json">(nest_backend.database.tables.Repository metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.to_json">(nest_backend.database.tables.Repository metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.to_json">(nest_backend.database.tables.Tweet metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet.to_json">(nest_backend.database.tables.Tweet metodo)</a>
</li>
<li><a href="backend/index.html#nest_backend.database.tables.User.to_json">(nest_backend.database.tables.User metodo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.User.to_json">(nest_backend.database.tables.User metodo)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Tweet">Tweet (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Tweet">Tweet (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
<li><a href="backend/index.html#nest_backend.database.tables.Contains.tweet">(nest_backend.database.tables.Contains attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Contains.tweet">(nest_backend.database.tables.Contains attributo)</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.tweets">tweets (nest_backend.database.tables.Condition attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.tweets">tweets (nest_backend.database.tables.Condition attributo)</a>
<ul>
<li><a href="backend/index.html#nest_backend.database.tables.Repository.tweets">(nest_backend.database.tables.Repository attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Repository.tweets">(nest_backend.database.tables.Repository attributo)</a>
</li>
</ul></li>
<li><a href="backend/index.html#nest_backend.database.tables.Condition.type">type (nest_backend.database.tables.Condition attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Condition.type">type (nest_backend.database.tables.Condition attributo)</a>
</li>
</ul></td>
</tr></table>
@ -644,17 +646,17 @@
<h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.User">User (classe in nest_backend.database.tables)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.User">User (classe in nest_backend.database.tables)</a>
</li>
<li><a href="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>
<li><a href="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>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="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>
</ul></td>
</tr></table>
@ -662,7 +664,7 @@
<h2 id="W">W</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="backend/index.html#nest_backend.database.tables.Alert.window_size">window_size (nest_backend.database.tables.Alert attributo)</a>
<li><a href="code/backend/index.html#nest_backend.database.tables.Alert.window_size">window_size (nest_backend.database.tables.Alert attributo)</a>
</li>
</ul></td>
</tr></table>

View file

@ -39,7 +39,7 @@
<link rel="index" title="Indice" href="genindex.html" />
<link rel="search" title="Cerca" href="search.html" />
<link rel="next" title="Il progetto" href="about/index.html" />
<link rel="next" title="Il progetto in breve" href="guide/about.html" />
</head>
<body class="wy-body-for-nav">
@ -86,25 +86,27 @@
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installazione</a></li>
<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">Guida sviluppatore</span></p>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="development/client/index.html">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/stats/index.html">Statistiche</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/log.html">Registro attività</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
<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>
@ -178,83 +180,291 @@
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="about/index.html">Il progetto</a><ul>
<li class="toctree-l2"><a class="reference internal" href="about/index.html#suddivisione-in-moduli">Suddivisione in moduli</a></li>
<li class="toctree-l2"><a class="reference internal" href="about/index.html#screenshots">Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/about.html">Il progetto in breve</a><ul>
<li class="toctree-l2"><a class="reference internal" href="guide/about.html#suddivisione-in-moduli">Suddivisione in moduli</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/about.html#screenshots">Screenshots</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installazione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#prerequisiti">Prerequisiti</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#creare-un-nuovo-utente">Creare un nuovo utente</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#scaricare-il-codice-sorgente">Scaricare il codice sorgente</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#creare-il-database">Creare il database</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#creare-un-file-di-configurazione-per-il-backend">Creare un file di configurazione per il backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#installare-le-dipendenze-python">Installare le dipendenze Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#installare-le-dipendenze-nodejs">Installare le dipendenze NodeJS</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#creare-un-servizio-systemd-per-il-backend">Creare un servizio SystemD per il backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#compilare-il-frontend">Compilare il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#creare-un-servizio-systemd-per-il-frontend">Creare un servizio SystemD per il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#creare-un-servizio-systemd-per-il-crawler">Creare un servizio SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation/index.html#configurare-apache-come-reverse-proxy">Configurare Apache come reverse proxy</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/installation.html">Installazione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#prerequisiti">Prerequisiti</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-nuovo-utente">Creare un nuovo utente</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#scaricare-il-codice-sorgente">Scaricare il codice sorgente</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-il-database">Creare il database</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-file-di-configurazione-per-il-backend">Creare un file di configurazione per il backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#installare-le-dipendenze-python">Installare le dipendenze Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#installare-le-dipendenze-nodejs">Installare le dipendenze NodeJS</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-servizio-systemd-per-il-backend">Creare un servizio SystemD per il backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#compilare-il-frontend">Compilare il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-servizio-systemd-per-il-frontend">Creare un servizio SystemD per il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-servizio-systemd-per-il-crawler">Creare un servizio SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-timer-systemd-per-il-crawler">Creare un timer SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#configurare-apache-come-reverse-proxy">Configurare Apache come reverse proxy</a></li>
</ul>
</li>
</ul>
</div>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Guida sviluppatore</span></p>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="meta/index.html">Meta-documentazione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="meta/index.html#compilazione-con-intellij-idea">Compilazione con IntelliJ IDEA</a></li>
<li class="toctree-l2"><a class="reference internal" href="meta/index.html#compilazione-con-gnu-make">Compilazione con GNU Make</a></li>
<li class="toctree-l2"><a class="reference internal" href="meta/index.html#compilazione-con-windows-powershell">Compilazione con Windows Powershell</a></li>
</ul>
</li>
</ul>
</div>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="development/client/index.html">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/stats/index.html">Statistiche</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/stats/index.html#burndown-chart">Burndown chart</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/stats/index.html#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/log.html">Registro attività</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-0-04-apr-18-apr">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-1-19-apr-02-mag">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-2-03-mag-16-mag">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-3-17-mag-30-mag">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/goals.html">Obiettivo del progetto</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#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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a><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#goal">Goal</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#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#statistiche">Statistiche</a></li>
</ul>
</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-l2"><a class="reference internal" href="development/sprint1/index.html#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#sprint-review">Sprint review</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#sprint-review">Sprint review</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#retrospettiva-finale">Retrospettiva finale</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#schermata-finale-di-sonarqube">Schermata finale di SonarQube</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/artifacts.html">Artefatti</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/artifacts.html#demo">Demo</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
</div>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<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><ul>
<li class="toctree-l2"><a class="reference internal" href="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="backend/index.html#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a><ul>
<li class="toctree-l3"><a class="reference internal" href="backend/index.html#module-nest_backend.database.base"><code class="docutils literal notranslate"><span class="pre">.base</span></code> - Estensione flask</a></li>
<li class="toctree-l3"><a class="reference internal" href="backend/index.html#module-nest_backend.database.tables"><code class="docutils literal notranslate"><span class="pre">.tables</span></code> - Tabelle</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/meta/index.html">Meta-documentazione</a><ul>
<li class="toctree-l2"><a class="reference internal" href="code/meta/index.html#compilazione-con-intellij-idea">Compilazione con IntelliJ IDEA</a></li>
<li class="toctree-l2"><a class="reference internal" href="code/meta/index.html#compilazione-con-gnu-make">Compilazione con GNU Make</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>
</li>
<li class="toctree-l2"><a class="reference internal" href="backend/index.html#routes-percorsi-api"><code class="docutils literal notranslate"><span class="pre">.routes</span></code> - Percorsi API</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-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-l3"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database.base"><code class="docutils literal notranslate"><span class="pre">.base</span></code> - Estensione flask</a></li>
<li class="toctree-l3"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database.tables"><code class="docutils literal notranslate"><span class="pre">.tables</span></code> - Tabelle</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#routes-percorsi-api"><code class="docutils literal notranslate"><span class="pre">.routes</span></code> - Percorsi API</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="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 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>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Non ho idea di cosa bisogna scrivere qui.</p>
</div>
<div class="section" id="collegamenti-utili">
<h1>Collegamenti utili<a class="headerlink" href="#collegamenti-utili" title="Link a questa intestazione"></a></h1>
<p class="todo-source">(L'<a class="reference internal" href="development/artifacts.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/artifacts.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire un link al video della demo.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/artifacts.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/artifacts.rst, linea 12.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere lobiettivo generale del progetto.</p>
</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>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere lo scope del progetto.</p>
</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>
<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">
<p class="admonition-title">Da fare</p>
<p>Descrivere genericamente il processo di sviluppo seguito, includendo:</p>
<blockquote>
<div><p>«numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo,
retrospettiva finale»</p>
</div></blockquote>
<p>Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando <code class="docutils literal notranslate"><span class="pre">:ref:</span></code>.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/process.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, linea 4.)</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/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>
<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/sprint1/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 20.)</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/sprint1/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 28.)</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/sprint1/index.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 36.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id6"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 492.)</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/sprint2/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/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/sprint2/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 20.)</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/sprint2/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 28.)</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/sprint2/index.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 36.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint2/index.html#id6"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 429.)</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/sprint3/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/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/sprint3/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/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/sprint3/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/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/sprint3/index.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 37.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Compilare il registro attività dello sprint 3.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id5"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 45.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id6"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 206.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la Retrospettiva finale.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id7"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 214.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui uno screenshot della schermata finale di SonarQube.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id8"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 222.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Che suggerimenti avete da dare al prof. Missiroli? :)</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/suggestions.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/suggestions.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allinstallazione di un servizio SystemD per il crawler.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="guide/installation.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/guide/installation.rst, linea 283.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allesecuzione ripetuta del crawler attraverso un timer SystemD.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="guide/installation.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/guide/installation.rst, linea 291.)</p>
</div>
<div class="section" id="altri-collegamenti">
<h2>Altri collegamenti<a class="headerlink" href="#altri-collegamenti" title="Link a questa intestazione"></a></h2>
<ul class="simple">
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Indice</span></a></p></li>
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Indice dei moduli</span></a></p></li>
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Cerca</span></a></p></li>
</ul>
</div>
</div>
@ -263,7 +473,7 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="about/index.html" class="btn btn-neutral float-right" title="Il progetto" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="guide/about.html" class="btn btn-neutral float-right" title="Il progetto in breve" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>

View file

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

View file

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

Binary file not shown.

View file

@ -88,25 +88,27 @@
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installazione</a></li>
<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">Guida sviluppatore</span></p>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="development/client/index.html">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/stats/index.html">Statistiche</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/log.html">Registro attività</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
<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>
@ -185,32 +187,32 @@
<td><img src="_static/minus.png" class="toggler"
id="toggle-1" style="display: none" alt="-" /></td>
<td>
<a href="backend/index.html#module-nest_backend"><code class="xref">nest_backend</code></a></td><td>
<a href="code/backend/index.html#module-nest_backend"><code class="xref">nest_backend</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="backend/index.html#module-nest_backend.database"><code class="xref">nest_backend.database</code></a></td><td>
<a href="code/backend/index.html#module-nest_backend.database"><code class="xref">nest_backend.database</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="backend/index.html#module-nest_backend.database.base"><code class="xref">nest_backend.database.base</code></a></td><td>
<a href="code/backend/index.html#module-nest_backend.database.base"><code class="xref">nest_backend.database.base</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="backend/index.html#module-nest_backend.database.tables"><code class="xref">nest_backend.database.tables</code></a></td><td>
<a href="code/backend/index.html#module-nest_backend.database.tables"><code class="xref">nest_backend.database.tables</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="backend/index.html#module-nest_backend.gestione"><code class="xref">nest_backend.gestione</code></a></td><td>
<a href="code/backend/index.html#module-nest_backend.gestione"><code class="xref">nest_backend.gestione</code></a></td><td>
<em></em></td></tr>
<tr>
<td></td>
<td>
<a href="crawler/index.html#module-nest_crawler"><code class="xref">nest_crawler</code></a></td><td>
<a href="code/crawler/index.html#module-nest_crawler"><code class="xref">nest_crawler</code></a></td><td>
<em></em></td></tr>
</table>

View file

@ -88,25 +88,27 @@
<p class="caption"><span class="caption-text">Manuale utente</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="about/index.html">Il progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installazione</a></li>
<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">Guida sviluppatore</span></p>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="meta/index.html">Meta-documentazione</a></li>
</ul>
<p class="caption"><span class="caption-text">Compendio del progetto</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="development/client/index.html">Documenti ricevuti dal cliente</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/stats/index.html">Statistiche</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/log.html">Registro attività</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/goals.html">Obiettivo del progetto</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/process.html">Processo di sviluppo</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/tools.html">Strumenti utilizzati</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint0/index.html">Sprint 0: 04 Apr - 18 Apr</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/artifacts.html">Artefatti</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/suggestions.html">Suggerimenti relativi al corso</a></li>
</ul>
<p class="caption"><span class="caption-text">Documentazione autogenerata</span></p>
<p class="caption"><span class="caption-text">Documentazione tecnica</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="crawler/index.html"><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
<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>

File diff suppressed because one or more lines are too long

View file

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

View file

Before

Width:  |  Height:  |  Size: 3 KiB

After

Width:  |  Height:  |  Size: 3 KiB

View file

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

View file

@ -1,11 +0,0 @@
Documenti ricevuti dal cliente
==============================
Questi sono i documenti che ci sono stati forniti dal prof. Marcello Missiroli in veste di **cliente** del progetto.
- :download:`Descrizione iniziale del prodotto <0-initial.pdf>`
- :download:`Sprint 0 <0-sprint-requirements.pdf>`
- :download:`Sprint 1 <1-sprint-requirements.pdf>`
- :download:`Sprint 2 <2-sprint-requirements.pdf>`
- :download:`Sprint 3 <3-sprint-requirements.pdf>`
- :download:`Report finale <3-report.pdf>`

View file

View file

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
Processo di sviluppo
====================
.. todo::
Descrivere genericamente il processo di sviluppo seguito, includendo:
"numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo,
retrospettiva finale"
Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando ``:ref:``.

View file

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

View file

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

View file

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

View file

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,32 +0,0 @@
Statistiche
===========
Burndown chart
--------------
.. todo::
Inserire qui la burndown chart del progetto terminato!
Gitinspector
------------
Queste statistiche sono state generate dal prof. Marcello Missiroli con
`Gitinspector <https://github.com/ejwa/gitinspector>`_ al termine di ogni Sprint.
.. note::
Le statistiche probabilmente sono molto inaccurate, in quanto Gitinspector sembra tenere conto anche delle directory
contenenti file vendored, come ``docs/build``.
.. todo::
Aggiungere le statistiche degli sprint mancanti!
- :download:`Sprint 0 <0-stats.html>`
- :download:`Sprint 1 <1-stats.html>`
- :download:`Sprint 2 (codice) <2-stats.html>`
- :download:`Sprint 2 (documentazione) <2D-stats.html>`
- :download:`Sprint 3 (codice) <3-stats.html>`
- :download:`Sprint 3 (documentazione) <3D-stats.html>`

View file

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

View file

@ -1,5 +1,5 @@
Il progetto
===========
Il progetto in breve
====================
**N.E.S.T.** (Noi Estraiamo Statistiche Tweet) è un progetto realizzato nel 2021 per
l'**esame di Progetto del Software** del corso di Informatica all'Unimore.

View file

Before

Width:  |  Height:  |  Size: 550 KiB

After

Width:  |  Height:  |  Size: 550 KiB

View file

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

View file

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View file

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 148 KiB

View file

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View file

@ -161,7 +161,7 @@ Inserire all'interno del file le seguenti direttive:
WorkingDirectory=/srv/nest/g2-progetto
# Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m gunicorn -b 127.0.0.1:30040 --env="FLASK_CONFIG=../config.py" nest_backend.app:rp_app
[Install]
@ -231,7 +231,7 @@ Inserire all'interno del file le seguenti direttive:
[Install]
WantedBy=multi-user.target
.. todo::
.. warning::
Questo file non è stato testato, in quanto sul server demo è in uso una versione più complessa che usa
`nvm <https://github.com/nvm-sh/nvm>`_ per gestire più versioni di NodeJS sullo stesso sistema.
@ -282,9 +282,16 @@ Creare un servizio SystemD per il crawler
.. todo::
Il crawler non è ancora disponibile.
Scrivere una guida all'installazione di un servizio SystemD per il crawler.
Creare un timer SystemD per il crawler
-----------------------------------------
.. todo::
Scrivere una guida all'esecuzione ripetuta del crawler attraverso un timer SystemD.
Configurare Apache come reverse proxy
-------------------------------------

View file

@ -4,42 +4,46 @@ N.E.S.T.
Benvenuto alla documentazione di N.E.S.T.!
.. toctree::
:maxdepth: 2
:caption: Manuale utente
:maxdepth: 2
:caption: Manuale utente
about/index
installation/index
guide/about
guide/installation
.. toctree::
:maxdepth: 2
:caption: Guida sviluppatore
:maxdepth: 2
:caption: Relazione sul progetto
meta/index
development/goals
development/process
development/tools
development/sprint0/index
development/sprint1/index
development/sprint2/index
development/sprint3/index
development/artifacts
development/conclusions
development/suggestions
.. toctree::
:maxdepth: 2
:caption: Compendio del progetto
:caption: Documentazione tecnica
development/client/index
development/stats/index
development/log
development/tools
code/meta/index
code/backend/index
code/crawler/index
code/frontend/index
.. toctree::
:caption: Documentazione autogenerata
Cose rimaste da fare
--------------------
backend/index
crawler/index
frontend/index
.. todolist::
Collegamenti utili
==================
Altri collegamenti
------------------
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View file

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