diff --git a/docs/build/doctrees/code/backend/index.doctree b/docs/build/doctrees/code/backend/index.doctree new file mode 100644 index 0000000..1362075 Binary files /dev/null and b/docs/build/doctrees/code/backend/index.doctree differ diff --git a/docs/build/doctrees/code/crawler/index.doctree b/docs/build/doctrees/code/crawler/index.doctree new file mode 100644 index 0000000..59ea81b Binary files /dev/null and b/docs/build/doctrees/code/crawler/index.doctree differ diff --git a/docs/build/doctrees/code/frontend/index.doctree b/docs/build/doctrees/code/frontend/index.doctree new file mode 100644 index 0000000..3267ac6 Binary files /dev/null and b/docs/build/doctrees/code/frontend/index.doctree differ diff --git a/docs/build/doctrees/code/meta/index.doctree b/docs/build/doctrees/code/meta/index.doctree new file mode 100644 index 0000000..7dd9f6b Binary files /dev/null and b/docs/build/doctrees/code/meta/index.doctree differ diff --git a/docs/build/doctrees/development/artifacts.doctree b/docs/build/doctrees/development/artifacts.doctree new file mode 100644 index 0000000..4fbfa37 Binary files /dev/null and b/docs/build/doctrees/development/artifacts.doctree differ diff --git a/docs/build/doctrees/development/conclusions.doctree b/docs/build/doctrees/development/conclusions.doctree new file mode 100644 index 0000000..1138924 Binary files /dev/null and b/docs/build/doctrees/development/conclusions.doctree differ diff --git a/docs/build/doctrees/development/goals.doctree b/docs/build/doctrees/development/goals.doctree new file mode 100644 index 0000000..67e5ebc Binary files /dev/null and b/docs/build/doctrees/development/goals.doctree differ diff --git a/docs/build/doctrees/development/process.doctree b/docs/build/doctrees/development/process.doctree new file mode 100644 index 0000000..bf386f7 Binary files /dev/null and b/docs/build/doctrees/development/process.doctree differ diff --git a/docs/build/doctrees/development/sprint0/index.doctree b/docs/build/doctrees/development/sprint0/index.doctree new file mode 100644 index 0000000..8f6a6fc Binary files /dev/null and b/docs/build/doctrees/development/sprint0/index.doctree differ diff --git a/docs/build/doctrees/development/sprint1/index.doctree b/docs/build/doctrees/development/sprint1/index.doctree new file mode 100644 index 0000000..88266fe Binary files /dev/null and b/docs/build/doctrees/development/sprint1/index.doctree differ diff --git a/docs/build/doctrees/development/sprint2/index.doctree b/docs/build/doctrees/development/sprint2/index.doctree new file mode 100644 index 0000000..9c588c4 Binary files /dev/null and b/docs/build/doctrees/development/sprint2/index.doctree differ diff --git a/docs/build/doctrees/development/sprint3/index.doctree b/docs/build/doctrees/development/sprint3/index.doctree new file mode 100644 index 0000000..553dcf8 Binary files /dev/null and b/docs/build/doctrees/development/sprint3/index.doctree differ diff --git a/docs/build/doctrees/development/suggestions.doctree b/docs/build/doctrees/development/suggestions.doctree new file mode 100644 index 0000000..829697f Binary files /dev/null and b/docs/build/doctrees/development/suggestions.doctree differ diff --git a/docs/build/doctrees/guide/about.doctree b/docs/build/doctrees/guide/about.doctree new file mode 100644 index 0000000..d44cb34 Binary files /dev/null and b/docs/build/doctrees/guide/about.doctree differ diff --git a/docs/build/doctrees/guide/installation.doctree b/docs/build/doctrees/guide/installation.doctree new file mode 100644 index 0000000..591bade Binary files /dev/null and b/docs/build/doctrees/guide/installation.doctree differ diff --git a/docs/build/html/_downloads/0f0b0c14c0cb349854d86cde0fd97dd0/1-sprint-requirements.pdf b/docs/build/html/_downloads/0f0b0c14c0cb349854d86cde0fd97dd0/1-sprint-requirements.pdf new file mode 100644 index 0000000..296ddb2 Binary files /dev/null and b/docs/build/html/_downloads/0f0b0c14c0cb349854d86cde0fd97dd0/1-sprint-requirements.pdf differ diff --git a/docs/build/html/_downloads/56a7b936d5f736eeed714f4fad53c4c3/0-sprint-requirements.pdf b/docs/build/html/_downloads/56a7b936d5f736eeed714f4fad53c4c3/0-sprint-requirements.pdf new file mode 100644 index 0000000..2cd3d3a Binary files /dev/null and b/docs/build/html/_downloads/56a7b936d5f736eeed714f4fad53c4c3/0-sprint-requirements.pdf differ diff --git a/docs/build/html/_downloads/78e5f647ad2041b6942f022e5c1ba6f0/1-stats.html b/docs/build/html/_downloads/78e5f647ad2041b6942f022e5c1ba6f0/1-stats.html new file mode 100644 index 0000000..b75067c --- /dev/null +++ b/docs/build/html/_downloads/78e5f647ad2041b6942f022e5c1ba6f0/1-stats.html @@ -0,0 +1,4311 @@ + + + + + Statistiche del repository per g2 + + + + + + + + + +
+ +

Le seguenti informazioni storiche sui commit, per autore, sono state trovate nel repository.

Autore Commit Inserimenti Rimozioni % dei cambiamenti
Annielated142981782.31
Giovanni Anniballi46240.32
Lorenzo Balugani191507134074.81
Nemesis27450.38
Stefano Pigozzi783180110820.82
stefanogoldoni23215651.36
 
+

Di seguito il numero di righe da ogni autore che sono sopravvissute a sono ancora intatte nella versione corrente.

Autore Righe Stabilità Età % in commenti
Annielated14047.00.310.000.80
Giovanni Anniballi34.80.0100.000.02
Lorenzo Balugani1480598.20.917.3385.07
Stefano Pigozzi232673.10.921.6313.37
stefanogoldoni12960.00.39.300.74
 
+

La seguente timeline storica è stata ricavata dal repository.

+
Autore2021W162021W17
Annielated.
Giovanni Anniballi.
Lorenzo Balugani
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Nemesis.
Stefano Pigozzi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
stefanogoldoni.
Righe modificate:262917971
+
+

I seguenti file sono stranamente grandi (in ordine di importanza).

code/backend/docs/_build/html/_static/jquery-3.5.1.js (8982 linee di codice stimate)
code/backend/docs/_build/html/_static/underscore-1.12.0.js (1663 linee di codice stimate)

I seguenti file hanno un'elevata complessità ciclomatica (in ordine di importanza)

code/backend/docs/_build/html/_static/jquery-3.5.1.js (2795 in complessità ciclomatica)
code/backend/docs/_build/html/_static/underscore-1.12.0.js (711 in complessità ciclomatica)
code/backend/docs/_build/html/_static/searchtools.js (162 in complessità ciclomatica)
code/backend/docs/_build/html/_static/language_data.js (82 in complessità ciclomatica)
code/backend/docs/_build/html/_static/doctools.js (71 in complessità ciclomatica)

I seguenti file hanno un'elevata densità ciclomatica (in ordine di importanza)

code/backend/docs/_build/html/_static/jquery.js (7.000 in densità di complessità ciclomatica)
code/backend/docs/_build/html/_static/underscore.js (4.000 in densità di complessità ciclomatica)
code/backend/docs/_build/html/searchindex.js (1.000 in densità di complessità ciclomatica)
+

Le seguenti responsabilità, per autore, sono state trovate nella revision corrente del repository (i commenti sono esclusi dal conteggio delle linee, se possibile).

Annielated è responsabile per

code/backend/nest_backend/test/users_test.py (33 eloc)
code/backend/nest_backend/test/repositories_test.py (33 eloc)
code/backend/nest_backend/test/repository_test.py (29 eloc)
code/backend/nest_backend/test/repository_conditions_test.py (27 eloc)
code/backend/nest_backend/test/login_test.py (4 eloc)

Lorenzo Balugani è responsabile per

code/backend/docs/_build/html/_static/jquery-3.5.1.js (8982 eloc)
code/backend/docs/_build/html/_static/underscore-1.12.0.js (1663 eloc)
code/backend/docs/_build/html/_static/searchtools.js (423 eloc)
code/backend/docs/_build/html/_static/language_data.js (274 eloc)
code/backend/docs/_build/html/_static/doctools.js (243 eloc)
code/backend/nest_backend/gestione.py (96 eloc)
code/backend/nest_backend/routes/repository/repository.py (44 eloc)
code/backend/nest_backend/__main__.py (39 eloc)
code/backend/nest_backend/routes/users/user.py (38 eloc)
code/backend/nest_backend/routes/repository/repositories.py (32 eloc)

Stefano Pigozzi è responsabile per

code/frontend/src/components/interactive/BoxConditionDatetime.js (89 eloc)
code/frontend/src/components/interactive/BoxLogin.js (78 eloc)
code/frontend/src/components/interactive/BoxConditionUser.js (76 eloc)
code/frontend/src/components/interactive/BoxConditionHashtag.js (75 eloc)
code/frontend/src/components/interactive/BoxConditionMap.js (70 eloc)
code/frontend/src/components/providers/GlobalServer.js (64 eloc)
code/frontend/src/components/providers/GlobalUser.js (58 eloc)
code/frontend/src/routes/PageDashboard.js (52 eloc)
code/frontend/src/hooks/useData.js (51 eloc)
code/frontend/src/components/interactive/ConditionBadge.js (51 eloc)

stefanogoldoni è responsabile per

code/backend/nest_backend/test/user_test.py (48 eloc)
code/backend/nest_backend/test/repository_conditions_test.py (26 eloc)
code/backend/nest_backend/test/users_test.py (20 eloc)
code/backend/nest_backend/test/repositories_test.py (13 eloc)
code/backend/nest_backend/test/login_test.py (3 eloc)
code/backend/nest_backend/routes/users/users.py (3 eloc)
code/backend/nest_backend/test/repository_test.py (1 eloc)
code/backend/nest_backend/routes/users/user.py (1 eloc)
code/backend/nest_backend/routes/repository/repository_conditions.py (1 eloc)
code/backend/nest_backend/database/tables/Condition.py (1 eloc)
+

Le seguenti estensioni sono state trovate nell'history del repository (le estensioni usate nell'analisi statistica sono evidenziate).

xml md bat lock py iml js json html toml svg rst txt css

+ + + diff --git a/docs/build/html/_downloads/97887f76be086e7133e1b3c7e2c38379/3-report.pdf b/docs/build/html/_downloads/97887f76be086e7133e1b3c7e2c38379/3-report.pdf new file mode 100644 index 0000000..c03d034 Binary files /dev/null and b/docs/build/html/_downloads/97887f76be086e7133e1b3c7e2c38379/3-report.pdf differ diff --git a/docs/build/html/_downloads/99492e10545c21e4562ee297a6a7f8fc/3-sprint-requirements.pdf b/docs/build/html/_downloads/99492e10545c21e4562ee297a6a7f8fc/3-sprint-requirements.pdf new file mode 100644 index 0000000..3101704 Binary files /dev/null and b/docs/build/html/_downloads/99492e10545c21e4562ee297a6a7f8fc/3-sprint-requirements.pdf differ diff --git a/docs/build/html/_downloads/a4f29d39f4f9d7a16e572fb50f1054c7/0-initial.pdf b/docs/build/html/_downloads/a4f29d39f4f9d7a16e572fb50f1054c7/0-initial.pdf new file mode 100644 index 0000000..3029e19 Binary files /dev/null and b/docs/build/html/_downloads/a4f29d39f4f9d7a16e572fb50f1054c7/0-initial.pdf differ diff --git a/docs/build/html/_downloads/b39447cc9fdf36619aeebedbc640599a/0-stats.html b/docs/build/html/_downloads/b39447cc9fdf36619aeebedbc640599a/0-stats.html new file mode 100644 index 0000000..24d7496 --- /dev/null +++ b/docs/build/html/_downloads/b39447cc9fdf36619aeebedbc640599a/0-stats.html @@ -0,0 +1,4311 @@ + + + + + Statistiche del repository per g2 + + + + + + + + + +
+ +

Le seguenti informazioni storiche sui commit, per autore, sono state trovate nel repository.

Autore Commit Inserimenti Rimozioni % dei cambiamenti
Nemesis274512.19
Stefano Pigozzi1743513487.81
 
+

Di seguito il numero di righe da ogni autore che sono sopravvissute a sono ancora intatte nella versione corrente.

Autore Righe Stabilità Età % in commenti
Nemesis6993.20.015.9418.65
Stefano Pigozzi30169.20.02.3381.35
 
+

La seguente timeline storica è stata ricavata dal repository.

+
Autore2021W16
Nemesis
 
 
Stefano Pigozzi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Righe modificate:648
+
+

Non sono state rilevate violazioni delle metriche nel repository.

+

Le seguenti responsabilità, per autore, sono state trovate nella revision corrente del repository (i commenti sono esclusi dal conteggio delle linee, se possibile).

Nemesis è responsabile per

code/backend/nest_backend/__main__.py (23 eloc)
code/backend/nest_backend/routes/doa.py (9 eloc)
code/backend/nest_backend/database/tables/Utente.py (8 eloc)
code/backend/nest_backend/gestione.py (5 eloc)
code/backend/nest_backend/database/__init__.py (4 eloc)
code/backend/nest_backend/routes/__init__.py (3 eloc)
code/backend/nest_backend/database/tables/__init__.py (3 eloc)
code/backend/nest_backend/database/base.py (3 eloc)

Stefano Pigozzi è responsabile per

code/frontend/src/components/BoxWithHeader.js (48 eloc)
code/frontend/src/App.js (45 eloc)
code/frontend/src/components/InputWithIcon.js (37 eloc)
code/frontend/src/components/Logo.js (26 eloc)
code/frontend/src/components/Sidebar.js (21 eloc)
code/frontend/src/utils/make_icon.js (17 eloc)
code/frontend/src/components/Layout.js (16 eloc)
code/frontend/src/components/ButtonSidebar.js (16 eloc)
code/frontend/src/index.js (15 eloc)
code/frontend/src/components/Button.js (14 eloc)
+

Le seguenti estensioni sono state trovate nell'history del repository (le estensioni usate nell'analisi statistica sono evidenziate).

xml md lock py iml js json html toml svg txt css

+ + + diff --git a/docs/build/html/_downloads/b4c90bf7e7222c3dec541abe0ca8065c/2-stats.html b/docs/build/html/_downloads/b4c90bf7e7222c3dec541abe0ca8065c/2-stats.html new file mode 100644 index 0000000..12f2064 --- /dev/null +++ b/docs/build/html/_downloads/b4c90bf7e7222c3dec541abe0ca8065c/2-stats.html @@ -0,0 +1,4311 @@ + + + + + Statistiche del repository per g2 + + + + + + + + + +
+ +

Le seguenti informazioni storiche sui commit, per autore, sono state trovate nel repository.

Autore Commit Inserimenti Rimozioni % dei cambiamenti
@uni-chiara373730.26
Annielated195182671.40
FlaviaC-uni464100.13
Giovanni Anniballi46240.12
Lorenzo Balugani441637067930.50
Nemesis27450.14
Stefano Pigozzi146205511620365.75
g.minoccari5221170.43
stefanogoldoni415781291.26
 
+

Di seguito il numero di righe da ogni autore che sono sopravvissute a sono ancora intatte nella versione corrente.

Autore Righe Stabilità Età % in commenti
Annielated32662.91.14.911.50
Chiara Calzolari65100.00.20.000.30
FlaviaC-uni2437.51.04.170.11
Giovanni Anniballi34.81.9100.000.01
Lorenzo Balugani181911.11.76.768.39
Stefano Pigozzi1890692.00.416.5987.22
g.minoccari18282.40.74.400.84
stefanogoldoni35260.90.96.251.62
 
+

La seguente timeline storica è stata ricavata dal repository.

+
Autore2021W162021W172021W182021W19
@uni-chiara.
Annielated.
 
.
FlaviaC-uni.
Giovanni Anniballi.
Lorenzo Balugani
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
Nemesis.
Stefano Pigozzi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
g.minoccari
 
.
stefanogoldoni..
Righe modificate:262917971289632402
+
+

I seguenti file sono stranamente grandi (in ordine di importanza).

docs/build/html/_static/jquery-3.5.1.js (8982 linee di codice stimate)
docs/build/html/_static/underscore-1.12.0.js (1663 linee di codice stimate)
docs/build/html/_static/italian-stemmer.js (972 linee di codice stimate)

I seguenti file hanno un'elevata complessità ciclomatica (in ordine di importanza)

docs/build/html/_static/jquery-3.5.1.js (2795 in complessità ciclomatica)
docs/build/html/_static/underscore-1.12.0.js (711 in complessità ciclomatica)
docs/build/html/_static/italian-stemmer.js (401 in complessità ciclomatica)
docs/build/html/_static/searchtools.js (162 in complessità ciclomatica)
docs/build/html/_static/base-stemmer.js (148 in complessità ciclomatica)
docs/build/html/_static/doctools.js (71 in complessità ciclomatica)
nest_backend/routes/repository/alerts/alert.py (65 in complessità ciclomatica)
nest_crawler/__main__.py (51 in complessità ciclomatica)

I seguenti file hanno un'elevata densità ciclomatica (in ordine di importanza)

docs/build/html/_static/jquery.js (7.000 in densità di complessità ciclomatica)
docs/build/html/_static/underscore.js (4.000 in densità di complessità ciclomatica)
docs/build/html/searchindex.js (3.000 in densità di complessità ciclomatica)
docs/build/html/_static/js/modernizr.min.js (3.000 in densità di complessità ciclomatica)
docs/build/html/_static/js/theme.js (1.000 in densità di complessità ciclomatica)
docs/build/html/_static/js/html5shiv.min.js (1.000 in densità di complessità ciclomatica)
docs/build/html/_static/js/html5shiv-printshiv.min.js (1.000 in densità di complessità ciclomatica)
docs/build/html/_static/js/badge_only.js (1.000 in densità di complessità ciclomatica)
+

Le seguenti responsabilità, per autore, sono state trovate nella revision corrente del repository (i commenti sono esclusi dal conteggio delle linee, se possibile).

Annielated è responsabile per

nest_backend/test/test_zrepository.py (137 eloc)
legacy/tests/users_test.py (33 eloc)
legacy/tests/repositories_test.py (33 eloc)
legacy/tests/repository_conditions_test.py (27 eloc)
legacy/tests/repository_test.py (26 eloc)
nest_backend/test/fixtures/flask_client.py (25 eloc)
nest_backend/test/test_user.py (20 eloc)
legacy/tests/login_test.py (4 eloc)
nest_backend/test/test_zzcondition.py (3 eloc)
nest_backend/test/test_doa.py (2 eloc)

Chiara Calzolari è responsabile per

nest_frontend/routes/PageSettings.js (7 eloc)
nest_frontend/components/providers/GlobalUser.js (7 eloc)
nest_frontend/components/providers/RepositoryEditor.js (5 eloc)
nest_frontend/components/interactive/SummaryRepository.js (5 eloc)
nest_frontend/routes/PageAlerts.js (4 eloc)
nest_frontend/contexts/ContextUser.js (3 eloc)
nest_frontend/components/interactive/Sidebar.js (3 eloc)
nest_frontend/components/interactive/BoxLoggedIn.js (3 eloc)
nest_frontend/utils/goToOnSuccess.js (2 eloc)
nest_frontend/hooks/useArrayState.js (2 eloc)

FlaviaC-uni è responsabile per

nest_backend/test/test_user.py (15 eloc)
nest_backend/test/fixtures/flask_client.py (8 eloc)

Lorenzo Balugani è responsabile per

nest_backend/routes/repository/alerts/alert.py (212 eloc)
nest_backend/routes/repository/repository.py (204 eloc)
nest_backend/routes/users/user.py (130 eloc)
nest_backend/api_schemas.py (126 eloc)
nest_backend/routes/repository/conditions/condition.py (123 eloc)
nest_backend/gestione.py (108 eloc)
nest_backend/routes/repository/repositories.py (87 eloc)
nest_backend/routes/repository/alerts/repository_alerts.py (85 eloc)
nest_backend/routes/repository/conditions/repository_conditions.py (81 eloc)
nest_backend/routes/users/users.py (76 eloc)

Stefano Pigozzi è responsabile per

docs/build/html/_static/jquery-3.5.1.js (8982 eloc)
docs/build/html/_static/underscore-1.12.0.js (1663 eloc)
docs/build/html/_static/italian-stemmer.js (972 eloc)
docs/build/html/_static/searchtools.js (423 eloc)
docs/build/html/_static/base-stemmer.js (284 eloc)
docs/build/html/_static/doctools.js (243 eloc)
nest_frontend/hooks/useBackendViewset.js (210 eloc)
nest_frontend/components/providers/RepositoryEditor.js (135 eloc)
nest_frontend/components/interactive/BoxConditionMap.js (118 eloc)
docs/build/html/_static/language_data.js (105 eloc)

g.minoccari è responsabile per

nest_crawler/__main__.py (96 eloc)
nest_backend/tweet_explorer/__main__.py (78 eloc)

stefanogoldoni è responsabile per

nest_backend/test/test_zrepository.py (104 eloc)
nest_backend/test/test_zzcondition.py (76 eloc)
legacy/tests/user_test.py (49 eloc)
legacy/tests/repository_conditions_test.py (21 eloc)
legacy/tests/users_test.py (20 eloc)
legacy/tests/repositories_test.py (13 eloc)
nest_backend/routes/repository/conditions/repository_conditions.py (10 eloc)
nest_backend/test/test_user.py (8 eloc)
nest_backend/routes/repository/conditions/condition.py (6 eloc)
nest_backend/test/conftest.py (4 eloc)
+

Le seguenti estensioni sono state trovate nell'history del repository (le estensioni usate nell'analisi statistica sono evidenziate).

xml md bat service lock py iml js json html toml svg rst txt css gitignore

+ + + diff --git a/docs/build/html/_downloads/d3f17d7c3d7250ff8d833b228fd66367/2D-stats.html b/docs/build/html/_downloads/d3f17d7c3d7250ff8d833b228fd66367/2D-stats.html new file mode 100644 index 0000000..54390a3 --- /dev/null +++ b/docs/build/html/_downloads/d3f17d7c3d7250ff8d833b228fd66367/2D-stats.html @@ -0,0 +1,4311 @@ + + + + + Statistiche del repository per g2 + + + + + + + + + +
+ +

Le seguenti informazioni storiche sui commit, per autore, sono state trovate nel repository.

Autore Commit Inserimenti Rimozioni % dei cambiamenti
Annielated1322185616.60
Lorenzo Balugani1321902.44
Prof. Missiroli (home)2431873.28
Stefano Pigozzi20827991962277.68
 
+

Di seguito il numero di righe da ogni autore che sono sopravvissute a sono ancora intatte nella versione corrente.

Autore Righe Stabilità Età % in commenti
Lorenzo Balugani30.13.30.000.01
Prof. Missiroli (home)8622199.70.00.0016.18
Stefano Pigozzi4464753.90.80.1183.81
 
+

La seguente timeline storica è stata ricavata dal repository.

+
Autore2021W162021W172021W182021W19
Annielated
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Lorenzo Balugani
 
 
Prof. Missiroli (home)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Stefano Pigozzi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Righe modificate:43273492851439281
+
+

Non sono state rilevate violazioni delle metriche nel repository.

+

Le seguenti responsabilità, per autore, sono state trovate nella revision corrente del repository (i commenti sono esclusi dal conteggio delle linee, se possibile).

Lorenzo Balugani è responsabile per

docs/build/html/backend/index.html (3 eloc)

Prof. Missiroli (home) è responsabile per

legacy/doc/doc_sprint1/statisticsS1.html (4311 eloc)
legacy/doc/doc_sprint1/statistics.html (4311 eloc)

Stefano Pigozzi è responsabile per

package-lock.json (40538 eloc)
docs/build/html/backend/index.html (963 eloc)
docs/build/html/genindex.html (715 eloc)
docs/build/html/installation/index.html (494 eloc)
docs/build/html/_sources/installation/index.rst.txt (337 eloc)
docs/build/html/index.html (259 eloc)
docs/build/html/py-modindex.html (242 eloc)
docs/build/html/search.html (222 eloc)
docs/build/html/crawler/index.html (214 eloc)
docs/build/html/about/index.html (214 eloc)
+

Le seguenti estensioni sono state trovate nell'history del repository (le estensioni usate nell'analisi statistica sono evidenziate).

xml md bat service lock py iml js json html toml svg rst txt css gitignore

+ + + diff --git a/docs/build/html/_downloads/e8dd818dc8524e2e5ac00e576ab3af22/2-sprint-requirements.pdf b/docs/build/html/_downloads/e8dd818dc8524e2e5ac00e576ab3af22/2-sprint-requirements.pdf new file mode 100644 index 0000000..ad8ff96 Binary files /dev/null and b/docs/build/html/_downloads/e8dd818dc8524e2e5ac00e576ab3af22/2-sprint-requirements.pdf differ diff --git a/docs/build/html/_sources/code/backend/index.rst.txt b/docs/build/html/_sources/code/backend/index.rst.txt new file mode 100644 index 0000000..59e05cf --- /dev/null +++ b/docs/build/html/_sources/code/backend/index.rst.txt @@ -0,0 +1,37 @@ +``nest_backend`` - Web API in Python +==================================== + +.. automodule:: nest_backend + + +``.gestione`` - Metodi di utility +--------------------------------- + +.. automodule:: nest_backend.gestione + + +``.database`` - Database +------------------------ + +.. automodule:: nest_backend.database + + +``.base`` - Estensione flask +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nest_backend.database.base + + +``.tables`` - Tabelle +~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nest_backend.database.tables + :imported-members: + + +``.routes`` - Percorsi API +-------------------------- + +.. automodule:: nest_backend.database.routes + :imported-members: + diff --git a/docs/build/html/_sources/code/crawler/index.rst.txt b/docs/build/html/_sources/code/crawler/index.rst.txt new file mode 100644 index 0000000..ca1451e --- /dev/null +++ b/docs/build/html/_sources/code/crawler/index.rst.txt @@ -0,0 +1,4 @@ +``nest_crawler`` - Crawler in Python +==================================== + +.. automodule:: nest_crawler diff --git a/docs/build/html/_sources/code/frontend/index.rst.txt b/docs/build/html/_sources/code/frontend/index.rst.txt new file mode 100644 index 0000000..fc5d690 --- /dev/null +++ b/docs/build/html/_sources/code/frontend/index.rst.txt @@ -0,0 +1,2 @@ +``nest_frontend`` - Interfaccia utente in React +=============================================== diff --git a/docs/build/html/_sources/code/meta/index.rst.txt b/docs/build/html/_sources/code/meta/index.rst.txt new file mode 100644 index 0000000..386acee --- /dev/null +++ b/docs/build/html/_sources/code/meta/index.rst.txt @@ -0,0 +1,84 @@ +Meta-documentazione +=================== + +La documentazione è scritta in `reStructuredText `_, ed è generata con +`Sphinx `_. + +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 `_, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza +almeno `Basic `_. + + +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 diff --git a/docs/build/html/_sources/development/artifacts.rst.txt b/docs/build/html/_sources/development/artifacts.rst.txt new file mode 100644 index 0000000..3aca582 --- /dev/null +++ b/docs/build/html/_sources/development/artifacts.rst.txt @@ -0,0 +1,14 @@ +Artefatti +========= + +.. todo:: + + Non ho idea di cosa bisogna scrivere qui. + + +Demo +---- + +.. todo:: + + Inserire un link al video della demo. diff --git a/docs/build/html/_sources/development/conclusions.rst.txt b/docs/build/html/_sources/development/conclusions.rst.txt new file mode 100644 index 0000000..4814f25 --- /dev/null +++ b/docs/build/html/_sources/development/conclusions.rst.txt @@ -0,0 +1,9 @@ +Conclusioni +=========== + +.. todo:: + + Scrivere le conclusioni. + + "cosa avete imparato, cosa è andato bene, cosa cambiereste" + diff --git a/docs/build/html/_sources/development/goals.rst.txt b/docs/build/html/_sources/development/goals.rst.txt new file mode 100644 index 0000000..6e3c772 --- /dev/null +++ b/docs/build/html/_sources/development/goals.rst.txt @@ -0,0 +1,30 @@ +Obiettivo del progetto +====================== + +.. todo:: + + Scrivere l'obiettivo generale del progetto. + + +Scope +----- + +.. todo:: + + Scrivere lo scope del progetto. + + +Casi d'uso +---------- + +.. todo:: + + Scrivere i casi d'uso del progetto. + + +Backlog generale +---------------- + +.. todo:: + + Elencare qui tutte le user story del backlog, senza specificare lo sprint in cui sono state realizzate. diff --git a/docs/build/html/_sources/development/process.rst.txt b/docs/build/html/_sources/development/process.rst.txt new file mode 100644 index 0000000..7c8e6d5 --- /dev/null +++ b/docs/build/html/_sources/development/process.rst.txt @@ -0,0 +1,11 @@ +Processo di sviluppo +==================== + +.. todo:: + + Descrivere genericamente il processo di sviluppo seguito, includendo: + + "numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo, + retrospettiva finale" + + Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando ``:ref:``. diff --git a/docs/build/html/_sources/development/sprint0/index.rst.txt b/docs/build/html/_sources/development/sprint0/index.rst.txt new file mode 100644 index 0000000..26146ad --- /dev/null +++ b/docs/build/html/_sources/development/sprint0/index.rst.txt @@ -0,0 +1,292 @@ +Sprint 0: 04 Apr - 18 Apr +========================= + +.. todo:: + + Inserire informazioni generali sullo sprint, come inizio e fine. + + +Consegna +-------- + +La seguente documentazione è stata fornita dal cliente durante questo sprint: + +- :download:`Descrizione iniziale del prodotto <0-initial.pdf>` +- :download:`Sprint 0 <0-sprint-requirements.pdf>` + + +Goal +---- + +.. todo:: + + Inserire qui lo sprint goal. + + +Backlog +------- + +.. todo:: + + Mostrare qui lo sprint backlog di Taiga. + + +Definition of done +------------------ + +.. todo:: + + Inserire qui la definition of done dello sprint. + + +Registro attività +----------------- + +Riunioni collettive +^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 2 + + * - Data + - Ora + - Durata + - Attività + * - + - + - 10h 6m + - Totale + + * - 2021-04-08 + - 20:45 + - 1h + - Analisi documento di specifiche + * - 2021-04-09 + - 14:15 + - 35m + - Intervista con il cliente + * - 2021-04-09 + - 15:00 + - 1h + - Resoconto intervista + * - 2021-04-11 + - 15:03 + - 2h 39m + - Documentazione e planning poker + * - 2021-04-15 + - 18:15 + - 52m + - Documentazione + * - 2021-04-17 + - 15:05 + - 4h + - Documentazione e partita a Scrumble + + +Attività individuali +^^^^^^^^^^^^^^^^^^^^ + +Stefano Goldoni +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 6h 30m + - Totale + + * - 2021-04-08 + - 1h + - user stories + * - 2021-04-09 + - 1h + - epic + * - 2021-04-10 + - 30m + - use cases + * - 2021-04-11 + - 30m + - use cases + * - 2021-04-14 + - 30m + - documentazione SRS + * - 2021-04-15 + - 30m + - documentazione SRS + * - 2021-04-17 + - 1h 30m + - diagrammi di attività + + +Flavia Cocca +"""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 15h + - Totale + + * - 2021-04-08 + - 2h 30m + - brainstorming Ui + * - 2021-04-10 + - 2h + - creazione frame in figma con relativo css + * - 2021-04-11 + - 1h 30m + - mockup UI con relativo css (creazione componenti) + * - 2021-04-12 + - 1h 30m + - mockup UI con relativo css (creazione componenti) + * - 2021-04-14 + - 3h + - mockup UI con relativo css (creazione pagine) + * - 2021-04-15 + - 2h + - mockup UI con relativo css (creazioni pagine) + * - 2021-04-16 + - 2h + - ultimi ritocchi UI + * - 2021-04-17 + - 30m + - Stesura documentazione partita scrumble + + +Chiara Calzolari +"""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - 2021-04-09 + - 2.5h + - Brainstorming UI + * - 2021-04-10 + - 1.5h + - mockup UI con relativo css (dashboard ed elenco repositories) + * - 2021-04-11 + - 1.0h + - mockup UI con relativo css (settings) + * - 2021-04-11 + - 0.5h + - Prima versione del logo + * - 2021-04-12 + - 3.0h + - mockup UI con relativo css (creazione componenti, light/dark mode) + * - 2021-04-13 + - 1.0h + - mockup UI con relativo css (alerts) + * - 2021-04-15 + - 1.0h + - Versione definitiva del logo + * - 2021-04-16 + - 0.5h + - mockup UI con relativo css (Notifications e Share) + * - 2021-04-17 + - 1.0h + - Documentazione Mockup + * - 2021-04-17 + - 0.5h + - Doppiaggio video di presentazione + + +Stefano Pigozzi +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 23h 30m + - Totale + + * - 2021-04-08 + - 4h 30m + - Configurazione Discord e GitLab + * - 2021-04-09 + - 3h 30m + - Riunione con il cliente e configurazione Taiga + * - 2021-04-10 + - 4h + - Configurazione Penpot, Taiga, UI Design, progettazione Database + * - 2021-04-11 + - 3h 30m + - Riunione, configurazione GitLab e project management + * - 2021-04-12 + - 30m + - Configurazione Twitter e UI Design + * - 2021-04-15 + - 2h 30m + - Partita a Scrumble e project management + * - 2021-04-16 + - 1h 30m + - Project management e configurazione SonarQube + * - 2021-04-17 + - 3h 30m + - Riunione e partita a scrumble + + +Giovanni Anniballi +"""""""""""""""""" + +.. note:: + + Giovanni ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1. + + +Giorgio Minoccari +"""""""""""""""""" + +.. note:: + + Giorgio ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1. + + +Lorenzo Balugani +"""""""""""""""" + +.. note:: + + Lorenzo ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1. + + +Risultati della partita di Scrumble +----------------------------------- + +.. todo:: + + Trascrivere qui i risultati della partita di Scrumble. + + +Statistiche +----------- + +Gitinspector +^^^^^^^^^^^^^ + +Questa statistica è stata generata dal prof. Marcello Missiroli con +`Gitinspector`_ al termine dello Sprint. + +- :download:`Sprint 0 <0-stats.html>` + + +.. _Gitinspector: https://github.com/ejwa/gitinspector diff --git a/docs/build/html/_sources/development/sprint1/index.rst.txt b/docs/build/html/_sources/development/sprint1/index.rst.txt new file mode 100644 index 0000000..2dae89d --- /dev/null +++ b/docs/build/html/_sources/development/sprint1/index.rst.txt @@ -0,0 +1,495 @@ +Sprint 1: 19 Apr - 02 Mag +========================= + +.. todo:: + + Inserire informazioni generali sullo sprint, come inizio e fine. + + +Consegna +-------- + +La seguente documentazione è stata fornita dal cliente durante questo sprint: + +- :download:`Sprint 1 <1-sprint-requirements.pdf>` + + +Goal +---- + +.. todo:: + + Inserire qui lo sprint goal. + + +Backlog +------- + +.. todo:: + + Mostrare qui lo sprint backlog di Taiga. + + +Definition of done +------------------ + +.. todo:: + + Inserire qui la definition of done dello sprint. + + +Registro attività +----------------- + +Riunioni collettive +^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 2 + + * - Data + - Ora + - Durata + - Attività + * - + - + - 2h + - Totale + + * - 2021-05-01 + - 15:30 + - 2h + - backlog grooming session + + +Attività individuali +^^^^^^^^^^^^^^^^^^^^ + +Stefano Goldoni +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 23h 30m + - Totale + + * - 2021-04-20 + - 30m + - analisi test + * - 2021-04-20 + - 1h 30m + - scrittura test cases + * - 2021-04-26 + - 30m + - predisposizione progetto in locale per il test + * - 2021-04-26 + - 2h + - metodi di test login e creazione utente + * - 2021-04-28 + - 2h + - metodi ti test + * - 2021-04-29 + - 2h + - metodi di test + * - 2021-04-30 + - 2h + - metodi di test backend + * - 2021-05-01 + - 1h + - test frontend + * - 2021-05-01 + - 1h + - test backend in pair programming + * - 2021-05-02 + - 1h + - documentazione + * - 2021-05-02 + - 2h 30m + - test backend + + +Flavia Cocca +"""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 8h + - Totale + + * - 2021-04-27 + - 1h + - modifica mockup UI + * - 2021-04-28 + - 1h + - Organizzazione Sprint retrospective + * - 2021-04-30 + - 1h + - modifica mockup UI + * - 2021-05-01 + - 2h + - Riunione con il team per sprint review e sprint retrospective + * - 2021-05-02 + - 3h + - Stesura documenti Sprint 1 (debito tecnico e relazione sprint retrospective), realizzazione video Sprint1 review + + +Chiara Calzolari +"""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 6h 30m + - Totale + + * - 2021-04-26 + - 3h + - Configurazione ambiente di sviluppo + * - 2021-04-27 + - 1h + - modifica mockup UI (adeguamento al JS) + * - 2021-04-29 + - 2h + - modifica mockup UI (Manage users) + * - 2021-05-01 + - 30m + - Ultimi ritocchi al mockup UI + + +Stefano Pigozzi +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 29h + - Totale + + * - 2021-04-19 + - 18m + - Configurazione IntelliJ IDEA + * - 2021-04-19 + - 10m + - Configurazione IntelliJ IDEA + * - 2021-04-20 + - 1h 26m + - Sviluppo + * - 2021-04-21 + - 1h 3m + - Sviluppo + * - 2021-04-21 + - 3m + - Configurazione IntelliJ IDEA + * - 2021-04-21 + - 58m + - Sviluppo + * - 2021-04-21 + - 13m + - Sviluppo + * - 2021-04-21 + - 7m + - Sviluppo + * - 2021-04-21 + - 6m + - Project management + * - 2021-04-21 + - 15m + - Sviluppo + * - 2021-04-21 + - 32m + - Sviluppo + * - 2021-04-21 + - 10m + - Sviluppo + * - 2021-04-22 + - 5m + - Sviluppo + * - 2021-04-22 + - 16m + - Presentazione + * - 2021-04-22 + - 36m + - Riunione + * - 2021-04-22 + - 1h 23m + - Sviluppo + * - 2021-04-23 + - 18m + - Studio + * - 2021-04-23 + - 42m + - Sviluppo + * - 2021-04-23 + - 10m + - Sviluppo + * - 2021-04-23 + - 1h 9m + - Sviluppo + * - 2021-04-23 + - 3m + - Sviluppo + * - 2021-04-24 + - 19m + - Sviluppo + * - 2021-04-24 + - 19m + - Sviluppo + * - 2021-04-25 + - 2h 59m + - Sviluppo + * - 2021-04-25 + - 10m + - Documentazione + * - 2021-04-26 + - 13m + - Configurazione SonarQube + * - 2021-04-26 + - 12m + - Documentazione + * - 2021-04-26 + - 30m + - Documentazione + * - 2021-04-26 + - 4m + - Riunione + * - 2021-04-26 + - 2h 58m + - Sviluppo + * - 2021-04-26 + - 1h 4m + - Sviluppo + * - 2021-04-26 + - 56m + - Sviluppo + * - 2021-04-26 + - 6m + - Project management + * - 2021-04-27 + - 7m + - Sviluppo + * - 2021-04-27 + - 15m + - Configurazione Taiga + * - 2021-04-27 + - 29m + - Sviluppo + * - 2021-04-27 + - 35m + - Collaborazione + * - 2021-04-28 + - 34m + - Collaborazione + * - 2021-04-29 + - 1h 42m + - Sviluppo + * - 2021-04-29 + - 1h 26m + - Sviluppo + * - 2021-04-29 + - 48m + - Project management + * - 2021-04-30 + - 56m + - Sviluppo + * - 2021-04-30 + - 46m + - Sviluppo + * - 2021-05-01 + - 12m + - Sviluppo + * - 2021-05-02 + - 14m + - Documentazione + * - 2021-05-02 + - 28m + - Bugfixing + * - 2021-05-02 + - 15m + - Collaborazione + * - 2021-05-02 + - 3m + - Bugfixing + + +Giovanni Anniballi +"""""""""""""""""" + +Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dell'IDE utilizzato. + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 16h 30m + - Totale + + * - 2021-04-22 + - 30m + - Riunione con il team + * - 2021-04-23 + - 1h + - Studio struttura del backend + * - 2021-04-24 + - 1h 30m + - Studio del backend, volto a capire il funzionamento delle varie API + * - 2021-04-26 + - 2h + - Testing login e retrieval dei dati inerenti a tutti gli utenti registrati + * - 2021-04-27 + - 1h + - Testing creazione user + * - 2021-04-28 + - 2h + - Test cancellazione utente e ritorno dei dati inerenti a quell’utente + * - 2021-04-29 + - 1h 30m + - Test modica utenti e creazione della prima repository + * - 2021-04-30 + - 2h + - Testing ritorno di tutte le repository di proprietà dell’utente loggato, ritorno delle info inerenti alla repository specificata + * - 2021-05-01 + - 2h + - Riunione con il team per sprint review e sprint retrospective + * - 2021-05-01 + - 1h + - Testing modifica ed eliminazione di una repository (nome, stato) + * - 2021-05-02 + - 2h + - Testing del frontend tramite UI, controllo generale dei test già effettuati. + + +Giorgio Minoccari +""""""""""""""""" + +Durante lo sprint ho principalmente svolto sviluppo e test riguardo alla API di twitter, in modo da poter effettuare chiamate efficenti e non venire limitati dal sito riguardo alle richieste effettuate. + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 10h + - Totale + + * - 2021-04-21 + - 1h + - Primi test riguardo autenticazione Oauth per API twitter + * - 2021-04-23 + - 1h 30m + - Autenticazione funzionante + * - 2021-04-24 + - 30m + - Test su ricerche generali con parole chiave + * - 2021-04-26 + - 1h + - Test su ricerche geolocalizzate + * - 2021-04-27 + - 1h + - Definizione di entita' di esempio nei database per provare funzioni legate ad esse + * - 2021-04-28 + - 2h + - Definizione di funzioni per l'aggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API + * - 2021-04-29 + - 1h + - Refactor codice scritto fino a quel momento, eliminazione di dati inutili + * - 2021-05-01 + - 1h + - Implementazioni di analisi su termini e hashtag restituiti dall'API + * - 2021-05-02 + - 1h + - Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate + + +Lorenzo Balugani +"""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 13h 30m + - Totale + + * - 2021-04-21 + - 2h + - Implementazione Base di Dati + * - 2021-04-22 + - 2h + - Login, creazione utenti + * - 2021-04-25 + - 1h + - Rimozione utenti, CORS, Creazione repo + * - 2021-04-25 + - 3h + - Altre funzioni API + * - 2021-04-26 + - 30m + - Standardizzazione output json + * - 2021-04-26 + - 1h + - Documentazione + * - 2021-04-27 + - 30m + - Aggiunto supporto al modulo explorer, fix + * - 2021-04-28 + - 30m + - Bugfixing + * - 2021-04-29 + - 1h + - Gestione migliorata errori + * - 2021-04-29 + - 1h + - Refactoring + * - 2021-05-02 + - 1h + - Bugfixing + + +Statistiche +----------- + +Gitinspector +^^^^^^^^^^^^^ + +Questa statistica è stata generata dal prof. Marcello Missiroli con +`Gitinspector`_ al termine dello Sprint. + +- :download:`Sprint 1 <1-stats.html>` + + +.. _Gitinspector: https://github.com/ejwa/gitinspector + + +Sprint review +------------- + +.. todo:: + + Inserire un link alla sprint review. + diff --git a/docs/build/html/_sources/development/sprint2/index.rst.txt b/docs/build/html/_sources/development/sprint2/index.rst.txt new file mode 100644 index 0000000..edfdd26 --- /dev/null +++ b/docs/build/html/_sources/development/sprint2/index.rst.txt @@ -0,0 +1,431 @@ +Sprint 2: 03 Mag - 16 Mag +========================= + +.. todo:: + + Inserire informazioni generali sullo sprint, come inizio e fine. + + +Consegna +-------- + +La seguente documentazione è stata fornita dal cliente durante questo sprint: + +- :download:`Sprint 2 <2-sprint-requirements.pdf>` + + +Goal +---- + +.. todo:: + + Inserire qui lo sprint goal. + + +Backlog +------- + +.. todo:: + + Mostrare qui lo sprint backlog di Taiga. + + +Definition of done +------------------ + +.. todo:: + + Inserire qui la definition of done dello sprint. + + +Registro attività +----------------- + +Riunioni collettive +^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 2 + + * - Data + - Ora + - Durata + - Attività + * - + - + - 1h + - Totale + + * - 2021-05-14 + - 10:00 + - 1h + - Sprint Retrospective session + + +Attività individuali +^^^^^^^^^^^^^^^^^^^^ + +Stefano Goldoni +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 16h + - Totale + + * - 2021-05-04 + - 1h + - preparazione backlog sprint 2 + * - 2021-05-10 + - 3h + - test sprint 2 + * - 2021-05-11 + - 2h 30m + - test utenti e repository + * - 2021-05-12 + - 2h + - test repository + * - 2021-05-13 + - 2h 30m + - test repository + * - 2021-05-14 + - 3h + - test conditions + * - 2021-05-15 + - 2h + - test conditions + sonarqube scanner + + +Flavia Cocca +"""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 16h + - Totale + + * - 2021-05-04 + - 30m + - Riunione per con PO, nuovo backlog + * - 2021-05-05 + - 1h + - Riunione + * - 2021-05-07 + - 3h + - Refactoring test + * - 2021-05-08 + - 2h + - Refactoring test + * - 2021-05-09 + - 3h + - Nuovi test + * - 2021-05-11 + - 2h 30m + - Discussione test e risoluzione di alcune issue + * - 2021-05-13 + - 1h + - Bugfixing + * - 2021-05-14 + - 1h + - Sprint Retrospective + * - 2021-05-15 + - 2h + - Documentazione + + +Stefano Pigozzi +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 27h 30m + - Totale + + * - 2021-05-05 + - 40m + - Riunione + * - 2021-05-05 + - 21m + - Documentazione + * - 2021-05-06 + - 9m + - Sviluppo + * - 2021-05-06 + - 3m + - Configurazione Taiga + * - 2021-05-06 + - 11m + - Documentazione + * - 2021-05-06 + - 9m + - Riunione + * - 2021-05-06 + - 20m + - Documentazione + * - 2021-05-06 + - 39m + - Sviluppo + * - 2021-05-06 + - 15m + - Riunione + * - 2021-05-06 + - 1h 4m + - Riunione + * - 2021-05-07 + - 1h 47m + - Sviluppo + * - 2021-05-07 + - 17m + - Sviluppo + * - 2021-05-07 + - 34m + - Sviluppo + * - 2021-05-07 + - 34m + - Project management + * - 2021-05-07 + - 2h 44m + - Sviluppo + * - 2021-05-08 + - 13m + - Sviluppo + * - 2021-05-08 + - 29m + - Sviluppo + * - 2021-05-08 + - 18m + - Sviluppo + * - 2021-05-10 + - 1h 00m + - Sviluppo + * - 2021-05-10 + - 1h 15m + - Configurazione GitLab + * - 2021-05-10 + - 25m + - Sviluppo + * - 2021-05-10 + - 39m + - Sviluppo + * - 2021-05-11 + - 25m + - Bugfixing + * - 2021-05-11 + - 3h 57m + - Sviluppo + * - 2021-05-11 + - 1h 45m + - Sviluppo + * - 2021-05-12 + - 10m + - Sviluppo + * - 2021-05-12 + - 1h 51m + - Sviluppo + * - 2021-05-13 + - 1h 00m + - Sviluppo + * - 2021-05-13 + - 1h 20m + - Sviluppo + * - 2021-05-14 + - 20m + - Sviluppo + * - 2021-05-14 + - 3h 17m + - Documentazione + * - 2021-05-15 + - 1h 8m + - Porting dipendenze + + +Chiara Calzolari +"""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 11h + - Totale + + * - 2021-05-03 + - 1h + - Testing frontend e segnalazione issues + * - 2021-05-03 + - 1h + - Modifica mockup UI (Dashboard repository) + * - 2021-05-04 + - 1h + - Modifica mockup UI (adeguamento al JS) + * - 2021-05-10 + - 3h + - Configurazione ambiente di sviluppo + * - 2021-05-11 + - 1h 30m + - Modifica UI (traduzione in Italiano) + * - 2021-05-12 + - 30m + - Modifica UI (traduzione in Italiano) + * - 2021-05-14 + - 3h + - Realizzazione video demo sprint 2 + + +Giovanni Anniballi +"""""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 17h + - Totale + + * - 2021-05-04 + - 30m + - Incontro con SM e PO per valutare quali US andranno nello sprint2 + * - 2021-05-05 + - 1h + - Incontro con il team + * - 2021-05-07 + - 2h + - Refactoring tests sugli user e primi utilizzi delle fixtures + * - 2021-05-08 + - 2h + - Completamento test users + * - 2021-05-10 + - 1h + - Ulteriori approcci (fallimentari) al coverage di SonarQube + * - 2021-05-11 + - 2h + - Discussione sui test e correzioni bug + * - 2021-05-12 + - 1h + - Test repository + * - 2021-05-13 + - 1h + - Generazione coverage pytest e setting sonarqube (riuscito!) + * - 2021-05-14 + - 4h + - Sprint review e retrospettiva, conclusione test repository + * - 2021-05-15 + - 2h + - generazione nuovo coverage e fix a sonarqube + * - 2021-05-15 + - 30m + - fix piccoli bug segnalati da sonarqube + + +Giorgio Minoccari +""""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 10h + - Totale + + * - 2021-05-04 + - 30m + - Aggiunta della condizione sull'utente + * - 2021-05-10 + - 2h + - Tentativo di inserimento delle query con place_id + * - 2021-05-11 + - 1h 30m + - Test per passare alla versione 2.0 delle API + * - 2021-05-12 + - 1h + - Ritorno alla versione 1.1 perche' lascia disponibili le query sulla geolocalizzazione gratuitamente + * - 2021-05-14 + - 5h + - Integrazione e inserimento dei tweet catturati nel database + + +Lorenzo Balugani +"""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - 19h + - Totale + + * - 2021-05-05 + - 4h + - Setup di swagger, documentazione + * - 2021-05-06 + - 4h + - Documentazione, sviluppo + * - 2021-05-07 + - 3h + - Alert, documentazione + * - 2021-05-10 + - 2h + - Alert Put, bugfixing + * - 2021-05-11 + - 3h + - Bugfixing, sviluppo + * - 2021-05-12 + - 3h + - Risolti issue pubblicati su Taiga + * - 2021-05-13 + - 1h + - Bugfixing + * - 2021-05-14 + - 1h + - Bugfixing + + +Statistiche +----------- + +Gitinspector +^^^^^^^^^^^^^ + +Questa statistica è stata generata dal prof. Marcello Missiroli con +`Gitinspector`_ al termine dello Sprint. + +- :download:`Sprint 2 (codice) <2-stats.html>` +- :download:`Sprint 2 (documentazione) <2D-stats.html>` + + +.. _Gitinspector: https://github.com/ejwa/gitinspector + + +Sprint review +------------- + +.. todo:: + + Inserire un link alla sprint review. diff --git a/docs/build/html/_sources/development/sprint3/index.rst.txt b/docs/build/html/_sources/development/sprint3/index.rst.txt new file mode 100644 index 0000000..a5c6b82 --- /dev/null +++ b/docs/build/html/_sources/development/sprint3/index.rst.txt @@ -0,0 +1,224 @@ +Sprint 3: 17 Mag - 30 Mag +========================= + +.. todo:: + + Inserire informazioni generali sullo sprint, come inizio e fine. + + +Consegna +-------- + +La seguente documentazione è stata fornita dal cliente durante questo sprint: + +- :download:`Sprint 3 <3-sprint-requirements.pdf>` +- :download:`Report finale <3-report.pdf>` + + +Goal +---- + +.. todo:: + + Inserire qui lo sprint goal. + + +Backlog +------- + +.. todo:: + + Mostrare qui lo sprint backlog di Taiga. + + +Definition of done +------------------ + +.. todo:: + + Inserire qui la definition of done dello sprint. + + +Registro attività +----------------- + +.. todo:: + + Compilare il registro attività dello sprint 3. + + +Riunioni collettive +^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 2 + + * - Data + - Ora + - Durata + - Attività + * - + - + - TODO + - Totale + + * - + - + - + - + + +Attività individuali +^^^^^^^^^^^^^^^^^^^^ + +Stefano Goldoni +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - + - + - + + +Flavia Cocca +"""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - + - + - + + +Chiara Calzolari +"""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - + - + - + + +Stefano Pigozzi +""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - + - + - + + +Giovanni Anniballi +"""""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - + - + - + + +Giorgio Minoccari +""""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - + - + - + + +Lorenzo Balugani +"""""""""""""""" + +.. list-table:: + :header-rows: 2 + + * - Data + - Durata + - Attività + * - + - + - Totale + + * - + - + - + + +Statistiche +----------- + +Gitinspector +^^^^^^^^^^^^^ + +.. todo:: + + Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3. + + +Retrospettiva finale +-------------------- + +.. todo:: + + Inserire qui la Retrospettiva finale. + + +Schermata finale di SonarQube +----------------------------- + +.. todo:: + + Inserire qui uno screenshot della schermata finale di SonarQube. diff --git a/docs/build/html/_sources/development/suggestions.rst.txt b/docs/build/html/_sources/development/suggestions.rst.txt new file mode 100644 index 0000000..8973af5 --- /dev/null +++ b/docs/build/html/_sources/development/suggestions.rst.txt @@ -0,0 +1,6 @@ +Suggerimenti relativi al corso +============================== + +.. todo:: + + Che suggerimenti avete da dare al prof. Missiroli? :) diff --git a/docs/build/html/_sources/guide/about.rst.txt b/docs/build/html/_sources/guide/about.rst.txt new file mode 100644 index 0000000..81e5495 --- /dev/null +++ b/docs/build/html/_sources/guide/about.rst.txt @@ -0,0 +1,42 @@ +Il progetto in breve +==================== + +**N.E.S.T.** (Noi Estraiamo Statistiche Tweet) è un progetto realizzato nel 2021 per +l'**esame di Progetto del Software** del corso di Informatica all'Unimore. + + +Suddivisione in moduli +---------------------- + +Il progetto è composto da tre parti: + +:py:mod:`nest_crawler` + Un modulo scritto in `Python`_ usando :py:mod:`tweepy` che recupera tweet attraverso la `Twitter API`_ secondo le + condizioni presenti all'interno del database e li salva per future elaborazioni. + +:py:mod:`nest_backend` + Un web server scritto in `Python`_ usando il framework :py:mod:`flask` che fornisce un'API HTTP per visualizzare e + manipolare i dati dell'applicazione, gestendo autenticazione, autorizzazione e comunicazione con il database. + +:js:mod:`nest_frontend` + Una applicazione web scritta in `JSX`_ usando il framework :js:mod:`react` che comunica con il backend, mostrando + all'utente i dati del backend in una formato immediatamente comprensibile. + + +.. _Python: https://www.python.org/ +.. _Twitter API: https://developer.twitter.com/en/docs/twitter-api +.. _JSX: https://reactjs.org/docs/introducing-jsx.html + + +Screenshots +----------- + +.. image:: frontendDashboard.png + +.. image:: frontendRepositoryCreate.png + +.. image:: frontendAnalysis.png + +.. image:: frontendRepositoryShare.png + +.. image:: frontendAlertCreate.png diff --git a/docs/build/html/_sources/guide/installation.rst.txt b/docs/build/html/_sources/guide/installation.rst.txt new file mode 100644 index 0000000..1961106 --- /dev/null +++ b/docs/build/html/_sources/guide/installation.rst.txt @@ -0,0 +1,344 @@ +Installazione +============= + +Questa guida illustra come installare interamente N.E.S.T. su un server Linux. + + +Prerequisiti +------------ + +Per installare ed eseguire N.E.S.T., è necessario: + +- Una connessione a Internet +- Un sistema operativo Linux-based (preferibilmente `Arch Linux `_) +- `SystemD ^248.2 `_ +- `Apache HTTP Server ^2.4.46 `_ +- `PostgreSQL ^13.2 `_ +- `Git ^2.31.1 `_ +- `Python ^3.8 `_ +- `Poetry ^1.0 `_ +- `NodeJS ^16.0 `_ +- `npm ^7.13.0 `_ + + +Creare un nuovo utente +---------------------- + +Per motivi di sicurezza, si suggerisce di creare un nuovo utente con il quale eseguire il progetto: + +.. note:: + + È necessario essere amministratori di sistema per eseguire i seguenti comandi. + Si veda il manuale di `useradd `_ per più dettagli. + +.. code-block:: console + + root:~# mkdir --parents /srv/nest + root:~# useradd --home-dir /srv/nest --shell /bin/bash nest + root:~# chown --recursive nest: /srv/nest + + +Scaricare il codice sorgente +---------------------------- + +Per installare N.E.S.T., è necessario avere il codice sorgente disponibile sul server. + +Si consiglia di scaricarlo tramite *Git*: + +.. code-block:: console + + nest:~$ git clone https://gitlab.steffo.eu/nest/g2-progetto.git + +Questo creerà una nuova cartella ``g2-progetto`` nella directory in cui è stato eseguito il comando. + +Per proseguire, sarà necessario entrarvi: + +.. code-block:: console + + nest:~$ cd g2-progetto + + +Creare il database +------------------ + +N.E.S.T. necessita di un database PostgreSQL in cui salvare i dati. + +Per motivi di sicurezza, si suggerisce di creare un ruolo isolato dal resto del DBMS apposta per N.E.S.T.: + +.. code-block:: console + + postgres:~$ createuser nest + +Per creare il database PostgreSQL, si esegua: + +.. code-block:: console + + postgres:~$ createdb --owner=nest nest + + +Creare un file di configurazione per il backend +----------------------------------------------- + +Il backend usa un file di configurazione per impostare alcune variabili. + +Si crei un nuovo file nella working directory del progetto denominato ``config.py``: + +.. code-block:: console + + nest:~/g2-progetto$ vim config.py + +Il file dovrà avere i seguenti contenuti: + +.. code-block:: python + + # Una stringa rappresentante il database da utilizzare + # Per maggiori informazioni sulla sintassi, si veda https://docs.sqlalchemy.org/en/14/core/engines.html + SQLALCHEMY_DATABASE_URI = "postgresql://nest@/nest" + + # Una stringa casuale utilizzata per generare i JSON Web Token (JWT) + # Va mantenuta segreta e costante per tutta l'operazione del backend! + # Si suggerisce di premere tasti casuali sulla tastiera finchè la riga non è piena. + SECRET_KEY = "dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj" + + +Installare le dipendenze Python +------------------------------- + +Le dipendenze Python sono gestite da *Poetry*, e possono essere installate con: + +.. code-block:: console + + nest:~/g2-progetto$ poetry install + +Poetry creerà automaticamente un `venv `_ e vi installerà all'interno tutti +i pacchetti necessari all'esecuzione del backend e del crawler di N.E.S.T. . + +**Si suggerisce di ricordare il nome del venv creato da Poetry**, in quanto sarà necessario per +:ref:`Creare un servizio SystemD per il backend`: + +.. code-block:: console + + Creating virtualenv nest-7C2fm2VD-py3.9 in /srv/nest/.cache/pypoetry/virtualenvs + + +Installare le dipendenze NodeJS +------------------------------- + +Le dipendenze NodeJS sono gestite da *npm*, e possono essere installate con: + +.. code-block:: console + + nest:~/g2-progetto$ npm install + +npm creerà automaticamente una cartella +`node_modules `_ e vi installerà all'interno tutte +le librerie necessarie all'esecuzione del frontend di N.E.S.T. . + + +Creare un servizio SystemD per il backend +----------------------------------------- + +Per fare in modo che il backend rimanga attivo in background, anche dopo un riavvio, si suggerisce di installarlo come +servizio di sistema di *SystemD*: + +.. code-block:: console + + root:~# systemctl edit --force --full nest-backend + +Inserire all'interno del file le seguenti direttive: + +.. code-block:: systemd + + [Unit] + Description=N.E.S.T. Backend + Wants=network-online.target postgresql.service + After=network-online.target nss-lookup.target postgresql.service + + [Service] + Type=exec + User=nest + Group=nest + WorkingDirectory=/srv/nest/g2-progetto + + # Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry + # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m gunicorn -b 127.0.0.1:30040 --env="FLASK_CONFIG=../config.py" nest_backend.app:rp_app + + [Install] + WantedBy=multi-user.target + +Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con: + +.. code-block:: console + + root:~# systemctl start nest-backend + +In caso di successo, l'API dovrebbe essere esposto sulla porta ``30040`` dell'indirizzo di loopback ``127.0.0.1``: + +.. code-block:: console + + root:~# curl 127.0.0.1:30040/doa + If you see this, the server is fine. + +Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema: + +.. code-block:: console + + root:~# systemctl enable nest-backend + + +Compilare il frontend +--------------------- + +Perchè sia possibile servire il frontend agli utenti, è necessario prima crearne una versione compilata ottimizzata. + +È possibile farlo con il comando: + +.. code-block:: console + + nest:~/g2-progetto$ npm run build + +Verrà creata una cartella ``build`` con all'interno la versione compilata. + + +Creare un servizio SystemD per il frontend +------------------------------------------ + +Per rendere disponibile alla rete la copia locale del frontend, si suggerisce di avviare lo script npm ``serve`` +integrato con N.E.S.T. come un servizio di sistema di *SystemD*: + +.. code-block:: console + + root:~# systemctl edit --force --full nest-frontend + +Inserire all'interno del file le seguenti direttive: + +.. code-block:: systemd + + [Unit] + Description=N.E.S.T. Frontend + Wants=network-online.target nest-backend.service + After=network-online.target nss-lookup.target nest-backend.service + + [Service] + Type=exec + Environment=NODE_ENV=production + User=nest + Group=nest + WorkingDirectory=/srv/nest/g2-progetto + ExecStart=/usr/bin/npm run serve + + [Install] + WantedBy=multi-user.target + +.. warning:: + + Questo file non è stato testato, in quanto sul server demo è in uso una versione più complessa che usa + `nvm `_ per gestire più versioni di NodeJS sullo stesso sistema. + + La versione in uso sul server demo è: + + .. code-block:: systemd + + [Unit] + Description=N.E.S.T. Frontend + Wants=network-online.target nest-backend.service + After=network-online.target nss-lookup.target nest-backend.service + + [Service] + Type=exec + Environment=NODE_ENV=production + Environment=NODE_VERSION=16 + User=nest + Group=nest + WorkingDirectory=/srv/nest/g2-progetto + ExecStart=/srv/nest/.nvm/nvm-exec npm run serve + + [Install] + WantedBy=multi-user.target + +Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con: + +.. code-block:: console + + root:~# systemctl start nest-frontend + +In caso di successo, il frontend dovrebbe essere esposto sulla porta ``30041`` dell'indirizzo di loopback ``127.0.0.1``: + +.. code-block:: console + + root:~# curl 127.0.0.1:30041 + [...] + +Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema: + +.. code-block:: console + + root:~# systemctl enable nest-frontend + + +Creare un servizio SystemD per il crawler +----------------------------------------- + +.. todo:: + + Scrivere una guida all'installazione di un servizio SystemD per il crawler. + + +Creare un timer SystemD per il crawler +----------------------------------------- + +.. todo:: + + Scrivere una guida all'esecuzione ripetuta del crawler attraverso un timer SystemD. + + +Configurare Apache come reverse proxy +------------------------------------- + +Per rendere l'API e il frontend disponibili al pubblico, si suggerisce di configurare Apache HTTP Server +come reverse proxy. + +La configurazione di Apache varia molto da distribuzione a distribuzione Linux, e talvolta anche da server a server; +pertanto, si fornisce solamente un file `VirtualHost `_ di +esempio da adattare al proprio setup: + +.. code-block:: apacheconf + + + ServerName "api.nest.steffo.eu" + ServerName "prod.nest.steffo.eu" + + RewriteEngine On + RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] + + + + ServerName "api.nest.steffo.eu" + + SSLEngine on + SSLCertificateFile "/root/.acme.sh/*.nest.steffo.eu/fullchain.cer" + SSLCertificateKeyFile "/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key" + + ProxyPass "/" "http://127.0.0.1:30040/" + ProxyPassReverse "/" "http://127.0.0.1:30040/" + RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} + + Protocols h2 http/1.1 + Header always set Strict-Transport-Security "max-age=63072000" + + + + ServerName "prod.nest.steffo.eu" + + SSLEngine on + SSLCertificateFile "/root/.acme.sh/*.nest.steffo.eu/fullchain.cer" + SSLCertificateKeyFile "/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key" + + ProxyPass "/" "http://127.0.0.1:30041/" + ProxyPassReverse "/" "http://127.0.0.1:30041/" + RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} + + Protocols h2 http/1.1 + Header always set Strict-Transport-Security "max-age=63072000" + diff --git a/docs/build/html/code/backend/index.html b/docs/build/html/code/backend/index.html new file mode 100644 index 0000000..5ea378d --- /dev/null +++ b/docs/build/html/code/backend/index.html @@ -0,0 +1,949 @@ + + + + + + + + + + nest_backend - Web API in Python — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

nest_backend - Web API in Python

+
+

.gestione - Metodi di utility

+

Gestione adds many fancy thingamajigs to the flask application, such as a login system and such.

+
+
+nest_backend.gestione.authenticate(username, password)
+

Authentication method. It checks if the combination of username+password is a valid match. If not, it returns None. +:param username: the user’s email +:param password: the user’s password +:return: if the credentials are correct, it returns the user. Else, it returns None.

+
+ +
+
+nest_backend.gestione.identity(payload)
+

Authentication verification method. It checks if the user is in fact registered on the server. +It is required by Flask-JWT, and shouldnt be used alone. +:param payload: the reqest payload. +:return: an User or None. It depends whether the user is actually registered on the platform.

+
+ +
+
+nest_backend.gestione.gen_password(password)
+

It generates an hashed password. +:param password: the password that needs to be hashed. +:return: the password’s hash.

+
+ +
+
+nest_backend.gestione.find_user(email)
+
+ +
+
+nest_backend.gestione.admin_or_403(f)
+
+ +
+
+nest_backend.gestione.repository_auth(f)
+
+ +
+
+nest_backend.gestione.json_request_authorizer(json, serializable)
+
+ +
+
+nest_backend.gestione.json_error(msg, code='errorUnknownError')
+

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.

+
+ +
+
+nest_backend.gestione.json_success(data)
+

An happy little function. Its happy because the operation was successful. +:param data: the thing you want to be returned +:return: a json formatted string

+
+ +
+
+nest_backend.gestione.error_handler(e)
+
+ +
+
+nest_backend.gestione.hashtag_validator(hashtag)
+
+ +
+
+

.database - Database

+

This module imports all the tables and the declarative base

+
+

.base - Estensione flask

+
+
+

.tables - Tabelle

+

This module contains all database classes.

+
+
+class nest_backend.database.tables.Alert(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+id
+
+ +
+
+name
+
+ +
+
+limit
+
+ +
+
+window_size
+
+ +
+
+evaluation_mode
+
+ +
+
+repository_id
+
+ +
+
+repository
+
+ +
+
+notifications
+
+ +
+
+conditions
+
+ +
+
+to_json()
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.Authorization(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+rid
+
+ +
+
+email
+
+ +
+
+repository
+
+ +
+
+user
+
+ +
+
+to_json()
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.Composed(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+rid
+
+ +
+
+snowflake
+
+ +
+
+repository
+
+ +
+
+tweet
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.Condition(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+id
+
+ +
+
+type
+
+ +
+
+content
+
+ +
+
+repository_id
+
+ +
+
+repository
+
+ +
+
+tweets
+
+ +
+
+alerts
+
+ +
+
+to_json()
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.Contains(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+cid
+
+ +
+
+snowflake
+
+ +
+
+condition
+
+ +
+
+tweet
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.Notification(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+id
+
+ +
+
+ora
+
+ +
+
+alert_id
+
+ +
+
+alert
+
+ +
+
+to_json()
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.Repository(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+id
+
+ +
+
+name
+
+ +
+
+start
+
+ +
+
+end
+
+ +
+
+is_active
+
+ +
+
+evaluation_mode
+
+ +
+
+owner_id
+
+ +
+
+owner
+
+ +
+
+authorizations
+
+ +
+
+tweets
+
+ +
+
+alerts
+
+ +
+
+conditions
+
+ +
+
+to_json()
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.Tweet(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+snowflake
+
+ +
+
+content
+
+ +
+
+location
+
+ +
+
+place
+
+ +
+
+poster
+
+ +
+
+insert_time
+
+ +
+
+post_time
+
+ +
+
+image_url
+
+ +
+
+repositories
+
+ +
+
+conditions
+
+ +
+
+to_json()
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.User(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+email
+
+ +
+
+username
+
+ +
+
+password
+
+ +
+
+isAdmin
+
+ +
+
+owner_of
+
+ +
+
+authorizations
+
+ +
+
+to_json()
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.MadeOf(**kwargs)
+
+

Basi: sqlalchemy.orm.decl_api.Model

+
+
+
+aid
+
+ +
+
+cid
+
+ +
+
+alert
+
+ +
+
+condition
+
+ +
+
+__init__(**kwargs)
+

A simple constructor that allows initialization from kwargs.

+

Sets attributes on the constructed instance using the names and +values in kwargs.

+

Only keys that are present as +attributes of the instance’s class are allowed. These could be, +for example, any mapped columns or relationships.

+
+ +
+ +
+
+class nest_backend.database.tables.ConditionType(value)
+
+

Basi: enum.Enum

+
+

Vedi Specifica delle Conditions su +GitLab .

+
+
+hashtag = 0
+
+ +
+
+location = 1
+
+ +
+
+time = 2
+
+ +
+
+coordinates = 3
+
+ +
+
+place = 4
+
+ +
+
+user = 5
+
+ +
+ +
+
+class nest_backend.database.tables.OperationType(value)
+
+

Basi: enum.Enum

+
+

An enumeration.

+
+
+assign = 3
+
+ +
+ +
+
+class nest_backend.database.tables.ConditionMode(value)
+
+

Basi: enum.Enum

+
+

An enumeration.

+
+
+all_or = 0
+
+ +
+
+all_and = 1
+
+ +
+ +
+
+
+

.routes - Percorsi API

+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/code/crawler/index.html b/docs/build/html/code/crawler/index.html new file mode 100644 index 0000000..ea67814 --- /dev/null +++ b/docs/build/html/code/crawler/index.html @@ -0,0 +1,231 @@ + + + + + + + + + + nest_crawler - Crawler in Python — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

nest_crawler - Crawler in Python

+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/code/frontend/index.html b/docs/build/html/code/frontend/index.html new file mode 100644 index 0000000..afd1031 --- /dev/null +++ b/docs/build/html/code/frontend/index.html @@ -0,0 +1,229 @@ + + + + + + + + + + nest_frontend - Interfaccia utente in React — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
    + +
  • »
  • + +
  • nest_frontend - Interfaccia utente in React
  • + + +
  • + + + View page source + + +
  • + +
+ + +
+
+
+
+ +
+

nest_frontend - Interfaccia utente in React

+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/code/meta/index.html b/docs/build/html/code/meta/index.html new file mode 100644 index 0000000..32c7003 --- /dev/null +++ b/docs/build/html/code/meta/index.html @@ -0,0 +1,291 @@ + + + + + + + + + + Meta-documentazione — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Meta-documentazione

+

La documentazione è scritta in reStructuredText, ed è generata con +Sphinx.

+

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, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza +almeno Basic.

+
+

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.

+../../_images/docsRunConfig.png +
+
+

Compilazione con GNU Make

+

È possibile compilare manualmente la documentazione con GNU Make.

+

Come prima cosa, è necessario Installare le dipendenze Python del progetto:

+
user:g2-progetto$ poetry install
+
+
+

Poi, si entri all’interno del virtual environment:

+
user:g2-progetto$ poetry shell
+
+
+

Una volta all’interno del venv, si entri nella cartella della documentazione:

+
user:g2-progetto$ cd docs
+
+
+

Infine, si esegua il target html del Makefile:

+
user:g2-progetto/docs$ make html
+
+
+
+
+

Compilazione con Windows Powershell

+

È possibile compilare manualmente la documentazione con Windows Powershell.

+

Come prima cosa, è necessario Installare le dipendenze Python del progetto:

+
g2-progetto> poetry install
+
+
+

Poi, si entri all’interno del virtual environment:

+
g2-progetto> poetry shell
+
+
+

Una volta all’interno del venv, si entri nella cartella della documentazione:

+
g2-progetto> cd docs
+
+
+

Infine, si esegua lo script make.bat con il parametro html:

+
g2-progetto/docs> make html
+
+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/artifacts.html b/docs/build/html/development/artifacts.html new file mode 100644 index 0000000..ec905af --- /dev/null +++ b/docs/build/html/development/artifacts.html @@ -0,0 +1,245 @@ + + + + + + + + + + Artefatti — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Artefatti

+
+

Da fare

+

Non ho idea di cosa bisogna scrivere qui.

+
+
+

Demo

+
+

Da fare

+

Inserire un link al video della demo.

+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/conclusions.html b/docs/build/html/development/conclusions.html new file mode 100644 index 0000000..3081bdb --- /dev/null +++ b/docs/build/html/development/conclusions.html @@ -0,0 +1,238 @@ + + + + + + + + + + Conclusioni — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Conclusioni

+
+

Da fare

+

Scrivere le conclusioni.

+
+

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

+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/goals.html b/docs/build/html/development/goals.html new file mode 100644 index 0000000..06eeb5c --- /dev/null +++ b/docs/build/html/development/goals.html @@ -0,0 +1,261 @@ + + + + + + + + + + Obiettivo del progetto — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Obiettivo del progetto

+
+

Da fare

+

Scrivere l’obiettivo generale del progetto.

+
+
+

Scope

+
+

Da fare

+

Scrivere lo scope del progetto.

+
+
+
+

Casi d’uso

+
+

Da fare

+

Scrivere i casi d’uso del progetto.

+
+
+
+

Backlog generale

+
+

Da fare

+

Elencare qui tutte le user story del backlog, senza specificare lo sprint in cui sono state realizzate.

+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/process.html b/docs/build/html/development/process.html new file mode 100644 index 0000000..3edf989 --- /dev/null +++ b/docs/build/html/development/process.html @@ -0,0 +1,240 @@ + + + + + + + + + + Processo di sviluppo — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Processo di sviluppo

+
+

Da fare

+

Descrivere genericamente il processo di sviluppo seguito, includendo:

+
+

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

+
+

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

+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/sprint0/index.html b/docs/build/html/development/sprint0/index.html new file mode 100644 index 0000000..a532dd9 --- /dev/null +++ b/docs/build/html/development/sprint0/index.html @@ -0,0 +1,609 @@ + + + + + + + + + + Sprint 0: 04 Apr - 18 Apr — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Sprint 0: 04 Apr - 18 Apr

+
+

Da fare

+

Inserire informazioni generali sullo sprint, come inizio e fine.

+
+
+

Consegna

+

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

+ +
+
+

Goal

+
+

Da fare

+

Inserire qui lo sprint goal.

+
+
+
+

Backlog

+
+

Da fare

+

Mostrare qui lo sprint backlog di Taiga.

+
+
+
+

Definition of done

+
+

Da fare

+

Inserire qui la definition of done dello sprint.

+
+
+
+

Registro attività

+
+

Riunioni collettive

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Ora

Durata

Attività

10h 6m

Totale

2021-04-08

20:45

1h

Analisi documento di specifiche

2021-04-09

14:15

35m

Intervista con il cliente

2021-04-09

15:00

1h

Resoconto intervista

2021-04-11

15:03

2h 39m

Documentazione e planning poker

2021-04-15

18:15

52m

Documentazione

2021-04-17

15:05

4h

Documentazione e partita a Scrumble

+
+
+

Attività individuali

+
+

Stefano Goldoni

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

6h 30m

Totale

2021-04-08

1h

user stories

2021-04-09

1h

epic

2021-04-10

30m

use cases

2021-04-11

30m

use cases

2021-04-14

30m

documentazione SRS

2021-04-15

30m

documentazione SRS

2021-04-17

1h 30m

diagrammi di attività

+
+
+

Flavia Cocca

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

15h

Totale

2021-04-08

2h 30m

brainstorming Ui

2021-04-10

2h

creazione frame in figma con relativo css

2021-04-11

1h 30m

mockup UI con relativo css (creazione componenti)

2021-04-12

1h 30m

mockup UI con relativo css (creazione componenti)

2021-04-14

3h

mockup UI con relativo css (creazione pagine)

2021-04-15

2h

mockup UI con relativo css (creazioni pagine)

2021-04-16

2h

ultimi ritocchi UI

2021-04-17

30m

Stesura documentazione partita scrumble

+
+
+

Chiara Calzolari

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

2021-04-09

2.5h

Brainstorming UI

2021-04-10

1.5h

mockup UI con relativo css (dashboard ed elenco repositories)

2021-04-11

1.0h

mockup UI con relativo css (settings)

2021-04-11

0.5h

Prima versione del logo

2021-04-12

3.0h

mockup UI con relativo css (creazione componenti, light/dark mode)

2021-04-13

1.0h

mockup UI con relativo css (alerts)

2021-04-15

1.0h

Versione definitiva del logo

2021-04-16

0.5h

mockup UI con relativo css (Notifications e Share)

2021-04-17

1.0h

Documentazione Mockup

2021-04-17

0.5h

Doppiaggio video di presentazione

+
+
+

Stefano Pigozzi

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

23h 30m

Totale

2021-04-08

4h 30m

Configurazione Discord e GitLab

2021-04-09

3h 30m

Riunione con il cliente e configurazione Taiga

2021-04-10

4h

Configurazione Penpot, Taiga, UI Design, progettazione Database

2021-04-11

3h 30m

Riunione, configurazione GitLab e project management

2021-04-12

30m

Configurazione Twitter e UI Design

2021-04-15

2h 30m

Partita a Scrumble e project management

2021-04-16

1h 30m

Project management e configurazione SonarQube

2021-04-17

3h 30m

Riunione e partita a scrumble

+
+
+

Giovanni Anniballi

+
+

Nota

+

Giovanni ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.

+
+
+
+

Giorgio Minoccari

+
+

Nota

+

Giorgio ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.

+
+
+
+

Lorenzo Balugani

+
+

Nota

+

Lorenzo ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.

+
+
+
+
+
+

Risultati della partita di Scrumble

+
+

Da fare

+

Trascrivere qui i risultati della partita di Scrumble.

+
+
+
+

Statistiche

+
+

Gitinspector

+

Questa statistica è stata generata dal prof. Marcello Missiroli con +Gitinspector al termine dello Sprint.

+ +
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/sprint1/index.html b/docs/build/html/development/sprint1/index.html new file mode 100644 index 0000000..7cc18e1 --- /dev/null +++ b/docs/build/html/development/sprint1/index.html @@ -0,0 +1,894 @@ + + + + + + + + + + Sprint 1: 19 Apr - 02 Mag — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Sprint 1: 19 Apr - 02 Mag

+
+

Da fare

+

Inserire informazioni generali sullo sprint, come inizio e fine.

+
+
+

Consegna

+

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

+ +
+
+

Goal

+
+

Da fare

+

Inserire qui lo sprint goal.

+
+
+
+

Backlog

+
+

Da fare

+

Mostrare qui lo sprint backlog di Taiga.

+
+
+
+

Definition of done

+
+

Da fare

+

Inserire qui la definition of done dello sprint.

+
+
+
+

Registro attività

+
+

Riunioni collettive

+ ++++++ + + + + + + + + + + + + + + + + + + + +

Data

Ora

Durata

Attività

2h

Totale

2021-05-01

15:30

2h

backlog grooming session

+
+
+

Attività individuali

+
+

Stefano Goldoni

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

23h 30m

Totale

2021-04-20

30m

analisi test

2021-04-20

1h 30m

scrittura test cases

2021-04-26

30m

predisposizione progetto in locale per il test

2021-04-26

2h

metodi di test login e creazione utente

2021-04-28

2h

metodi ti test

2021-04-29

2h

metodi di test

2021-04-30

2h

metodi di test backend

2021-05-01

1h

test frontend

2021-05-01

1h

test backend in pair programming

2021-05-02

1h

documentazione

2021-05-02

2h 30m

test backend

+
+
+

Flavia Cocca

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

8h

Totale

2021-04-27

1h

modifica mockup UI

2021-04-28

1h

Organizzazione Sprint retrospective

2021-04-30

1h

modifica mockup UI

2021-05-01

2h

Riunione con il team per sprint review e sprint retrospective

2021-05-02

3h

Stesura documenti Sprint 1 (debito tecnico e relazione sprint retrospective), realizzazione video Sprint1 review

+
+
+

Chiara Calzolari

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

6h 30m

Totale

2021-04-26

3h

Configurazione ambiente di sviluppo

2021-04-27

1h

modifica mockup UI (adeguamento al JS)

2021-04-29

2h

modifica mockup UI (Manage users)

2021-05-01

30m

Ultimi ritocchi al mockup UI

+
+
+

Stefano Pigozzi

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

29h

Totale

2021-04-19

18m

Configurazione IntelliJ IDEA

2021-04-19

10m

Configurazione IntelliJ IDEA

2021-04-20

1h 26m

Sviluppo

2021-04-21

1h 3m

Sviluppo

2021-04-21

3m

Configurazione IntelliJ IDEA

2021-04-21

58m

Sviluppo

2021-04-21

13m

Sviluppo

2021-04-21

7m

Sviluppo

2021-04-21

6m

Project management

2021-04-21

15m

Sviluppo

2021-04-21

32m

Sviluppo

2021-04-21

10m

Sviluppo

2021-04-22

5m

Sviluppo

2021-04-22

16m

Presentazione

2021-04-22

36m

Riunione

2021-04-22

1h 23m

Sviluppo

2021-04-23

18m

Studio

2021-04-23

42m

Sviluppo

2021-04-23

10m

Sviluppo

2021-04-23

1h 9m

Sviluppo

2021-04-23

3m

Sviluppo

2021-04-24

19m

Sviluppo

2021-04-24

19m

Sviluppo

2021-04-25

2h 59m

Sviluppo

2021-04-25

10m

Documentazione

2021-04-26

13m

Configurazione SonarQube

2021-04-26

12m

Documentazione

2021-04-26

30m

Documentazione

2021-04-26

4m

Riunione

2021-04-26

2h 58m

Sviluppo

2021-04-26

1h 4m

Sviluppo

2021-04-26

56m

Sviluppo

2021-04-26

6m

Project management

2021-04-27

7m

Sviluppo

2021-04-27

15m

Configurazione Taiga

2021-04-27

29m

Sviluppo

2021-04-27

35m

Collaborazione

2021-04-28

34m

Collaborazione

2021-04-29

1h 42m

Sviluppo

2021-04-29

1h 26m

Sviluppo

2021-04-29

48m

Project management

2021-04-30

56m

Sviluppo

2021-04-30

46m

Sviluppo

2021-05-01

12m

Sviluppo

2021-05-02

14m

Documentazione

2021-05-02

28m

Bugfixing

2021-05-02

15m

Collaborazione

2021-05-02

3m

Bugfixing

+
+
+

Giovanni Anniballi

+

Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dell’IDE utilizzato.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

16h 30m

Totale

2021-04-22

30m

Riunione con il team

2021-04-23

1h

Studio struttura del backend

2021-04-24

1h 30m

Studio del backend, volto a capire il funzionamento delle varie API

2021-04-26

2h

Testing login e retrieval dei dati inerenti a tutti gli utenti registrati

2021-04-27

1h

Testing creazione user

2021-04-28

2h

Test cancellazione utente e ritorno dei dati inerenti a quell’utente

2021-04-29

1h 30m

Test modica utenti e creazione della prima repository

2021-04-30

2h

Testing ritorno di tutte le repository di proprietà dell’utente loggato, ritorno delle info inerenti alla repository specificata

2021-05-01

2h

Riunione con il team per sprint review e sprint retrospective

2021-05-01

1h

Testing modifica ed eliminazione di una repository (nome, stato)

2021-05-02

2h

Testing del frontend tramite UI, controllo generale dei test già effettuati.

+
+
+

Giorgio Minoccari

+

Durante lo sprint ho principalmente svolto sviluppo e test riguardo alla API di twitter, in modo da poter effettuare chiamate efficenti e non venire limitati dal sito riguardo alle richieste effettuate.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

10h

Totale

2021-04-21

1h

Primi test riguardo autenticazione Oauth per API twitter

2021-04-23

1h 30m

Autenticazione funzionante

2021-04-24

30m

Test su ricerche generali con parole chiave

2021-04-26

1h

Test su ricerche geolocalizzate

2021-04-27

1h

Definizione di entita” di esempio nei database per provare funzioni legate ad esse

2021-04-28

2h

Definizione di funzioni per l’aggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API

2021-04-29

1h

Refactor codice scritto fino a quel momento, eliminazione di dati inutili

2021-05-01

1h

Implementazioni di analisi su termini e hashtag restituiti dall’API

2021-05-02

1h

Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate

+
+
+

Lorenzo Balugani

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

13h 30m

Totale

2021-04-21

2h

Implementazione Base di Dati

2021-04-22

2h

Login, creazione utenti

2021-04-25

1h

Rimozione utenti, CORS, Creazione repo

2021-04-25

3h

Altre funzioni API

2021-04-26

30m

Standardizzazione output json

2021-04-26

1h

Documentazione

2021-04-27

30m

Aggiunto supporto al modulo explorer, fix

2021-04-28

30m

Bugfixing

2021-04-29

1h

Gestione migliorata errori

2021-04-29

1h

Refactoring

2021-05-02

1h

Bugfixing

+
+
+
+
+

Statistiche

+
+

Gitinspector

+

Questa statistica è stata generata dal prof. Marcello Missiroli con +Gitinspector al termine dello Sprint.

+ +
+
+
+

Sprint review

+
+

Da fare

+

Inserire un link alla sprint review.

+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/sprint2/index.html b/docs/build/html/development/sprint2/index.html new file mode 100644 index 0000000..26a320c --- /dev/null +++ b/docs/build/html/development/sprint2/index.html @@ -0,0 +1,813 @@ + + + + + + + + + + Sprint 2: 03 Mag - 16 Mag — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Sprint 2: 03 Mag - 16 Mag

+
+

Da fare

+

Inserire informazioni generali sullo sprint, come inizio e fine.

+
+
+

Consegna

+

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

+ +
+
+

Goal

+
+

Da fare

+

Inserire qui lo sprint goal.

+
+
+
+

Backlog

+
+

Da fare

+

Mostrare qui lo sprint backlog di Taiga.

+
+
+
+

Definition of done

+
+

Da fare

+

Inserire qui la definition of done dello sprint.

+
+
+
+

Registro attività

+
+

Riunioni collettive

+ ++++++ + + + + + + + + + + + + + + + + + + + +

Data

Ora

Durata

Attività

1h

Totale

2021-05-14

10:00

1h

Sprint Retrospective session

+
+
+

Attività individuali

+
+

Stefano Goldoni

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

16h

Totale

2021-05-04

1h

preparazione backlog sprint 2

2021-05-10

3h

test sprint 2

2021-05-11

2h 30m

test utenti e repository

2021-05-12

2h

test repository

2021-05-13

2h 30m

test repository

2021-05-14

3h

test conditions

2021-05-15

2h

test conditions + sonarqube scanner

+
+
+

Flavia Cocca

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

16h

Totale

2021-05-04

30m

Riunione per con PO, nuovo backlog

2021-05-05

1h

Riunione

2021-05-07

3h

Refactoring test

2021-05-08

2h

Refactoring test

2021-05-09

3h

Nuovi test

2021-05-11

2h 30m

Discussione test e risoluzione di alcune issue

2021-05-13

1h

Bugfixing

2021-05-14

1h

Sprint Retrospective

2021-05-15

2h

Documentazione

+
+
+

Stefano Pigozzi

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

27h 30m

Totale

2021-05-05

40m

Riunione

2021-05-05

21m

Documentazione

2021-05-06

9m

Sviluppo

2021-05-06

3m

Configurazione Taiga

2021-05-06

11m

Documentazione

2021-05-06

9m

Riunione

2021-05-06

20m

Documentazione

2021-05-06

39m

Sviluppo

2021-05-06

15m

Riunione

2021-05-06

1h 4m

Riunione

2021-05-07

1h 47m

Sviluppo

2021-05-07

17m

Sviluppo

2021-05-07

34m

Sviluppo

2021-05-07

34m

Project management

2021-05-07

2h 44m

Sviluppo

2021-05-08

13m

Sviluppo

2021-05-08

29m

Sviluppo

2021-05-08

18m

Sviluppo

2021-05-10

1h 00m

Sviluppo

2021-05-10

1h 15m

Configurazione GitLab

2021-05-10

25m

Sviluppo

2021-05-10

39m

Sviluppo

2021-05-11

25m

Bugfixing

2021-05-11

3h 57m

Sviluppo

2021-05-11

1h 45m

Sviluppo

2021-05-12

10m

Sviluppo

2021-05-12

1h 51m

Sviluppo

2021-05-13

1h 00m

Sviluppo

2021-05-13

1h 20m

Sviluppo

2021-05-14

20m

Sviluppo

2021-05-14

3h 17m

Documentazione

2021-05-15

1h 8m

Porting dipendenze

+
+
+

Chiara Calzolari

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

11h

Totale

2021-05-03

1h

Testing frontend e segnalazione issues

2021-05-03

1h

Modifica mockup UI (Dashboard repository)

2021-05-04

1h

Modifica mockup UI (adeguamento al JS)

2021-05-10

3h

Configurazione ambiente di sviluppo

2021-05-11

1h 30m

Modifica UI (traduzione in Italiano)

2021-05-12

30m

Modifica UI (traduzione in Italiano)

2021-05-14

3h

Realizzazione video demo sprint 2

+
+
+

Giovanni Anniballi

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

17h

Totale

2021-05-04

30m

Incontro con SM e PO per valutare quali US andranno nello sprint2

2021-05-05

1h

Incontro con il team

2021-05-07

2h

Refactoring tests sugli user e primi utilizzi delle fixtures

2021-05-08

2h

Completamento test users

2021-05-10

1h

Ulteriori approcci (fallimentari) al coverage di SonarQube

2021-05-11

2h

Discussione sui test e correzioni bug

2021-05-12

1h

Test repository

2021-05-13

1h

Generazione coverage pytest e setting sonarqube (riuscito!)

2021-05-14

4h

Sprint review e retrospettiva, conclusione test repository

2021-05-15

2h

generazione nuovo coverage e fix a sonarqube

2021-05-15

30m

fix piccoli bug segnalati da sonarqube

+
+
+

Giorgio Minoccari

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

10h

Totale

2021-05-04

30m

Aggiunta della condizione sull’utente

2021-05-10

2h

Tentativo di inserimento delle query con place_id

2021-05-11

1h 30m

Test per passare alla versione 2.0 delle API

2021-05-12

1h

Ritorno alla versione 1.1 perche” lascia disponibili le query sulla geolocalizzazione gratuitamente

2021-05-14

5h

Integrazione e inserimento dei tweet catturati nel database

+
+
+

Lorenzo Balugani

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

Durata

Attività

19h

Totale

2021-05-05

4h

Setup di swagger, documentazione

2021-05-06

4h

Documentazione, sviluppo

2021-05-07

3h

Alert, documentazione

2021-05-10

2h

Alert Put, bugfixing

2021-05-11

3h

Bugfixing, sviluppo

2021-05-12

3h

Risolti issue pubblicati su Taiga

2021-05-13

1h

Bugfixing

2021-05-14

1h

Bugfixing

+
+
+
+
+

Statistiche

+
+

Gitinspector

+

Questa statistica è stata generata dal prof. Marcello Missiroli con +Gitinspector al termine dello Sprint.

+ +
+
+
+

Sprint review

+
+

Da fare

+

Inserire un link alla sprint review.

+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/sprint3/index.html b/docs/build/html/development/sprint3/index.html new file mode 100644 index 0000000..690d37e --- /dev/null +++ b/docs/build/html/development/sprint3/index.html @@ -0,0 +1,536 @@ + + + + + + + + + + Sprint 3: 17 Mag - 30 Mag — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Sprint 3: 17 Mag - 30 Mag

+
+

Da fare

+

Inserire informazioni generali sullo sprint, come inizio e fine.

+
+
+

Consegna

+

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

+ +
+
+

Goal

+
+

Da fare

+

Inserire qui lo sprint goal.

+
+
+
+

Backlog

+
+

Da fare

+

Mostrare qui lo sprint backlog di Taiga.

+
+
+
+

Definition of done

+
+

Da fare

+

Inserire qui la definition of done dello sprint.

+
+
+
+

Registro attività

+
+

Da fare

+

Compilare il registro attività dello sprint 3.

+
+
+

Riunioni collettive

+ ++++++ + + + + + + + + + + + + + + + + + + + +

Data

Ora

Durata

Attività

TODO

Totale

+
+
+

Attività individuali

+
+

Stefano Goldoni

+ +++++ + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

+
+
+

Flavia Cocca

+ +++++ + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

+
+
+

Chiara Calzolari

+ +++++ + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

+
+
+

Stefano Pigozzi

+ +++++ + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

+
+
+

Giovanni Anniballi

+ +++++ + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

+
+
+

Giorgio Minoccari

+ +++++ + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

+
+
+

Lorenzo Balugani

+ +++++ + + + + + + + + + + + + + + + + +

Data

Durata

Attività

Totale

+
+
+
+
+

Statistiche

+
+

Gitinspector

+
+

Da fare

+

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

+
+
+
+
+

Retrospettiva finale

+
+

Da fare

+

Inserire qui la Retrospettiva finale.

+
+
+
+

Schermata finale di SonarQube

+
+

Da fare

+

Inserire qui uno screenshot della schermata finale di SonarQube.

+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/development/suggestions.html b/docs/build/html/development/suggestions.html new file mode 100644 index 0000000..705775b --- /dev/null +++ b/docs/build/html/development/suggestions.html @@ -0,0 +1,235 @@ + + + + + + + + + + Suggerimenti relativi al corso — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Suggerimenti relativi al corso

+
+

Da fare

+

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

+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/guide/about.html b/docs/build/html/guide/about.html new file mode 100644 index 0000000..b59ad5c --- /dev/null +++ b/docs/build/html/guide/about.html @@ -0,0 +1,260 @@ + + + + + + + + + + Il progetto in breve — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Il progetto in breve

+

N.E.S.T. (Noi Estraiamo Statistiche Tweet) è un progetto realizzato nel 2021 per +l”esame di Progetto del Software del corso di Informatica all’Unimore.

+
+

Suddivisione in moduli

+

Il progetto è composto da tre parti:

+
+
nest_crawler

Un modulo scritto in Python usando tweepy che recupera tweet attraverso la Twitter API secondo le +condizioni presenti all’interno del database e li salva per future elaborazioni.

+
+
nest_backend

Un web server scritto in Python usando il framework flask che fornisce un’API HTTP per visualizzare e +manipolare i dati dell’applicazione, gestendo autenticazione, autorizzazione e comunicazione con il database.

+
+
nest_frontend

Una applicazione web scritta in JSX usando il framework react che comunica con il backend, mostrando +all’utente i dati del backend in una formato immediatamente comprensibile.

+
+
+
+
+

Screenshots

+../_images/frontendDashboard.png +../_images/frontendRepositoryCreate.png +../_images/frontendAnalysis.png +../_images/frontendRepositoryShare.png +../_images/frontendAlertCreate.png +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/guide/installation.html b/docs/build/html/guide/installation.html new file mode 100644 index 0000000..a00fd2d --- /dev/null +++ b/docs/build/html/guide/installation.html @@ -0,0 +1,519 @@ + + + + + + + + + + Installazione — N.E.S.T. 0.1.0 documentazione + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Installazione

+

Questa guida illustra come installare interamente N.E.S.T. su un server Linux.

+
+

Prerequisiti

+

Per installare ed eseguire N.E.S.T., è necessario:

+ +
+
+

Creare un nuovo utente

+

Per motivi di sicurezza, si suggerisce di creare un nuovo utente con il quale eseguire il progetto:

+
+

Nota

+

È necessario essere amministratori di sistema per eseguire i seguenti comandi. +Si veda il manuale di useradd per più dettagli.

+
+
root:~# mkdir --parents /srv/nest
+root:~# useradd --home-dir /srv/nest --shell /bin/bash nest
+root:~# chown --recursive nest: /srv/nest
+
+
+
+
+

Scaricare il codice sorgente

+

Per installare N.E.S.T., è necessario avere il codice sorgente disponibile sul server.

+

Si consiglia di scaricarlo tramite Git:

+
nest:~$ git clone https://gitlab.steffo.eu/nest/g2-progetto.git
+
+
+

Questo creerà una nuova cartella g2-progetto nella directory in cui è stato eseguito il comando.

+

Per proseguire, sarà necessario entrarvi:

+
nest:~$ cd g2-progetto
+
+
+
+
+

Creare il database

+

N.E.S.T. necessita di un database PostgreSQL in cui salvare i dati.

+

Per motivi di sicurezza, si suggerisce di creare un ruolo isolato dal resto del DBMS apposta per N.E.S.T.:

+
postgres:~$ createuser nest
+
+
+

Per creare il database PostgreSQL, si esegua:

+
postgres:~$ createdb --owner=nest nest
+
+
+
+
+

Creare un file di configurazione per il backend

+

Il backend usa un file di configurazione per impostare alcune variabili.

+

Si crei un nuovo file nella working directory del progetto denominato config.py:

+
nest:~/g2-progetto$ vim config.py
+
+
+

Il file dovrà avere i seguenti contenuti:

+
# Una stringa rappresentante il database da utilizzare
+# Per maggiori informazioni sulla sintassi, si veda https://docs.sqlalchemy.org/en/14/core/engines.html
+SQLALCHEMY_DATABASE_URI = "postgresql://nest@/nest"
+
+# Una stringa casuale utilizzata per generare i JSON Web Token (JWT)
+# Va mantenuta segreta e costante per tutta l'operazione del backend!
+# Si suggerisce di premere tasti casuali sulla tastiera finchè la riga non è piena.
+SECRET_KEY = "dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj"
+
+
+
+
+

Installare le dipendenze Python

+

Le dipendenze Python sono gestite da Poetry, e possono essere installate con:

+
nest:~/g2-progetto$ poetry install
+
+
+

Poetry creerà automaticamente un venv e vi installerà all’interno tutti +i pacchetti necessari all’esecuzione del backend e del crawler di N.E.S.T. .

+

Si suggerisce di ricordare il nome del venv creato da Poetry, in quanto sarà necessario per +Creare un servizio SystemD per il backend:

+
Creating virtualenv nest-7C2fm2VD-py3.9 in /srv/nest/.cache/pypoetry/virtualenvs
+
+
+
+
+

Installare le dipendenze NodeJS

+

Le dipendenze NodeJS sono gestite da npm, e possono essere installate con:

+
nest:~/g2-progetto$ npm install
+
+
+

npm creerà automaticamente una cartella +node_modules e vi installerà all’interno tutte +le librerie necessarie all’esecuzione del frontend di N.E.S.T. .

+
+
+

Creare un servizio SystemD per il backend

+

Per fare in modo che il backend rimanga attivo in background, anche dopo un riavvio, si suggerisce di installarlo come +servizio di sistema di SystemD:

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

Inserire all’interno del file le seguenti direttive:

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

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

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

In caso di successo, l’API dovrebbe essere esposto sulla porta 30040 dell’indirizzo di loopback 127.0.0.1:

+
root:~# curl 127.0.0.1:30040/doa
+If you see this, the server is fine.
+
+
+

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

+
root:~# systemctl enable nest-backend
+
+
+
+
+

Compilare il frontend

+

Perchè sia possibile servire il frontend agli utenti, è necessario prima crearne una versione compilata ottimizzata.

+

È possibile farlo con il comando:

+
nest:~/g2-progetto$ npm run build
+
+
+

Verrà creata una cartella build con all’interno la versione compilata.

+
+
+

Creare un servizio SystemD per il frontend

+

Per rendere disponibile alla rete la copia locale del frontend, si suggerisce di avviare lo script npm serve +integrato con N.E.S.T. come un servizio di sistema di SystemD:

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

Inserire all’interno del file le seguenti direttive:

+
[Unit]
+Description=N.E.S.T. Frontend
+Wants=network-online.target nest-backend.service
+After=network-online.target nss-lookup.target nest-backend.service
+
+[Service]
+Type=exec
+Environment=NODE_ENV=production
+User=nest
+Group=nest
+WorkingDirectory=/srv/nest/g2-progetto
+ExecStart=/usr/bin/npm run serve
+
+[Install]
+WantedBy=multi-user.target
+
+
+
+

Avvertimento

+

Questo file non è stato testato, in quanto sul server demo è in uso una versione più complessa che usa +nvm per gestire più versioni di NodeJS sullo stesso sistema.

+

La versione in uso sul server demo è:

+
[Unit]
+Description=N.E.S.T. Frontend
+Wants=network-online.target nest-backend.service
+After=network-online.target nss-lookup.target nest-backend.service
+
+[Service]
+Type=exec
+Environment=NODE_ENV=production
+Environment=NODE_VERSION=16
+User=nest
+Group=nest
+WorkingDirectory=/srv/nest/g2-progetto
+ExecStart=/srv/nest/.nvm/nvm-exec npm run serve
+
+[Install]
+WantedBy=multi-user.target
+
+
+
+

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

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

In caso di successo, il frontend dovrebbe essere esposto sulla porta 30041 dell’indirizzo di loopback 127.0.0.1:

+
root:~# curl 127.0.0.1:30041
+[...]
+
+
+

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

+
root:~# systemctl enable nest-frontend
+
+
+
+
+

Creare un servizio SystemD per il crawler

+
+

Da fare

+

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

+
+
+
+

Creare un timer SystemD per il crawler

+
+

Da fare

+

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

+
+
+
+

Configurare Apache come reverse proxy

+

Per rendere l’API e il frontend disponibili al pubblico, si suggerisce di configurare Apache HTTP Server +come reverse proxy.

+

La configurazione di Apache varia molto da distribuzione a distribuzione Linux, e talvolta anche da server a server; +pertanto, si fornisce solamente un file VirtualHost di +esempio da adattare al proprio setup:

+
<VirtualHost *:80>
+    ServerName "api.nest.steffo.eu"
+    ServerName "prod.nest.steffo.eu"
+
+    RewriteEngine On
+    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName "api.nest.steffo.eu"
+
+    SSLEngine on
+    SSLCertificateFile      "/root/.acme.sh/*.nest.steffo.eu/fullchain.cer"
+    SSLCertificateKeyFile   "/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key"
+
+    ProxyPass           "/" "http://127.0.0.1:30040/"
+    ProxyPassReverse    "/" "http://127.0.0.1:30040/"
+    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
+
+    Protocols h2 http/1.1
+    Header always set Strict-Transport-Security "max-age=63072000"
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName "prod.nest.steffo.eu"
+
+    SSLEngine on
+    SSLCertificateFile      "/root/.acme.sh/*.nest.steffo.eu/fullchain.cer"
+    SSLCertificateKeyFile   "/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key"
+
+    ProxyPass           "/" "http://127.0.0.1:30041/"
+    ProxyPassReverse    "/" "http://127.0.0.1:30041/"
+    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
+
+    Protocols h2 http/1.1
+    Header always set Strict-Transport-Security "max-age=63072000"
+</VirtualHost>
+
+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/nest_crawler/authentication.py b/nest_crawler/authentication.py index 4b369c2..e4b68d8 100644 --- a/nest_crawler/authentication.py +++ b/nest_crawler/authentication.py @@ -1,11 +1,12 @@ import tweepy as tw +import os def authenticate(): - c_k = "GEhtSyP9e98mzFeiOCSW0lvQX" - c_s = "438cmYrl5xqaX2W7I2Bf5A9nF1pN5VtM9f77WYQnAXg1BwKJ27" - a_t = "1380217745732689921-IW3U1JlxhnQeGBUrnHZ2nxbxhksXUZ" - a_t_s = "EUoYNoj72rb2q00tUIW8eTcLJAhUAYPstZlV78W9cPpEJ" + c_k = os.getenv('C_K') + c_s = os.getenv('C_S') + a_t = os.getenv('A_T') + a_t_s = os.getenv('A_T_S') auth = tw.OAuthHandler(c_k, c_s) auth.set_access_token(a_t, a_t_s) diff --git a/nest_frontend/components/interactive/BoxLoggedIn.js b/nest_frontend/components/interactive/BoxLoggedIn.js index 0942dd7..80ae228 100644 --- a/nest_frontend/components/interactive/BoxLoggedIn.js +++ b/nest_frontend/components/interactive/BoxLoggedIn.js @@ -32,7 +32,7 @@ export default function BoxLoggedIn({ ...props }) { diff --git a/nest_frontend/components/interactive/BoxRepositories.js b/nest_frontend/components/interactive/BoxRepositories.js index dccda66..d1ff6e6 100644 --- a/nest_frontend/components/interactive/BoxRepositories.js +++ b/nest_frontend/components/interactive/BoxRepositories.js @@ -50,11 +50,11 @@ export default function BoxRepositories( key={repo["id"]} repo={repo} view={view ? () => view(repo["id"]) : null} - alerts={alerts ? () => alerts(repo["id"]) : null} + alerts={(alerts && user["email"] === repo["owner"]["email"]) ? () => alerts(repo["id"]) : null} share={(share && user["email"] === repo["owner"]["email"]) ? () => share(repo["id"]) : null} - archive={archive ? () => archive(repo["id"]) : null} - edit={edit ? () => edit(repo["id"]) : null} - destroy={destroy ? () => destroy(repo["id"]) : null} + archive={(archive && user["email"] === repo["owner"]["email"]) ? () => archive(repo["id"]) : null} + edit={(edit && user["email"] === repo["owner"]["email"]) ? () => edit(repo["id"]) : null} + destroy={(destroy && user["email"] === repo["owner"]["email"]) ? () => destroy(repo["id"]) : null} running={running} /> ))