Home

Awesome

scaling-spoon

Applicazione a sostegno della didattica della matematica

Idea

L'idea è avere a disposizione un'applicazione che permette di distinguere gli utenti che si registrano in diversi gruppi (più o meno corrisopondenti al corso che frequentano) e servire loro materiale di studio e domande a scelta multipla per allenarsi; materiale di studio e domande sono suddivise per argomenti; gli argomenti sono organizzati secondo una struttura che rappresenta le relazioni di propedeuticità.

Componenti

fastapi

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.

Nel file main.py è definita un'applicazione del framework FastAPI che si può servire con il comando uvicorn main:app. Questa raccoglie le richieste ai vari endpoints disponibili(definiti in routers) e restituisce le adeguate risposte in formato json o in formato html (generato dinamicamente con jinja2 a partire dai componenti in templates). I contenuti sono conservati e recuperati con il database popy. L'applicazione rende accessibili all'url /static i file collocati nella omonima cartella.

popy

Popy è un modulo per collegare il database ponyorm a FastAPI. Espone principalmente i seguenti oggetti:

Per maggiori dettagli, fare riferimento alla documentazione di ponyorm e alla definizione stessa dei modelli nel file bases.py

routers

Ogni richiesta http al server viene indirizzata ad un endpoint, una funzione che interpreta le informazioni presenti nella richiesta e produce una risposta. Nel pacchetto routers sono definiti vari moduli ognuno dei quali espone una sola funzione make_router(mc: ModelContainer, app: FastAPI, templates: Jinja2Templates) che restituisce un router il quale va aggiunto all'applicazione principale con app.include_router(module.make_router(mc, app, templates)). Maggiori informazioni sui router di fastapi

helpers

Nel modulo helpers sono raccolte alcune funzioni che aiutano in diverse parti dell'applicazione. Sono funzioni che non dipendono da altri moduli definiti nel progetto, ma sono librerie esterne.

static

In questa cartella, tutti i file che dovranno essere serviti attraverso il browser dell'utente, come .js e .css.

In particolare, i contenuti dell'applicazione sono nella cartella contents, ordinati con numero seriale. Per questo motivo, cancellare i contenuti deve essere fatto con cautela per non disallineare filesystem e database.

tests e selenium_testing

Per testare l'applicazione si usa pytest e selenium. I test si trovano nella cartella tests e nella cartella selenium_testing, ogni file che si chiami test* contiene dei test che saranno eseguiti automaticamente da pytest. Per eseguire i test di selenium è previsto che l'applicazione sia già attiva all'indirizzo http://127.0.0.1:8000.

Applicazioni utilizzate

Sono stati utilizzati (e pertanto si ringraziano) i seguenti software liberi: