Modulo backend ============== .. default-domain:: py .. default-role:: obj .. py:currentmodule:: sophon Il *modulo backend* consiste in un server web che consente agli utenti: - Attraverso l'API: - *autenticazione* e *autorizzazione* degli utenti; - *visualizzazione*, *interazione*, *creazione*, *modifica* ed *eliminazione* di gruppi di ricerca, progetti di ricerca e notebook - *visualizzazione* di utenti e dettagli sull'istanza Sophon. - Attraverso pagine web dinamiche: - *amministrazione* dell'istanza Sophon. Inoltre, effettua le seguenti operazioni in risposta a determinate richieste effettuate dagli utenti: - *configurazione*, *avvio* e *arresto* di container Docker basati sulle immagini specificate dai notebook; - *configurazione*, *attivazione* e *disattivazione* del servizio di proxying effettuato dal :ref:`modulo proxy`. È collocato all'interno del repository in ``/backend``. Librerie e tecnologie utilizzate -------------------------------- .. note:: Sono elencate solo le principali librerie utilizzate; dipendenze e librerie minori non sono specificate, ma sono visibili all'interno del file ``poetry.lock``. - Il linguaggio di programmazione `Python `_ - Il gestore di dipendenze `Poetry `_ - Il framework web `Django `_ - L'estensione per Django `Django REST Framework `_ - L'estensione per Django `Django CORS Headers `_ - L'adattatore database per PostgreSQL `Psycopg `_ - Il `Docker SDK for Python `_ - I server web `Gunicorn `_ e `Uvicorn `_ - L'utilità `lazy-object-proxy `_ Struttura del modulo -------------------- Il modulo consiste nel package Python :mod:`sophon`, che contiene al suo interno un progetto Django, che a sua volta contiene tre app Django. Il progetto `sophon` ^^^^^^^^^^^^^^^^^^^^ .. module:: sophon L'app `sophon.core` ^^^^^^^^^^^^^^^^^^^ .. module:: sophon.core L'app `sophon.projects` ^^^^^^^^^^^^^^^^^^^^^^^ .. module:: sophon.projects L'app `sophon.notebooks` ^^^^^^^^^^^^^^^^^^^^^^^^ .. module:: sophon.notebooks