1
Fork 0
mirror of https://github.com/Steffo99/sophon.git synced 2024-10-16 07:07:26 +00:00

🐛 Fix various rst problems

This commit is contained in:
Steffo 2021-11-25 04:42:42 +01:00
parent 5ca5c7375e
commit 2895a45a09
Signed by: steffo
GPG key ID: 6965406171929D01
10 changed files with 83 additions and 68 deletions

View file

@ -87,7 +87,6 @@ html_theme = 'sphinx_rtd_theme'
# Configuration for the theme
html_theme_options = {
"style_nav_header_background": "#051836",
"github_url": "https://github.com/Steffo99/sophon/tree/main/docs/source",
}
# Title of the HTML page
html_title = f"{project}"

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/1_sinossi/index.rst
.. index::
pair: tesi; sinossi

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/2_introduzione/index.rst
.. index::
pair: tesi; introduzione
@ -42,7 +44,7 @@ La tesi è strutturata nel seguente modo:
#. nel primo capitolo, :ref:`Sinossi`, viene descritto molto brevemente il progetto realizzato;
#. nel secondo capitolo, :ref:`Introduzione alla tesi`, viene introdotto il contesto della tesi, la tesi stessa e i suoi contenuti;
#. nel terzo capitolo, :ref:`Ricerca collaborativa`, viene presentata in dettaglio la situazione attuale della ricerca collaborativa;
#. nel quarto capitolo, :ref:`Progettazione`, viene descritta la progettazione avvenuta, entrando nei dettagli dei requisiti, della suddivisione in moduli e delle astrazioni create;
#. nel quinto capitolo, :ref:`Implementazione`, vengono trattate le specifiche tecniche implementative del progetto;
#. nel quarto capitolo, :ref:`Progettazione di Sophon`, viene descritta la progettazione avvenuta, entrando nei dettagli dei requisiti, della suddivisione in moduli e delle astrazioni create;
#. nel quinto capitolo, :ref:`Realizzazione di Sophon`, vengono trattate le specifiche tecniche implementative del progetto;
#. nel sesto capitolo, :ref:`Applicazione`, viene fatto un breve esempio di applicazione del progetto all'interno di un'Università;
#. nell'settimo capitolo, :ref:`Conclusione`, vengono tratte le conclusioni della tesi.

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/3_presentazione/index.rst
.. index::
single: ricerca collaborativa

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/4_progetto/index.rst
.. index::
pair: Sophon; progettazione
@ -529,7 +531,7 @@ Viene **eseguito dal server** sul quale è ospitato Sophon.
Containerizzazione
==================
Al fine di facilitare l'installazione e di migliorare la `sicurezza <Sicurezza>` dell'applicazione, si è stabilito di costruire `container <Container>` `Docker` per tutti i moduli di Sophon.
Al fine di facilitare l'installazione e di migliorare la `sicurezza <Sicurezza>` dell'applicazione, si è stabilito di costruire `container Docker <Container Docker>` per tutti i moduli di Sophon.
.. index::
@ -547,8 +549,8 @@ Docker
pair: Docker; image
pair: Docker; immagine
Immagini
^^^^^^^^
Immagini Docker
^^^^^^^^^^^^^^^
Le *immagini* Docker sono sequenze di regole e insiemi di file per la creazione di un `container <Container>`, tipicamente partendo da un altro container come base. :cite:`docker:overview`
@ -560,8 +562,8 @@ Possono essere comparate a immagini di macchine virtuali con tanti "punti di rip
.. index::
pair: Docker; container
Container
^^^^^^^^^
Container Docker
^^^^^^^^^^^^^^^^
I *container* Docker sono istanze di `immagini <Immagini>` che possono essere eseguite dal `Docker Engine` :cite:`docker:overview`.
@ -571,8 +573,8 @@ Sono l'equivalente di un'intera macchina virtuale, che può essere avviata o arr
.. index::
pair: Docker; network
Network
^^^^^^^
Network Docker
^^^^^^^^^^^^^^
I *network* Docker sono astrazioni per vari tipi di reti di calcolatori: in particolare, essi permettono di collegare vari `container <Container>` ad una rete locale virtuale, permettendone l'interazione :cite:`docker:networking`.
@ -584,8 +586,8 @@ Sono una versione più potente dei moduli di rete per macchine virtuali.
.. index::
pair: Docker; volume
Volumi
^^^^^^
Volumi Docker
^^^^^^^^^^^^^
I *volumi* Docker sono astrazioni per filesystem che permettono la condivisione di file tra container :cite:`docker:volumes`.
@ -884,7 +886,7 @@ Qualsiasi *membro* di un `gruppo di ricerca <Gruppi di ricerca in Sophon>` può
Notebook
--------
Un *notebook* rappresenta una **postazione di lavoro** che può essere allegata ad un :ref:`progetto di ricerca`.
Un *notebook* rappresenta una **postazione di lavoro** che può essere allegata ad un `progetto di ricerca <Progetti di ricerca in Sophon>`.
Creazione di nuovi notebook
@ -914,7 +916,7 @@ In più, uno slug di un notebook non può iniziare o terminare con un trattino `
Stato del notebook
^^^^^^^^^^^^^^^^^^
Un notebook può essere *avviato* o *fermo* in base al suo stato di esecuzione sull':ref:`istanza` Sophon:
Un notebook può essere *avviato* o *fermo* in base al suo stato di esecuzione sull'`istanza <Istanza in Sophon>` Sophon:
* è *avviato* se sta venendo eseguito ed è accessibile;
* è *fermo* se non sta venendo eseguito o sta venendo preparato.
@ -940,7 +942,7 @@ Un **membro** del `gruppo di ricerca <Gruppi di ricerca in Sophon>` a cui appart
Immagine del notebook
^^^^^^^^^^^^^^^^^^^^^
In **fase di creazione** di un notebook, oppure mentre esso è **fermo**, è possibile selezionare l'`immagine Docker <immagine>` che esso deve eseguire all'avvio.
In **fase di creazione** di un notebook, oppure mentre esso è **fermo**, è possibile selezionare l'`immagine Docker <Immagini Docker>` che esso deve eseguire all'avvio.
Di default, l'immagine deve essere quella del `modulo Jupyter <Modulo Jupyter>`.

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/5_implementazione/index.rst
.. index::
pair: Sophon; realizzazione
@ -92,17 +94,17 @@ Miglioramenti all'autenticazione
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. module:: sophon.auth1
La classe `rest_framework.authentication.TokenAuthentication` viene modificata per ottenere un comportamento conforme agli standard del web.
La classe :class:`rest_framework.authentication.TokenAuthentication` viene modificata per ottenere un comportamento conforme agli standard del web.
.. class:: BearerTokenAuthentication(rest_framework.authentication.TokenAuthentication)
.. attribute:: keyword = "Bearer"
Si configura `rest_framework` per accettare header di autenticazione nella forma ``Bearer <token>``, invece che il default di `rest_framework` ``Token <token>``.
Si configura :mod:`rest_framework` per accettare header di autenticazione nella forma ``Bearer <token>``, invece che il default di :mod:`rest_framework` ``Token <token>``.
.. module:: sophon.auth2
La view `rest_framework.authtoken.views.ObtainAuthToken` viene estesa per aggiungere dati alla risposta di autenticazione riuscita.
La view :class:`rest_framework.authtoken.views.ObtainAuthToken` viene estesa per aggiungere dati alla risposta di autenticazione riuscita.
.. class:: CustomObtainAuthToken(rest_framework.authtoken.views.ObtainAuthToken)
@ -126,14 +128,14 @@ Per permettere l'integrazione la creazione automatica del primo superutente quan
.. class:: Command
Questo comando crea automaticamente un superutente con le credenziali specificate in :env:`DJANGO_SU_USERNAME`, :env:`DJANGO_SU_EMAIL` e :env:`DJANGO_SU_PASSWORD`.
Questo comando crea automaticamente un superutente con le credenziali specificate in :envvar:`DJANGO_SU_USERNAME`, :envvar:`DJANGO_SU_EMAIL` e :envvar:`DJANGO_SU_PASSWORD`.
Modello base astratto
^^^^^^^^^^^^^^^^^^^^^
.. module:: sophon.core.models
Viene estesa la classe astratta `django.db.models.Model` con funzioni per stabilire il `livello di accesso <Livelli di accesso>` di un `utente <Utenti in Sophon>` all'oggetto e per generare automaticamente i `rest_framework.serializers.ModelSerializer` in base ad esso.
Viene estesa la classe astratta :class:`django.db.models.Model` con funzioni per stabilire il `livello di accesso <Livelli di accesso>` di un `utente <Utenti in Sophon>` all'oggetto e per generare automaticamente i :class:`rest_framework.serializers.ModelSerializer` in base ad esso.
.. class:: SophonModel(django.db.models.Model)
@ -192,7 +194,7 @@ Viene definito un nuovo modello astratto, basato su `SophonModel`, che permette
.. method:: get_access_serializer(self, user: User) -> typing.Type[rest_framework.serializers.ModelSerializer]
:returns: Restituisce il `rest_framework.serializers.ModelSerializer` adeguato al livello di autorità dell'utente.
:returns: Restituisce il :class:`rest_framework.serializers.ModelSerializer` adeguato al livello di autorità dell'utente.
.. class:: sophon.core.enums.SophonGroupAccess(enum.IntEnum)
@ -272,7 +274,7 @@ Viene creato il modello che rappresenta un `gruppo di ricerca <Gruppi di ricerca
.. attribute:: members: ManyToManyField → django.contrib.auth.models.User
Elenco dei membri del gruppo. L'utente `.owner` è ignorato, in quanto è considerato sempre parte del gruppo.
Elenco dei membri del gruppo. L'utente :attr:`.owner` è ignorato, in quanto è considerato sempre parte del gruppo.
.. attribute:: owner: ForeignKey → django.contrib.auth.models.User
@ -287,38 +289,38 @@ Estensione ai permessi di Django
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. module:: sophon.core.permissions
I permessi di `rest_framework` vengono estesi con due nuove classi che utilizzano il `modello di autorizzazione astratto <Modello di autorizzazione astratto>` precedentemente definito.
I permessi di :mod:`rest_framework` vengono estesi con due nuove classi che utilizzano il `modello di autorizzazione astratto <Modello di autorizzazione astratto>` precedentemente definito.
.. class:: Edit(rest_framework.permissions.BasePermission)
Consente l'interazione solo agli utenti che possono modificare (`.can_edit`) l'oggetto.
Consente l'interazione solo agli utenti che possono modificare l'oggetto.
.. class:: Admin(rest_framework.permissions.BasePermission)
Consente l'interazione solo agli utenti che possono amministrare (`.can_admin`) l'oggetto.
Consente l'interazione solo agli utenti che possono amministrare l'oggetto.
Viewset astratti
^^^^^^^^^^^^^^^^
.. module:: sophon.core.views
Vengono definiti tre viewset in grado di utilizzare i metodi aggiunti dalle classi astratte `.models.SophonModel` e `.models.SophonGroupModel`.
Vengono definiti tre viewset in grado di utilizzare i metodi aggiunti dalle classi astratte :class:`.models.SophonModel` e :class:`.models.SophonGroupModel`.
.. class:: ReadSophonViewSet(rest_framework.viewsets.ReadOnlyModelViewSet, metaclass=abc.ABCMeta)
Classe **astratta** che estende la classe base `rest_framework.viewsets.ReadOnlyModelViewSet` con metodi di utilità mancanti nell'implementazione originale, allacciandola inoltre a `.models.SophonGroupModel`.
Classe **astratta** che estende la classe base :class:`rest_framework.viewsets.ReadOnlyModelViewSet` con metodi di utilità mancanti nell'implementazione originale, allacciandola inoltre a :class:`.models.SophonGroupModel`.
.. method:: get_queryset(self) -> QuerySet
:abstractmethod:
Imposta come astratto (e quindi obbligatorio) il metodo `rest_framework.viewsets.ReadOnlyModelViewSet.get_queryset`.
Imposta come astratto (e quindi obbligatorio) il metodo :meth:`rest_framework.viewsets.ReadOnlyModelViewSet.get_queryset`.
.. method:: permission_classes(self)
:property:
Sovrascrive il campo di classe `rest_framework.viewsets.ReadOnlyModelViewSet.permission_classes` con una funzione, permettendone la selezione dei permessi richiesti al momento di ricezione di una richiesta HTTP (invece che al momento di definizione della classe).
Sovrascrive il campo di classe :attr:`rest_framework.viewsets.ReadOnlyModelViewSet.permission_classes` con una funzione, permettendone la selezione dei permessi richiesti al momento di ricezione di una richiesta HTTP (invece che al momento di definizione della classe).
Delega la selezione delle classi a `.get_permission_classes`.
Delega la selezione delle classi a :meth:`.get_permission_classes`.
.. method:: get_permission_classes(self) -> typing.Collection[typing.Type[permissions.BasePermission]]
@ -328,72 +330,72 @@ Vengono definiti tre viewset in grado di utilizzare i metodi aggiunti dalle clas
.. method:: get_serializer_class(self) -> typing.Type[Serializer]
Funzione che permette la selezione del `rest_framework.serializers.Serializer` da utilizzare per una determinata richiesta al momento di ricezione di quest'ultima.
Funzione che permette la selezione del :class:`rest_framework.serializers.Serializer` da utilizzare per una determinata richiesta al momento di ricezione di quest'ultima.
Utilizza:
- il serializzatore **in sola lettura** per elencare gli oggetti (azione ``list``);
- il serializzatore **di creazione** per creare nuovi oggetti (azione ``create``) e per generare i metadati del viewset (azione ``metadata``);
- il serializzatore ottenuto da `.models.SophonGroupModel.get_access_serializer` per la visualizzazione dettagliata (azione ``retrieve``), la modifica (azioni ``update`` e ``partial_update``) e l'eliminazione (azione ``destroy``) di un singolo oggetto;
- il serializzatore ottenuto da `.get_custom_serializer_classes` per le azioni personalizzate.
- il serializzatore ottenuto da :meth:`.models.SophonGroupModel.get_access_serializer` per la visualizzazione dettagliata (azione ``retrieve``), la modifica (azioni ``update`` e ``partial_update``) e l'eliminazione (azione ``destroy``) di un singolo oggetto;
- il serializzatore ottenuto da :meth:`.get_custom_serializer_classes` per le azioni personalizzate.
.. seealso::
`.models.SophonGroupModel`
:class:`.models.SophonGroupModel`
.. method:: get_custom_serializer_classes(self) -> t.Type[Serializer]
Permette alle classi che ereditano da questa di selezionare quale `rest_framework.serializers.Serializer` utilizzare per le azioni personalizzate.
Permette alle classi che ereditano da questa di selezionare quale :class:`rest_framework.serializers.Serializer` utilizzare per le azioni personalizzate.
.. class:: WriteSophonViewSet(rest_framework.viewsets.ModelViewSet, ReadSophonViewSet, metaclass=abc.ABCMeta)
Classe **astratta** che estende la classe base `ReadSophonViewSet` aggiungendoci i metodi di `rest_framework.viewsets.ModelViewSet` che effettuano modifiche sugli oggetti.
Classe **astratta** che estende la classe base :class:`ReadSophonViewSet` aggiungendoci i metodi di :class:`rest_framework.viewsets.ModelViewSet` che effettuano modifiche sugli oggetti.
Depreca i metodi ``perform_*`` di `rest_framework`, introducendone versioni migliorate con una signature diversa dal nome di ``hook_*``.
Depreca i metodi ``perform_*`` di :mod:`rest_framework`, introducendone versioni migliorate con una signature diversa dal nome di ``hook_*``.
.. method:: perform_create(self, serializer)
.. deprecated:: 0.1
Metodo di `rest_framework` rimosso da Sophon.
Metodo di :mod:`rest_framework` rimosso da Sophon.
.. method:: perform_update(self, serializer)
.. deprecated:: 0.1
Metodo di `rest_framework` rimosso da Sophon.
Metodo di :mod:`rest_framework` rimosso da Sophon.
.. method:: perform_destroy(self, serializer)
.. deprecated:: 0.1
Metodo di `rest_framework` rimosso da Sophon.
Metodo di :mod:`rest_framework` rimosso da Sophon.
.. method:: hook_create(self, serializer) -> dict[str, typing.Any]
Funzione chiamata durante l'esecuzione dell'azione di creazione oggetto ``create``.
:param serializer: Il `~rest_framework.serializers.Serializer` già "riempito" contenente i dati dell'oggetto che sta per essere creato.
:raises .HTTPException: È possibile interrompere la creazione dell'oggetto con uno specifico codice errore sollevando una `.HTTPException` all'interno della funzione.
:returns: Un `dict` da unire a quello del `~rest_framework.serializers.Serializer` per formare l'oggetto da creare.
:param serializer: Il :class:`~rest_framework.serializers.Serializer` già "riempito" contenente i dati dell'oggetto che sta per essere creato.
:raises .HTTPException: È possibile interrompere la creazione dell'oggetto con uno specifico codice errore sollevando una :exc:`.HTTPException` all'interno della funzione.
:returns: Un `dict` da unire a quello del :class:`~rest_framework.serializers.Serializer` per formare l'oggetto da creare.
.. method:: hook_update(self, serializer) -> dict[str, t.Any]
Funzione chiamata durante l'esecuzione delle azioni di modifica oggetto ``update`` e ``partial_update``.
:param serializer: Il `~rest_framework.serializers.Serializer` già "riempito" contenente i dati dell'oggetto che sta per essere modificato.
:raises .HTTPException: È possibile interrompere la creazione dell'oggetto con uno specifico codice errore sollevando una `.HTTPException` all'interno della funzione.
:returns: Un `dict` da unire a quello del `~rest_framework.serializers.Serializer` per formare l'oggetto da modificare.
:param serializer: Il :class:`~rest_framework.serializers.Serializer` già "riempito" contenente i dati dell'oggetto che sta per essere modificato.
:raises .HTTPException: È possibile interrompere la creazione dell'oggetto con uno specifico codice errore sollevando una :exc:`.HTTPException` all'interno della funzione.
:returns: Un :class:`dict` da unire a quello del :class:`~rest_framework.serializers.Serializer` per formare l'oggetto da modificare.
.. method:: hook_destroy(self, serializer) -> dict[str, typing.Any]
Funzione chiamata durante l'esecuzione dell'azione di eliminazione oggetto ``destroy``.
:raises .HTTPException: È possibile interrompere la creazione dell'oggetto con uno specifico codice errore sollevando una `.HTTPException` all'interno della funzione.
:raises .HTTPException: È possibile interrompere la creazione dell'oggetto con uno specifico codice errore sollevando una :exc:`.HTTPException` all'interno della funzione.
.. exception:: sophon.core.errors.HTTPException
Tipo di eccezione che è possibile sollevare nei metodi ``hook_*`` di `.WriteSophonViewSet` per interrompere l'azione in corso senza applicare le modifiche.
Tipo di eccezione che è possibile sollevare nei metodi ``hook_*`` di :class:`.WriteSophonViewSet` per interrompere l'azione in corso senza applicare le modifiche.
.. attribute:: status: int
@ -402,14 +404,14 @@ Vengono definiti tre viewset in grado di utilizzare i metodi aggiunti dalle clas
.. class:: SophonGroupViewSet(WriteSophonViewSet, metaclass=abc.ABCMeta)
Classe **astratta** che estende la classe base `.WriteSophonViewSet` estendendo gli ``hook_*`` con verifiche dei permessi dell'utente che tenta di effettuare l'azione.
Classe **astratta** che estende la classe base :class:`.WriteSophonViewSet` estendendo gli ``hook_*`` con verifiche dei permessi dell'utente che tenta di effettuare l'azione.
.. method:: get_group_from_serializer(self, serializer) -> models.ResearchGroup
:abstractmethod:
Metodo necessario a trovare il gruppo a cui apparterrà un oggetto prima che il suo serializzatore venga elaborato.
:param serializer: Il `~rest_framework.serializers.Serializer` già "riempito" contenente i dati dell'oggetto.
:param serializer: Il :class:`~rest_framework.serializers.Serializer` già "riempito" contenente i dati dell'oggetto.
Viewset concreti
@ -439,17 +441,17 @@ Vengono poi definiti tre viewset e una view che permettono interazioni tra l'ute
Azione personalizzata che permette ad un utente di unirsi ad un gruppo aperto.
Utilizza `.models.SophonGroupModel.get_access_serializer`.
Utilizza :class:`.models.SophonGroupModel.get_access_serializer`.
.. method:: leave(self, request: Request, pk: int) -> Response
Azione personalizzata che permette ad un utente di abbandonare un gruppo di cui non è proprietario.
Utilizza `.models.SophonGroupModel.get_access_serializer`.
Utilizza :class:`.models.SophonGroupModel.get_access_serializer`.
.. class:: SophonInstanceDetailsView(APIView)
View che restituisce il valore attuale dell'unico oggetto `.models.SophonInstanceDetails`.
View che restituisce il valore attuale dell'unico oggetto :class:`.models.SophonInstanceDetails`.
Accessibile tramite richieste ``GET`` all'URL :samp:`/api/core/instance/`.
@ -496,7 +498,7 @@ Vengono definiti alcuni test case generici per facilitare le interazioni tra ``A
.. class:: ReadSophonTestCase(BetterAPITestCase, metaclass=abc.ABCMeta)
Classe **astratta** che implementa metodi per testare rapidamente le azioni di un `.views.ReadSophonViewSet`.
Classe **astratta** che implementa metodi per testare rapidamente le azioni di un :class:`.views.ReadSophonViewSet`.
.. classmethod:: get_basename(cls) -> str
@ -523,7 +525,7 @@ Vengono definiti alcuni test case generici per facilitare le interazioni tra ``A
.. class:: WriteSophonTestCase(ReadSophonTestCase, metaclass=abc.ABCMeta)
Classe **astratta** che estende `.ReadSophonTestCase` con le azioni di un `.views.WriteSophonViewSet`.
Classe **astratta** che estende :class:`.ReadSophonTestCase` con le azioni di un :class:`.views.WriteSophonViewSet`.
.. method:: create(self, data) -> rest_framework.response.Response
.. method:: update(self, pk, data) -> rest_framework.response.Response
@ -537,7 +539,7 @@ Vengono definiti alcuni test case generici per facilitare le interazioni tra ``A
Test case concreti
^^^^^^^^^^^^^^^^^^
Vengono testate tutte le view dell'app tramite `.BetterAPITestCase` e tutti i viewset dell'app tramite `.ReadSophonTestCase` e `WriteSophonTestCase`.
Vengono testate tutte le view dell'app tramite :class:`.BetterAPITestCase` e tutti i viewset dell'app tramite :class:`.ReadSophonTestCase` e :class:`WriteSophonTestCase`.
.. class:: UsersByIdTestCase(ReadSophonTestCase)
.. class:: UsersByUsernameTestCase(ReadSophonTestCase)
@ -574,7 +576,7 @@ Viene introdotto un modello concreto che rappresenta un `progetto di ricerca <Pr
.. attribute:: group: ForeignKey → sophon.core.models.ResearchGroup
Lo `~sophon.core.models.ResearchGroup.slug` del gruppo di ricerca al quale appartiene il progetto.
Lo :attr:`~sophon.core.models.ResearchGroup.slug` del gruppo di ricerca al quale appartiene il progetto.
.. attribute:: name: CharField
@ -597,7 +599,7 @@ Da una base comune, vengono creati due viewset per interagire con i progetti di
.. class:: ResearchProjectViewSet(SophonGroupViewSet, metaclass=abc.ABCMeta)
Classe **astratta** che effettua l'override di `~sophon.core.views.SophonGroupView.get_group_from_serializer` per entrambi i viewset che seguono.
Classe **astratta** che effettua l'override di :meth:`~sophon.core.views.SophonGroupView.get_group_from_serializer` per entrambi i viewset che seguono.
.. class:: ResearchProjectsBySlugViewSet(ResearchProjectViewSet)
@ -618,7 +620,7 @@ Amministrazione del gruppo di ricerca
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. module:: sophon.projects.admin
Il modello `.models.ResearchProject` viene registrato nella pagina di amministrazione attraverso la seguente classe:
Il modello :class:`.models.ResearchProject` viene registrato nella pagina di amministrazione attraverso la seguente classe:
.. class:: ResearchProjectAdmin(sophon.core.admin.SophonAdmin)
@ -656,9 +658,7 @@ Per facilitare lo sviluppo di Sophon, sono state realizzate due modalità di ope
Il `modulo frontend <Modulo frontend>` non supporta questa modalità, in quanto intesa solamente per lo sviluppo del modulo backend.
* Nella seconda, la **modalità produzione**, il `modulo proxy <Modulo proxy>` è in esecuzione all'interno di un container Docker, e si collega ai `moduli Jupyter <Modulo Jupyter>` attraverso i relativi network Docker tramite indirizzi presenti all'interno .
.. image:: notebooks_diagram.png
* Nella seconda, la **modalità produzione**, il `modulo proxy <Modulo proxy>` è in esecuzione all'interno di un container Docker, e si collega ai `moduli Jupyter <Modulo Jupyter>` attraverso i relativi network Docker tramite una `rubrica <Gestione della rubrica del proxy>`.
Gestione della rubrica del proxy
@ -741,7 +741,7 @@ Il modulo :mod:`docker` viene esteso implementando supporto per l'istruzione ``H
L'implementazione di questa funzione potrebbe causare rallentamenti nella risposta alle pagine web per via di una chiamata al metodo `time.sleep` al suo interno.
Ciò è dovuto al mancato supporto alle funzioni asincrone nella versione attuale di `rest_framework`.
Ciò è dovuto al mancato supporto alle funzioni asincrone nella versione attuale di :mod:`rest_framework`.
Si è deciso di mantenere comunque la funzionalità a scopi dimostrativi e per compatibilità futura.
@ -1306,7 +1306,7 @@ Il file di configurazione abilita i moduli httpd `rewrite`_, `proxy`_, `proxy_ws
Inoltre, nel file di configurazione viene abilitato il ``RewriteEngine``, che viene utilizzato per effettuare reverse proxying secondo le seguenti regole:
#. Tutte le richieste verso ``static.`` prefisso ad :env:`APACHE_PROXY_BASE_DOMAIN` vengono processate direttamente dal webserver, utilizzando i file disponibili nella cartella ``/var/www/html/django-static`` che gli vengono forniti dal volume ``django-static`` del :ref:`modulo backend`.
#. Tutte le richieste verso ``static.`` prefisso ad :envvar:`APACHE_PROXY_BASE_DOMAIN` vengono processate direttamente dal webserver, utilizzando i file disponibili nella cartella ``/var/www/html/django-static`` che gli vengono forniti dal volume ``django-static`` del :ref:`modulo backend`.
.. code-block:: apacheconf
@ -1315,7 +1315,7 @@ Inoltre, nel file di configurazione viene abilitato il ``RewriteEngine``, che vi
# Process the request yourself
RewriteRule ".?" - [L]
#. Tutte le richieste verso :env:`APACHE_PROXY_BASE_DOMAIN` senza nessun sottodominio vengono inoltrate al container Docker del :ref:`modulo frontend` utilizzando la risoluzione dei nomi di dominio di Docker Compose.
#. Tutte le richieste verso :envvar:`APACHE_PROXY_BASE_DOMAIN` senza nessun sottodominio vengono inoltrate al container Docker del :ref:`modulo frontend` utilizzando la risoluzione dei nomi di dominio di Docker Compose.
.. code-block:: apacheconf
@ -1326,7 +1326,7 @@ Inoltre, nel file di configurazione viene abilitato il ``RewriteEngine``, che vi
# Forward to the frontend
RewriteRule "/(.*)" "http://%1/$1" [P,L]
#. Tutte le richieste verso ``api.`` prefisso ad :env:`APACHE_PROXY_BASE_DOMAIN` vengono inoltrate al container Docker del :ref:`modulo backend` utilizzando la risoluzione dei nomi di dominio di Docker Compose.
#. Tutte le richieste verso ``api.`` prefisso ad :envvar:`APACHE_PROXY_BASE_DOMAIN` vengono inoltrate al container Docker del :ref:`modulo backend` utilizzando la risoluzione dei nomi di dominio di Docker Compose.
.. code-block:: apacheconf
@ -1507,7 +1507,7 @@ L'immagine creata viene poi caricata sul `GitHub Container Registry <https://doc
Si riporta un estratto relativo all'azione ``build-docker-proxy``.
.. code-block:: yml
.. code-block:: yaml
steps:
- name: "Checkout repository"
@ -1529,7 +1529,7 @@ La documentazione per l'esame viene compilata solo da `reStructuredText <https:/
Si riporta un estratto relativo all'azione ``build-sphinx-thesis``.
.. code-block:: yml
.. code-block:: yaml
latexpdf:
name: "Build PDF document"

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/6_applicazione/index.rst
************
Applicazione
************

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/7_conclusione/index.rst
***********
Conclusione
***********

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/8_appendice/index.rst
*********
Appendice
*********

View file

@ -1,3 +1,5 @@
:github_url: https://github.com/Steffo99/sophon/blob/main/thesis/source/index.rst
##############################################################################
Progettazione e sviluppo di Sophon, applicativo cloud a supporto della ricerca
##############################################################################