mirror of
https://github.com/Steffo99/sophon.git
synced 2024-12-22 14:54:22 +00:00
📔 Projects, done.
This commit is contained in:
parent
97fb2dfabf
commit
e882416df6
2 changed files with 63 additions and 1 deletions
|
@ -4,7 +4,6 @@ L'app sophon.core
|
||||||
.. default-role:: obj
|
.. default-role:: obj
|
||||||
.. module:: sophon.core
|
.. module:: sophon.core
|
||||||
|
|
||||||
|
|
||||||
L'app `sophon.core` è l'app principale del progetto, e non può essere disattivata, in quanto dipendenza obbligatoria di tutte le altre app.
|
L'app `sophon.core` è l'app principale del progetto, e non può essere disattivata, in quanto dipendenza obbligatoria di tutte le altre app.
|
||||||
|
|
||||||
|
|
||||||
|
@ -267,6 +266,13 @@ Vengono definiti tre viewset in grado di utilizzare i metodi aggiunti dalle clas
|
||||||
|
|
||||||
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 `.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.
|
||||||
|
|
||||||
|
|
||||||
Viewset concreti
|
Viewset concreti
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -4,3 +4,59 @@ L'app sophon.projects
|
||||||
.. default-role:: obj
|
.. default-role:: obj
|
||||||
.. module:: sophon.projects
|
.. module:: sophon.projects
|
||||||
|
|
||||||
|
L'app `sophon.projects` è un app secondaria che dipende da `sophon.core` che introduce in Sophon il concetto di :ref:`progetto di ricerca`.
|
||||||
|
|
||||||
|
.. caution::
|
||||||
|
|
||||||
|
Anche se l'app `sophon.projects` è opzionale (il progetto può funzionare senza di essa), si sconsiglia di disattivarla, in quanto il :ref:`modulo frontend` si aspetta che l'app sia attiva e solleverà un errore nel caso il viewset fornito da questa app non sia disponibile.
|
||||||
|
|
||||||
|
|
||||||
|
Modello del progetto di ricerca
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
.. module:: sophon.projects.models
|
||||||
|
|
||||||
|
Viene introdotto un modello concreto che rappresenta un :ref:`progetto di ricerca`.
|
||||||
|
|
||||||
|
.. class:: ResearchProject(SophonGroupModel)
|
||||||
|
|
||||||
|
.. attribute:: slug: SlugField
|
||||||
|
.. attribute:: group: ForeignKey → sophon.core.models.ResearchGroup
|
||||||
|
.. attribute:: name: CharField
|
||||||
|
.. attribute:: description: TextField
|
||||||
|
.. attribute:: visibility: CharField ["PUBLIC", "INTERNAL", "PRIVATE"]
|
||||||
|
|
||||||
|
|
||||||
|
Viewset del gruppo di ricerca
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
.. module:: sophon.projects.views
|
||||||
|
|
||||||
|
Da una base comune, vengono creati due viewset per interagire con i progetti di ricerca.
|
||||||
|
|
||||||
|
.. 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.
|
||||||
|
|
||||||
|
.. class:: ResearchProjectsBySlugViewSet(ResearchProjectViewSet)
|
||||||
|
|
||||||
|
Viewset in lettura e scrittura che permette di interagire con tutti i progetti di ricerca a cui l'utente loggato ha accesso.
|
||||||
|
|
||||||
|
Accessibile all'URL :samp:`/api/projects/by-slug/{PROJECT_SLUG}/`.
|
||||||
|
|
||||||
|
.. class:: ResearchProjectsByGroupViewSet(ResearchProjectViewSet)
|
||||||
|
|
||||||
|
Viewset in lettura e scrittura che permette di interagire con i progetti di ricerca a cui l'utente loggato ha accesso, filtrati per il gruppo a cui appartengono.
|
||||||
|
|
||||||
|
Il filtraggio viene effettuato limitando il queryset.
|
||||||
|
|
||||||
|
Accessibile all'URL :samp:`/api/projects/by-group/{GROUP_SLUG}/{PROJECT_SLUG}/`.
|
||||||
|
|
||||||
|
|
||||||
|
Amministrazione del gruppo di ricerca
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
.. module:: sophon.projects.admin
|
||||||
|
|
||||||
|
Il modello `.models.ResearchProject` viene registrato nella pagina di amministrazione attraverso la seguente classe:
|
||||||
|
|
||||||
|
.. class:: ResearchProjectAdmin(sophon.core.admin.SophonAdmin)
|
||||||
|
|
||||||
|
Classe per la pagina di amministrazione che specifica un ordinamento, permette il filtraggio per gruppo di appartenenza e visibilità, e specifica i campi da visualizzare nell'elenco dei progetti.
|
||||||
|
|
Loading…
Reference in a new issue