mirror of
https://github.com/pds-nest/nest.git
synced 2025-02-16 12:43:58 +00:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
79427d6b96
126 changed files with 48737 additions and 719 deletions
BIN
docs/build/doctrees/backend/index.doctree
vendored
BIN
docs/build/doctrees/backend/index.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/crawler/index.doctree
vendored
BIN
docs/build/doctrees/crawler/index.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/development/client/index.doctree
vendored
Normal file
BIN
docs/build/doctrees/development/client/index.doctree
vendored
Normal file
Binary file not shown.
BIN
docs/build/doctrees/development/log.doctree
vendored
Normal file
BIN
docs/build/doctrees/development/log.doctree
vendored
Normal file
Binary file not shown.
BIN
docs/build/doctrees/development/statistics/index.doctree
vendored
Normal file
BIN
docs/build/doctrees/development/statistics/index.doctree
vendored
Normal file
Binary file not shown.
BIN
docs/build/doctrees/development/stats/index.doctree
vendored
Normal file
BIN
docs/build/doctrees/development/stats/index.doctree
vendored
Normal file
Binary file not shown.
BIN
docs/build/doctrees/development/tools.doctree
vendored
Normal file
BIN
docs/build/doctrees/development/tools.doctree
vendored
Normal file
Binary file not shown.
BIN
docs/build/doctrees/environment.pickle
vendored
BIN
docs/build/doctrees/environment.pickle
vendored
Binary file not shown.
BIN
docs/build/doctrees/index.doctree
vendored
BIN
docs/build/doctrees/index.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/installation/index.doctree
vendored
BIN
docs/build/doctrees/installation/index.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/meta/index.doctree
vendored
Normal file
BIN
docs/build/doctrees/meta/index.doctree
vendored
Normal file
Binary file not shown.
2
docs/build/html/.buildinfo
vendored
2
docs/build/html/.buildinfo
vendored
|
@ -1,4 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 697fdcf2a865ef95bc825235d33ec5a4
|
||||
config: 1567c588e515e4bb5e7b4b124607e7dc
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
|
4311
docs/build/html/_downloads/4d0db5ecfa1dc71c9c67f8ec40e90078/2D-stats.html
vendored
Normal file
4311
docs/build/html/_downloads/4d0db5ecfa1dc71c9c67f8ec40e90078/2D-stats.html
vendored
Normal file
File diff suppressed because one or more lines are too long
4311
docs/build/html/_downloads/802f4a69bcab50834f865f69f714efe6/2-stats.html
vendored
Normal file
4311
docs/build/html/_downloads/802f4a69bcab50834f865f69f714efe6/2-stats.html
vendored
Normal file
File diff suppressed because one or more lines are too long
4311
docs/build/html/_downloads/8305c312d79edd3a41456dc3da1e0045/1-stats.html
vendored
Normal file
4311
docs/build/html/_downloads/8305c312d79edd3a41456dc3da1e0045/1-stats.html
vendored
Normal file
File diff suppressed because one or more lines are too long
4311
docs/build/html/_downloads/ad524590ef981c41310736536fcd2a4e/2D-stats.html
vendored
Normal file
4311
docs/build/html/_downloads/ad524590ef981c41310736536fcd2a4e/2D-stats.html
vendored
Normal file
File diff suppressed because one or more lines are too long
4311
docs/build/html/_downloads/affcb0b1c0baa178e323ddea9edec3b5/2-stats.html
vendored
Normal file
4311
docs/build/html/_downloads/affcb0b1c0baa178e323ddea9edec3b5/2-stats.html
vendored
Normal file
File diff suppressed because one or more lines are too long
4311
docs/build/html/_downloads/cc3ed6448c65c54a6e3382427b715150/0-stats.html
vendored
Normal file
4311
docs/build/html/_downloads/cc3ed6448c65c54a6e3382427b715150/0-stats.html
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
docs/build/html/_images/docsRunConfig.png
vendored
Normal file
BIN
docs/build/html/_images/docsRunConfig.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 3 KiB |
|
@ -1,2 +1,4 @@
|
|||
``nest_crawler`` - Crawler in Python
|
||||
====================================
|
||||
|
||||
.. automodule:: nest_crawler
|
||||
|
|
20
docs/build/html/_sources/development/client/index.rst.txt
vendored
Normal file
20
docs/build/html/_sources/development/client/index.rst.txt
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
Feedback ricevuto dal cliente
|
||||
=============================
|
||||
|
||||
Documenti
|
||||
---------
|
||||
|
||||
- :download:`Descrizione iniziale del prodotto <0-initial.pdf>`
|
||||
|
||||
Consegna degli Sprint
|
||||
---------------------
|
||||
|
||||
.. todo::
|
||||
|
||||
Aggiungere i documenti degli sprint mancanti!
|
||||
|
||||
- :download:`Sprint 0 <0-sprint-requirements.pdf>`
|
||||
- :download:`Sprint 1`
|
||||
- :download:`Sprint 2`
|
||||
- :download:`Sprint 3`
|
||||
|
792
docs/build/html/_sources/development/log.rst.txt
vendored
Normal file
792
docs/build/html/_sources/development/log.rst.txt
vendored
Normal file
|
@ -0,0 +1,792 @@
|
|||
Registro attività
|
||||
=================
|
||||
|
||||
.. todo::
|
||||
|
||||
Mettere titoli personali uguali in tutti gli sprint per consistenza.
|
||||
|
||||
Sprint 0
|
||||
--------
|
||||
|
||||
Riunioni collettive
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Ora
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 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 - Product Owner
|
||||
"""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-08
|
||||
- 1.0h
|
||||
- user stories
|
||||
* - 2021-04-09
|
||||
- 1.0h
|
||||
- epic
|
||||
* - 2021-04-10
|
||||
- 0.5h
|
||||
- use cases
|
||||
* - 2021-04-11
|
||||
- 0.5h
|
||||
- use cases
|
||||
* - 2021-04-14
|
||||
- 0.5h
|
||||
- documentazione SRS
|
||||
* - 2021-04-15
|
||||
- 0.5h
|
||||
- documentazione SRS
|
||||
* - 2021-04-17
|
||||
- 1.5h
|
||||
- diagrammi di attività
|
||||
|
||||
|
||||
Flavia Cocca - Scrum Master
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-08
|
||||
- 2.5h
|
||||
- brainstorming Ui
|
||||
* - 2021-04-10
|
||||
- 2.0h
|
||||
- creazione frame in figma con relativo css
|
||||
* - 2021-04-11
|
||||
- 1.5h
|
||||
- mockup UI con relativo css (creazione componenti)
|
||||
* - 2021-04-12
|
||||
- 1.5h
|
||||
- mockup UI con relativo css (creazione componenti)
|
||||
* - 2021-04-14
|
||||
- 3.0h
|
||||
- mockup UI con relativo css (creazione pagine)
|
||||
* - 2021-04-15
|
||||
- 2.0h
|
||||
- mockup UI con relativo css (creazioni pagine)
|
||||
* - 2021-04-16
|
||||
- 2.0h
|
||||
- ultimi ritocchi UI
|
||||
* - 2021-04-17
|
||||
- 0.5h
|
||||
- Stesura documentazione partita scrumble
|
||||
|
||||
|
||||
Chiara Calzolari - UI/UX Designer
|
||||
"""""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 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 - Frontend Developer & Sysadmin
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
.. todo:: Compilare con i dati di Toggl!
|
||||
|
||||
|
||||
Sprint 1
|
||||
--------
|
||||
|
||||
Riunioni collettive
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Ora
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-05-01
|
||||
- 15:30
|
||||
- 2h
|
||||
- backlog grooming session
|
||||
|
||||
Attività individuali
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Stefano Goldoni - Product Owner
|
||||
"""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-20
|
||||
- 0.5h
|
||||
- analisi test
|
||||
* - 2021-04-20
|
||||
- 1.5h
|
||||
- scrittura test cases
|
||||
* - 2021-04-26
|
||||
- 0.5h
|
||||
- predisposizione progetto in locale per il test
|
||||
* - 2021-04-26
|
||||
- 2.0h
|
||||
- metodi di test login e creazione utente
|
||||
* - 2021-04-28
|
||||
- 2.0h
|
||||
- metodi ti test
|
||||
* - 2021-04-29
|
||||
- 2.0h
|
||||
- metodi di test
|
||||
* - 2021-04-30
|
||||
- 2.0h
|
||||
- metodi di test backend
|
||||
* - 2021-05-01
|
||||
- 1.0h
|
||||
- test frontend
|
||||
* - 2021-05-01
|
||||
- 1.0h
|
||||
- test backend in pair programming
|
||||
* - 2021-05-02
|
||||
- 1.0h
|
||||
- documentazione
|
||||
* - 2021-05-02
|
||||
- 2.5h
|
||||
- test backend
|
||||
|
||||
|
||||
Giovanni Anniballi - Tester
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dell'IDE utilizzato.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-22
|
||||
- 0.5h
|
||||
- Riunione con il team
|
||||
* - 2021-04-23
|
||||
- 1.0h
|
||||
- Studio struttura del backend
|
||||
* - 2021-04-24
|
||||
- 1.5h
|
||||
- Studio del backend, volto a capire il funzionamento delle varie API
|
||||
* - 2021-04-26
|
||||
- 2.0h
|
||||
- Testing login e retrieval dei dati inerenti a tutti gli utenti registrati
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- Testing creazione user
|
||||
* - 2021-04-28
|
||||
- 2.0h
|
||||
- Test cancellazione utente e ritorno dei dati inerenti a quell’utente
|
||||
* - 2021-04-29
|
||||
- 1.5h
|
||||
- Test modica utenti e creazione della prima repository
|
||||
* - 2021-04-30
|
||||
- 2.0h
|
||||
- Testing ritorno di tutte le repository di proprietà dell’utente loggato, ritorno delle info inerenti alla repository specificata
|
||||
* - 2021-05-01
|
||||
- 3.0h
|
||||
- Riunione con il team per sprint review e sprint retrospective(2h). Testing modifica ed eliminazione di una repository (nome, stato)
|
||||
* - 2021-05-02
|
||||
- 2.0h
|
||||
- Testing del frontend tramite UI, controllo generale dei test già effettuati.
|
||||
|
||||
|
||||
Giorgio Minoccari - Sviluppatore Backend
|
||||
""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
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: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-21
|
||||
- 1.0h
|
||||
- Primi test riguardo autenticazione Oauth per API twitter
|
||||
* - 2021-04-23
|
||||
- 1.5h
|
||||
- Autenticazione funzionante
|
||||
* - 2021-04-24
|
||||
- 0.5h
|
||||
- Test su ricerche generali con parole chiave
|
||||
* - 2021-04-26
|
||||
- 1.0h
|
||||
- Test su ricerche geolocalizzate
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- Definizione di entita' di esempio nei database per provare funzioni legate ad esse
|
||||
* - 2021-04-28
|
||||
- 2.0h
|
||||
- Definizione di funzioni per l'aggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API
|
||||
* - 2021-04-29
|
||||
- 1.0h
|
||||
- Refactor codice scritto fino a quel momento, eliminazione di dati inutili
|
||||
* - 2021-05-01
|
||||
- 1.0h
|
||||
- Implementazioni di analisi su termini e hashtag restituiti dall'API
|
||||
* - 2021-05-02
|
||||
- 1.0h
|
||||
- Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate
|
||||
|
||||
|
||||
Lorenzo Balugani - Developer
|
||||
""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-21
|
||||
- 2.0h
|
||||
- Implementazione Base di Dati
|
||||
* - 2021-04-22
|
||||
- 2.0h
|
||||
- Login, creazione utenti
|
||||
* - 2021-04-25
|
||||
- 1.0h
|
||||
- Rimozione utenti, CORS, Creazione repo
|
||||
* - 2021-04-25
|
||||
- 3.0h
|
||||
- Altre funzioni API
|
||||
* - 2021-04-26
|
||||
- 0.5h
|
||||
- Standardizzazione output json
|
||||
* - 2021-04-26
|
||||
- 1.0h
|
||||
- Documentazione
|
||||
* - 2021-04-27
|
||||
- 0.5h
|
||||
- Aggiunto supporto al modulo explorer, fix
|
||||
* - 2021-04-28
|
||||
- 0.5h
|
||||
- Bugfixing
|
||||
* - 2021-04-29
|
||||
- 1.0h
|
||||
- Gestione migliorata errori
|
||||
* - 2021-04-29
|
||||
- 1.0h
|
||||
- Refactoring
|
||||
* - 2021-05-02
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
|
||||
|
||||
FLavia Cocca - Scrum Master
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- modifica mockup UI
|
||||
* - 2021-04-28
|
||||
- 1.0h
|
||||
- Organizzazione Sprint retrospective
|
||||
* - 2021-04-30
|
||||
- 1.0h
|
||||
- modifica mockup UI
|
||||
* - 2021-05-01
|
||||
- 2.0h
|
||||
- Riunione con il team per sprint review e sprint retrospective
|
||||
* - 2021-05-02
|
||||
- 3.0h
|
||||
- Stesura documenti Sprint1(debito tecnico e relazione sprint retrospective), realizzazione video Sprint1 review
|
||||
|
||||
|
||||
Chiara Calzolari - UI Designer
|
||||
""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-26
|
||||
- 3.0h
|
||||
- Configurazione ambiente di sviluppo
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- modifica mockup UI (adeguamento al JS)
|
||||
* - 2021-04-29
|
||||
- 2.0h
|
||||
- modifica mockup UI (Manage users)
|
||||
* - 2021-05-01
|
||||
- 0.5h
|
||||
- Ultimi ritocchi al mockup UI
|
||||
|
||||
|
||||
Stefano Pigozzi - Frontend Developer
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
|
||||
.. todo:: Compilare con i dati di Toggl!
|
||||
|
||||
|
||||
Sprint 2
|
||||
--------
|
||||
|
||||
Riunioni collettive
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Ora
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-05-14
|
||||
- 10:00
|
||||
- 1.0h
|
||||
- Sprint Retrospective session
|
||||
|
||||
|
||||
Attività individuali
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Chiara Calzolari - UI Designer
|
||||
""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 11.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-03
|
||||
- 1.0h
|
||||
- Testing frontend e segnalazione issues
|
||||
* - 2021-05-03
|
||||
- 1.0h
|
||||
- Modifica mockup UI (Dashboard repository)
|
||||
* - 2021-05-04
|
||||
- 1.0h
|
||||
- Modifica mockup UI (adeguamento al JS)
|
||||
* - 2021-05-10
|
||||
- 3.0h
|
||||
- Configurazione ambiente di sviluppo
|
||||
* - 2021-05-11
|
||||
- 1.5h
|
||||
- Modifica UI (traduzione in Italiano)
|
||||
* - 2021-05-12
|
||||
- 0.5h
|
||||
- Modifica UI (traduzione in Italiano)
|
||||
* - 2021-05-14
|
||||
- 3.0h
|
||||
- Realizzazione video demo sprint 2
|
||||
|
||||
|
||||
Stefano Goldoni - Product Owner & Tester
|
||||
""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 16.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 1.0h
|
||||
- preparazione backlog sprint 2
|
||||
* - 2021-05-10
|
||||
- 3.0h
|
||||
- test sprint 2
|
||||
* - 2021-05-11
|
||||
- 2.5h
|
||||
- test utenti e repository
|
||||
* - 2021-05-12
|
||||
- 2.0h
|
||||
- test repository
|
||||
* - 2021-05-13
|
||||
- 2.5h
|
||||
- test repository
|
||||
* - 2021-05-14
|
||||
- 3.0h
|
||||
- test conditions
|
||||
* - 2021-05-15
|
||||
- 2.0h
|
||||
- test conditions + sonarqube scanner
|
||||
|
||||
|
||||
Lorenzo Balugani - DB & Backend Developer
|
||||
"""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 19.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-05
|
||||
- 4.0h
|
||||
- Setup di swagger, documentazione
|
||||
* - 2021-05-06
|
||||
- 4.0h
|
||||
- Documentazione, sviluppo
|
||||
* - 2021-05-07
|
||||
- 3.0h
|
||||
- Alert, documentazione
|
||||
* - 2021-05-10
|
||||
- 2.0h
|
||||
- Alert Put, bugfixing
|
||||
* - 2021-05-11
|
||||
- 3.0h
|
||||
- Bugfixing, sviluppo
|
||||
* - 2021-05-12
|
||||
- 3.0h
|
||||
- Risolti issue pubblicati su Taiga
|
||||
* - 2021-05-13
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
* - 2021-05-14
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
|
||||
|
||||
Stefano Pigozzi - Sysadmin & Frontend Developer
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 27.5h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-05
|
||||
- 0.40h
|
||||
- Riunione
|
||||
* - 2021-05-05
|
||||
- 0.21h
|
||||
- Documentazione
|
||||
* - 2021-05-06
|
||||
- 0.09h
|
||||
- Sviluppo
|
||||
* - 2021-05-06
|
||||
- 0.03h
|
||||
- Configurazione Taiga
|
||||
* - 2021-05-06
|
||||
- 0.11h
|
||||
- Documentazione
|
||||
* - 2021-05-06
|
||||
- 0.09h
|
||||
- Riunione
|
||||
* - 2021-05-06
|
||||
- 0.20h
|
||||
- Documentazione
|
||||
* - 2021-05-06
|
||||
- 0.39h
|
||||
- Sviluppo
|
||||
* - 2021-05-06
|
||||
- 0.15h
|
||||
- Riunione
|
||||
* - 2021-05-06
|
||||
- 1.04h
|
||||
- Riunione
|
||||
* - 2021-05-07
|
||||
- 1.47h
|
||||
- Sviluppo
|
||||
* - 2021-05-07
|
||||
- 0.17h
|
||||
- Sviluppo
|
||||
* - 2021-05-07
|
||||
- 0.34h
|
||||
- Sviluppo
|
||||
* - 2021-05-07
|
||||
- 0.34h
|
||||
- Project management
|
||||
* - 2021-05-07
|
||||
- 2.44h
|
||||
- Sviluppo
|
||||
* - 2021-05-08
|
||||
- 0.13h
|
||||
- Sviluppo
|
||||
* - 2021-05-08
|
||||
- 0.29h
|
||||
- Sviluppo
|
||||
* - 2021-05-08
|
||||
- 0.18h
|
||||
- Sviluppo
|
||||
* - 2021-05-10
|
||||
- 1.00h
|
||||
- Sviluppo
|
||||
* - 2021-05-10
|
||||
- 1.15h
|
||||
- Configurazione GitLab
|
||||
* - 2021-05-10
|
||||
- 0.25h
|
||||
- Sviluppo
|
||||
* - 2021-05-10
|
||||
- 0.39h
|
||||
- Sviluppo
|
||||
* - 2021-05-11
|
||||
- 0.25h
|
||||
- Bugfixing
|
||||
* - 2021-05-11
|
||||
- 3.57h
|
||||
- Sviluppo
|
||||
* - 2021-05-11
|
||||
- 1.45h
|
||||
- Sviluppo
|
||||
* - 2021-05-12
|
||||
- 0.10h
|
||||
- Sviluppo
|
||||
* - 2021-05-12
|
||||
- 1.51h
|
||||
- Sviluppo
|
||||
* - 2021-05-13
|
||||
- 1.00h
|
||||
- Sviluppo
|
||||
* - 2021-05-13
|
||||
- 1.20h
|
||||
- Sviluppo
|
||||
* - 2021-05-14
|
||||
- 0.20h
|
||||
- Sviluppo
|
||||
* - 2021-05-15
|
||||
- 3.17h
|
||||
- Documentazione
|
||||
|
||||
|
||||
Flavia Cocca - Scrum Master & UI Designer
|
||||
"""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 16.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 0.5h
|
||||
- Riunione per con PO, nuovo backlog
|
||||
* - 2021-05-05
|
||||
- 1.0h
|
||||
- Riunione
|
||||
* - 2021-05-07
|
||||
- 3.0h
|
||||
- Refactoring test
|
||||
* - 2021-05-08
|
||||
- 2.0h
|
||||
- Refactoring test
|
||||
* - 2021-05-09
|
||||
- 3.0h
|
||||
- Nuovi test
|
||||
* - 2021-05-11
|
||||
- 2.5h
|
||||
- Discussione test e risoluzione di alcune issue
|
||||
* - 2021-05-13
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
* - 2021-05-14
|
||||
- 1.0h
|
||||
- Sprint Retrospective
|
||||
* - 2021-05-15
|
||||
- 2.0h
|
||||
- Documentazione
|
||||
|
||||
|
||||
Giovanni Anniballi - Tester
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 17.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 0.5h
|
||||
- Incontro con SM e PO per valutare quali US andranno nello sprint2
|
||||
* - 2021-05-05
|
||||
- 1.0h
|
||||
- Incontro con il team
|
||||
* - 2021-05-07
|
||||
- 2.0h
|
||||
- Refactoring tests sugli user e primi utilizzi delle fixtures
|
||||
* - 2021-05-08
|
||||
- 2.0h
|
||||
- Completamento test users
|
||||
* - 2021-05-10
|
||||
- 1.0h
|
||||
- Ulteriori approcci (fallimentari) al coverage di SonarQube
|
||||
* - 2021-05-11
|
||||
- 2.0h
|
||||
- Discussione sui test e correzioni bug
|
||||
* - 2021-05-12
|
||||
- 1.0h
|
||||
- Test repository
|
||||
* - 2021-05-13
|
||||
- 1.0h
|
||||
- Generazione coverage pytest e setting sonarqube (riuscito!)
|
||||
* - 2021-05-14
|
||||
- 4.0h
|
||||
- Sprint review e retrospettiva, conclusione test repository
|
||||
* - 2021-05-15
|
||||
- 2.5h
|
||||
- generazione nuovo coverage e fix a sonarqube 2h, fix piccoli bug segnalati da sonarqube 0.5h
|
||||
|
||||
|
||||
Giorgio Minoccari - Analyst & Backend Developer
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 10.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 0.5h
|
||||
- Aggiunta della condizione sull'utente
|
||||
* - 2021-05-10
|
||||
- 2.0h
|
||||
- Tentativo di inserimento delle query con place_id
|
||||
* - 2021-05-11
|
||||
- 1.5h
|
||||
- Test per passare alla versione 2.0 delle API
|
||||
* - 2021-05-12
|
||||
- 1.0h
|
||||
- Ritorno alla versione 1.1 perche' lascia disponibili le query sulla geolocalizzazione gratuitamente
|
||||
* - 2021-05-14
|
||||
- 5.0h
|
||||
- Integrazione e inserimento dei tweet catturati nel database
|
||||
|
||||
|
||||
Sprint 3
|
||||
--------
|
||||
|
||||
.. todo::
|
||||
|
||||
Compilare il registro attività dello sprint 3.
|
20
docs/build/html/_sources/development/statistics/index.rst.txt
vendored
Normal file
20
docs/build/html/_sources/development/statistics/index.rst.txt
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
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>`
|
20
docs/build/html/_sources/development/stats/index.rst.txt
vendored
Normal file
20
docs/build/html/_sources/development/stats/index.rst.txt
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
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>`
|
3
docs/build/html/_sources/development/tools.rst.txt
vendored
Normal file
3
docs/build/html/_sources/development/tools.rst.txt
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
Strumenti utilizzati
|
||||
====================
|
||||
|
19
docs/build/html/_sources/index.rst.txt
vendored
19
docs/build/html/_sources/index.rst.txt
vendored
|
@ -5,12 +5,29 @@ Benvenuto alla documentazione di N.E.S.T.!
|
|||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Manuale
|
||||
:caption: Manuale utente
|
||||
|
||||
about/index
|
||||
installation/index
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Guida sviluppatore
|
||||
|
||||
meta/index
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Compendio del progetto
|
||||
|
||||
development/client/index
|
||||
development/stats/index
|
||||
development/log
|
||||
development/tools
|
||||
|
||||
|
||||
.. toctree::
|
||||
:caption: Documentazione autogenerata
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ Per creare il database PostgreSQL, si esegua:
|
|||
Creare un file di configurazione per il backend
|
||||
-----------------------------------------------
|
||||
|
||||
Il backend usa un file di configurazione per impostare certe variabili.
|
||||
Il backend usa un file di configurazione per impostare alcune variabili.
|
||||
|
||||
Si crei un nuovo file nella working directory del progetto denominato ``config.py``:
|
||||
|
||||
|
@ -113,7 +113,7 @@ Le dipendenze Python sono gestite da *Poetry*, e possono essere installate con:
|
|||
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. .
|
||||
|
||||
**Segnatevi il nome** del venv creato da Poetry, in quanto sarà necessario per
|
||||
**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
|
||||
|
|
84
docs/build/html/_sources/meta/index.rst.txt
vendored
Normal file
84
docs/build/html/_sources/meta/index.rst.txt
vendored
Normal file
|
@ -0,0 +1,84 @@
|
|||
Meta-documentazione
|
||||
===================
|
||||
|
||||
La documentazione è scritta in `reStructuredText <https://docutils.sourceforge.io/rst.html>`_, ed è generata con
|
||||
`Sphinx <https://www.sphinx-doc.org/en/master/>`_.
|
||||
|
||||
I dati relativi alla documentazione si trovano nella directory standard ``/docs``;
|
||||
in particolare, le sorgenti reStructuredText si trovano in ``/docs/source``,
|
||||
mentre l'ultima versione compilata si trova in ``/docs/build``.
|
||||
|
||||
Questa struttura permetterebbe l'integrazione con lo strumento di "Continuous Documentation"
|
||||
`ReadTheDocs <https://readthedocs.com/>`_, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza
|
||||
almeno `Basic <https://readthedocs.com/pricing/>`_.
|
||||
|
||||
|
||||
Compilazione con IntelliJ IDEA
|
||||
------------------------------
|
||||
|
||||
È possibile compilare manualmente la documentazione con IntelliJ IDEA.
|
||||
|
||||
Su sistemi Linux, è disponibile la Run Configuration ``Docs``, che compilerà la versione HTML della documentazione se
|
||||
eseguita.
|
||||
|
||||
.. image:: docsRunConfig.png
|
||||
|
||||
|
||||
Compilazione con GNU Make
|
||||
-------------------------
|
||||
|
||||
È possibile compilare manualmente la documentazione con GNU Make.
|
||||
|
||||
Come prima cosa, è necessario :ref:`Installare le dipendenze Python` del progetto:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto$ poetry install
|
||||
|
||||
Poi, si entri all'interno del virtual environment:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto$ poetry shell
|
||||
|
||||
Una volta all'interno del venv, si entri nella cartella della documentazione:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto$ cd docs
|
||||
|
||||
Infine, si esegua il target ``html`` del Makefile:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto/docs$ make html
|
||||
|
||||
|
||||
Compilazione con Windows Powershell
|
||||
-----------------------------------
|
||||
|
||||
È possibile compilare manualmente la documentazione con Windows Powershell.
|
||||
|
||||
Come prima cosa, è necessario :ref:`Installare le dipendenze Python` del progetto:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto> poetry install
|
||||
|
||||
Poi, si entri all'interno del virtual environment:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto> poetry shell
|
||||
|
||||
Una volta all'interno del venv, si entri nella cartella della documentazione:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto> cd docs
|
||||
|
||||
Infine, si esegua lo script ``make.bat`` con il parametro ``html``:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto/docs> make html
|
8
docs/build/html/about/index.html
vendored
8
docs/build/html/about/index.html
vendored
|
@ -50,7 +50,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -85,11 +85,15 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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></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>
|
||||
<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>
|
||||
|
|
168
docs/build/html/backend/index.html
vendored
168
docs/build/html/backend/index.html
vendored
|
@ -40,7 +40,7 @@
|
|||
<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="Installazione" href="../installation/index.html" />
|
||||
<link rel="prev" title="Strumenti utilizzati" href="../development/tools.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
@ -50,7 +50,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -85,11 +85,22 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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">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 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>
|
||||
|
@ -224,8 +235,9 @@ It is required by Flask-JWT, and shouldnt be used alone.
|
|||
|
||||
<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><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.gestione.json_error" title="Link a questa definizione">¶</a></dt>
|
||||
<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>
|
||||
|
@ -284,6 +296,11 @@ It is required by Flask-JWT, and shouldnt be used alone.
|
|||
<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>
|
||||
|
@ -300,8 +317,8 @@ It is required by Flask-JWT, and shouldnt be used alone.
|
|||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.Alert.operations">
|
||||
<code class="sig-name descname"><span class="pre">operations</span></code><a class="headerlink" href="#nest_backend.database.tables.Alert.operations" title="Link a questa definizione">¶</a></dt>
|
||||
<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">
|
||||
|
@ -361,100 +378,6 @@ for example, any mapped columns or relationships.</p>
|
|||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py class">
|
||||
<dt id="nest_backend.database.tables.BoolOperation">
|
||||
<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">BoolOperation</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.BoolOperation" 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.BoolOperation.id">
|
||||
<code class="sig-name descname"><span class="pre">id</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.id" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.operation">
|
||||
<code class="sig-name descname"><span class="pre">operation</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.operation" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.is_root">
|
||||
<code class="sig-name descname"><span class="pre">is_root</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.is_root" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.condition_id">
|
||||
<code class="sig-name descname"><span class="pre">condition_id</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.condition_id" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.node_1_id">
|
||||
<code class="sig-name descname"><span class="pre">node_1_id</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.node_1_id" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.node_2_id">
|
||||
<code class="sig-name descname"><span class="pre">node_2_id</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.node_2_id" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.alert_id">
|
||||
<code class="sig-name descname"><span class="pre">alert_id</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.alert_id" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.condition">
|
||||
<code class="sig-name descname"><span class="pre">condition</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.condition" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.node_1">
|
||||
<code class="sig-name descname"><span class="pre">node_1</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.node_1" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.node_2">
|
||||
<code class="sig-name descname"><span class="pre">node_2</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.node_2" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.alert">
|
||||
<code class="sig-name descname"><span class="pre">alert</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.alert" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.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.BoolOperation.to_json" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.get_chain_ids">
|
||||
<code class="sig-name descname"><span class="pre">get_chain_ids</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">lista</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.get_chain_ids" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.__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.BoolOperation.__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 instance’s class are allowed. These could be,
|
||||
for example, any mapped columns or relationships.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.father_1">
|
||||
<code class="sig-name descname"><span class="pre">father_1</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.father_1" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.BoolOperation.father_2">
|
||||
<code class="sig-name descname"><span class="pre">father_2</span></code><a class="headerlink" href="#nest_backend.database.tables.BoolOperation.father_2" title="Link a questa definizione">¶</a></dt>
|
||||
<dd></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>
|
||||
|
@ -531,8 +454,8 @@ for example, any mapped columns or relationships.</p>
|
|||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="nest_backend.database.tables.Condition.operations">
|
||||
<code class="sig-name descname"><span class="pre">operations</span></code><a class="headerlink" href="#nest_backend.database.tables.Condition.operations" title="Link a questa definizione">¶</a></dt>
|
||||
<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">
|
||||
|
@ -838,6 +761,45 @@ for example, any mapped columns or relationships.</p>
|
|||
|
||||
</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 instance’s 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>
|
||||
|
@ -925,7 +887,7 @@ GitLab</a> .</p>
|
|||
<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="../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>
|
||||
<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/>
|
||||
|
|
12
docs/build/html/crawler/index.html
vendored
12
docs/build/html/crawler/index.html
vendored
|
@ -50,7 +50,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -85,11 +85,15 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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>
|
||||
|
@ -162,8 +166,8 @@
|
|||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="nest-crawler-crawler-in-python">
|
||||
<h1><code class="docutils literal notranslate"><span class="pre">nest_crawler</span></code> - Crawler in Python<a class="headerlink" href="#nest-crawler-crawler-in-python" title="Link a questa intestazione">¶</a></h1>
|
||||
<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>
|
||||
|
||||
|
||||
|
|
251
docs/build/html/development/client/index.html
vendored
Normal file
251
docs/build/html/development/client/index.html
vendored
Normal file
|
@ -0,0 +1,251 @@
|
|||
|
||||
|
||||
<!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>Feedback ricevuto dal cliente — 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 di Gitinspector" 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="#">Feedback ricevuto dal cliente</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#documenti">Documenti</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#consegna-degli-sprint">Consegna degli Sprint</a></li>
|
||||
</ul>
|
||||
</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="../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> »</li>
|
||||
|
||||
<li>Feedback ricevuto 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="feedback-ricevuto-dal-cliente">
|
||||
<h1>Feedback ricevuto dal cliente<a class="headerlink" href="#feedback-ricevuto-dal-cliente" title="Link a questa intestazione">¶</a></h1>
|
||||
<div class="section" id="documenti">
|
||||
<h2>Documenti<a class="headerlink" href="#documenti" title="Link a questa intestazione">¶</a></h2>
|
||||
<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>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="consegna-degli-sprint">
|
||||
<h2>Consegna degli Sprint<a class="headerlink" href="#consegna-degli-sprint" title="Link a questa intestazione">¶</a></h2>
|
||||
<div class="admonition-todo admonition" id="id1">
|
||||
<p class="admonition-title">Da fare</p>
|
||||
<p>Aggiungere i documenti degli sprint mancanti!</p>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<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><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">1</span></code></p></li>
|
||||
<li><p><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span></code></p></li>
|
||||
<li><p><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">3</span></code></p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</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 di Gitinspector" 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>
|
||||
© 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>
|
1339
docs/build/html/development/log.html
vendored
Normal file
1339
docs/build/html/development/log.html
vendored
Normal file
File diff suppressed because it is too large
Load diff
238
docs/build/html/development/statistics/index.html
vendored
Normal file
238
docs/build/html/development/statistics/index.html
vendored
Normal file
|
@ -0,0 +1,238 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="it" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Statistiche di Gitinspector — 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> »</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>
|
||||
© 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>
|
246
docs/build/html/development/stats/index.html
vendored
Normal file
246
docs/build/html/development/stats/index.html
vendored
Normal file
|
@ -0,0 +1,246 @@
|
|||
|
||||
|
||||
<!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 — 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="Feedback ricevuto 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">Feedback ricevuto dal cliente</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">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="../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> »</li>
|
||||
|
||||
<li>Statistiche di Gitinspector</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-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/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>
|
||||
<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="Feedback ricevuto 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>
|
||||
© 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>
|
225
docs/build/html/development/tools.html
vendored
Normal file
225
docs/build/html/development/tools.html
vendored
Normal file
|
@ -0,0 +1,225 @@
|
|||
|
||||
|
||||
<!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>Strumenti utilizzati — 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="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="#">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> »</li>
|
||||
|
||||
<li>Strumenti utilizzati</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../_sources/development/tools.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="strumenti-utilizzati">
|
||||
<h1>Strumenti utilizzati<a class="headerlink" href="#strumenti-utilizzati" title="Link a questa intestazione">¶</a></h1>
|
||||
</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="../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>
|
||||
© 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>
|
8
docs/build/html/frontend/index.html
vendored
8
docs/build/html/frontend/index.html
vendored
|
@ -49,7 +49,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -84,11 +84,15 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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>
|
||||
|
|
113
docs/build/html/genindex.html
vendored
113
docs/build/html/genindex.html
vendored
|
@ -48,7 +48,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -83,11 +83,22 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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">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>
|
||||
|
@ -164,7 +175,6 @@
|
|||
<div class="genindex-jumpbox">
|
||||
<a href="#_"><strong>_</strong></a>
|
||||
| <a href="#A"><strong>A</strong></a>
|
||||
| <a href="#B"><strong>B</strong></a>
|
||||
| <a href="#C"><strong>C</strong></a>
|
||||
| <a href="#E"><strong>E</strong></a>
|
||||
| <a href="#F"><strong>F</strong></a>
|
||||
|
@ -191,14 +201,14 @@
|
|||
|
||||
<ul>
|
||||
<li><a href="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.BoolOperation.__init__">(nest_backend.database.tables.BoolOperation metodo)</a>
|
||||
</li>
|
||||
<li><a href="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>
|
||||
<li><a href="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>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Notification.__init__">(nest_backend.database.tables.Notification metodo)</a>
|
||||
</li>
|
||||
|
@ -216,23 +226,25 @@
|
|||
<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>
|
||||
<li><a href="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>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.alert">alert (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
<li><a href="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>
|
||||
</ul></li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.alert_id">alert_id (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
<li><a href="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>
|
||||
|
||||
<ul>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Notification.alert_id">(nest_backend.database.tables.Notification attributo)</a>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Repository.alerts">(nest_backend.database.tables.Repository attributo)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Repository.alerts">alerts (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.database.tables.ConditionMode.all_and">all_and (nest_backend.database.tables.ConditionMode attributo)</a>
|
||||
|
@ -254,38 +266,34 @@
|
|||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="B">B</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.BoolOperation">BoolOperation (classe in nest_backend.database.tables)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<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>
|
||||
|
||||
<ul>
|
||||
<li><a href="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>
|
||||
<li><a href="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.BoolOperation.condition">condition (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
<li><a href="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.Contains.condition">(nest_backend.database.tables.Contains attributo)</a>
|
||||
<li><a href="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.BoolOperation.condition_id">condition_id (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="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.Repository.conditions">conditions (nest_backend.database.tables.Repository attributo)</a>
|
||||
<li><a href="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>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Tweet.conditions">(nest_backend.database.tables.Tweet attributo)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
|
@ -313,26 +321,24 @@
|
|||
<li><a href="backend/index.html#nest_backend.database.tables.User.email">(nest_backend.database.tables.User 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.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>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Repository.evaluation_mode">evaluation_mode (nest_backend.database.tables.Repository attributo)</a>
|
||||
<li><a href="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>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<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.database.tables.BoolOperation.father_1">father_1 (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.father_2">father_2 (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="backend/index.html#nest_backend.gestione.find_user">find_user() (nel modulo nest_backend.gestione)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
|
@ -342,10 +348,6 @@
|
|||
<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>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.get_chain_ids">get_chain_ids() (nest_backend.database.tables.BoolOperation metodo)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
@ -368,8 +370,6 @@
|
|||
<li><a href="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.BoolOperation.id">(nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="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>
|
||||
|
@ -384,8 +384,6 @@
|
|||
<li><a href="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>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.is_root">is_root (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.User.isAdmin">isAdmin (nest_backend.database.tables.User attributo)</a>
|
||||
</li>
|
||||
|
@ -425,6 +423,8 @@
|
|||
<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>
|
||||
<li>
|
||||
modulo
|
||||
|
||||
|
@ -438,6 +438,8 @@
|
|||
<li><a href="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>
|
||||
<li><a href="crawler/index.html#module-nest_crawler">nest_crawler</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
|
@ -473,6 +475,8 @@
|
|||
<li><a href="backend/index.html#module-nest_backend.database.base">modulo</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li>
|
||||
nest_backend.database.tables
|
||||
|
||||
|
@ -480,8 +484,6 @@
|
|||
<li><a href="backend/index.html#module-nest_backend.database.tables">modulo</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li>
|
||||
nest_backend.gestione
|
||||
|
||||
|
@ -489,14 +491,13 @@
|
|||
<li><a href="backend/index.html#module-nest_backend.gestione">modulo</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.node_1">node_1 (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.node_1_id">node_1_id (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.node_2">node_2 (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.BoolOperation.node_2_id">node_2_id (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
<li>
|
||||
nest_crawler
|
||||
|
||||
<ul>
|
||||
<li><a href="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>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Alert.notifications">notifications (nest_backend.database.tables.Alert attributo)</a>
|
||||
|
@ -507,20 +508,12 @@
|
|||
<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.BoolOperation.operation">operation (nest_backend.database.tables.BoolOperation attributo)</a>
|
||||
</li>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Alert.operations">operations (nest_backend.database.tables.Alert attributo)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Condition.operations">(nest_backend.database.tables.Condition attributo)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="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>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="backend/index.html#nest_backend.database.tables.Notification.ora">ora (nest_backend.database.tables.Notification attributo)</a>
|
||||
</li>
|
||||
<li><a href="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>
|
||||
|
@ -610,8 +603,6 @@
|
|||
<li><a href="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.BoolOperation.to_json">(nest_backend.database.tables.BoolOperation metodo)</a>
|
||||
</li>
|
||||
<li><a href="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>
|
||||
|
|
47
docs/build/html/index.html
vendored
47
docs/build/html/index.html
vendored
|
@ -49,7 +49,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -84,11 +84,22 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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">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>
|
||||
|
@ -165,7 +176,7 @@
|
|||
<h1>N.E.S.T.<a class="headerlink" href="#n-e-s-t" title="Link a questa intestazione">¶</a></h1>
|
||||
<p>Benvenuto alla documentazione di N.E.S.T.!</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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><ul>
|
||||
|
@ -186,6 +197,36 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<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><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">Feedback ricevuto dal cliente</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="development/client/index.html#documenti">Documenti</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="development/client/index.html#consegna-degli-sprint">Consegna degli Sprint</a></li>
|
||||
</ul>
|
||||
</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><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-0">Sprint 0</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-1">Sprint 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-2">Sprint 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="development/log.html#sprint-3">Sprint 3</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="development/tools.html">Strumenti utilizzati</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<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><ul>
|
||||
|
|
18
docs/build/html/installation/index.html
vendored
18
docs/build/html/installation/index.html
vendored
|
@ -39,7 +39,7 @@
|
|||
|
||||
<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="next" title="Meta-documentazione" href="../meta/index.html" />
|
||||
<link rel="prev" title="Il progetto" href="../about/index.html" />
|
||||
</head>
|
||||
|
||||
|
@ -50,7 +50,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -85,7 +85,7 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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>
|
||||
|
@ -104,6 +104,10 @@
|
|||
</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>
|
||||
|
@ -236,7 +240,7 @@ Si veda il manuale di <a class="reference external" href="https://linux.die.net/
|
|||
</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 certe variabili.</p>
|
||||
<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>
|
||||
|
@ -261,8 +265,8 @@ Si veda il manuale di <a class="reference external" href="https://linux.die.net/
|
|||
</div>
|
||||
<p>Poetry creerà automaticamente un <a class="reference external" href="https://docs.python.org/3/library/venv.html">venv</a> e vi installerà all’interno tutti
|
||||
i pacchetti necessari all’esecuzione del backend e del crawler di N.E.S.T. .</p>
|
||||
<p><strong>Segnatevi il nome</strong> del venv creato da Poetry, in quanto sarà necessario per
|
||||
<span class="xref std std-ref">Creare un servizio SystemD per il backend</span>:</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>
|
||||
|
@ -452,7 +456,7 @@ esempio da adattare al proprio setup:</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="../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>
|
||||
|
||||
|
|
281
docs/build/html/meta/index.html
vendored
Normal file
281
docs/build/html/meta/index.html
vendored
Normal file
|
@ -0,0 +1,281 @@
|
|||
|
||||
|
||||
<!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 — 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> »</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 l’ultima versione compilata si trova in <code class="docutils literal notranslate"><span class="pre">/docs/build</span></code>.</p>
|
||||
<p>Questa struttura permetterebbe l’integrazione 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 all’interno 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 all’interno 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></span> poetry install
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Poi, si entri all’interno del virtual environment:</p>
|
||||
<div class="highlight-doscon notranslate"><div class="highlight"><pre><span></span><span class="gp">g2-progetto></span> poetry shell
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Una volta all’interno 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></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></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>
|
||||
© 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>
|
BIN
docs/build/html/objects.inv
vendored
BIN
docs/build/html/objects.inv
vendored
Binary file not shown.
20
docs/build/html/py-modindex.html
vendored
20
docs/build/html/py-modindex.html
vendored
|
@ -51,7 +51,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -86,11 +86,22 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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">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>
|
||||
|
@ -196,6 +207,11 @@
|
|||
<td>   
|
||||
<a href="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>
|
||||
<em></em></td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
|
|
15
docs/build/html/search.html
vendored
15
docs/build/html/search.html
vendored
|
@ -51,7 +51,7 @@
|
|||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
<div class="wy-side-nav-search" style="background: #3B7097" >
|
||||
|
||||
|
||||
|
||||
|
@ -86,11 +86,22 @@
|
|||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Manuale</span></p>
|
||||
<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">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>
|
||||
|
|
2
docs/build/html/searchindex.js
vendored
2
docs/build/html/searchindex.js
vendored
File diff suppressed because one or more lines are too long
|
@ -32,7 +32,8 @@ release = '0.1.0'
|
|||
extensions = [
|
||||
"sphinx.ext.autodoc",
|
||||
"sphinx.ext.intersphinx",
|
||||
'sphinx.ext.todo',
|
||||
"sphinx.ext.todo",
|
||||
"sphinx.ext.autosectionlabel",
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
|
@ -63,12 +64,18 @@ nitpicky = True
|
|||
# a list of builtin themes.
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
|
||||
html_theme_options = {
|
||||
"style_nav_header_background": "#3B7097"
|
||||
}
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
|
||||
|
||||
|
||||
# -- Intersphinx options -----------------------------------------------------
|
||||
|
||||
intersphinx_mapping = {
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
``nest_crawler`` - Crawler in Python
|
||||
====================================
|
||||
|
||||
.. automodule:: nest_crawler
|
||||
|
|
BIN
docs/source/development/client/0-initial.pdf
Normal file
BIN
docs/source/development/client/0-initial.pdf
Normal file
Binary file not shown.
BIN
docs/source/development/client/0-sprint-requirements.pdf
Normal file
BIN
docs/source/development/client/0-sprint-requirements.pdf
Normal file
Binary file not shown.
20
docs/source/development/client/index.rst
Normal file
20
docs/source/development/client/index.rst
Normal file
|
@ -0,0 +1,20 @@
|
|||
Feedback ricevuto dal cliente
|
||||
=============================
|
||||
|
||||
Documenti
|
||||
---------
|
||||
|
||||
- :download:`Descrizione iniziale del prodotto <0-initial.pdf>`
|
||||
|
||||
Consegna degli Sprint
|
||||
---------------------
|
||||
|
||||
.. todo::
|
||||
|
||||
Aggiungere i documenti degli sprint mancanti!
|
||||
|
||||
- :download:`Sprint 0 <0-sprint-requirements.pdf>`
|
||||
- :download:`Sprint 1`
|
||||
- :download:`Sprint 2`
|
||||
- :download:`Sprint 3`
|
||||
|
792
docs/source/development/log.rst
Normal file
792
docs/source/development/log.rst
Normal file
|
@ -0,0 +1,792 @@
|
|||
Registro attività
|
||||
=================
|
||||
|
||||
.. todo::
|
||||
|
||||
Mettere titoli personali uguali in tutti gli sprint per consistenza.
|
||||
|
||||
Sprint 0
|
||||
--------
|
||||
|
||||
Riunioni collettive
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Ora
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 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 - Product Owner
|
||||
"""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-08
|
||||
- 1.0h
|
||||
- user stories
|
||||
* - 2021-04-09
|
||||
- 1.0h
|
||||
- epic
|
||||
* - 2021-04-10
|
||||
- 0.5h
|
||||
- use cases
|
||||
* - 2021-04-11
|
||||
- 0.5h
|
||||
- use cases
|
||||
* - 2021-04-14
|
||||
- 0.5h
|
||||
- documentazione SRS
|
||||
* - 2021-04-15
|
||||
- 0.5h
|
||||
- documentazione SRS
|
||||
* - 2021-04-17
|
||||
- 1.5h
|
||||
- diagrammi di attività
|
||||
|
||||
|
||||
Flavia Cocca - Scrum Master
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-08
|
||||
- 2.5h
|
||||
- brainstorming Ui
|
||||
* - 2021-04-10
|
||||
- 2.0h
|
||||
- creazione frame in figma con relativo css
|
||||
* - 2021-04-11
|
||||
- 1.5h
|
||||
- mockup UI con relativo css (creazione componenti)
|
||||
* - 2021-04-12
|
||||
- 1.5h
|
||||
- mockup UI con relativo css (creazione componenti)
|
||||
* - 2021-04-14
|
||||
- 3.0h
|
||||
- mockup UI con relativo css (creazione pagine)
|
||||
* - 2021-04-15
|
||||
- 2.0h
|
||||
- mockup UI con relativo css (creazioni pagine)
|
||||
* - 2021-04-16
|
||||
- 2.0h
|
||||
- ultimi ritocchi UI
|
||||
* - 2021-04-17
|
||||
- 0.5h
|
||||
- Stesura documentazione partita scrumble
|
||||
|
||||
|
||||
Chiara Calzolari - UI/UX Designer
|
||||
"""""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 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 - Frontend Developer & Sysadmin
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
.. todo:: Compilare con i dati di Toggl!
|
||||
|
||||
|
||||
Sprint 1
|
||||
--------
|
||||
|
||||
Riunioni collettive
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Ora
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-05-01
|
||||
- 15:30
|
||||
- 2h
|
||||
- backlog grooming session
|
||||
|
||||
Attività individuali
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Stefano Goldoni - Product Owner
|
||||
"""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-20
|
||||
- 0.5h
|
||||
- analisi test
|
||||
* - 2021-04-20
|
||||
- 1.5h
|
||||
- scrittura test cases
|
||||
* - 2021-04-26
|
||||
- 0.5h
|
||||
- predisposizione progetto in locale per il test
|
||||
* - 2021-04-26
|
||||
- 2.0h
|
||||
- metodi di test login e creazione utente
|
||||
* - 2021-04-28
|
||||
- 2.0h
|
||||
- metodi ti test
|
||||
* - 2021-04-29
|
||||
- 2.0h
|
||||
- metodi di test
|
||||
* - 2021-04-30
|
||||
- 2.0h
|
||||
- metodi di test backend
|
||||
* - 2021-05-01
|
||||
- 1.0h
|
||||
- test frontend
|
||||
* - 2021-05-01
|
||||
- 1.0h
|
||||
- test backend in pair programming
|
||||
* - 2021-05-02
|
||||
- 1.0h
|
||||
- documentazione
|
||||
* - 2021-05-02
|
||||
- 2.5h
|
||||
- test backend
|
||||
|
||||
|
||||
Giovanni Anniballi - Tester
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dell'IDE utilizzato.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-22
|
||||
- 0.5h
|
||||
- Riunione con il team
|
||||
* - 2021-04-23
|
||||
- 1.0h
|
||||
- Studio struttura del backend
|
||||
* - 2021-04-24
|
||||
- 1.5h
|
||||
- Studio del backend, volto a capire il funzionamento delle varie API
|
||||
* - 2021-04-26
|
||||
- 2.0h
|
||||
- Testing login e retrieval dei dati inerenti a tutti gli utenti registrati
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- Testing creazione user
|
||||
* - 2021-04-28
|
||||
- 2.0h
|
||||
- Test cancellazione utente e ritorno dei dati inerenti a quell’utente
|
||||
* - 2021-04-29
|
||||
- 1.5h
|
||||
- Test modica utenti e creazione della prima repository
|
||||
* - 2021-04-30
|
||||
- 2.0h
|
||||
- Testing ritorno di tutte le repository di proprietà dell’utente loggato, ritorno delle info inerenti alla repository specificata
|
||||
* - 2021-05-01
|
||||
- 3.0h
|
||||
- Riunione con il team per sprint review e sprint retrospective(2h). Testing modifica ed eliminazione di una repository (nome, stato)
|
||||
* - 2021-05-02
|
||||
- 2.0h
|
||||
- Testing del frontend tramite UI, controllo generale dei test già effettuati.
|
||||
|
||||
|
||||
Giorgio Minoccari - Sviluppatore Backend
|
||||
""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
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: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-21
|
||||
- 1.0h
|
||||
- Primi test riguardo autenticazione Oauth per API twitter
|
||||
* - 2021-04-23
|
||||
- 1.5h
|
||||
- Autenticazione funzionante
|
||||
* - 2021-04-24
|
||||
- 0.5h
|
||||
- Test su ricerche generali con parole chiave
|
||||
* - 2021-04-26
|
||||
- 1.0h
|
||||
- Test su ricerche geolocalizzate
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- Definizione di entita' di esempio nei database per provare funzioni legate ad esse
|
||||
* - 2021-04-28
|
||||
- 2.0h
|
||||
- Definizione di funzioni per l'aggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API
|
||||
* - 2021-04-29
|
||||
- 1.0h
|
||||
- Refactor codice scritto fino a quel momento, eliminazione di dati inutili
|
||||
* - 2021-05-01
|
||||
- 1.0h
|
||||
- Implementazioni di analisi su termini e hashtag restituiti dall'API
|
||||
* - 2021-05-02
|
||||
- 1.0h
|
||||
- Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate
|
||||
|
||||
|
||||
Lorenzo Balugani - Developer
|
||||
""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-21
|
||||
- 2.0h
|
||||
- Implementazione Base di Dati
|
||||
* - 2021-04-22
|
||||
- 2.0h
|
||||
- Login, creazione utenti
|
||||
* - 2021-04-25
|
||||
- 1.0h
|
||||
- Rimozione utenti, CORS, Creazione repo
|
||||
* - 2021-04-25
|
||||
- 3.0h
|
||||
- Altre funzioni API
|
||||
* - 2021-04-26
|
||||
- 0.5h
|
||||
- Standardizzazione output json
|
||||
* - 2021-04-26
|
||||
- 1.0h
|
||||
- Documentazione
|
||||
* - 2021-04-27
|
||||
- 0.5h
|
||||
- Aggiunto supporto al modulo explorer, fix
|
||||
* - 2021-04-28
|
||||
- 0.5h
|
||||
- Bugfixing
|
||||
* - 2021-04-29
|
||||
- 1.0h
|
||||
- Gestione migliorata errori
|
||||
* - 2021-04-29
|
||||
- 1.0h
|
||||
- Refactoring
|
||||
* - 2021-05-02
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
|
||||
|
||||
FLavia Cocca - Scrum Master
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- modifica mockup UI
|
||||
* - 2021-04-28
|
||||
- 1.0h
|
||||
- Organizzazione Sprint retrospective
|
||||
* - 2021-04-30
|
||||
- 1.0h
|
||||
- modifica mockup UI
|
||||
* - 2021-05-01
|
||||
- 2.0h
|
||||
- Riunione con il team per sprint review e sprint retrospective
|
||||
* - 2021-05-02
|
||||
- 3.0h
|
||||
- Stesura documenti Sprint1(debito tecnico e relazione sprint retrospective), realizzazione video Sprint1 review
|
||||
|
||||
|
||||
Chiara Calzolari - UI Designer
|
||||
""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-04-26
|
||||
- 3.0h
|
||||
- Configurazione ambiente di sviluppo
|
||||
* - 2021-04-27
|
||||
- 1.0h
|
||||
- modifica mockup UI (adeguamento al JS)
|
||||
* - 2021-04-29
|
||||
- 2.0h
|
||||
- modifica mockup UI (Manage users)
|
||||
* - 2021-05-01
|
||||
- 0.5h
|
||||
- Ultimi ritocchi al mockup UI
|
||||
|
||||
|
||||
Stefano Pigozzi - Frontend Developer
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
|
||||
.. todo:: Compilare con i dati di Toggl!
|
||||
|
||||
|
||||
Sprint 2
|
||||
--------
|
||||
|
||||
Riunioni collettive
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Data
|
||||
- Ora
|
||||
- Durata
|
||||
- Attività
|
||||
|
||||
* - 2021-05-14
|
||||
- 10:00
|
||||
- 1.0h
|
||||
- Sprint Retrospective session
|
||||
|
||||
|
||||
Attività individuali
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Chiara Calzolari - UI Designer
|
||||
""""""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 11.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-03
|
||||
- 1.0h
|
||||
- Testing frontend e segnalazione issues
|
||||
* - 2021-05-03
|
||||
- 1.0h
|
||||
- Modifica mockup UI (Dashboard repository)
|
||||
* - 2021-05-04
|
||||
- 1.0h
|
||||
- Modifica mockup UI (adeguamento al JS)
|
||||
* - 2021-05-10
|
||||
- 3.0h
|
||||
- Configurazione ambiente di sviluppo
|
||||
* - 2021-05-11
|
||||
- 1.5h
|
||||
- Modifica UI (traduzione in Italiano)
|
||||
* - 2021-05-12
|
||||
- 0.5h
|
||||
- Modifica UI (traduzione in Italiano)
|
||||
* - 2021-05-14
|
||||
- 3.0h
|
||||
- Realizzazione video demo sprint 2
|
||||
|
||||
|
||||
Stefano Goldoni - Product Owner & Tester
|
||||
""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 16.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 1.0h
|
||||
- preparazione backlog sprint 2
|
||||
* - 2021-05-10
|
||||
- 3.0h
|
||||
- test sprint 2
|
||||
* - 2021-05-11
|
||||
- 2.5h
|
||||
- test utenti e repository
|
||||
* - 2021-05-12
|
||||
- 2.0h
|
||||
- test repository
|
||||
* - 2021-05-13
|
||||
- 2.5h
|
||||
- test repository
|
||||
* - 2021-05-14
|
||||
- 3.0h
|
||||
- test conditions
|
||||
* - 2021-05-15
|
||||
- 2.0h
|
||||
- test conditions + sonarqube scanner
|
||||
|
||||
|
||||
Lorenzo Balugani - DB & Backend Developer
|
||||
"""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 19.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-05
|
||||
- 4.0h
|
||||
- Setup di swagger, documentazione
|
||||
* - 2021-05-06
|
||||
- 4.0h
|
||||
- Documentazione, sviluppo
|
||||
* - 2021-05-07
|
||||
- 3.0h
|
||||
- Alert, documentazione
|
||||
* - 2021-05-10
|
||||
- 2.0h
|
||||
- Alert Put, bugfixing
|
||||
* - 2021-05-11
|
||||
- 3.0h
|
||||
- Bugfixing, sviluppo
|
||||
* - 2021-05-12
|
||||
- 3.0h
|
||||
- Risolti issue pubblicati su Taiga
|
||||
* - 2021-05-13
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
* - 2021-05-14
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
|
||||
|
||||
Stefano Pigozzi - Sysadmin & Frontend Developer
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 27.5h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-05
|
||||
- 0.40h
|
||||
- Riunione
|
||||
* - 2021-05-05
|
||||
- 0.21h
|
||||
- Documentazione
|
||||
* - 2021-05-06
|
||||
- 0.09h
|
||||
- Sviluppo
|
||||
* - 2021-05-06
|
||||
- 0.03h
|
||||
- Configurazione Taiga
|
||||
* - 2021-05-06
|
||||
- 0.11h
|
||||
- Documentazione
|
||||
* - 2021-05-06
|
||||
- 0.09h
|
||||
- Riunione
|
||||
* - 2021-05-06
|
||||
- 0.20h
|
||||
- Documentazione
|
||||
* - 2021-05-06
|
||||
- 0.39h
|
||||
- Sviluppo
|
||||
* - 2021-05-06
|
||||
- 0.15h
|
||||
- Riunione
|
||||
* - 2021-05-06
|
||||
- 1.04h
|
||||
- Riunione
|
||||
* - 2021-05-07
|
||||
- 1.47h
|
||||
- Sviluppo
|
||||
* - 2021-05-07
|
||||
- 0.17h
|
||||
- Sviluppo
|
||||
* - 2021-05-07
|
||||
- 0.34h
|
||||
- Sviluppo
|
||||
* - 2021-05-07
|
||||
- 0.34h
|
||||
- Project management
|
||||
* - 2021-05-07
|
||||
- 2.44h
|
||||
- Sviluppo
|
||||
* - 2021-05-08
|
||||
- 0.13h
|
||||
- Sviluppo
|
||||
* - 2021-05-08
|
||||
- 0.29h
|
||||
- Sviluppo
|
||||
* - 2021-05-08
|
||||
- 0.18h
|
||||
- Sviluppo
|
||||
* - 2021-05-10
|
||||
- 1.00h
|
||||
- Sviluppo
|
||||
* - 2021-05-10
|
||||
- 1.15h
|
||||
- Configurazione GitLab
|
||||
* - 2021-05-10
|
||||
- 0.25h
|
||||
- Sviluppo
|
||||
* - 2021-05-10
|
||||
- 0.39h
|
||||
- Sviluppo
|
||||
* - 2021-05-11
|
||||
- 0.25h
|
||||
- Bugfixing
|
||||
* - 2021-05-11
|
||||
- 3.57h
|
||||
- Sviluppo
|
||||
* - 2021-05-11
|
||||
- 1.45h
|
||||
- Sviluppo
|
||||
* - 2021-05-12
|
||||
- 0.10h
|
||||
- Sviluppo
|
||||
* - 2021-05-12
|
||||
- 1.51h
|
||||
- Sviluppo
|
||||
* - 2021-05-13
|
||||
- 1.00h
|
||||
- Sviluppo
|
||||
* - 2021-05-13
|
||||
- 1.20h
|
||||
- Sviluppo
|
||||
* - 2021-05-14
|
||||
- 0.20h
|
||||
- Sviluppo
|
||||
* - 2021-05-15
|
||||
- 3.17h
|
||||
- Documentazione
|
||||
|
||||
|
||||
Flavia Cocca - Scrum Master & UI Designer
|
||||
"""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 16.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 0.5h
|
||||
- Riunione per con PO, nuovo backlog
|
||||
* - 2021-05-05
|
||||
- 1.0h
|
||||
- Riunione
|
||||
* - 2021-05-07
|
||||
- 3.0h
|
||||
- Refactoring test
|
||||
* - 2021-05-08
|
||||
- 2.0h
|
||||
- Refactoring test
|
||||
* - 2021-05-09
|
||||
- 3.0h
|
||||
- Nuovi test
|
||||
* - 2021-05-11
|
||||
- 2.5h
|
||||
- Discussione test e risoluzione di alcune issue
|
||||
* - 2021-05-13
|
||||
- 1.0h
|
||||
- Bugfixing
|
||||
* - 2021-05-14
|
||||
- 1.0h
|
||||
- Sprint Retrospective
|
||||
* - 2021-05-15
|
||||
- 2.0h
|
||||
- Documentazione
|
||||
|
||||
|
||||
Giovanni Anniballi - Tester
|
||||
"""""""""""""""""""""""""""
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 17.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 0.5h
|
||||
- Incontro con SM e PO per valutare quali US andranno nello sprint2
|
||||
* - 2021-05-05
|
||||
- 1.0h
|
||||
- Incontro con il team
|
||||
* - 2021-05-07
|
||||
- 2.0h
|
||||
- Refactoring tests sugli user e primi utilizzi delle fixtures
|
||||
* - 2021-05-08
|
||||
- 2.0h
|
||||
- Completamento test users
|
||||
* - 2021-05-10
|
||||
- 1.0h
|
||||
- Ulteriori approcci (fallimentari) al coverage di SonarQube
|
||||
* - 2021-05-11
|
||||
- 2.0h
|
||||
- Discussione sui test e correzioni bug
|
||||
* - 2021-05-12
|
||||
- 1.0h
|
||||
- Test repository
|
||||
* - 2021-05-13
|
||||
- 1.0h
|
||||
- Generazione coverage pytest e setting sonarqube (riuscito!)
|
||||
* - 2021-05-14
|
||||
- 4.0h
|
||||
- Sprint review e retrospettiva, conclusione test repository
|
||||
* - 2021-05-15
|
||||
- 2.5h
|
||||
- generazione nuovo coverage e fix a sonarqube 2h, fix piccoli bug segnalati da sonarqube 0.5h
|
||||
|
||||
|
||||
Giorgio Minoccari - Analyst & Backend Developer
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 2
|
||||
|
||||
* - Data
|
||||
- Durata
|
||||
- Attività
|
||||
* -
|
||||
- 10.0h
|
||||
- Totale
|
||||
|
||||
* - 2021-05-04
|
||||
- 0.5h
|
||||
- Aggiunta della condizione sull'utente
|
||||
* - 2021-05-10
|
||||
- 2.0h
|
||||
- Tentativo di inserimento delle query con place_id
|
||||
* - 2021-05-11
|
||||
- 1.5h
|
||||
- Test per passare alla versione 2.0 delle API
|
||||
* - 2021-05-12
|
||||
- 1.0h
|
||||
- Ritorno alla versione 1.1 perche' lascia disponibili le query sulla geolocalizzazione gratuitamente
|
||||
* - 2021-05-14
|
||||
- 5.0h
|
||||
- Integrazione e inserimento dei tweet catturati nel database
|
||||
|
||||
|
||||
Sprint 3
|
||||
--------
|
||||
|
||||
.. todo::
|
||||
|
||||
Compilare il registro attività dello sprint 3.
|
4311
docs/source/development/stats/0-stats.html
Normal file
4311
docs/source/development/stats/0-stats.html
Normal file
File diff suppressed because one or more lines are too long
4311
docs/source/development/stats/1-stats.html
Normal file
4311
docs/source/development/stats/1-stats.html
Normal file
File diff suppressed because one or more lines are too long
4311
docs/source/development/stats/2-stats.html
Normal file
4311
docs/source/development/stats/2-stats.html
Normal file
File diff suppressed because one or more lines are too long
4311
docs/source/development/stats/2D-stats.html
Normal file
4311
docs/source/development/stats/2D-stats.html
Normal file
File diff suppressed because one or more lines are too long
20
docs/source/development/stats/index.rst
Normal file
20
docs/source/development/stats/index.rst
Normal file
|
@ -0,0 +1,20 @@
|
|||
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>`
|
3
docs/source/development/tools.rst
Normal file
3
docs/source/development/tools.rst
Normal file
|
@ -0,0 +1,3 @@
|
|||
Strumenti utilizzati
|
||||
====================
|
||||
|
|
@ -5,12 +5,29 @@ Benvenuto alla documentazione di N.E.S.T.!
|
|||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Manuale
|
||||
:caption: Manuale utente
|
||||
|
||||
about/index
|
||||
installation/index
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Guida sviluppatore
|
||||
|
||||
meta/index
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Compendio del progetto
|
||||
|
||||
development/client/index
|
||||
development/stats/index
|
||||
development/log
|
||||
development/tools
|
||||
|
||||
|
||||
.. toctree::
|
||||
:caption: Documentazione autogenerata
|
||||
|
||||
|
|
|
@ -113,8 +113,8 @@ Le dipendenze Python sono gestite da *Poetry*, e possono essere installate con:
|
|||
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. .
|
||||
|
||||
**Segnatevi il nome** del venv creato da Poetry, in quanto sarà necessario per
|
||||
:ref:`creare un servizio SystemD per il backend`:
|
||||
**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
|
||||
|
||||
|
|
BIN
docs/source/meta/docsRunConfig.png
Normal file
BIN
docs/source/meta/docsRunConfig.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3 KiB |
84
docs/source/meta/index.rst
Normal file
84
docs/source/meta/index.rst
Normal file
|
@ -0,0 +1,84 @@
|
|||
Meta-documentazione
|
||||
===================
|
||||
|
||||
La documentazione è scritta in `reStructuredText <https://docutils.sourceforge.io/rst.html>`_, ed è generata con
|
||||
`Sphinx <https://www.sphinx-doc.org/en/master/>`_.
|
||||
|
||||
I dati relativi alla documentazione si trovano nella directory standard ``/docs``;
|
||||
in particolare, le sorgenti reStructuredText si trovano in ``/docs/source``,
|
||||
mentre l'ultima versione compilata si trova in ``/docs/build``.
|
||||
|
||||
Questa struttura permetterebbe l'integrazione con lo strumento di "Continuous Documentation"
|
||||
`ReadTheDocs <https://readthedocs.com/>`_, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza
|
||||
almeno `Basic <https://readthedocs.com/pricing/>`_.
|
||||
|
||||
|
||||
Compilazione con IntelliJ IDEA
|
||||
------------------------------
|
||||
|
||||
È possibile compilare manualmente la documentazione con IntelliJ IDEA.
|
||||
|
||||
Su sistemi Linux, è disponibile la Run Configuration ``Docs``, che compilerà la versione HTML della documentazione se
|
||||
eseguita.
|
||||
|
||||
.. image:: docsRunConfig.png
|
||||
|
||||
|
||||
Compilazione con GNU Make
|
||||
-------------------------
|
||||
|
||||
È possibile compilare manualmente la documentazione con GNU Make.
|
||||
|
||||
Come prima cosa, è necessario :ref:`Installare le dipendenze Python` del progetto:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto$ poetry install
|
||||
|
||||
Poi, si entri all'interno del virtual environment:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto$ poetry shell
|
||||
|
||||
Una volta all'interno del venv, si entri nella cartella della documentazione:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto$ cd docs
|
||||
|
||||
Infine, si esegua il target ``html`` del Makefile:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
user:g2-progetto/docs$ make html
|
||||
|
||||
|
||||
Compilazione con Windows Powershell
|
||||
-----------------------------------
|
||||
|
||||
È possibile compilare manualmente la documentazione con Windows Powershell.
|
||||
|
||||
Come prima cosa, è necessario :ref:`Installare le dipendenze Python` del progetto:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto> poetry install
|
||||
|
||||
Poi, si entri all'interno del virtual environment:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto> poetry shell
|
||||
|
||||
Una volta all'interno del venv, si entri nella cartella della documentazione:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto> cd docs
|
||||
|
||||
Infine, si esegua lo script ``make.bat`` con il parametro ``html``:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
g2-progetto/docs> make html
|
|
@ -1,4 +0,0 @@
|
|||
# Checklists
|
||||
|
||||
Le checklist con tutte le cose da fare (relative a Progetto del Software, non al prodotto) ad ogni Sprint saranno
|
||||
disponibili qui.
|
17
legacy/doc/doc_sprint1/gitshortlog.txt
Normal file
17
legacy/doc/doc_sprint1/gitshortlog.txt
Normal file
|
@ -0,0 +1,17 @@
|
|||
217 Stefano Pigozzi <256895@studenti.unimore.it>
|
||||
59 Lorenzo Balugani <lorenzo.balugani@gmail.com>
|
||||
54 stefanogoldoni <stefanogoldoni@gmail.com>
|
||||
26 Annielated <giovannianniballi@hotmail.com>
|
||||
24 Flavia Cocca <253218@studenti.unimore.it>
|
||||
17 Stefano Pigozzi <me@steffo.eu>
|
||||
13 Stefano Goldoni <280712@studenti.unimore.it>
|
||||
12 Giovanni Anniballi <253150@studenti.unimore.it>
|
||||
11 Chiara Calzolari <258727@studenti.unimore.it>
|
||||
10 g.minoccari <g.minoccari@gmail.com>
|
||||
9 Lorenzo Balugani <256867@studenti.unimore.it>
|
||||
5 FlaviaC-uni <80752618+FlaviaC-uni@users.noreply.github.com>
|
||||
5 Giorgio Minoccari <261807@studenti.unimore.it>
|
||||
4 Nemesis <lorenzo.balugani@gmail.com>
|
||||
3 @uni-chiara <258727@studenti.unimore.it>
|
||||
3 Prof. Missiroli (home) <prof.missiroli@gmail.com>
|
||||
2 Marcello Missiroli <mmissiroli@unimore.it>
|
|
@ -1,8 +0,0 @@
|
|||
# Guida per sphinx
|
||||
- Crea la cartella docs
|
||||
- Entra nella cartella docs
|
||||
- sphinx-quickstart --ext-autodoc
|
||||
- Segui la procedura
|
||||
- Modifica l'rst aggiungendo "modules" sotto la struttura ad albero e modifica config.py in modo che il path faccia
|
||||
riferimento alla parent directory
|
||||
- make html
|
|
@ -1,13 +1,3 @@
|
|||
# Log riunioni collettive dello Sprint 0
|
||||
|
||||
| Data | Ora | Durata | Attività |
|
||||
|------|-----|--------|----------|
|
||||
| 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 |
|
||||
|
||||
|
||||
# Log attività individuali dello Sprint 0
|
||||
|
|
|
@ -21,6 +21,7 @@ class InputLoginSchema(Schema):
|
|||
class ErrorSchema(Schema):
|
||||
result = fields.String(description="Contains a string that informs if the procedure was successful.")
|
||||
msg = fields.String(description="Contains a description of the error.")
|
||||
code = fields.String(description="Error code")
|
||||
|
||||
|
||||
class SuccesSchema(Schema):
|
||||
|
@ -93,6 +94,9 @@ class CreateAlert(Schema):
|
|||
name = fields.String(description="The name of the alert.")
|
||||
limit = fields.Integer(description="The number of tweets in a time window.")
|
||||
window_size = fields.Integer(description="The size of the time window.")
|
||||
repository_id = fields.Integer(description="The id of the related repository.")
|
||||
evaluation_mode = fields.Integer(description="How the conditions have to be evaluated.")
|
||||
conditions = fields.Nested(ConditionSchema, many=True)
|
||||
|
||||
|
||||
class Operations(Schema):
|
||||
|
@ -117,8 +121,8 @@ class Alert(Schema):
|
|||
limit = fields.Integer(description="The number of tweets in a time window.")
|
||||
window_size = fields.Integer(description="The size of the time window.")
|
||||
repository_id = fields.Integer(description="The id of the related repository.")
|
||||
operations = fields.Nested(Operations, many=True)
|
||||
root_operation = fields.Nested(Operations, many=False)
|
||||
evaluation_mode = fields.Integer(description="How the conditions have to be evaluated.")
|
||||
conditions = fields.Nested(ConditionSchema, many=True)
|
||||
notifications = fields.Nested(Notification, many=True)
|
||||
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ This module defines the Alert database class.
|
|||
"""
|
||||
|
||||
from ..base import ext
|
||||
from .Enums import ConditionMode
|
||||
|
||||
|
||||
class Alert(ext.Model):
|
||||
|
@ -11,12 +12,13 @@ class Alert(ext.Model):
|
|||
name = ext.Column(ext.String, nullable=False)
|
||||
limit = ext.Column(ext.Integer, nullable=False)
|
||||
window_size = ext.Column(ext.Integer, nullable=False)
|
||||
evaluation_mode = ext.Column(ext.Enum(ConditionMode), nullable=False, default=ConditionMode.all_or)
|
||||
# Foreign Keys
|
||||
repository_id = ext.Column(ext.Integer, ext.ForeignKey("repository.id", ondelete="CASCADE"), nullable=False)
|
||||
# Relationships
|
||||
repository = ext.relationship("Repository", back_populates="alerts")
|
||||
notifications = ext.relationship("Notification", back_populates="alert")
|
||||
operations = ext.relationship("BoolOperation", back_populates="alert")
|
||||
conditions = ext.relationship("MadeOf", back_populates="alert")
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
|
@ -25,8 +27,7 @@ class Alert(ext.Model):
|
|||
'window_size': self.window_size,
|
||||
'limit': self.limit,
|
||||
'repository_id': self.repository_id,
|
||||
'evaluation_mode': self.evaluation_mode.value,
|
||||
'notifications': [notification.to_json() for notification in self.notifications],
|
||||
'operations': [operation.to_json() for operation in self.operations],
|
||||
'root_operation': [operation.to_json() for operation in self.operations if operation.is_root == True][
|
||||
0] if self.operations else None
|
||||
'conditions': [c.condition.to_json() for c in self.conditions]
|
||||
}
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
"""
|
||||
This module defines the BoolOperation database class.
|
||||
"""
|
||||
|
||||
from ..base import ext
|
||||
from .Enums import OperationType
|
||||
from sqlalchemy.orm import backref
|
||||
|
||||
|
||||
class BoolOperation(ext.Model):
|
||||
__tablename__ = "bool_operation"
|
||||
|
||||
id = ext.Column(ext.Integer, primary_key=True)
|
||||
operation = ext.Column(ext.Enum(OperationType), nullable=False)
|
||||
is_root = ext.Column(ext.Boolean, default=False, nullable=False)
|
||||
# Foreign Keys
|
||||
condition_id = ext.Column(ext.Integer, ext.ForeignKey("condition.id"))
|
||||
node_1_id = ext.Column(ext.Integer, ext.ForeignKey("bool_operation.id", ondelete="SET NULL"))
|
||||
node_2_id = ext.Column(ext.Integer, ext.ForeignKey("bool_operation.id", ondelete="SET NULL"))
|
||||
alert_id = ext.Column(ext.Integer, ext.ForeignKey("alert.id", ondelete="CASCADE"))
|
||||
# Relationships
|
||||
condition = ext.relationship("Condition", back_populates="operations")
|
||||
node_1 = ext.relationship("BoolOperation", primaryjoin=("bool_operation.c.node_1_id==bool_operation.c.id"),
|
||||
remote_side="BoolOperation.id", backref=backref("father_1", uselist=False))
|
||||
node_2 = ext.relationship("BoolOperation", primaryjoin=("bool_operation.c.node_2_id==bool_operation.c.id"),
|
||||
remote_side="BoolOperation.id", backref=backref("father_2", uselist=False))
|
||||
alert = ext.relationship("Alert", back_populates="operations")
|
||||
|
||||
def to_json(self):
|
||||
return {"id": self.id,
|
||||
"operation": self.operation,
|
||||
"is_root": self.is_root,
|
||||
"alert_id": self.alert_id,
|
||||
"condition": self.condition.to_json() if self.condition else None,
|
||||
"node_1": self.node_1.to_json() if self.node_1 else None,
|
||||
"node_2": self.node_2.to_json() if self.node_2 else None
|
||||
}
|
||||
|
||||
def get_chain_ids(self, lista):
|
||||
if self.id in lista:
|
||||
# Loop detected!
|
||||
return -1
|
||||
lista.append(self.id)
|
||||
self.node_1.get_chain_ids(lista)
|
||||
self.node_1.get_chain_ids(lista)
|
|
@ -16,7 +16,7 @@ class Condition(ext.Model):
|
|||
# Relationships
|
||||
repository = ext.relationship("Repository", back_populates="conditions")
|
||||
tweets = ext.relationship("Contains", back_populates="condition")
|
||||
operations = ext.relationship("BoolOperation", back_populates="condition")
|
||||
alerts = ext.relationship("MadeOf", back_populates="condition")
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
|
|
14
nest_backend/database/tables/MadeOf.py
Normal file
14
nest_backend/database/tables/MadeOf.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
"""
|
||||
This module defines the MadeOf database class.
|
||||
"""
|
||||
|
||||
from ..base import ext
|
||||
|
||||
|
||||
class MadeOf(ext.Model):
|
||||
__tablename__ = "made_of"
|
||||
aid = ext.Column(ext.Integer, ext.ForeignKey("alert.id", ondelete="CASCADE"), primary_key=True)
|
||||
cid = ext.Column(ext.Integer, ext.ForeignKey("condition.id"), primary_key=True)
|
||||
# Relationships
|
||||
alert = ext.relationship("Alert", back_populates="conditions")
|
||||
condition = ext.relationship("Condition", back_populates="alerts")
|
|
@ -4,7 +4,6 @@ This module contains all database classes.
|
|||
|
||||
from .Alert import Alert
|
||||
from .Authorization import Authorization
|
||||
from .BoolOperation import BoolOperation
|
||||
from .Composed import Composed
|
||||
from .Condition import Condition
|
||||
from .Contains import Contains
|
||||
|
@ -12,4 +11,5 @@ from .Notification import Notification
|
|||
from .Repository import Repository
|
||||
from .Tweet import Tweet
|
||||
from .User import User
|
||||
from .MadeOf import MadeOf
|
||||
from .Enums import ConditionType, OperationType, ConditionMode
|
27
nest_backend/errors.py
Normal file
27
nest_backend/errors.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
# User errors
|
||||
USER_NOT_FOUND = "errorUserNotFound" # Could not find user
|
||||
USER_WRONG_CREDENTIALS = "errorUserWrongCredentials" # User has given incorrect pair of credentials
|
||||
USER_NOT_AUTHORIZED = "errorUserNotAuthorized" # User is not authorized to proceed
|
||||
USER_NOT_ADMIN = "errorUserNotAdmin" # User is not an admin
|
||||
USER_PREVENT_SEPPUKU = "errorUserPreventSeppuku" # User cannot delete himself
|
||||
USER_DELETION_ERROR = "errorDeletionError" # Something is preventing the deletion of the user
|
||||
# Generic
|
||||
GENERIC_NOT_FOUND = "errorNotFound" # Generic 404
|
||||
GENERIC_MISSING_FIELDS = "errorMissingFields" # Generic 400
|
||||
GENERIC_ALREADY_EXISTS = "errorAlreadyExists" # Generic primary key error
|
||||
GENERIC_ENUM_INVALID = "errorEnumInvalid" # The given integer is not a valid one
|
||||
GENERIC_UFO = "errorUnknownError" # The classic 'the hell is this' error
|
||||
GENERIC_NO_JSON = "errorNoJson" # No JSON was given
|
||||
# Repository
|
||||
REPOSITORY_NOT_FOUND = "errorRepositoryNotFound" # Repository not found
|
||||
REPOSITORY_NOT_OWNER = "errorRepositoryNotOwner" # The user is not the repository owner
|
||||
REPOSITORY_DEPENDENCY_FAILURE = "errorRepositoryDepencencyFailure" # Something is preventing the repo to go away
|
||||
# Conditions
|
||||
CONDITION_NOT_FOUND = "errorConditionNotFound" # Condition not found.
|
||||
# Alerts
|
||||
ALERT_NOT_FOUND = "errorAlertNotFound" # Alert not found
|
||||
ALERT_NO_NAME = "errorAlertNoName" # Missing name entry
|
||||
ALERT_NO_LIMIT = "errorAlertNoLimit" # Missing limit entry
|
||||
ALERT_NO_WINDOW = "errorAlertNoWindow" # Missing window entry
|
||||
ALERT_NO_EVALUATION = "errorAlertNoEvaluation" # Missing evalmode entry
|
||||
ALERT_DELETION_FAILURE = "errorAlertDeletionFailure" # Error while deleting alerts
|
|
@ -8,6 +8,7 @@ import functools
|
|||
from flask_jwt_extended import get_jwt_identity
|
||||
from flask import jsonify
|
||||
from re import sub
|
||||
from .errors import GENERIC_UFO
|
||||
|
||||
__all__ = ["authenticate", "identity", "gen_password", "find_user", "admin_or_403",
|
||||
"repository_auth", "json_request_authorizer", "json_error",
|
||||
|
@ -84,13 +85,14 @@ def repository_auth(f):
|
|||
return func
|
||||
|
||||
|
||||
def json_error(msg):
|
||||
def json_error(msg, code=GENERIC_UFO):
|
||||
"""
|
||||
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.
|
||||
"""
|
||||
return jsonify({"result": "failure", 'msg': msg})
|
||||
return jsonify({"result": "failure", 'msg': msg, 'code':code})
|
||||
|
||||
|
||||
def json_success(data):
|
||||
|
|
|
@ -4,6 +4,7 @@ from flask_jwt_extended import jwt_required, get_jwt_identity
|
|||
from nest_backend.gestione import *
|
||||
from flask_cors import cross_origin
|
||||
import datetime
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -113,16 +114,14 @@ def page_alert(aid):
|
|||
"""
|
||||
user = find_user(get_jwt_identity())
|
||||
alert = Alert.query.filter_by(id=aid).first()
|
||||
if alert.repository_id not in user.owner_of:
|
||||
return json_error("The user is not authorized."), 403
|
||||
if not alert:
|
||||
return json_error("Could not find alert."), 404
|
||||
return json_error("Could not find alert.", ALERT_NOT_FOUND), 404
|
||||
if alert.repository not in [a.repository for a in user.authorizations] + user.owner_of:
|
||||
return json_error("You are not authorized to proceed."), 403
|
||||
return json_error("You are not authorized to proceed.", USER_NOT_AUTHORIZED), 403
|
||||
if request.method == "GET":
|
||||
return json_success(alert.to_json()), 200
|
||||
if alert.repository not in user.owner_of:
|
||||
return json_error("You are not authorized to proceed."), 403
|
||||
return json_error("You are not authorized to proceed.", REPOSITORY_NOT_OWNER), 403
|
||||
if request.method == "PATCH":
|
||||
if 'name' in request.json:
|
||||
alert.name = request.json['name']
|
||||
|
@ -130,6 +129,13 @@ def page_alert(aid):
|
|||
alert.limit = request.json['limit']
|
||||
if 'window_size' in request.json:
|
||||
alert.window_size = request.json['window_size']
|
||||
if 'evaluation_mode' in request.json:
|
||||
try:
|
||||
alert.evaluation_mode = ConditionMode(request.json['evaluation_mode'])
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
except Exception as e:
|
||||
return json_error("Unknown error:" + str(e), GENERIC_UFO), 400
|
||||
ext.session.commit()
|
||||
return json_success(alert.to_json()), 204
|
||||
elif request.method == "DELETE":
|
||||
|
@ -137,88 +143,38 @@ def page_alert(aid):
|
|||
ext.session.delete(alert)
|
||||
ext.session.commit()
|
||||
except Exception:
|
||||
return json_error("Something went wrong while deleting alert."), 500
|
||||
return json_error("Something went wrong while deleting alert.", ALERT_DELETION_FAILURE), 500
|
||||
return json_success("Deletion completed."), 204
|
||||
elif request.method == "PUT":
|
||||
if not json_request_authorizer(request.json, alert):
|
||||
return json_error("Missing one or more parameters in repository json."), 400
|
||||
return json_error("Missing one or more parameters in repository json.", GENERIC_MISSING_FIELDS), 400
|
||||
alert.limit = request.json['limit']
|
||||
alert.name = request.json['name']
|
||||
alert.window_size = request.json['window_size']
|
||||
root_id = alert.to_json()['root_operation']['id']
|
||||
root = BoolOperation.filter_by(id=root_id).first()
|
||||
if not root:
|
||||
return json_error("Could not find original root element."), 404
|
||||
# No longer used chain element deletion
|
||||
l = []
|
||||
bool_list = root.get_chains_ids(l)
|
||||
for element in alert.operations:
|
||||
if element.id not in bool_list:
|
||||
if element.id == root.id:
|
||||
root = None
|
||||
ext.session.delete(element)
|
||||
if (mode := request.json.get("evaluation_mode")) is not None:
|
||||
try:
|
||||
alert.evaluation_mode = ConditionMode(mode)
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
except Exception as e:
|
||||
return json_error("Unknown error:" + str(e), GENERIC_UFO), 400
|
||||
if request.json['conditions'] is not None:
|
||||
# Possibile vulnearabilità! Un utente potrebbe aggiungere conditions non del suo repo!
|
||||
for c in request.json['conditions']:
|
||||
if c['id'] not in alert.repository.conditions:
|
||||
return json_error("Stop! You violated the law!", USER_NOT_AUTHORIZED), 403
|
||||
# Wow very pythonic so much wow
|
||||
# Obtain list of no longer needed connections
|
||||
to_be_deleted = [c.cid for c in alert.conditions if
|
||||
c.cid not in [json['id'] for json in request.json['conditions']]]
|
||||
# RIP AND TEAR UNTIL ITS DONE
|
||||
for elem in to_be_deleted:
|
||||
conn = MadeOf.query.filter_by(cid=elem, aid=alert.id).first()
|
||||
if conn:
|
||||
ext.session.delete(conn)
|
||||
ext.session.commit()
|
||||
for c in request.json['conditions']:
|
||||
conn = MadeOf(cid=c['id'], aid=alert.id)
|
||||
ext.session.add(conn)
|
||||
ext.session.commit()
|
||||
if request.json['root-operation'].get('id'): # If an alternative root is already present.
|
||||
new_root_test = BoolOperation.filter_by(id=request.json['root_operation']['id']).first()
|
||||
if new_root_test and new_root_test != root:
|
||||
new_root_test.is_root = True
|
||||
ext.session.commit()
|
||||
else: # If the alternative root needs to be brand-new.
|
||||
condition_id = None
|
||||
if request.json['root_operation'].get('condition'): # Is the new alternative connected to a condition?
|
||||
if not Condition.query.filter_by(id=request.json['root_operation']['condition']['id'],
|
||||
repository_id=alert.repository_id).first():
|
||||
return json_error("One of the provided IDs is incorrect."), 404
|
||||
condition_id = request.json['root_operation']['condition']['id']
|
||||
if (type_ := request.json['root-operation']['operation']) is not None:
|
||||
try:
|
||||
type_ = OperationType(type_)
|
||||
except KeyError:
|
||||
return json_error("Unknown `operation` specified."), 400
|
||||
root = BoolOperation(operation=type_, is_root=True, alert_id=aid, condition_id=condition_id)
|
||||
ext.session.add(root)
|
||||
ext.session.commit()
|
||||
root = BoolOperation.filter_by(id=request.json['root_operation']['id']).first()
|
||||
try:
|
||||
recursion(root, ext, request.json['root_operation'])
|
||||
except FileNotFoundError:
|
||||
return json_error("One of the provided IDs is incorrect"), 404
|
||||
except KeyError:
|
||||
return json_error("Unknown field specified."), 400
|
||||
return json_success(alert.to_json()), 200
|
||||
|
||||
|
||||
def create_node(node, ext, json, id):
|
||||
# Check if the node already exists
|
||||
id_1 = json[f'node_{id}']['id']
|
||||
if id_1:
|
||||
node_1 = BoolOperation.query.filter_by(id=id_1).first()
|
||||
if not node_1:
|
||||
raise FileNotFoundError
|
||||
else:
|
||||
# The node is new.
|
||||
condition_id = None
|
||||
if json[f'node_{id}'].get('condition'):
|
||||
condition = Condition.query.filter_by(
|
||||
id=json[f'node_{id}']['condition']['id']).filter(
|
||||
Condition.repository_id == node.alert.repository_id).first()
|
||||
if not condition:
|
||||
raise FileNotFoundError
|
||||
condition_id = condition.id
|
||||
if (type_ := json[f'node_{id}']['operation']) is not None:
|
||||
type_ = OperationType(type_)
|
||||
else:
|
||||
raise FileNotFoundError
|
||||
# Create new node
|
||||
node_1 = BoolOperation(operation=type_, is_root=False, condition_id=condition_id, alert_id=node.alert_id)
|
||||
ext.session.add(node_1)
|
||||
ext.session.commit()
|
||||
# Recursion goes brr
|
||||
recursion(node_1, ext, json['node_1'])
|
||||
|
||||
|
||||
def recursion(node, ext, json):
|
||||
if json.get('node_1'): # Create node 1
|
||||
create_node(node, ext, json, 1)
|
||||
if json.get('node_2'): # Create node 2
|
||||
create_node(node, ext, json, 2)
|
|
@ -3,6 +3,7 @@ from nest_backend.database import *
|
|||
from flask_jwt_extended import jwt_required, get_jwt_identity
|
||||
from nest_backend.gestione import *
|
||||
from flask_cors import cross_origin
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -69,24 +70,41 @@ def page_repository_alerts(rid):
|
|||
|
||||
repository = Repository.query.filter_by(id=rid).first()
|
||||
if not repository:
|
||||
return json_error("Could not find repository"), 404
|
||||
return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404
|
||||
user = find_user(get_jwt_identity())
|
||||
if user.email != repository.owner_id:
|
||||
return json_error("You are not authorized."), 403
|
||||
return json_error("You are not authorized.", REPOSITORY_NOT_OWNER), 403
|
||||
|
||||
if request.method == "GET":
|
||||
return json_success([alert.to_json() for alert in repository.alerts])
|
||||
|
||||
if request.method == "POST":
|
||||
if 'name' not in request.json:
|
||||
return json_error("Missing name."), 400
|
||||
return json_error("Missing name.", ALERT_NO_NAME), 400
|
||||
if 'limit' not in request.json:
|
||||
return json_error('Missing limit'), 400
|
||||
return json_error('Missing limit', ALERT_NO_LIMIT), 400
|
||||
if 'window_size' not in request.json:
|
||||
return json_error('Missing window size'), 400
|
||||
return json_error('Missing window size', ALERT_NO_WINDOW), 400
|
||||
if (mode := request.json.get("evaluation_mode")) is not None:
|
||||
try:
|
||||
mode = ConditionMode(mode)
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
except Exception as e:
|
||||
return json_error("Unknown error:" + str(e), GENERIC_UFO), 400
|
||||
else:
|
||||
return json_error("Evaluation mode was not provided.", ALERT_NO_EVALUATION), 400
|
||||
|
||||
alert = Alert(name=request.json['name'], limit=request.json['limit'], window_size=request.json['window_size'],
|
||||
repository_id=rid)
|
||||
repository_id=rid, evaluation_mode=mode)
|
||||
ext.session.add(alert)
|
||||
ext.session.commit()
|
||||
|
||||
if request.json['conditions'] is not None:
|
||||
for condition in request.json['conditions']:
|
||||
c = Condition.query.filter_by(id=condition['id']).first()
|
||||
if not c:
|
||||
return json_error("Could not locate condition.", CONDITION_NOT_FOUND), 404
|
||||
conn = MadeOf(aid=alert.id, cid=c.id)
|
||||
ext.session.add(conn)
|
||||
ext.session.commit()
|
||||
return json_success(alert.to_json()), 201
|
||||
|
|
|
@ -3,6 +3,7 @@ from nest_backend.database import *
|
|||
from flask_jwt_extended import jwt_required, get_jwt_identity
|
||||
from nest_backend.gestione import *
|
||||
from flask_cors import cross_origin
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -106,25 +107,25 @@ def page_condition(cid):
|
|||
condition = Condition.query.filter_by(id=cid).first()
|
||||
user = find_user(get_jwt_identity())
|
||||
if not condition:
|
||||
return json_error("Could not find the condition."), 404
|
||||
return json_error("Could not find the condition.", CONDITION_NOT_FOUND), 404
|
||||
if condition.repository not in [a.repository for a in user.authorizations] + user.owner_of and not user.isAdmin:
|
||||
return json_error("You lack the authorization to proceed, pal."), 403
|
||||
return json_error("You lack the authorization to proceed, pal.", USER_NOT_AUTHORIZED), 403
|
||||
if request.method == "GET":
|
||||
return json_success(condition.to_json()), 200
|
||||
if condition.repository not in user.owner_of and not user.isAdmin:
|
||||
return json_error("You lack the authorization to proceed, pal."), 403
|
||||
return json_error("You lack the authorization to proceed, pal.", USER_NOT_AUTHORIZED), 403
|
||||
if request.method == "PATCH":
|
||||
if request.json is None:
|
||||
return json_error("Missing json content."), 400
|
||||
return json_error("Missing json content.", GENERIC_NO_JSON), 400
|
||||
|
||||
if (type_ := request.json.get("type")) is not None:
|
||||
try:
|
||||
type_ = ConditionType(type_)
|
||||
condition.type = type_
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified."), 400
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
except Exception as e:
|
||||
return json_error("Unknown error:" + str(e)), 400
|
||||
return json_error("Unknown error:" + str(e), GENERIC_UFO), 400
|
||||
|
||||
if content := request.json.get("content"):
|
||||
condition.content = content
|
||||
|
|
|
@ -5,6 +5,7 @@ from nest_backend.gestione import repository_auth, json_error, json_success, Con
|
|||
from nest_backend.database import ext
|
||||
from flask_cors import cross_origin
|
||||
from nest_backend.gestione import hashtag_validator
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -74,34 +75,34 @@ def page_repository_conditions(rid):
|
|||
|
||||
repository = Repository.query.filter_by(id=rid).first()
|
||||
if not repository:
|
||||
return json_error("Could not find repository"), 404
|
||||
return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404
|
||||
user = find_user(get_jwt_identity())
|
||||
|
||||
if user.email != repository.owner_id:
|
||||
return json_error("You are not authorized."), 403
|
||||
return json_error("You are not authorized.", REPOSITORY_NOT_OWNER), 403
|
||||
|
||||
if request.method == "GET":
|
||||
try:
|
||||
return json_success([u.to_json() for u in repository.conditions])
|
||||
except Exception as e:
|
||||
return json_error("Unknown error:" + str(e)), 400
|
||||
return json_error("Unknown error:" + str(e), GENERIC_UFO), 400
|
||||
|
||||
if request.method == "POST":
|
||||
if request.json is None:
|
||||
return json_error("Missing json content."), 400
|
||||
return json_error("Missing json content.", GENERIC_NO_JSON), 400
|
||||
|
||||
if (type_ := request.json.get("type")) is None:
|
||||
return json_error("Missing `type` parameter."), 400
|
||||
return json_error("Missing `type` parameter.", GENERIC_MISSING_FIELDS), 400
|
||||
|
||||
try:
|
||||
type_ = ConditionType(type_)
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified."), 400
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
except Exception as e:
|
||||
return json_error("Unknown error: " + str(e)), 400
|
||||
|
||||
if not (content := request.json.get("content")):
|
||||
return json_error("Missing `content` parameter."), 400
|
||||
return json_error("Missing `content` parameter.", GENERIC_MISSING_FIELDS), 400
|
||||
if type_ == ConditionType.hashtag:
|
||||
content = hashtag_validator(content)
|
||||
condition = Condition(content=content, type=type_, repository_id=rid)
|
||||
|
|
|
@ -4,6 +4,7 @@ from flask_jwt_extended import jwt_required, get_jwt_identity
|
|||
from nest_backend.gestione import *
|
||||
import datetime
|
||||
from flask_cors import cross_origin
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -75,23 +76,27 @@ def page_repositories():
|
|||
# Users will be tolerated if they change parameters they're not supposed to touch. We'll ignore them for now.
|
||||
if not request.json.get("name") or not request.json.get("conditions") or not str(
|
||||
request.json.get("evaluation_mode")):
|
||||
return json_error("Missing arguments."), 400
|
||||
return json_error("Missing arguments.", GENERIC_MISSING_FIELDS), 400
|
||||
name = request.json.get("name")
|
||||
try:
|
||||
evaluation_mode = ConditionMode(request.json['evaluation_mode'])
|
||||
except: # KeyError
|
||||
return json_error("Unknown `type` specified."), 400
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
repository = Repository(name=name, owner_id=user.email, is_active=False, evaluation_mode=evaluation_mode)
|
||||
ext.session.add(repository)
|
||||
ext.session.commit()
|
||||
ids = [c['id'] for c in request.json['conditions'] if c['id']]
|
||||
conditions = [c for c in repository.conditions if c.id not in [a['id'] for a in request.json['conditions'] if
|
||||
a['id'] in [b.id for b in repository.conditions]]]
|
||||
for c in conditions:
|
||||
ext.session.delete(c)
|
||||
ext.session.commit()
|
||||
# Create brand new conditions
|
||||
for c in request.json['conditions']:
|
||||
if not c['id']:
|
||||
try:
|
||||
type_ = ConditionType(c['type'])
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified."), 400
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
ext.session.add(Condition(type=type_, content=c['content'], repository_id=repository.id))
|
||||
ext.session.commit()
|
||||
repository.is_active = True
|
||||
|
|
|
@ -4,7 +4,7 @@ from flask_jwt_extended import jwt_required, get_jwt_identity
|
|||
from nest_backend.gestione import *
|
||||
from flask_cors import cross_origin
|
||||
import datetime
|
||||
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -156,12 +156,12 @@ def page_repository(rid):
|
|||
user = find_user(get_jwt_identity())
|
||||
repository = Repository.query.filter_by(id=rid).first()
|
||||
if not repository:
|
||||
return json_error("Could not find repository."), 404
|
||||
return json_error("Could not find repository.", REPOSITORY_NOT_FOUND), 404
|
||||
if request.method == "GET":
|
||||
return json_success(repository.to_json()), 200
|
||||
elif request.method == "PATCH":
|
||||
if repository.owner_id != user.email:
|
||||
return json_error("You are not the owner of this repository."), 403
|
||||
return json_error("You are not the owner of this repository.", REPOSITORY_NOT_OWNER), 403
|
||||
if 'name' in request.json:
|
||||
repository.name = request.json['name']
|
||||
if 'close' in request.json and not repository.end and repository.is_active:
|
||||
|
@ -173,28 +173,28 @@ def page_repository(rid):
|
|||
try:
|
||||
evaluation_mode = ConditionMode(request.json['evaluation_mode'])
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified."), 400
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
repository.evaluation_mode = evaluation_mode
|
||||
ext.session.commit()
|
||||
return json_success(repository.to_json()), 204
|
||||
elif request.method == "DELETE":
|
||||
if repository.owner_id != user.email and not user.isAdmin:
|
||||
return json_error("You are not the owner of this repository."), 403
|
||||
return json_error("You are not the owner of this repository.", REPOSITORY_NOT_OWNER), 403
|
||||
try:
|
||||
ext.session.delete(repository)
|
||||
ext.session.commit()
|
||||
except Exception as e:
|
||||
ext.session.rollback()
|
||||
return json_error("Cant delete repository because of dependencies."), 500
|
||||
return json_error("Cant delete repository because of dependencies.", REPOSITORY_DEPENDENCY_FAILURE), 500
|
||||
return json_success("Success"), 204
|
||||
elif request.method == "PUT":
|
||||
if not json_request_authorizer(request.json, repository):
|
||||
return json_error("Missing one or more parameters in repository json."), 400
|
||||
return json_error("Missing one or more parameters in repository json.", GENERIC_MISSING_FIELDS), 400
|
||||
# Users will be tolerated if they change parameters they're not supposed to touch. We'll ignore them for now.
|
||||
try:
|
||||
evaluation_mode = ConditionMode(request.json['evaluation_mode'])
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified."), 400
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
repository.evaluation_mode = evaluation_mode
|
||||
repository.name = request.json['name']
|
||||
repository.is_active = request.json['is_active']
|
||||
|
@ -210,7 +210,7 @@ def page_repository(rid):
|
|||
try:
|
||||
type_ = ConditionType(c['type'])
|
||||
except KeyError:
|
||||
return json_error("Unknown `type` specified."), 400
|
||||
return json_error("Unknown `type` specified.", GENERIC_ENUM_INVALID), 400
|
||||
content = c['content']
|
||||
if type_ == ConditionType.hashtag:
|
||||
content = hashtag_validator(content)
|
||||
|
|
|
@ -5,6 +5,7 @@ from nest_backend.gestione import repository_auth, json_error, json_success, Con
|
|||
from nest_backend.database import ext
|
||||
from flask_cors import cross_origin
|
||||
from nest_backend.gestione import hashtag_validator
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -44,11 +45,11 @@ def page_repository_tweets(rid):
|
|||
|
||||
repository = Repository.query.filter_by(id=rid).first()
|
||||
if not repository:
|
||||
return json_error("Could not find repository"), 404
|
||||
return json_error("Could not find repository", REPOSITORY_NOT_FOUND), 404
|
||||
user = find_user(get_jwt_identity())
|
||||
|
||||
if user.email != repository.owner_id:
|
||||
return json_error("You are not authorized."), 403
|
||||
if user.email != repository.owner_id and user.email not in [a.email for a in Repository.authorizations]:
|
||||
return json_error("You are not authorized.", USER_NOT_AUTHORIZED), 403
|
||||
|
||||
if request.method == "GET":
|
||||
return json_success([t.tweet.to_json() for t in repository.tweets])
|
||||
|
|
|
@ -4,6 +4,7 @@ from nest_backend.gestione import *
|
|||
from flask_jwt_extended import create_access_token
|
||||
from flask_cors import cross_origin
|
||||
from datetime import timedelta, datetime
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -42,4 +43,4 @@ def page_login():
|
|||
access_token = create_access_token(identity=email, expires_delta=delta)
|
||||
user = find_user(email)
|
||||
return json_success({"access_token": access_token, 'user': user.to_json(), "expiration": expiration}), 201
|
||||
return json_error("Bad username or password."), 401
|
||||
return json_error("Bad username or password.", USER_WRONG_CREDENTIALS), 401
|
||||
|
|
|
@ -3,6 +3,7 @@ from nest_backend.database import *
|
|||
from flask_jwt_extended import jwt_required, get_jwt_identity
|
||||
from nest_backend.gestione import *
|
||||
from flask_cors import cross_origin
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -117,26 +118,26 @@ def page_user(email):
|
|||
user = find_user(get_jwt_identity())
|
||||
target = find_user(email)
|
||||
if not target:
|
||||
return json_error("Could not locate the user."), 404
|
||||
return json_error("Could not locate the user.", USER_NOT_FOUND), 404
|
||||
if request.method == "GET":
|
||||
if not email == user.email and not user.isAdmin:
|
||||
return json_error("Thou art not authorized."), 403
|
||||
return json_error("Thou art not authorized.", USER_NOT_AUTHORIZED), 403
|
||||
return json_success(target.to_json())
|
||||
elif request.method == "DELETE":
|
||||
if not user.isAdmin:
|
||||
return json_error("User is not admin."), 403
|
||||
return json_error("User is not admin.", USER_NOT_ADMIN), 403
|
||||
if user == target:
|
||||
return json_error("The user cant delete himself. Its a sin."), 406
|
||||
return json_error("The user cant delete himself. Its a sin.", USER_PREVENT_SEPPUKU), 406
|
||||
ext.session.delete(target)
|
||||
try:
|
||||
ext.session.commit()
|
||||
except Exception:
|
||||
ext.session.rollback()
|
||||
return json_error("Could not delete the user."), 500
|
||||
return json_error("Could not delete the user.", USER_DELETION_ERROR), 500
|
||||
return json_success(""), 204 # "The user has been deleted."
|
||||
elif request.method == "PATCH":
|
||||
if not email == user.email and not user.isAdmin:
|
||||
return json_error("Thou art not authorized."), 403
|
||||
return json_error("Thou art not authorized.", USER_NOT_AUTHORIZED), 403
|
||||
target = find_user(email)
|
||||
if request.json.get("username"):
|
||||
target.username = request.json.get("username")
|
||||
|
|
|
@ -3,6 +3,7 @@ from nest_backend.database import *
|
|||
from flask_jwt_extended import jwt_required, get_jwt_identity
|
||||
from nest_backend.gestione import *
|
||||
from flask_cors import cross_origin
|
||||
from nest_backend.errors import *
|
||||
|
||||
|
||||
@cross_origin()
|
||||
|
@ -65,16 +66,16 @@ def page_users():
|
|||
user = find_user(get_jwt_identity())
|
||||
if request.method == "GET":
|
||||
if not user.isAdmin:
|
||||
return json_error("User is not admin. Thou art not authorized"), 403
|
||||
return json_error("User is not admin. Thou art not authorized", USER_NOT_ADMIN), 403
|
||||
users = User.query.all()
|
||||
return json_success([user.to_json() for user in users]), 200
|
||||
if request.method == "POST":
|
||||
if not user.isAdmin:
|
||||
return json_error("User is not admin. Thou art not authorized."), 403
|
||||
return json_error("User is not admin. Thou art not authorized.", USER_NOT_ADMIN), 403
|
||||
if not request.json.get("email") or not request.json.get("password") or not request.json.get("username"):
|
||||
return json_error("Missing required fields."), 400
|
||||
return json_error("Missing required fields.", GENERIC_MISSING_FIELDS), 400
|
||||
if User.query.filter_by(email=request.json.get("email")).first():
|
||||
return json_error("User already exists."), 406
|
||||
return json_error("User already exists.", GENERIC_ALREADY_EXISTS), 406
|
||||
new_user = User(email=request.json.get("email"), password=gen_password(request.json.get("password")),
|
||||
username=request.json.get("username"))
|
||||
ext.session.add(new_user)
|
||||
|
|
|
@ -5,6 +5,7 @@ import GlobalTheme from "./components/providers/GlobalTheme"
|
|||
import GlobalServer from "./components/providers/GlobalServer"
|
||||
import GlobalUser from "./components/providers/GlobalUser"
|
||||
import PageSwitcher from "./PageSwitcher"
|
||||
import GlobalLanguage from "./components/providers/GlobalLanguage"
|
||||
|
||||
|
||||
/**
|
||||
|
@ -15,16 +16,18 @@ import PageSwitcher from "./PageSwitcher"
|
|||
*/
|
||||
export default function App() {
|
||||
return (
|
||||
<GlobalServer>
|
||||
<GlobalUser>
|
||||
<GlobalTheme>
|
||||
<BrowserRouter>
|
||||
<Layout>
|
||||
<PageSwitcher/>
|
||||
</Layout>
|
||||
</BrowserRouter>
|
||||
</GlobalTheme>
|
||||
</GlobalUser>
|
||||
</GlobalServer>
|
||||
<GlobalLanguage>
|
||||
<GlobalServer>
|
||||
<GlobalUser>
|
||||
<GlobalTheme>
|
||||
<BrowserRouter>
|
||||
<Layout>
|
||||
<PageSwitcher/>
|
||||
</Layout>
|
||||
</BrowserRouter>
|
||||
</GlobalTheme>
|
||||
</GlobalUser>
|
||||
</GlobalServer>
|
||||
</GlobalLanguage>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
// Link.react.test.js
|
||||
import React from 'react'
|
||||
import '@testing-library/jest-dom/extend-expect'
|
||||
import { render, screen } from '@testing-library/react'
|
||||
import React from "react"
|
||||
import "@testing-library/jest-dom/extend-expect"
|
||||
import { render, screen } from "@testing-library/react"
|
||||
import App from "./App"
|
||||
|
||||
test('App renders without exploding', () => {
|
||||
|
||||
test("App renders without exploding", () => {
|
||||
render(<App/>)
|
||||
expect(screen.getByRole("main")).toBeVisible()
|
||||
});
|
||||
})
|
||||
|
|
214
nest_frontend/LocalizationStrings.js
Normal file
214
nest_frontend/LocalizationStrings.js
Normal file
|
@ -0,0 +1,214 @@
|
|||
/**
|
||||
* All strings contained in the app should be present in this dict.
|
||||
*
|
||||
* If a key is missing in a language, the italian one is displayed instead.
|
||||
*
|
||||
* Define format strings as in C#:
|
||||
* ```js
|
||||
* "Raggio di {number} km"
|
||||
* "{number} km radius"
|
||||
* ```
|
||||
*/
|
||||
export default {
|
||||
// 🇮🇹
|
||||
it: {
|
||||
appName: "N.E.S.T.",
|
||||
appFullName: "Noi Estraiamo Statistiche Tweet",
|
||||
|
||||
server: "Scegli un server",
|
||||
baseURL: "Base URL",
|
||||
notLoggedIn: "Accesso non effettuato",
|
||||
login: "Accedi",
|
||||
email: "Email",
|
||||
passwd: "Password",
|
||||
|
||||
dashboard: "Dashboard",
|
||||
searchBy: "Ricerca per",
|
||||
byZone: "area",
|
||||
byHashtag: "hashtag",
|
||||
byUser: "utente",
|
||||
byTimePeriod: "arco di tempo",
|
||||
timeBefore: "Prima",
|
||||
timeAfter: "Dopo",
|
||||
conditions: "Condizioni",
|
||||
createRepo: "Crea repository",
|
||||
repoName: "Nome repository",
|
||||
request: "Richiedi",
|
||||
filterOR: "Almeno una cond.",
|
||||
filterAND: "Tutte le cond.",
|
||||
rollback: "Annulla modifiche",
|
||||
save: "Salva modifiche",
|
||||
wordcloud: "Wordcloud",
|
||||
|
||||
repositories: "Repositories",
|
||||
repoMenu: "Menu repository",
|
||||
menuActive: "Le tue repository attive",
|
||||
menuArchived: "Le tue repository archiviate",
|
||||
emptyMenu: "Non c'è nulla qui",
|
||||
delete: "Elimina",
|
||||
archive: "Archivia",
|
||||
edit: "Modifica",
|
||||
created: "Creata",
|
||||
archived: "Archiviata",
|
||||
|
||||
alerts: "Allarmi",
|
||||
alertTitle: "I tuoi allarmi",
|
||||
alertCreate: "Crea un allarme",
|
||||
|
||||
settings: "Impostazioni",
|
||||
loggedInTitle: "Accesso effettuato",
|
||||
loggedInOn: "Al momento hai effettuato l'accesso su",
|
||||
loggedInAs: "come",
|
||||
logout: "Esci",
|
||||
switchTheme: "Cambia tema",
|
||||
darkMode: "Scuro",
|
||||
lightMode: "Chiaro",
|
||||
alertSettings: "Impostazioni allarmi",
|
||||
changeEmail: "Cambia il tuo indirizzo email",
|
||||
changePasswd: "Cambia la tua password",
|
||||
|
||||
users: "Utenti",
|
||||
manageUsers: "Gestisci utenti",
|
||||
userList: "Elenco utenti",
|
||||
userCreate: "Crea nuovo utente",
|
||||
userName: "Username",
|
||||
create: "Crea",
|
||||
type: "Tipo",
|
||||
admin: "Amministratore",
|
||||
user: "Utente",
|
||||
},
|
||||
// 🇬🇧
|
||||
en: {
|
||||
appName: "N.E.S.T.",
|
||||
appFullName: "We Extract Statistics from Tweets",
|
||||
|
||||
server: "Choose a server",
|
||||
baseURL: "Base URL",
|
||||
notLoggedIn: "Not logged in",
|
||||
login: "Login",
|
||||
email: "Email",
|
||||
passwd: "Password",
|
||||
|
||||
dashboard: "Dashboard",
|
||||
searchBy: "Search by",
|
||||
byZone: "zone",
|
||||
byHashtag: "hashtag",
|
||||
byUser: "user",
|
||||
byTimePeriod: "time period",
|
||||
timeBefore: "Before",
|
||||
timeAfter: "After",
|
||||
conditions: "Conditions",
|
||||
createRepo: "Create repository",
|
||||
repoName: "Repository name",
|
||||
request: "Request",
|
||||
filterOR: "At least one cond.",
|
||||
filterAND: "Every cond.",
|
||||
rollback: "Rollback changes",
|
||||
save: "Save changes",
|
||||
wordcloud: "Wordcloud",
|
||||
|
||||
repositories: "Repositories",
|
||||
repoMenu: "Repositories menu",
|
||||
menuActive: "Your active repositories",
|
||||
menuArchived: "Your archived repositories",
|
||||
emptyMenu: "There's nothing here",
|
||||
delete: "Delete",
|
||||
archive: "Archive",
|
||||
edit: "Edit",
|
||||
created: "Created",
|
||||
archived: "Archived",
|
||||
|
||||
alerts: "Alerts",
|
||||
alertTitle: "Your alerts",
|
||||
alertCreate: "Create a new alert",
|
||||
|
||||
settings: "Settings",
|
||||
loggedInTitle: "Logged in",
|
||||
loggedInOn: "You are currently logged in at",
|
||||
loggedInAs: "as",
|
||||
logout: "Logout",
|
||||
switchTheme: "Switch theme",
|
||||
darkMode: "Dark",
|
||||
lightMode: "Light",
|
||||
alertSettings: "Alert settings",
|
||||
changeEmail: "Change your email address",
|
||||
changePasswd: "Change your password",
|
||||
|
||||
users: "Users",
|
||||
manageUsers: "Manage users",
|
||||
userList: "User list",
|
||||
userCreate: "Create new user",
|
||||
userName: "Username",
|
||||
create: "Create",
|
||||
type: "Type",
|
||||
admin: "Admin",
|
||||
user: "User",
|
||||
},
|
||||
// 🇫🇮
|
||||
fi: {
|
||||
appName: "N.E.S.T.",
|
||||
appFullName: "Poimimme Twiittien Tilastot",
|
||||
|
||||
server: "Valitse palvelin",
|
||||
baseURL: "Perus-URL",
|
||||
notLoggedIn: "Ei kirjautunut sisään",
|
||||
login: "Kirjaudu sisään",
|
||||
email: "Sähköposti",
|
||||
passwd: "Salasana",
|
||||
|
||||
dashboard: "Kojelauta",
|
||||
searchBy: "Haku ",
|
||||
byZone: "vyöhykkeen mukaan",
|
||||
byHashtag: "hashtagin mukaan",
|
||||
byUser: "käyttäjän mukaan",
|
||||
byTimePeriod: "aikajakson mukaan",
|
||||
timeBefore: "Ennen",
|
||||
timeAfter: "Jälkeen",
|
||||
conditions: "Ehdot",
|
||||
createRepo: "Luo arkisto",
|
||||
repoName: "Arkiston nimi",
|
||||
request: "Pyydä",
|
||||
filterOR: "Vähintään yksi ehto",
|
||||
filterAND: "Kaikki ehdot",
|
||||
rollback: "Peruuta muutokset",
|
||||
save: "Tallenna muutokset",
|
||||
wordcloud: "Sanapilvi",
|
||||
|
||||
repositories: "Arkistot",
|
||||
repoMenu: "Arkistot-valikko",
|
||||
menuActive: "Aktiiviset arkistosi",
|
||||
menuArchived: "Arkistoidut arkistosi",
|
||||
emptyMenu: "Täällä ei ole mitään",
|
||||
delete: "Poista",
|
||||
archive: "Arkistoi",
|
||||
edit: "Muokkaa",
|
||||
created: "Luotu",
|
||||
archived: "Arkisto",
|
||||
|
||||
alerts: "Hälytykset",
|
||||
alertTitle: "Hälytyksesi",
|
||||
alertCreate: "Luo uusi hälytys",
|
||||
|
||||
settings: "Asetukset",
|
||||
loggedInTitle: "Kirjautunut sisään",
|
||||
loggedInOn: "Olet tällä hetkellä kirjautuneena sisään",
|
||||
loggedInAs: "nimellä",
|
||||
logout: "Kirjaudu ulos",
|
||||
switchTheme: "Vaihda teema",
|
||||
darkMode: "Tumma",
|
||||
lightMode: "Selkeä",
|
||||
alertSettings: "Hälytysasetukset",
|
||||
changeEmail: "Vaihda sähköpostiosoitteesi",
|
||||
changePasswd: "Vaihda salasanasi",
|
||||
|
||||
users: "Käyttäjät",
|
||||
manageUsers: "Käyttäjien hallinta",
|
||||
userList: "Käyttäjäluettelo",
|
||||
userCreate: "Luo uusi käyttäjä",
|
||||
userName: "Käyttäjätunnus",
|
||||
create: "Luo",
|
||||
type: "Tyyppi",
|
||||
admin: "Ylläpitäjä",
|
||||
user: "Käyttäjä",
|
||||
},
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from "react"
|
||||
import React, { useContext, useState } from "react"
|
||||
import BoxFull from "../base/BoxFull"
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
|
||||
import { faClock, faPlus } from "@fortawesome/free-solid-svg-icons"
|
||||
|
@ -10,6 +10,7 @@ import useRepositoryEditor from "../../hooks/useRepositoryEditor"
|
|||
import ButtonToggleBeforeAfter from "./ButtonToggleBeforeAfter"
|
||||
import Condition from "../../utils/Condition"
|
||||
import convertToLocalISODate from "../../utils/convertToLocalISODate"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
const INVALID_USER_CHARACTERS = /[^0-9TZ:+-]/g
|
||||
|
@ -27,6 +28,7 @@ export default function BoxConditionDatetime({ ...props }) {
|
|||
const [datetime, setDatetime] = useState("")
|
||||
const [ba, setBa] = useState(false)
|
||||
const { addCondition } = useRepositoryEditor()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
const onInputChange = event => {
|
||||
let text = event.target.value
|
||||
|
@ -50,7 +52,18 @@ export default function BoxConditionDatetime({ ...props }) {
|
|||
}
|
||||
|
||||
return (
|
||||
<BoxFull header={<span>Ricerca per <FontAwesomeIcon icon={faClock}/> arco di tempo</span>} {...props}>
|
||||
<BoxFull
|
||||
header={
|
||||
<span>
|
||||
{strings.searchBy}
|
||||
|
||||
<FontAwesomeIcon icon={faClock}/>
|
||||
|
||||
{strings.byTimePeriod}
|
||||
</span>
|
||||
}
|
||||
{...props}
|
||||
>
|
||||
<FormInline onSubmit={onButtonClick}>
|
||||
<ButtonToggleBeforeAfter onUpdate={setBa}/>
|
||||
<InputWithIcon
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from "react"
|
||||
import React, { useContext, useState } from "react"
|
||||
import BoxFull from "../base/BoxFull"
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
|
||||
import { faHashtag, faPlus } from "@fortawesome/free-solid-svg-icons"
|
||||
|
@ -8,6 +8,7 @@ import Style from "./BoxConditionHashtag.module.css"
|
|||
import ButtonIconOnly from "../base/ButtonIconOnly"
|
||||
import useRepositoryEditor from "../../hooks/useRepositoryEditor"
|
||||
import Condition from "../../utils/Condition"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
// Official hashtag regex from https://stackoverflow.com/a/22490853/4334568
|
||||
// noinspection RegExpAnonymousGroup,LongLine
|
||||
|
@ -25,6 +26,7 @@ const INVALID_HASHTAG_CHARACTERS = /([^a-z0-9_\u00c0-\u00d6\u00d8-\u00f6\u00f8-\
|
|||
export default function BoxConditionHashtag({ ...props }) {
|
||||
const [hashtag, setHashtag] = useState("")
|
||||
const { addCondition } = useRepositoryEditor()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
const onInputChange = event => {
|
||||
let text = event.target.value
|
||||
|
@ -41,7 +43,18 @@ export default function BoxConditionHashtag({ ...props }) {
|
|||
}
|
||||
|
||||
return (
|
||||
<BoxFull header={<span>Ricerca per <FontAwesomeIcon icon={faHashtag}/> hashtag</span>} {...props}>
|
||||
<BoxFull
|
||||
header={
|
||||
<span>
|
||||
{strings.searchBy}
|
||||
|
||||
<FontAwesomeIcon icon={faHashtag}/>
|
||||
|
||||
{strings.byHashtag}
|
||||
</span>
|
||||
}
|
||||
{...props}
|
||||
>
|
||||
<FormInline onSubmit={onButtonClick}>
|
||||
<InputWithIcon
|
||||
className={Style.Input}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useCallback, useEffect, useState } from "react"
|
||||
import React, { useCallback, useContext, useEffect, useState } from "react"
|
||||
import BoxFull from "../base/BoxFull"
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
|
||||
import { faMapPin, faPlus } from "@fortawesome/free-solid-svg-icons"
|
||||
|
@ -7,6 +7,7 @@ import ButtonIconOnly from "../base/ButtonIconOnly"
|
|||
import { MapContainer, TileLayer } from "react-leaflet"
|
||||
import useRepositoryEditor from "../../hooks/useRepositoryEditor"
|
||||
import Condition from "../../utils/Condition"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
const STARTING_POSITION = { lat: 41.89309, lng: 12.48289 }
|
||||
|
@ -53,6 +54,7 @@ export default function BoxConditionMap({ ...props }) {
|
|||
const [zoom, setZoom] = useState(STARTING_ZOOM)
|
||||
const [map, setMap] = useState(null)
|
||||
const { addCondition } = useRepositoryEditor()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
const onMove = useCallback(
|
||||
() => {
|
||||
|
@ -99,7 +101,13 @@ export default function BoxConditionMap({ ...props }) {
|
|||
return (
|
||||
<BoxFull
|
||||
header={
|
||||
<span>Ricerca per <FontAwesomeIcon icon={faMapPin}/> area</span>
|
||||
<span>
|
||||
{strings.searchBy}
|
||||
|
||||
<FontAwesomeIcon icon={faMapPin}/>
|
||||
|
||||
{strings.byZone}
|
||||
</span>
|
||||
}
|
||||
childrenClassName={Style.BoxConditionMapContents}
|
||||
{...props}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from "react"
|
||||
import React, { useContext, useState } from "react"
|
||||
import BoxFull from "../base/BoxFull"
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
|
||||
import { faAt, faPlus } from "@fortawesome/free-solid-svg-icons"
|
||||
|
@ -8,6 +8,7 @@ import Style from "./BoxConditionUser.module.css"
|
|||
import ButtonIconOnly from "../base/ButtonIconOnly"
|
||||
import useRepositoryEditor from "../../hooks/useRepositoryEditor"
|
||||
import Condition from "../../utils/Condition"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
const INVALID_USER_CHARACTERS = /[^a-zA-Z0-9]/g
|
||||
|
@ -24,6 +25,7 @@ const INVALID_USER_CHARACTERS = /[^a-zA-Z0-9]/g
|
|||
export default function BoxConditionUser({ ...props }) {
|
||||
const [user, setUser] = useState("")
|
||||
const { addCondition } = useRepositoryEditor()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
const onInputChange = event => {
|
||||
let text = event.target.value
|
||||
|
@ -40,7 +42,18 @@ export default function BoxConditionUser({ ...props }) {
|
|||
}
|
||||
|
||||
return (
|
||||
<BoxFull header={<span>Ricerca per <FontAwesomeIcon icon={faAt}/> utente</span>} {...props}>
|
||||
<BoxFull
|
||||
header={
|
||||
<span>
|
||||
{strings.searchBy}
|
||||
|
||||
<FontAwesomeIcon icon={faAt}/>
|
||||
|
||||
{strings.byUser}
|
||||
</span>
|
||||
}
|
||||
{...props}
|
||||
>
|
||||
<FormInline onSubmit={onButtonClick}>
|
||||
<InputWithIcon
|
||||
className={Style.Input}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import React from "react"
|
||||
import React, { useContext } from "react"
|
||||
import BoxFull from "../base/BoxFull"
|
||||
import ConditionBadge from "./ConditionBadge"
|
||||
import useRepositoryEditor from "../../hooks/useRepositoryEditor"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
/**
|
||||
|
@ -13,11 +14,12 @@ import useRepositoryEditor from "../../hooks/useRepositoryEditor"
|
|||
*/
|
||||
export default function BoxConditions({ ...props }) {
|
||||
const { conditions } = useRepositoryEditor()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
const badges = conditions.map((cond, pos) => <ConditionBadge key={pos} {...cond}/>)
|
||||
|
||||
return (
|
||||
<BoxFull header={"Condizioni"} {...props}>
|
||||
<BoxFull header={strings.conditions} {...props}>
|
||||
{badges}
|
||||
</BoxFull>
|
||||
)
|
||||
|
|
|
@ -7,6 +7,7 @@ import ContextUser from "../../contexts/ContextUser"
|
|||
import { useHistory } from "react-router"
|
||||
import Style from "./BoxLoggedIn.module.css"
|
||||
import CurrentServer from "./CurrentServer"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
/**
|
||||
|
@ -19,12 +20,13 @@ import CurrentServer from "./CurrentServer"
|
|||
export default function BoxLoggedIn({ ...props }) {
|
||||
const { logout } = useContext(ContextUser)
|
||||
const history = useHistory()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
return (
|
||||
<BoxFull header={"Effettuato l'accesso"} {...props}>
|
||||
<BoxFull header={strings.loggedInTitle} {...props}>
|
||||
<div className={Style.BoxLoggedInContents}>
|
||||
<div>
|
||||
Al momento hai effettuato l'accesso su <CurrentServer/> come <LoggedInUser/>.
|
||||
{strings.loggedInOn} <CurrentServer/> {strings.loggedInAs} <LoggedInUser/>.
|
||||
</div>
|
||||
<div>
|
||||
<Button
|
||||
|
@ -32,7 +34,7 @@ export default function BoxLoggedIn({ ...props }) {
|
|||
logout()
|
||||
history.push("/login")
|
||||
}} icon={faSignOutAlt}
|
||||
>Esci</Button>
|
||||
>{strings.logout}</Button>
|
||||
</div>
|
||||
</div>
|
||||
</BoxFull>
|
||||
|
|
|
@ -8,6 +8,7 @@ import FormButton from "../base/formparts/FormButton"
|
|||
import ContextUser from "../../contexts/ContextUser"
|
||||
import { useHistory } from "react-router"
|
||||
import FormAlert from "../base/formparts/FormAlert"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
/**
|
||||
|
@ -24,6 +25,7 @@ export default function BoxLogin({ ...props }) {
|
|||
const [error, setError] = useState(null)
|
||||
const { login } = useContext(ContextUser)
|
||||
const history = useHistory()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
const doLogin = async () => {
|
||||
if(working) {
|
||||
|
@ -44,9 +46,9 @@ export default function BoxLogin({ ...props }) {
|
|||
}
|
||||
|
||||
return (
|
||||
<BoxFull header={"Accedi"} {...props}>
|
||||
<BoxFull header={strings.login} {...props}>
|
||||
<FormLabelled>
|
||||
<FormLabel text={"Email"} htmlFor={"login-email"}>
|
||||
<FormLabel text={strings.email} htmlFor={"login-email"}>
|
||||
<InputWithIcon
|
||||
id={"login-email"}
|
||||
name={"login-email"}
|
||||
|
@ -56,7 +58,7 @@ export default function BoxLogin({ ...props }) {
|
|||
icon={faEnvelope}
|
||||
/>
|
||||
</FormLabel>
|
||||
<FormLabel text={"Password"} htmlFor={"login-password"}>
|
||||
<FormLabel text={strings.passwd} htmlFor={"login-password"}>
|
||||
<InputWithIcon
|
||||
id={"login-password"}
|
||||
name={"login-password"}
|
||||
|
@ -77,7 +79,7 @@ export default function BoxLogin({ ...props }) {
|
|||
color={"Green"}
|
||||
disabled={working}
|
||||
>
|
||||
Accedi
|
||||
{strings.login}
|
||||
</FormButton>
|
||||
</FormLabelled>
|
||||
</BoxFull>
|
||||
|
|
|
@ -4,6 +4,7 @@ import { faFolderOpen } from "@fortawesome/free-solid-svg-icons"
|
|||
import ContextUser from "../../contexts/ContextUser"
|
||||
import Loading from "../base/Loading"
|
||||
import BoxFullScrollable from "../base/BoxFullScrollable"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
/**
|
||||
|
@ -25,13 +26,14 @@ export default function BoxRepositoriesActive({
|
|||
...props
|
||||
}) {
|
||||
const { user } = useContext(ContextUser)
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
let contents
|
||||
if(repositories === null) {
|
||||
contents = <Loading/>
|
||||
}
|
||||
else if(repositories.length === 0) {
|
||||
contents = <i>Non c'è nulla qui.</i>
|
||||
contents = <i>{strings.emptyMenu}.</i>
|
||||
}
|
||||
else {
|
||||
contents = repositories.map(repo => (
|
||||
|
@ -50,7 +52,7 @@ export default function BoxRepositoriesActive({
|
|||
}
|
||||
|
||||
return (
|
||||
<BoxFullScrollable header={"Repository attivi"} {...props}>
|
||||
<BoxFullScrollable header={strings.menuActive} {...props}>
|
||||
{contents}
|
||||
</BoxFullScrollable>
|
||||
)
|
||||
|
|
|
@ -4,6 +4,7 @@ import { faFolderOpen } from "@fortawesome/free-solid-svg-icons"
|
|||
import ContextUser from "../../contexts/ContextUser"
|
||||
import Loading from "../base/Loading"
|
||||
import BoxFullScrollable from "../base/BoxFullScrollable"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
/**
|
||||
|
@ -25,13 +26,14 @@ export default function BoxRepositoriesArchived({
|
|||
...props
|
||||
}) {
|
||||
const { user } = useContext(ContextUser)
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
let contents
|
||||
if(repositories === null) {
|
||||
contents = <Loading/>
|
||||
}
|
||||
else if(repositories.length === 0) {
|
||||
contents = <i>Non c'è nulla qui.</i>
|
||||
contents = <i>{strings.emptyMenu}.</i>
|
||||
}
|
||||
else {
|
||||
contents = repositories.map(repo => (
|
||||
|
@ -50,7 +52,7 @@ export default function BoxRepositoriesArchived({
|
|||
}
|
||||
|
||||
return (
|
||||
<BoxFullScrollable header={"Repository archiviati"} {...props}>
|
||||
<BoxFullScrollable header={strings.menuArchived} {...props}>
|
||||
{contents}
|
||||
</BoxFullScrollable>
|
||||
)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React from "react"
|
||||
import React, { useContext } from "react"
|
||||
import BoxFull from "../base/BoxFull"
|
||||
import FormLabelled from "../base/FormLabelled"
|
||||
import FormLabel from "../base/formparts/FormLabel"
|
||||
|
@ -10,16 +10,18 @@ import useRepositoryEditor from "../../hooks/useRepositoryEditor"
|
|||
import FormAlert from "../base/formparts/FormAlert"
|
||||
import goToOnSuccess from "../../utils/goToOnSuccess"
|
||||
import { useHistory } from "react-router"
|
||||
import ContextLanguage from "../../contexts/ContextLanguage"
|
||||
|
||||
|
||||
/**
|
||||
* A {@link BoxFull} allowing the user to save the changes made in the current {@link RepositoryEditor}.
|
||||
*
|
||||
* @param props
|
||||
* @param running - If a request is running, disabling the buttons.
|
||||
* @param props - Additional props to pass to the box.
|
||||
* @returns {JSX.Element}
|
||||
* @constructor
|
||||
*/
|
||||
export default function BoxRepositoryCreate({ ...props }) {
|
||||
export default function BoxRepositoryCreate({ running, ...props }) {
|
||||
const {
|
||||
id,
|
||||
evaluationMode,
|
||||
|
@ -32,16 +34,17 @@ export default function BoxRepositoryCreate({ ...props }) {
|
|||
} = useRepositoryEditor()
|
||||
|
||||
const history = useHistory()
|
||||
const { strings } = useContext(ContextLanguage)
|
||||
|
||||
return (
|
||||
<BoxFull header={"Crea repository"} {...props}>
|
||||
<BoxFull header={strings.createRepo} {...props}>
|
||||
<FormLabelled
|
||||
onSubmit={e => {
|
||||
e.preventDefault()
|
||||
save()
|
||||
}}
|
||||
>
|
||||
<FormLabel htmlFor={"repo-name"} text={"Nome repository"}>
|
||||
<FormLabel htmlFor={"repo-name"} text={strings.repoName}>
|
||||
<InputWithIcon
|
||||
id={"repo-name"}
|
||||
icon={faFolder}
|
||||
|
@ -49,14 +52,14 @@ export default function BoxRepositoryCreate({ ...props }) {
|
|||
onChange={e => setName(e.target.value)}
|
||||
/>
|
||||
</FormLabel>
|
||||
<FormLabel htmlFor={"filter-mode"} text={"Richiedi"}>
|
||||
<FormLabel htmlFor={"filter-mode"} text={strings.request}>
|
||||
<label>
|
||||
<Radio
|
||||
name={"filter-mode"}
|
||||
onChange={() => setEvaluationMode(0)}
|
||||
checked={evaluationMode === 0}
|
||||
/>
|
||||
Almeno una cond.
|
||||
{strings.filterOR}
|
||||
</label>
|
||||
|
||||
<label>
|
||||
|
@ -65,7 +68,7 @@ export default function BoxRepositoryCreate({ ...props }) {
|
|||
onChange={() => setEvaluationMode(1)}
|
||||
checked={evaluationMode === 1}
|
||||
/>
|
||||
Tutte le cond.
|
||||
{strings.filterAND}
|
||||
</label>
|
||||
</FormLabel>
|
||||
{error ?
|
||||
|
@ -80,16 +83,18 @@ export default function BoxRepositoryCreate({ ...props }) {
|
|||
icon={faBackward}
|
||||
color={"Red"}
|
||||
onClick={() => revert()}
|
||||
disabled={running}
|
||||
>
|
||||
Annulla modifiche
|
||||
{strings.rollback}
|
||||
</Button>
|
||||
<Button
|
||||
style={{ "gridColumn": "2" }}
|
||||
icon={faPencilAlt}
|
||||
color={"Green"}
|
||||
onClick={_ => goToOnSuccess(save, history, "/repositories")()}
|
||||
disabled={running}
|
||||
>
|
||||
Salva modifiche
|
||||
{strings.save}
|
||||
</Button>
|
||||
</>
|
||||
:
|
||||
|
@ -98,8 +103,9 @@ export default function BoxRepositoryCreate({ ...props }) {
|
|||
icon={faPlus}
|
||||
color={"Green"}
|
||||
onClick={_ => goToOnSuccess(save, history, "/repositories")()}
|
||||
disabled={running}
|
||||
>
|
||||
Crea repository
|
||||
{strings.createRepo}
|
||||
</Button>
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue