Eskollz Documentation

Transcription

Eskollz Documentation
Eskollz Documentation
Version 0.0.3-dev
Jean-Matthieu BARBIER <[email protected]>
01 March 2014
Table des matières
1
Installation
1.1 Installation sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Installation sous MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
4
2
API Laboratoires
2.1 Elements communs à tous les laboratoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Eléments spécifiques d’un laboratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Eléments d’inventaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
9
14
3
Modules
3.1 lab Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 school Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
21
33
4
Permissions
4.1 Par utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
35
5
TODO List
37
6
Index et tables
41
HTTP Routing Table
43
Index des modules Python
45
i
ii
CHAPITRE 1
Présentation
Eskollz fournit des outils utiles pour les enseignants et l’organisation des enseignements.
Sont actuellement implémentés :
– un outil de gestion d’un laboratoire de sciences
Sont en cours de développement (ou ont été développés dans une précédente version) :
– un outil de correction d’évaluations et de suivi des résultats élèves
– un outil de stockage et partage de documents
– un outil de création de groupes (besoins / contraintes)
– un outil de communication interne
– un outil de réservation de ressources
– un outil de gestion de planning
1
Eskollz Documentation, Version 0.0.3-dev
2
Chapitre 1. Présentation
CHAPITRE 2
Table des matières
2.1 Installation
Une installation fonctionnelle de démonstration est disponible à l’adresse https ://eskollz.com/demo/api/
2.1.1 Installation pour le développement
Installation sous Linux
Ces instuctions sont testées sur une distribution Debian/Ubuntu pour le développement
Prérequis :
– Python (testé avec =2.7)
– virtualenv
– git
– dépendances de construction : sur une distribution Debian/Ubuntu : build-essential libpq-dev libmysqlclient-dev
libjpeg-dev libpng-dev libxml2-dev libxslt-dev libyaml-dev
– base de données : sqlite (pour test/développement) | mysql (testé avec =5.5) | postgresql (testé avec 9.1)
Clonage du dépôt
git clone https://github.com/jmbarbier/eskollz-api
cd eskollz-api
Installation des dépendances et test
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
# Uniquement pour le développement
pip install -r requirements-dev.txt
# Choix des "settings" selon usage, voir documentation de settings
DANGO_SETTINGS_MODULE=eskollzapi.settings.localtest
python eskollzapi/settings.py test
Configuration
cd eskollzapi
export DATABASE_URL=""
# Autres exports nécessaires selon settings choisis
python manage.py syncdb --migrate
python manage.py runserver
3
Eskollz Documentation, Version 0.0.3-dev
Installation sous MacOS X
À faire
Procédure installation sous mac OS X (brew ?)
A peu de choses près identique à celle de Linux lorsque toutes les dépendances sont satisfaites.
Installation sous Windows
À faire
Procédure installation sous Window$ ( ?)
Bonnes volontés attendues pour écrire cette partie :-)
2.1.2 Générer la documentation
Dans le répertoire eskollz-api, installation des dépendances de documentation
pip install -r requirements-doc.txt
cd doc
make html # ou cible
2.1.3 Installation en production
Pour le déploiement en production, voir la doc de django (préférence personnelle pour supervisord + gunicorn,
mais Apache|nginx + wsgi est aussi tout à fait acceptable :-). Utilisation d’un service comme heroku ou gandi
possible aussi.
2.2 API Utilisateurs
Gestion de tous les individus du système (utilisateurs, élèves, enseignants, ...).
2.2.1 Actions possibles
Création
Détails API : voir Création d’utilisateurs
– création enseignant : possible pour toutes personne disposant d’une adresse académique (ou correspondant à
un schéma donné). Association à un établissement sur déclaration de l’enseignant.
– création responsable établissement : superuser seulement.
– création élève : possible pour tout enseignant, recherche de correspondances au sein des élèves associés à
l’établissement (association automatique des élèves à l’établissement) pour éviter les doublons. Si responsable
établissement, recherche de correspondances au sein des autres établissements.
Liste
– superuser : toutes les listes
– responsable établissement : tous les profs de l’académie / tous les élèves de l’académie
– enseignant : tous les profs de l’académie / tous les élèves de l’établissement
4
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Modification
– superuser : tout le monde
– responsable établissement : tous les élèves de l’établissement
– enseignant : tous les élèves de ses groupes
Suppression
– superuser : n’importe qui
– responsable établissement : personne
– enseignant : personne
TODO : Anonymisation des comptes élèves
Possibilité de stocker les identifiants élèves via table de correspondances élèves / identifiants uniquement sur l’ordi
d’un enseignant (tordu mais faisable, pbs de gestion de groupes, ...)
2.2.2 Détail des actions
Création d’utilisateurs
Inscription individuelle enseignants
POST /people/teachers/subscribe
Inscription d’un enseignant.
–l’email est vérifié : conformité à un domaine (ac-xxx par exemple) et par envoi d’un mail de confirmation
–un identifiant d’inscription est renvoyé (pour suivi de l’état, demande de réenvoi de mail, etc...)
Documentation des classes :
–Vue associée : people.views.TeacherSubscribeView
–Serializer : people.serializers.TeacherSubscribeSerializer
–Tests : people.tests.test_teacher_subscribe.TeacherSubscribeTest
POST /people/teachers/subscribe HTTP/1.1
Accept: application/json
{
"lastname": "Jean-Matthieu",
"password": "supersecretpassword",
"firstname": "BARBIER",
"birthday": "1920-01-01",
"email": "[email protected]",
"school": "0270044B"
}
Request Headers
– Accept – application/json | text/html | application/xml
Json Parameters
– last_name (string) – Nom de famille
– first_name (string) – : Prénom
– birthday (string) – Date de naissance
– password (string) – Mot de passe
– school (string) – Etablissement
– email (str) – Adresse email (académique)
Status Codes
– 200 – Success
– 404 – Forbidden (bad email, slow down, ...) ; la raison est donnée dans le champ “result”
2.2. API Utilisateurs
5
Eskollz Documentation, Version 0.0.3-dev
GET /people/teachers/subscribe/confirm/{confirmcode}
Confirmation de l’inscription d’un enseignant. Renvoie un code 200 si l’inscription est valide ou a déjà été
validée, ainsi que le détail de la fiche utilisateur.
–Vue associée : people.views.TeacherSubscribeConfirmView
–Serializer : people.serializers.PersonDetailSerializer
–Tests : people.tests.test_teacher_subscribe.TeacherSubscribeTest
Request Headers
– Accept – application/json | text/html | application/xml
Status Codes
– 200 – Success
– 400 – Error : code de confirmation inconnu ou autre
Création d’étudiants
La création d’étudiants ne peut être faite que par des enseignants. La création d’un étudiant passe par 3 étapes :
– vérification de l’existence potentielle d’un élève identique
– si pas d’élève identique : création réelle de l’élève
– si élève “doublon” certain : remplacement par l’élève doublon
– si élève “doublon” potentiel : demande de confirmation
– si confirmation de création de doublon : création réelle de l’élève
La vérification des doublons se fait :
– au sein de l’établissement pour les enseignants
– au sein de l’académie pour les responsables d’établissement
Création d’un étudiant (enseignant)
POST /people/students/create
Vérification de l’existence ou non d’un étudiant. Renvoie un état dans le champ “status” :
–201 : pas de doublon potentiel, étudiant créé avec les données fournies (id de l’étudiant dans le champ
result)
–200 : doublon certain, étudiant “créé” avec les données existantes (id de l’étudiant dans le champ result)
–303 (NON IMPLEMENTE) : doublons potentiels, confirmation manuelle nécessaire (détails des étudiants
fournis dans le champ result)
–FORCED (NON IMPLEMENTE) : création forcée de l’étudiant malgré les doublons potentiels (champ
force=True dans la requète)
Exemple de requète
POST /people/students/create HTTP/1.1
Accept: application/json
{
"lastname": "Stud",
"firstname": "Ent",
"firstnames": "Test,Joe",
"birthday": "1999-01-01",
"school": "027044b"
}
–Vue associée : people.views.StudentCreateView
–Serializers
:
people.serializers.StudentCreateSerializer
people.serializers.PersonDetailSerializer (out)
–Tests : people.tests.test_student_create.StudentCreateTest
(in)
et
Json Parameters
– last_name (string) – Nom de famille
– first_name (string) – : Prénom
– birthday (string) – Date de naissance
– firstnames (string) – Autres prénoms (facultatif)
– school (string) – Etablissement
6
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Création d’une liste d’étudiants
POST /people/students/fromcsv
Création d’étudiants par lots via un fichier csv. Le fichier csv doit contenir les champs nom, prénom, date
de naissance, et optionnellement les autres prénoms.
Modification d’utilisateurs
Liste d’utilisateurs
2.3 API Groupes
2.4 API Authentification
2.5 API Laboratoires
2.5.1 Elements communs à tous les laboratoires
Les données de cette API sont disponibles pour tous les utilisateurs identifiés, la modification, l’ajout et la suppression de données ne sont faisables que par le super administrateur.
Phrases de sécurité
Liste et création
GET /labs/secsentences{?q,lang,type}
Affichage des phrases de sécurité
Vue associée : lab.views.SecuritySentenceListCreateView
Query Parameters
– q – Search only with q text
– lang – Search with these languages
– type – Filter with type
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/secsentences
superuser uniquement. Création d’une phrase de sécurité.
Vue associée : lab.views.SecuritySentenceListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Created
– 403 – Forbidden
2.3. API Groupes
7
Eskollz Documentation, Version 0.0.3-dev
Détails et modification
GET /labs/secsentences/{id}
Affichage du détail d’une phrase de sécurité.
Pour l’instant n’apporte rien de plus que la vue en “liste”.
Vue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/secsentences/{id}
superuser uniquement. Modification d’une phrase de sécurité.
Vue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/secsentences/{id}
superuser uniquement. Modification d’une phrase de sécurité
Vue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
DELETE /labs/secsentences/{id}
superuser uniquement. Suppression d’une phrase de sécurité
Vue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – No content (Success)
– 403 – Forbidden
Pictos de sécurité
Liste et création
GET /labs/secpictos{?q,lang,type}
Affichage des pictos de sécurité
Vue associée : lab.views.SecurityPictoListCreateView
Query Parameters
– q – Search only with q text
– lang – Search with these languages
– type – Filter with type
Request Headers
8
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/secpictos
superuser uniquement. Création d’une picto de sécurité.
Vue associée : lab.views.SecurityPictoListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Created
– 403 – Forbidden
Détails et modification
GET /labs/secpictos/{id}
Affichage du détail d’une picto de sécurité.
Pour l’instant n’apporte rien de plus que la vue en “liste”.
Vue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/secpictos/{id}
superuser uniquement. Modification d’une picto de sécurité.
Vue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/secpictos/{id}
superuser uniquement. Modification d’une picto de sécurité
Vue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
DELETE /labs/secpictos/{id}
superuser uniquement. Suppression d’une picto de sécurité
Vue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – No content (Success)
– 403 – Forbidden
2.5. API Laboratoires
9
Eskollz Documentation, Version 0.0.3-dev
Unités de mesure
Liste et création
GET /labs/units{?q,lang,type}
Affichage des unités de mesure
Vue associée : lab.views.UnitsListCreateView
Query Parameters
– q – Search only with q text
– lang – Search with these languages
– type – Filter with type
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/units
superuser uniquement. Création d’une picto de sécurité.
Vue associée : lab.views.UnitListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Created
– 403 – Forbidden
Détails et modification
GET /labs/units/{id}
Affichage du détail d’une picto de sécurité.
Pour l’instant n’apporte rien de plus que la vue en “liste”.
Vue associée : lab.views.UnitRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/units/{id}
superuser uniquement. Modification d’une picto de sécurité.
Vue associée : lab.views.UnitRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/units/{id}
superuser uniquement. Modification d’une picto de sécurité
Vue associée : lab.views.UnitRetrieveUpdateDestroyView
Request Headers
10
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
DELETE /labs/units/{id}
superuser uniquement. Suppression d’une picto de sécurité
Vue associée : lab.views.UnitRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – No content (Success)
– 403 – Forbidden
2.5.2 Eléments spécifiques d’un laboratoire
Ces éléments ne sont accessibles que pour un laboratoire donné. Ils sont disponible en lecture seule pour les utilisateurs du laboratoire, et en lecture/écriture pour les techniciens et responsables de laboratoire (sauf le laboratoire
lui-même, modifiable uniquement par le responsable).
Liste des laboratoires
GET /labs
Affichage des laboratoires accessibles à un utilisateur (laboratoires dans lesquel l’utilisateur identifié est
responsable / technicien / utilisateur.
Vue associée : lab.views.LabListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
Création et modification d’un laboratoire
Création
POST /labs
Création d’un laboratoire (tout utilisateur identifié).
Vue associée : lab.views.LabListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Created
– 403 – Forbidden
2.5. API Laboratoires
11
Eskollz Documentation, Version 0.0.3-dev
Détails et modification
GET /labs/{idlab}
Détails d’un laboratoire (identique à la vue en liste pour l’instant).
Vue associée : lab.views.LabRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}
Modification d’un laboratoire (uniquement pour un responsable).
Vue associée : lab.views.LabRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}
Modification d’un champ d’un laboratoire (voir PUT /labs/{idlab}
DELETE /labs/{idlab}
Suppression d’un laboratoire.
Vue associée : lab.views.LabRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
Modification des utilisateurs d’un laboratoire
PUT /labs/{idlab}/resp/{iduser}
Ajout d’un responsable à un laboratoire.
Vue associée : lab.views.LabUpdatePeopleView (argument : mode = resp / tech / user)
Opération possible uniquement par un responsable du laboratoire.
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success (created)
– 403 – Forbidden
DELETE /labs/{idlab}/resp/{iduser}
Suppression d’un responsable de laboratoire.
Opération possible uniquement par un responsable du laboratoire.
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
12
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
– 204 – Success (no content)
– 403 – Forbidden
PUT /labs/{idlab}/tech/{iduser}
Ajout d’un technicien à un laboratoire. Identique à PUT /labs/{idlab}/resp/{iduser}
DELETE /labs/{idlab}/tech/{iduser}
Suppression
d’un
technicient
d’un
/labs/{idlab}/resp/{iduser}
laboratoire.
Itentique
à
DELETE
PUT /labs/{idlab}/tech/{iduser}
Ajout d’un utilisateur à un laboratoire. Identique à PUT /labs/{idlab}/resp/{iduser}
DELETE /labs/{idlab}/tech/{iduser}
Suppression d’un utilisateur à un laboratoire. Identique à PUT /labs/{idlab}/resp/{iduser}
Propriétés d’un laboratoire
Fournisseurs
GET /labs/{idlab}/providers
Liste des fournisseurs du laboratoire (accessible à tous les utilisateurs du laboratoire).
Vue associée : lab.views.LabProviderListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/{idlab}/providers
Création d’un fournisseur du laboratoire (possible pour responsables / techniciens).
Vue associée : lab.views.LabProviderListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success (created)
– 403 – Forbidden
GET /labs/{idlab}/providers/{idprovider}
Détails d’un fournisseur du laboratoire (même données que dans la liste).
Vue associée : lab.views.LabProviderRetrieveUpdateDestroyView
Accès : tous les utilisateurs du laboratoire.
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}/providers/{idprovider}
Modification d’un fournisseur (techniciens et responsables uniquement).
Vue associée : lab.views.LabProviderRetrieveUpdateDestroyView
Accès : techniciens et responsables du laboratoire.
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
2.5. API Laboratoires
13
Eskollz Documentation, Version 0.0.3-dev
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/providers/{idprovider}
Modification d’un champ d’un fournisseur (techniciens et responsables uniquement).
Voir PUT /labs/{idlab}/providers/{idprovider}
DELETE /labs/{idlab}/providers/{idprovider}
Suppression d’un fournisseur (techniciens et responsables uniquement).
Vue associée : lab.views.LabProviderRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
Catégories
GET /labs/{idlab}/categories
Liste des catégories du laboratoire (accessible à tous les utilisateurs du laboratoire).
Vue associée : lab.views.LabCategoryListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/{idlab}/categories
Création d’un catégorie du laboratoire (possible pour responsables / techniciens).
Vue associée : lab.views.LabCategoryListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success (created)
– 403 – Forbidden
GET /labs/{idlab}/categories/{idcategorie}
Détails d’un catégorie du laboratoire (même données que dans la liste).
Vue associée : lab.views.LabCategoryRetrieveUpdateDestroyView
Accès : tous les utilisateurs du laboratoire.
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}/categories/{idcategorie}
Modification d’un catégorie (techniciens et responsables uniquement).
Vue associée : lab.views.LabCategoryRetrieveUpdateDestroyView
Accès : techniciens et responsables du laboratoire.
Request Headers
14
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/categories/{idcategorie}
Modification d’un champ d’un catégorie (techniciens et responsables uniquement).
Voir PUT /labs/{idlab}/categories/{idcategorie}
DELETE /labs/{idlab}/categories/{idcategorie}
Suppression d’un catégorie (techniciens et responsables uniquement).
Vue associée : lab.views.LabCategoryRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
Emplacements
GET /labs/{idlab}/storages
Liste des emplacements du laboratoire (accessible à tous les utilisateurs du laboratoire).
Vue associée : lab.views.LabStorageListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/{idlab}/storages
Création d’un emplacement du laboratoire (possible pour responsables / techniciens).
Vue associée : lab.views.LabStorageListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success (created)
– 403 – Forbidden
GET /labs/{idlab}/storages/{idstorage}
Détails d’un emplacement du laboratoire (même données que dans la liste).
Vue associée : lab.views.LabStorageRetrieveUpdateDestroyView
Accès : tous les utilisateurs du laboratoire.
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}/storages/{idstorage}
Modification d’un emplacement (techniciens et responsables uniquement).
Vue associée : lab.views.LabStorageRetrieveUpdateDestroyView
Accès : techniciens et responsables du laboratoire.
2.5. API Laboratoires
15
Eskollz Documentation, Version 0.0.3-dev
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/storages/{idstorage}
Modification d’un champ d’un emplacement (techniciens et responsables uniquement).
Voir PUT /labs/{idlab}/storages/{idstorage}
DELETE /labs/{idlab}/storages/{idstorage}
Suppression d’un emplacement (techniciens et responsables uniquement).
Vue associée : lab.views.LabStorageRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
2.5.3 Eléments d’inventaire
Inventaire (liste d’éléments / recherche)
GET /labs/{idlab}/items
Liste des éléments.
Vue associée : lab.views.LabItemListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
Création / détails d’un élément
Création / modification
POST /labs/{idlab}/items
Création d’un élément d’inventaire.
Vue associée : lab.views.LabItemListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success (created)
– 403 – Forbidden
PUT /labs/{idlab}/items/{iditem}
Modification d’un élément d’inventaire
Vue associée : lab.views.LabItemRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
16
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/items/{iditem}
Modification d’un champ d’un élément d’inventaire. Voir PUT /labs/{idlab}/items/{iditem}
DELETE /labs/{idlab}/items/{iditem}
Suppression d’un élément d’inventaire.
Vue associée : lab.views.LabItemRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success (no content)
– 403 – Forbidden
Fiche détaillée
GET /labs/{idlab}/items/{iditem}
Affichage détaillé d’un élément d’inventaire (pas plus de détails que dans la liste).
Vue associée : lab.views.LabItemRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
Propriétés d’un élement
Sécurité
GET /labs/{idlab}/items/{iditem}/security
Liste des fiches de sécurité d’un élément d’inventaire.
Vue associée : lab.views.LabItemSecurityListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/{idlab}/items/{iditem}/security
Création d’une fiche de sécurité d’un élément d’inventaire.
Vue associée : lab.views.LabItemSecurityListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success
– 403 – Forbidden
GET /labs/{idlab}/items/{iditem}/security/{idsecurity}
Vue détaillée d’une fiche de sécurité d’un élément d’inventaire.
Vue associée : lab.views.LabItemSecurityRetrieveUpdateDestroyView
2.5. API Laboratoires
17
Eskollz Documentation, Version 0.0.3-dev
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}/items/{iditem}/security/{idsecurity}
Modification d’une fiche de sécurité d’un élément d’inventaire.
Vue associée : lab.views.LabItemSecurityRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/items/{iditem}/security/{idsecurity}
Modification d’un champ d’une fiche de sécurité d’un élément d’inventaire.
Voir :http :put :/labs/{idlab}/items/{iditem}/security/{idsecurity}
DELETE /labs/{idlab}/items/{iditem}/security/{idsecurity}
Suppression d’une fiche de sécurité d’un élément d’inventaire.
Vue associée : lab.views.LabItemSecurityRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
Historique
GET /labs/{idlab}/items/{iditem}/logs
Liste des fiches d’historique d’un élément d’inventaire.
Vue associée : lab.views.LabItemLogListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/{idlab}/items/{iditem}/logs
Création d’une fiche d’historique d’un élément d’inventaire.
Vue associée : lab.views.LabItemLogListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success
– 403 – Forbidden
GET /labs/{idlab}/items/{iditem}/logs/{idlog}
Vue détaillée d’une fiche d’historique d’un élément d’inventaire.
Vue associée : lab.views.LabItemLogRetrieveUpdateDestroyView
18
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}/items/{iditem}/logs/{idlog}
Modification d’une fiche d’historique d’un élément d’inventaire.
Vue associée : lab.views.LabItemLogRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/items/{iditem}/logs/{idlog}
Modification d’un champ d’une fiche d’historique d’un élément d’inventaire.
Voir :http :put :/labs/{idlab}/items/{iditem}/logs/{idlog}
DELETE /labs/{idlab}/items/{iditem}/logs/{idlog}
Suppression d’une fiche d’historique d’un élément d’inventaire.
Vue associée : lab.views.LabItemLogRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
Fournisseur / commande
GET /labs/{idlab}/items/{iditem}/providers
Liste des fiches de fournisseur / commande d’un élément d’inventaire.
Vue associée : lab.views.LabItemProviderListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/{idlab}/items/{iditem}/providers
Création d’une fiche de fournisseur / commande d’un élément d’inventaire.
Vue associée : lab.views.LabItemProviderListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success
– 403 – Forbidden
GET /labs/{idlab}/items/{iditem}/providers/{idprovider}
Vue détaillée d’une fiche de fournisseur / commande d’un élément d’inventaire.
Vue associée : lab.views.LabItemProviderRetrieveUpdateDestroyView
2.5. API Laboratoires
19
Eskollz Documentation, Version 0.0.3-dev
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}/items/{iditem}/providers/{idprovider}
Modification d’une fiche de fournisseur / commande d’un élément d’inventaire.
Vue associée : lab.views.LabItemProviderRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/items/{iditem}/providers/{idprovider}
Modification d’un champ d’une fiche de fournisseur / commande d’un élément d’inventaire.
Voir :http :put :/labs/{idlab}/items/{iditem}/providers/{idprovider}
DELETE /labs/{idlab}/items/{iditem}/providers/{idprovider}
Suppression d’une fiche de fournisseur / commande d’un élément d’inventaire.
Vue associée : lab.views.LabItemProviderRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
Rangement
GET /labs/{idlab}/items/{iditem}/storages
Liste des fiches de rangement d’un élément d’inventaire.
Vue associée : lab.views.LabItemStorageListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
POST /labs/{idlab}/items/{iditem}/storages
Création d’une fiche de rangement d’un élément d’inventaire.
Vue associée : lab.views.LabItemStorageListCreateView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 201 – Success
– 403 – Forbidden
GET /labs/{idlab}/items/{iditem}/storages/{idstorage}
Vue détaillée d’une fiche de rangement d’un élément d’inventaire.
Vue associée : lab.views.LabItemStorageRetrieveUpdateDestroyView
20
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PUT /labs/{idlab}/items/{iditem}/storages/{idstorage}
Modification d’une fiche de rangement d’un élément d’inventaire.
Vue associée : lab.views.LabItemStorageRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 200 – Success
– 403 – Forbidden
PATCH /labs/{idlab}/items/{iditem}/storages/{idstorage}
Modification d’un champ d’une fiche de rangement d’un élément d’inventaire.
Voir :http :put :/labs/{idlab}/items/{iditem}/storages/{idstorage}
DELETE /labs/{idlab}/items/{iditem}/storages/{idstorage}
Suppression d’une fiche de rangement d’un élément d’inventaire.
Vue associée : lab.views.LabItemStorageRetrieveUpdateDestroyView
Request Headers
– Accept – application/json | text/html | application/xml
– Authorization – Token xxxxxx
Status Codes
– 204 – Success (no content)
– 403 – Forbidden
2.6 API Dossiers
TODO ...
2.7 API de gestion des évaluations
2.7.1 Eléments de référence
GET /eval/evalrefitems
Liste des éléments de référence
GET /eval/evalrefitems/{pkeri}
Détails d’un élément de référence
GET /eval/evalrefitems/{pkeri}/links
Liens d’un élément de référence
GET /eval/evalrefitems/{pkeri}/links/{erilpk}
Détails d’un li d’un élément de référence
2.6. API Dossiers
21
Eskollz Documentation, Version 0.0.3-dev
2.7.2 Evaluations
Liste des évaluations
GET /eval/evaluations/{?q,folder,status,...}
Liste des évaluations pour un utilisateur
POST /eval/evaluations/{?q,folder,status,...}
Création d’une nouvelle évaluation
GET /eval/evaluations/{id}
Détails d’une évaluation : titre, détails, plan, contenu, barème
PUT /eval/evaluations/{id}
Modification d’une évaluation
PATCH /eval/evaluations/{id}
Modification d’une évaluation
DELETE /eval/evaluations/{id}
Suppression d’une évaluation
Contenu d’une évaluation
GET /eval/evaluations/{id}/items
Liste des éléments de contenu d’une évaluation
POST /eval/evaluations/{id}/items
Création d’un nouvel élément d’évaluation
GET /eval/evaluations/{id}/items/{idi}
Détails d’un contenu d’évaluation : titre, contenu, correction, barèmes, evalrefs (direct/indirect)
Détails d’un contenu d’évaluation
GET /eval/evaluations/{id}/items/{idi}/documents
POST /eval/evaluations/{id}/items/{idi}/documents
GET /eval/evaluations/{id}/items/{idi}/documents/{idd}
PUT /eval/evaluations/{id}/items/{idi}/documents/{idd}
PATCH /eval/evaluations/{id}/items/{idi}/documents/{idd}
DELETE /eval/evaluations/{id}/items/{idi}/documents/{idd}
Eléments de corrigé
GET /eval/evaluations/{id}/items/{idi}/answers
GET /eval/evaluations/{id}/items/{idi}/answers/{idc}
GET /eval/evaluations/{id}/items/{idi}/points
GET /eval/evaluations/{id}/items/{idi}/points/{idb}
GET /eval/evaluations/{id}/items/{idi}/evalref
GET /eval/evaluations/{id}/items/{idi}/evalref/{ide}
22
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
2.7.3 Copies
GET /eval/papers/
GET /eval/evaluation/{ide}/papers/
GET /eval/evaluation/{ide}/papers/{cid}
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/answers
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/answers/{aid}
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}/points
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}/evalref
2.7.4 Statistiques et résultats
A faire...
2.8 API Planning
2.9 Documentation des objets pyrhon
2.9.1 people Package
people Package
models Module
class people.models.Admin(*args, **kwargs)
Bases : django.db.models.base.Model
Informations supplémentaires pour user administrateur.
param schools Schools
type schools ManyToManyField
param is_admin Is admin
type is_admin BooleanField
param id Id
type id AutoField
param user User
type user OneToOneField to User
exception Admin.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Admin.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Admin.objects = <django.db.models.manager.Manager object at 0x4cb4910>
Admin.schools
Admin.user
2.8. API Planning
23
Eskollz Documentation, Version 0.0.3-dev
class people.models.Contact(*args, **kwargs)
Bases : django.db.models.base.Model
Informations supplémentaires de contact utilisateur. * Dans User : email * Dans Contact
(user.contact.) : autres emails, téléphones, adresse
param phone2 Phone2
type phone2 CharField
param address2 Address2
type address2 TextField
param comments Comments
type comments TextField
param phone Phone
type phone CharField
param user User
type user OneToOneField to User
param mobile Mobile
type mobile CharField
param address Address
type address TextField
param email2 Email2
type email2 EmailField
param id Id
type id AutoField
param mobile2 Mobile2
type mobile2 CharField
exception Contact.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Contact.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Contact.objects = <django.db.models.manager.Manager object at 0x4caa850>
Contact.user
class people.models.EUser(*args, **kwargs)
Bases : django.contrib.auth.models.User
Proxy du modèle user : ajout des fonctions de groupe à l’utilisateur de base.
param username Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters
type username CharField
param first_name First name
type first_name CharField
param last_name Last name
type last_name CharField
param is_active Designates whether this user should be treated as active. Unselect this
instead of deleting accounts.
type is_active BooleanField
param email Email address
type email EmailField
param is_superuser Designates that this user has all permissions without explicitly assigning them.
24
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
type is_superuser BooleanField
param is_staff Designates whether the user can log into this admin site.
type is_staff BooleanField
param last_login Last login
type last_login DateTimeField
param groups The groups this user belongs to. A user will get all permissions granted to
each of his/her group.
type groups ManyToManyField
param user_permissions Specific permissions for this user.
type user_permissions ManyToManyField
param password Password
type password CharField
param id Id
type id AutoField
param date_joined Date joined
type date_joined DateTimeField
exception EUser.DoesNotExist
Bases : django.contrib.auth.models.DoesNotExist
exception EUser.MultipleObjectsReturned
Bases : django.contrib.auth.models.MultipleObjectsReturned
EUser.add_group(group, datein=None, dateout=None)
Ajoute l’utilisateur à un groupe. @param group Groupe @param datein (facultatif) : date d’arrivée dans le groupe (défaut : date courante) @param dateout (facultatif) : date de sortie du groupe
(défaut : 1er aout de l’année scolaire)
EUser.editfolders
EUser.get_absolute_url(*moreargs, **morekwargs)
EUser.get_groups(dte=datetime.datetime(2014, 3, 1, 0, 46, 5, 719343,
tzinfo=<LocalTimezone>))
Récupère (queryset Group) les groupes auxquels appartient l’utilisateur à la date donnée. @param dte (facultatif) : date de recherche des groupes (défaut : date courante)
EUser.objects = <django.contrib.auth.models.UserManager object at 0x4d6cbd0>
EUser.ownfolders
EUser.remove_group(group, datein=None, dateout=None)
Supprime l’utilisateur d’un groupe. @param group Groupe @param datein (facultatif) : date
de début de suppression (défaut : date courante) @param dateout (facultatif) : date de fin de
suppression (défaut : 1er aout de l’année scolaire)
EUser.rofolders
class people.models.Identity(*args, **kwargs)
Bases : django.db.models.base.Model
Informations supplémentaires sur l’identité de l’utilisateur. * Dans User : nom, prénom * Dans Identity (user.identity.) : autres prénoms, date de naissance, nom de jeune fille
param comments Comments
type comments TextField
param maidenname Maidenname
type maidenname CharField
param birthday Birthday
type birthday DateField
param firstname4 Firstname4
type firstname4 CharField
2.9. Documentation des objets pyrhon
25
Eskollz Documentation, Version 0.0.3-dev
param firstname3 Firstname3
type firstname3 CharField
param firstname2 Firstname2
type firstname2 CharField
param id Id
type id AutoField
param user User
type user OneToOneField to User
exception Identity.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Identity.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Identity.objects = <django.db.models.manager.Manager object at 0x4caa190>
Identity.user
class people.models.Student(*args, **kwargs)
Bases : django.db.models.base.Model
Informations supplémentaires pour user étudiant. Champs ajoutés : identifiant académique.
param comments Comments
type comments TextField
param user User
type user OneToOneField to User
param acadid Acadid
type acadid CharField
param schools Schools
type schools ManyToManyField
param is_student Is student
type is_student BooleanField
param id Id
type id AutoField
exception Student.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Student.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Student.objects = <django.db.models.manager.Manager object at 0x4caf390>
Student.schools
Student.user
class people.models.Teacher(*args, **kwargs)
Bases : django.db.models.base.Model
Informations supplémenteaires pour user teacher.
param schools Schools
type schools ManyToManyField
param is_teacher Is teacher
type is_teacher BooleanField
param id Id
type id AutoField
param comments Comments
type comments TextField
26
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
param user User
type user OneToOneField to User
exception Teacher.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Teacher.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Teacher.objects = <django.db.models.manager.Manager object at 0x4cafe10>
Teacher.schools
Teacher.user
people.models.create_user_metadata(sender, instance, created, **kwargs)
urls Module
views Module
class people.views.GetUserMixin
Bases : object
Mixin pour toutes les vues nécessitant un utilisateur.
Restreint les utilisateurs potentiellement accessibles selon l’utilisateur.
L’utilisateur à rechercher est donné par le paramètre d’url pk
GetUserMixin.get_queryset_for_user()
GetUserMixin.get_user()
GetUserMixin.kwargs = None
GetUserMixin.request = None
GetUserMixin.user = None
class people.views.PersonChangePasswordView(**kwargs)
Bases : rest_framework.views.APIView, people.views.GetUserMixin
Changement de mot de passe.
Modification = superuser uniquement.
POST {“password” : “NEW PASSWORD” } to change user password (admin only for now)
PersonChangePasswordView.permission_classes = [<class ‘authentication.permissions.IsSuperUserOrAut
PersonChangePasswordView.post(request, *args, **kwargs)
class people.views.PersonContactRetrieveUpdateDestroyView(**kwargs)
Bases
:
rest_framework.generics.RetrieveUpdateDestroyAPIView,
people.views.GetUserMixin
Récupération / modification des données de contact d’une personne.
Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.
PersonContactRetrieveUpdateDestroyView.get_object(queryset=None)
PersonContactRetrieveUpdateDestroyView.permission_classes = [<class ‘rest_framework.permission
PersonContactRetrieveUpdateDestroyView.pre_save(obj)
PersonContactRetrieveUpdateDestroyView.serializer_class
alias de UserContactSerializer
class people.views.PersonFilter
Bases : rest_framework.filters.BaseFilterBackend
PersonFilter.filter_queryset(request, queryset, view)
class people.views.PersonIdentityRetrieveUpdateDestroyView(**kwargs)
Bases
:
rest_framework.generics.RetrieveUpdateDestroyAPIView,
people.views.GetUserMixin
2.9. Documentation des objets pyrhon
27
Eskollz Documentation, Version 0.0.3-dev
Récupération / modification des données d’identité d’une personne.
Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.
PersonIdentityRetrieveUpdateDestroyView.get_object(queryset=None)
PersonIdentityRetrieveUpdateDestroyView.permission_classes = [<class ‘rest_framework.permissi
PersonIdentityRetrieveUpdateDestroyView.pre_save(obj)
PersonIdentityRetrieveUpdateDestroyView.serializer_class
alias de UserIdentitySerializer
class people.views.PersonListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView, people.views.GetUserMixin
__Liste et création d’utilisateurs.__
Accès en lecture (liste) :
– utilisateurs anonymes : aucun
– élèves : eux-même
– enseignants : liste des enseignants de leur(s) établissement(s), liste des élèves de leur(s) établissement(s)
– administrateur : tout
Accès en écriture (création) :
– utilisateurs anonymes : aucun
– élèves : aucun
– enseignants : aucun (à voir)
– administrateur : OK
Paramètres de filtre :
– __search__ : recherche textuelle insensible à la casse sur le nom d’utilisateur, le prénom, le nom de
famille. Si plusieurs filtres dans l’URL, le résultat est l’union des filtres
– __school__ : recherche par établissement (id établissement) ; si plusieurs filtres dans l’URL, le
résultat est l’union des filtres
PersonListCreateView.filter_backends = (<class ‘people.views.PersonFilter’>, <class ‘rest_framework.filte
PersonListCreateView.get_queryset()
PersonListCreateView.get_serializer_class()
PersonListCreateView.max_paginate_by = 500
PersonListCreateView.ordering = (‘last_name’, ‘first_name’, ‘identity__birthday’, ‘identity__firstname2’)
PersonListCreateView.paginate_by = 50
PersonListCreateView.permission_classes = [<class ‘rest_framework.permissions.IsAuthenticated’>, <cla
class people.views.PersonRetrieveUpdateDestroyView(**kwargs)
Bases
:
rest_framework.generics.RetrieveUpdateDestroyAPIView,
people.views.GetUserMixin
Récupération / modification des données d’une personne.
Récupération = mêmes restrictions que pour la liste des utilisateurs.
Modification : à voir.
Suppression : personne.
PersonRetrieveUpdateDestroyView.get_object(queryset=None)
PersonRetrieveUpdateDestroyView.permission_classes = [<class ‘rest_framework.permissions.IsAuthe
PersonRetrieveUpdateDestroyView.serializer_class
alias de PersonDetailSerializer
class people.views.PersonRetrieveWithAuthTokenView(**kwargs)
Bases : rest_framework.views.APIView
Récupération des données utilisateurs par username/mot de passe. Accès = anonyme throttled.
Accès : POST uniquement
Paramètres : - username : username ou adresse email principale - password : mot de passe
PersonRetrieveWithAuthTokenView.post(request, *args, **kwargs)
Get token :param request : Request :return : Reponse
PersonRetrieveWithAuthTokenView.throttle_classes = [<class ‘rest_framework.throttling.AnonRateTh
28
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
class people.views.PersonStudentRetrieveUpdateDestroyView(**kwargs)
Bases
:
rest_framework.generics.RetrieveUpdateDestroyAPIView,
people.views.GetUserMixin
Récupération / modification des données spécifiques “étudiant” d’une personne.
Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.
PersonStudentRetrieveUpdateDestroyView.get_object(queryset=None)
PersonStudentRetrieveUpdateDestroyView.permission_classes = [<class ‘rest_framework.permission
PersonStudentRetrieveUpdateDestroyView.pre_save(obj)
PersonStudentRetrieveUpdateDestroyView.serializer_class
alias de UserStudentSerializer
class people.views.PersonTeacherRetrieveUpdateDestroyView(**kwargs)
Bases
:
rest_framework.generics.RetrieveUpdateDestroyAPIView,
people.views.GetUserMixin
Récupération / modification des données spécifiques “enseignant” d’une personne.
Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.
PersonTeacherRetrieveUpdateDestroyView.get_object(queryset=None)
PersonTeacherRetrieveUpdateDestroyView.permission_classes = [<class ‘rest_framework.permission
PersonTeacherRetrieveUpdateDestroyView.pre_save(obj)
PersonTeacherRetrieveUpdateDestroyView.serializer_class
alias de UserTeacherSerializer
class people.views.StudentCreateMixin
Bases : object
StudentCreateMixin.checkdata(data)
class people.views.StudentCreateView(**kwargs)
Bases : rest_framework.views.APIView, people.views.StudentCreateMixin
StudentCreateView.permission_classes = [<class ‘rest_framework.permissions.IsAuthenticated’>, <class ‘p
Création d’un étudiant.
StudentCreateView.post(request, **kwargs)
class people.views.TeacherSubscribeConfirmView(**kwargs)
Bases : rest_framework.views.APIView, people.views.TeacherSubscribeMixin
Confirmation d’inscription d’un enseignant.
TeacherSubscribeConfirmView.get(request, **kwargs)
class people.views.TeacherSubscribeMixin
Bases : object
TeacherSubscribeMixin.checkdata(data)
class people.views.TeacherSubscribeView(**kwargs)
Bases : rest_framework.views.APIView, people.views.TeacherSubscribeMixin
Inscription (individuelle) d’un enseignant :
– checks user existence (same email / same names,birthday)
– checks user email validity
– checks user school
TeacherSubscribeView.post(request, **kwargs)
class people.views.UserGroupDetailJoinQuitView(**kwargs)
Bases : rest_framework.views.APIView, people.views.GetUserMixin
Assignation / désassignation d’une personne à un groupe.
Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.
UserGroupDetailJoinQuitView.delete(request, **kwargs)
UserGroupDetailJoinQuitView.get(request, **kwargs)
2.9. Documentation des objets pyrhon
29
Eskollz Documentation, Version 0.0.3-dev
UserGroupDetailJoinQuitView.get_group()
UserGroupDetailJoinQuitView.permission_classes = [<class ‘rest_framework.permissions.IsAuthenticat
UserGroupDetailJoinQuitView.post(request, **kwargs)
class people.views.UserGroupListView(**kwargs)
Bases : rest_framework.views.APIView, people.views.GetUserMixin
Récupération / modification des groupes d’une personne.
Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.
UserGroupListView.get(request, **kwargs)
UserGroupListView.permission_classes = [<class ‘rest_framework.permissions.IsAuthenticated’>, <class ‘a
serializers Module
class people.serializers.PersonAdminListSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class PersonAdminListSerializer.Meta
fields = [’id’, ‘username’, ‘first_name’, ‘last_name’]
model
alias de EUser
PersonAdminListSerializer.base_fields = {}
class people.serializers.PersonDetailAdminSerializer(instance=None, data=None,
files=None,
context=None,
partial=False, many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class PersonDetailAdminSerializer.Meta
model
alias de EUser
PersonDetailAdminSerializer.base_fields = {}
class people.serializers.PersonDetailSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class PersonDetailSerializer.Meta
fields = [’id’, ‘username’, ‘email’, ‘student’, ‘teacher’, ‘first_name’, ‘last_name’, ‘contact’, ‘identity’, ‘groupm
model
alias de EUser
PersonDetailSerializer.base_fields = {‘student’ : <people.serializers.UserStudentSerializer object at 0x49
class people.serializers.PersonPasswordSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.Serializer
30
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
PersonPasswordSerializer.base_fields = {‘password’ : <rest_framework.fields.CharField object at 0x42be
class people.serializers.PersonStudentListSerializer(instance=None, data=None,
files=None,
context=None,
partial=False, many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class PersonStudentListSerializer.Meta
fields = [’id’, ‘username’, ‘first_name’, ‘last_name’]
model
alias de EUser
PersonStudentListSerializer.base_fields = {}
class people.serializers.PersonTeacherListSerializer(instance=None, data=None,
files=None,
context=None,
partial=False, many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class PersonTeacherListSerializer.Meta
fields = [’id’, ‘username’, ‘first_name’, ‘last_name’]
model
alias de EUser
PersonTeacherListSerializer.base_fields = {}
class people.serializers.PersonWithTokenSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.Serializer
PersonWithTokenSerializer.base_fields = {‘known’ : <rest_framework.fields.BooleanField object at 0x43d
class people.serializers.StudentCreateSerializer(instance=None,
data=None,
files=None, context=None, partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.Serializer
Données nécessaires à la création d’un étudiant.
StudentCreateSerializer.base_fields = {‘lastname’ : <rest_framework.fields.CharField object at 0x3f67d5
class people.serializers.TeacherSubscribeSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.Serializer
Données nécessaires à l’inscription d’un enseignant.
TeacherSubscribeSerializer.base_fields = {‘lastname’ : <rest_framework.fields.CharField object at 0x43
class people.serializers.UserContactSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
2.9. Documentation des objets pyrhon
31
Eskollz Documentation, Version 0.0.3-dev
class UserContactSerializer.Meta
exclude = [’user’, ‘id’]
model
alias de Contact
UserContactSerializer.base_fields = {}
class people.serializers.UserGroupDetailsSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserGroupDetailsSerializer.Meta
exclude = [’users’]
model
alias de Group
UserGroupDetailsSerializer.base_fields = {‘members’ : <people.serializers.UserGroupMembershipSeria
class people.serializers.UserGroupListSerializer(instance=None,
data=None,
files=None, context=None, partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserGroupListSerializer.Meta
exclude = [’users’]
model
alias de Group
UserGroupListSerializer.base_fields = {}
class people.serializers.UserGroupMembershipSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserGroupMembershipSerializer.Meta
fields = [’user’, ‘group’, ‘datein’, ‘dateout’]
model
alias de GroupMembers
UserGroupMembershipSerializer.base_fields = {}
class people.serializers.UserIdentitySerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserIdentitySerializer.Meta
exclude = [’user’, ‘id’]
model
alias de Identity
UserIdentitySerializer.base_fields = {}
32
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
class people.serializers.UserStudentSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserStudentSerializer.Meta
exclude = [’user’, ‘id’]
model
alias de Student
UserStudentSerializer.base_fields = {}
class people.serializers.UserTeacherSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserTeacherSerializer.Meta
exclude = [’user’, ‘id’]
model
alias de Teacher
UserTeacherSerializer.base_fields = {}
tests.test_teacher_subscribe Module
class people.tests.test_teacher_subscribe.TeacherSubscribeTest(methodName=’runTest’)
Bases : rest_framework.test.APITestCase
TeacherSubscribeTest.fixtures = [’schools’, ‘people’]
TeacherSubscribeTest.subscribeurl = ‘/people/teachers/subscribe’
TeacherSubscribeTest.test_subscribe_flow()
TeacherSubscribeTest.test_subscribe_flow_badpostdata()
TeacherSubscribeTest.test_subscribe_flow_concurrent_subscribes()
TeacherSubscribeTest.test_subscribe_flow_existing_user_email()
TeacherSubscribeTest.test_subscribe_flow_existing_user_identity()
TeacherSubscribeTest.test_subscribe_flow_existing_username()
TeacherSubscribeTest.test_subscribe_flow_expirated_token()
TeacherSubscribeTest.test_subscribe_flow_forbidden_email()
TeacherSubscribeTest.test_subscribe_flow_unknown_school()
tests.test_student_create Module
class people.tests.test_student_create.StudentCreateTest(methodName=’runTest’)
Bases : rest_framework.test.APITestCase, people.tests.test_student_create.TestSettings
StudentCreateTest.createurl = ‘/people/students/create’
StudentCreateTest.fixtures = [’schools’, ‘people’]
StudentCreateTest.test_student_create_asstudent()
StudentCreateTest.test_student_create_badrequest()
StudentCreateTest.test_student_create_exactclone()
StudentCreateTest.test_student_create_fullknew()
StudentCreateTest.test_student_create_unauthenticated()
2.9. Documentation des objets pyrhon
33
Eskollz Documentation, Version 0.0.3-dev
class people.tests.test_student_create.TestSettings
Bases : object
Sets up users for tests.
TestSettings.set_users(username)
TestSettings.token = ‘’
TestSettings.user = ‘’
2.9.2 group Package
group Package
models Module
class group.models.Group(*args, **kwargs)
Bases : django.db.models.base.Model
Group(id, name, gtype)
param users Users
type users ManyToManyField
param gtype Gtype
type gtype CharField
param id Id
type id AutoField
param name Name
type name CharField
exception Group.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Group.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Group.add_user(user, datein=None, dateout=None)
Group.get_users(dte=datetime.datetime(2014,
3,
1,
0,
46,
5,
718752,
tzinfo=<LocalTimezone>))
Group.groupmembers_set
Group.objects = <django.db.models.manager.Manager object at 0x4d6c8d0>
Group.remove_user(user, datein=None, dateout=None)
Group.users
class group.models.GroupMembers(*args, **kwargs)
Bases : django.db.models.base.Model
GroupMembers(id, user_id, group_id, datein, dateout)
param dateout Dateout
type dateout DateTimeField
param datein Datein
type datein DateTimeField
param group Group
type group ForeignKey to Group
param id Id
type id AutoField
param user User
type user ForeignKey to User
34
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
exception GroupMembers.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception GroupMembers.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
GroupMembers.get_next_by_datein(*moreargs, **morekwargs)
GroupMembers.get_next_by_dateout(*moreargs, **morekwargs)
GroupMembers.get_previous_by_datein(*moreargs, **morekwargs)
GroupMembers.get_previous_by_dateout(*moreargs, **morekwargs)
GroupMembers.group
GroupMembers.objects = <django.db.models.manager.Manager object at 0x4d6c310>
GroupMembers.user
urls Module
views Module
class group.views.GroupListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
GroupListCreateView.permission_classes = []
GroupListCreateView.queryset
GroupListCreateView.serializer_class
alias de GroupListSerializer
class group.views.GroupMixin
get_group()
class group.views.GroupRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveAPIView
GroupRetrieveUpdateDestroyView.permission_classes = []
GroupRetrieveUpdateDestroyView.queryset
GroupRetrieveUpdateDestroyView.serializer_class
alias de GroupDetailSerializer
class group.views.GroupUserJoinQuitView(**kwargs)
Bases : rest_framework.views.APIView, group.views.GroupMixin
GroupUserJoinQuitView.delete(request, format=None, **kwargs)
GroupUserJoinQuitView.get(request, format=None, **kwargs)
GroupUserJoinQuitView.get_user()
GroupUserJoinQuitView.get_user_membership()
GroupUserJoinQuitView.post(request, format=None, **kwargs)
class group.views.GroupUserListView(**kwargs)
Bases : rest_framework.views.APIView, group.views.GroupMixin
GroupUserListView.get(request, format=None, **kwargs)
GroupUserListView.get_members()
2.9.3 school Package
school Package
models Module
Etablissements et académies.
2.9. Documentation des objets pyrhon
35
Eskollz Documentation, Version 0.0.3-dev
class school.models.Academy(*args, **kwargs)
Bases : django.db.models.base.Model
Académie.
param title Title
type title CharField
param emaildomains Emaildomains
type emaildomains TextField
param code Code
type code CharField
param id Id
type id AutoField
param slug Slug
type slug SlugField
exception Academy.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Academy.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Academy.objects = <django.db.models.manager.Manager object at 0x4d5fc50>
Academy.school_set
class school.models.School(*args, **kwargs)
Bases : django.db.models.base.Model
Etablissements d’enseignement.
param status Status
type status CharField
param categ Categ
type categ CharField
param code Code
type code CharField
param city City
type city CharField
param academy Academy
type academy ForeignKey to Academy
param pobox Pobox
type pobox CharField
param id Id
type id AutoField
param phone Phone
type phone CharField
param cedex Cedex
type cedex BooleanField
param postcode Postcode
type postcode CharField
param address Address
type address TextField
param shortname Shortname
type shortname CharField
36
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
param fullname Fullname
type fullname CharField
exception School.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception School.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
School.academy
School.admin_set
School.objects = <django.db.models.manager.Manager object at 0x4d644d0>
School.student_set
School.teacher_set
school.models.get_school_choices()
urls Module
views Module
class school.views.AcademyListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
AcademyListCreateView.permission_classes = [<class ‘authentication.permissions.IsSuperUserOrReadOn
AcademyListCreateView.queryset
AcademyListCreateView.serializer_class
alias de AcademySerializer
class school.views.AcademyRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
AcademyRetrieveUpdateDestroyView.permission_classes = [<class ‘rest_framework.permissions.IsAuth
AcademyRetrieveUpdateDestroyView.queryset
AcademyRetrieveUpdateDestroyView.serializer_class
alias de AcademySerializer
class school.views.SchoolListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
SchoolListCreateView.filter_backends = (<class ‘school.views.SchoolListFilter’>, <class ‘rest_framework.
SchoolListCreateView.paginate_by = 20
SchoolListCreateView.permission_classes = [<class ‘authentication.permissions.IsSuperUserOrReadOnl
SchoolListCreateView.queryset
SchoolListCreateView.serializer_class
alias de SchoolSerializer
class school.views.SchoolListFilter
Bases : rest_framework.filters.BaseFilterBackend
SchoolListFilter.filter_queryset(request, queryset, view)
class school.views.SchoolRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
SchoolRetrieveUpdateDestroyView.lookup_field = ‘code’
SchoolRetrieveUpdateDestroyView.permission_classes = [<class ‘authentication.permissions.IsSuperU
SchoolRetrieveUpdateDestroyView.queryset
SchoolRetrieveUpdateDestroyView.serializer_class
alias de SchoolSerializer
2.9. Documentation des objets pyrhon
37
Eskollz Documentation, Version 0.0.3-dev
2.9.4 folder Package
folder Package
models Module
class folder.models.Folder(*args, **kwargs)
Bases : mptt.models.MPTTModel
Generic folder
param rght Rght
type rght PositiveIntegerField
param owners Owners
type owners ManyToManyField
param description Description rapide
type description TextField
param parent Parent
type parent TreeForeignKey to Folder
param title Titre
type title CharField
param readers Readers
type readers ManyToManyField
param editors Editors
type editors ManyToManyField
param lft Lft
type lft PositiveIntegerField
param ftype Type de dossier
type ftype CharField
param tree_id Tree id
type tree_id PositiveIntegerField
param altparents Altparents
type altparents ManyToManyField
param level Level
type level PositiveIntegerField
param id Id
type id AutoField
exception Folder.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
Folder.FOLDER_TYPES = ((‘CLA’, ‘Classe’), (‘LVL’, ‘Niveau’), (‘DIS’, ‘Dispositif’), (‘DOC’, ‘Documents’), (‘CDT’
exception Folder.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Folder.allow(user, mode, recursive=True)
Folder.altparents
Folder.can_admin(user)
Folder.can_read(user)
Folder.can_write(user)
Folder.children
Folder.disallow(user, mode, recursive=True)
Folder.editors
38
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Folder.get_ftype_display(*moreargs, **morekwargs)
Folder.objects = <mptt.managers.TreeManager object at 0x4cc1510>
Folder.owners
Folder.parent
Folder.readers
folder.models.create_user_folder(sender, instance, created, **kwargs)
folder.models.inherit_folder_permissions(sender, instance, created, **kwargs)
urls Module
views Module
class folder.views.FolderFilter
Bases : rest_framework.filters.BaseFilterBackend
FolderFilter.filter_queryset(request, queryset, view)
class folder.views.FolderListCreateView(**kwargs)
Bases : folder.views.FolderMixin, rest_framework.generics.ListCreateAPIView
FolderListCreateView.filter_backends = (<class ‘folder.views.FolderFilter’>, <class ‘rest_framework.filter
FolderListCreateView.paginate_by = 100
FolderListCreateView.permission_classes = [<class ‘rest_framework.permissions.IsAuthenticated’>]
FolderListCreateView.pre_save(obj)
FolderListCreateView.serializer_class
alias de FolderSerializer
class folder.views.FolderMixin
Bases : object
FolderMixin.get_queryset()
FolderMixin.request = None
class folder.views.FolderRetrieveUpdateDestroyView(**kwargs)
Bases : folder.views.FolderMixin, rest_framework.generics.RetrieveUpdateDestroyAPIView
FolderRetrieveUpdateDestroyView.permission_classes = [<class ‘rest_framework.permissions.IsAuthe
FolderRetrieveUpdateDestroyView.serializer_class
alias de FolderDetailSerializer
class folder.views.FolderShareUpdateView(**kwargs)
Bases : folder.views.FolderMixin, rest_framework.views.APIView
FolderShareUpdateView.data = {}
FolderShareUpdateView.delete(request, *args, **kwargs)
FolderShareUpdateView.folder = None
FolderShareUpdateView.get(request, *args, **kwargs)
FolderShareUpdateView.initial(request, *args, **kwargs)
FolderShareUpdateView.operation = ‘’
FolderShareUpdateView.permission_classes = [<class ‘rest_framework.permissions.IsAuthenticated’>]
FolderShareUpdateView.post(request, *args, **kwargs)
2.9. Documentation des objets pyrhon
39
Eskollz Documentation, Version 0.0.3-dev
serializers Module
class folder.serializers.FolderDetailSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class FolderDetailSerializer.Meta
exclude = [’lft’, ‘rght’, ‘tree_id’]
model
alias de Folder
FolderDetailSerializer.base_fields = {‘parent’ : <folder.serializers.FolderSerializer object at 0x5405910>
class folder.serializers.FolderSerializer(instance=None,
data=None,
files=None,
context=None, partial=False, many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class FolderSerializer.Meta
exclude = [’lft’, ‘rght’, ‘tree_id’]
model
alias de Folder
FolderSerializer.base_fields = {‘owners’ : <rest_framework.relations.PrimaryKeyRelatedField object at 0x
class folder.serializers.FolderSimpleSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class FolderSimpleSerializer.Meta
fields = [’id’, ‘title’, ‘description’]
model
alias de Folder
FolderSimpleSerializer.base_fields = {}
class folder.serializers.FolderUserSerializer(instance=None, data=None, files=None,
context=None,
partial=False,
many=None, allow_add_remove=False,
**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class FolderUserSerializer.Meta
fields = [’first_name’, ‘last_name’, ‘username’, ‘id’]
model
alias de EUser
FolderUserSerializer.base_fields = {}
permissions Module
class folder.permissions.FolderEditPermission
Bases : rest_framework.permissions.BasePermission
FolderEditPermission.has_object_permission(request, view, obj)
40
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
2.9.5 lab Package
lab Package
models Module
class lab.models.Lab(*args, **kwargs)
Laboratoire / inventaire.
Les champs resp, tech, user listent les différents utilisateurs pour chaque rôle.
–Les responsables peuvent tout faire (y compris supprimer le labo et tout ce qu’il contient)
–Les techniciens peuvent tout faire (sauf supprimer le labo)
–Les users peuvent consulter les éléments, mais pas les modifier.
À faire
rajouter des détails dans les rôles utilisateurs.
Paramètres
– user (ManyToManyField) – Utilisateurs
– resp (ManyToManyField) – Responsables
– tech (ManyToManyField) – Techniciens
– id (AutoField) – Id
– name (CharField) – Nom du laboratoire
class lab.models.LabCategory(*args, **kwargs)
Catégories de matériel.
Arborescence via name (en utilisant des caractères de séparation)
À faire
Ajouter (ou étendre à partir modèle) les champs utiles
Paramètres
– sdesc (CharField) – Short description
– id (AutoField) – Id
– lab (ForeignKey to Lab) – Lab
– name (CharField) – Category
class lab.models.LabItem(*args, **kwargs)
Element d’inventaire
À faire
Revoir les champs nécessaires
Paramètres
– name (CharField) – Name
– sdesc (TextField) – Description
– barcode (CharField) – Barcode
– lab (ForeignKey to Lab) – Lab
– comments (TextField) – Comments
– timestamp (DateTimeField) – Item update date
– categs (ManyToManyField) – Categs
– id (AutoField) – Id
class lab.models.LabItemLog(*args, **kwargs)
Suivi des quantités.
À faire
Revoir les champs nécessaires
2.9. Documentation des objets pyrhon
41
Eskollz Documentation, Version 0.0.3-dev
Paramètres
– sdesc (CharField) – Short description
– lab (ForeignKey to Lab) – Lab
– item (ForeignKey to LabItem) – Item
– comments (TextField) – Comments
– timestamp (DateTimeField) – Timestamp
– id (AutoField) – Id
– unit (ForeignKey to LabUnit) – Unit
– quantity (DecimalField) – Quantity
class lab.models.LabItemProvider(*args, **kwargs)
Informations de fournisseur pour un élément de laboratoire.
À faire
Revoir les champs nécessaires, voir lien avec log
Paramètres
– status (CharField) – Status
– timestamp (DateTimeField) – Timestamp
– price (CharField) – Price
– lab (ForeignKey to Lab) – Lab
– item (ForeignKey to LabItem) – Item
– comments (TextField) – Comments
– provider (ForeignKey to LabProvider) – Provider
– id (AutoField) – Id
– unit (ForeignKey to LabUnit) – Unit
– quantity (CharField) – Quantity
class lab.models.LabItemSecurity(*args, **kwargs)
Fiche de sécurité pour un élément d’inventaire
À faire
Revoir les champs nécessaires
Paramètres
– updated (DateTimeField) – Updated
– secpictos (ManyToManyField) – Secpictos
– secrefs (TextField) – Secrefs
– seccateg (CharField) – Seccateg
– secsentences (ManyToManyField) – Secsentences
– lab (ForeignKey to Lab) – Lab
– item (ForeignKey to LabItem) – Item
– comments (TextField) – Comments
– secsignal (CharField) – Secsignal
– id (AutoField) – Id
class lab.models.LabItemStorage(*args, **kwargs)
Emplacements de stockage des éléments d’inventaire
À faire
Revoir les champs nécessaires, voir lien avec log
Paramètres
– storage (ForeignKey to LabStorage) – Storage
– lab (ForeignKey to Lab) – Lab
– item (ForeignKey to LabItem) – Item
– comments (TextField) – Comments
– id (AutoField) – Id
– unit (ForeignKey to LabUnit) – Unit
42
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
– quantity (CharField) – Quantity
class lab.models.LabProvider(*args, **kwargs)
Fournisseur du laboratoire.
À faire
Possibilité de liaison avec version “établissement” des fournisseurs.
À faire
Ajouter (ou étendre à partir modèle) les champs utiles
Paramètres
– url (CharField) – Website
– contact (TextField) – Contact
– id (AutoField) – Id
– lab (ForeignKey to Lab) – Lab
– name (CharField) – Name
class lab.models.LabStorage(*args, **kwargs)
Emplacements de rangement du matériel.
Arborescence via name (en utilisant des caractères de séparation)
À faire
Ajouter (ou étendre à partir modèle) les champs utiles
Paramètres
– sdesc (CharField) – Short description
– id (AutoField) – Id
– lab (ForeignKey to Lab) – Lab
– name (CharField) – Place
class lab.models.LabUnit(*args, **kwargs)
Unités utiles pour un inventaire.
À faire
faire l’inventaire de ce qui est utilisé
À faire
intégrer les fonctionnalités du projet Units (conversions..)
Paramètres
– lang (CharField) – Language
– name (CharField) – Unit
– utype (CharField) – Unit type
– comments (TextField) – Comments
– abbr (CharField) – Unit symbol
– id (AutoField) – Id
class lab.models.SecurityPicto(*args, **kwargs)
Pictogrammes de sécurité.
Références : voir dossier fixtures.
À faire
Rajouter la gestion des traductions.
Paramètres
– code (CharField) – Security picto code
2.9. Documentation des objets pyrhon
43
Eskollz Documentation, Version 0.0.3-dev
– id (AutoField) – Id
– comments (TextField) – Comments
– label (CharField) – Security picto label
class lab.models.SecuritySentence(*args, **kwargs)
Phrases de sécurité (R/S/H/P).
Référence : voir dossier fixtures.
Paramètres
– lang (CharField) – Langue
– code (CharField) – Code
– sentence (CharField) – Phrase
– comments (TextField) – Comments
– id (AutoField) – Id
– stype (CharField) – Type de phrase
views Module
class lab.views.GetLabItemMixin
Renvoie (et enregistre dans self.item) l’élément d’inventaire désigné par pkli.
class lab.views.GetLabListMixin
Renvoie get_lablist une QuerySet filtrée donnant uniquement les laboratoires accessibles à l’utilisateur.
class lab.views.GetLabMixin
Renvoie (et enregistre dans self.lab) le laboratoire désigné par pklab.
class lab.views.LabCategoryListCreateView(**kwargs)
Liste ou crée (tech/resp) une catégorie pour un laboratoire.
Utilise lab.serializers.LabCategorySerializer pour la sérialisation.
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire
Urls API :
–GET /labs/{idlab}/categories
–POST /labs/{idlab}/categories
serializer_class
alias de LabCategorySerializer
class lab.views.LabCategoryRetrieveUpdateDestroyView(**kwargs)
Affiche les détails, modifie ou supprime une catégorie pour un laboratoire.
–Affichage : tous les utilisateurs du laboratoire.
–Suppression / modification : tech / resp uniquement.
Utilise lab.serializers.LabCategorySerializer pour la sérialisation.
Accès : lecture = user/resp/tech du laboratoire, écriture = resp/tech laboratoire
Urls API :
–GET /labs/{idlab}/categories/{idcategorie}
–PUT /labs/{idlab}/categories/{idcategorie}
–PATCH /labs/{idlab}/categories/{idcategorie}
–DELETE /labs/{idlab}/categories/{idcategorie}
serializer_class
alias de LabCategorySerializer
class lab.views.LabItemFilter
Recherche d’éléments pour l’inventaire.
Ce filtre gère le filtrage de la vue GET /lab/{idlab}/items{?params}
Chacun des paramètres peut être précisé plusieurs fois, ce qui réalise une UNION des résultats correspondant à chaque filtre.
À faire
changer le type de résultats.
44
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
À faire
tests
Parameters
– search* (str) – recherche (non sensible à la casse) par nom, description, commentaires
(potentiellement aussi : nom de catégorie, description de catégorie, nom du rangement,
....
– fsearch* (str) – comme recherche, mais plus large (nom, description, commentaires,
– storage* (number) – recherche par emplacement de rangement (argument = identifiant
de rangement)
– provider* (number) – recherche par fournisseur (argument = identifiant de fournisseur)
– categ* (number) – recherche par catégorie (argument = identifiant de catégorie)
– secsentence* (number) – recherche par phrase de sécurité (argument = code de sécurité)
Retourne queryset (queryset) – requète avec tous les filtres
class lab.views.LabItemListCreateView(**kwargs)
Liste ou crée (tech/resp) un élément de laboratoire.
Parameters ordering (str) – champ de tri (name / -name / sdesc / -sdesc)
pre_save(obj)
Vérification avant sauvegarde qu’on reste bien dans le bon labo... WARNING : utilisation d’une propriété privée de DRF... https ://github.com/tomchristie/django-restframework/blob/master/rest_framework/serializers.py#L937
serializer_class
alias de LabItemSerializer
class lab.views.LabItemLogListCreateView(**kwargs)
Affiche la liste des logs pour un élément de laboratoire. - Affichage : tous les utilisateurs du laboratoire. Création : resp/tech uniquement.
Utilise lab.serializers.LabItemLogSerializer pour la sérialisation (non détaillé).
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/logs
–POST /labs/{idlab}/items/{iditem}/logs
serializer_class
alias de LabItemLogSerializer
class lab.views.LabItemLogRetrieveUpdateDestroyView(**kwargs)
Affiche les détails des logs pour un élément de laboratoire. - Affichage : tous les utilisateurs du laboratoire.
- Suppression / modification : tech / resp uniquement.
Utilise lab.serializers.LabItemLogSerializer pour la sérialisation (non détaillé).
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/logs/{idlog}
–PUT /labs/{idlab}/items/{iditem}/logs/{idlog}
–PATCH /labs/{idlab}/items/{iditem}/logs/{idlog}
–DELETE /labs/{idlab}/items/{iditem}/logs/{idlog}
À faire
voir pourquoi pas FullSerializer
serializer_class
alias de LabItemLogSerializer
class lab.views.LabItemProviderListCreateView(**kwargs)
Affiche la liste des fournisseurs / commandes pour un élément de laboratoire. - Affichage : tous les utilisateurs du laboratoire. - Création : resp/tech uniquement.
Utilise lab.serializers.LabItemProviderSerializer pour la sérialisation (non détaillé).
2.9. Documentation des objets pyrhon
45
Eskollz Documentation, Version 0.0.3-dev
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/providers
–POST /labs/{idlab}/items/{iditem}/providers
serializer_class
alias de LabItemProviderSerializer
class lab.views.LabItemProviderRetrieveUpdateDestroyView(**kwargs)
Affiche les détails des fournisseurs / commandes pour un élément de laboratoire. - Affichage : tous les
utilisateurs du laboratoire. - Suppression / modification : tech / resp uniquement.
Utilise lab.serializers.LabItemProviderSerializer pour la sérialisation (non détaillé).
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/providers/{idprovider}
–PUT /labs/{idlab}/items/{iditem}/providers/{idprovider}
–PATCH /labs/{idlab}/items/{iditem}/providers/{idprovider}
–DELETE /labs/{idlab}/items/{iditem}/providers/{idprovider}
À faire
voir pourquoi pas FullSerializer
serializer_class
alias de LabItemProviderSerializer
class lab.views.LabItemRetrieveUpdateDestroyView(**kwargs)
Affiche les détails, modifie ou supprime un élément de laboratoire. Affichage : tous les utilisateurs du laboratoire. Suppression / modification : tech / resp uniquement.
get_serializer_class()
Pour requete GET (retrieve) : affiche tous les détails de l’item et de ses fiches (securité, storage, categs,
log, storages...)
class lab.views.LabItemSecurityListCreateView(**kwargs)
Affiche la liste des fiches de sécurité pour un élément de laboratoire. - Affichage : tous les utilisateurs du
laboratoire. - Création : resp/tech uniquement.
Utilise lab.serializers.LabItemSecuritySerializer pour la sérialisation (non détaillé).
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/security
–POST /labs/{idlab}/items/{iditem}/security
serializer_class
alias de LabItemSecuritySerializer
class lab.views.LabItemSecurityRetrieveUpdateDestroyView(**kwargs)
Affiche les détails d’une fiche de sécurité pour un élément de laboratoire. - Affichage : tous les utilisateurs
du laboratoire. - Suppression / modification : tech / resp uniquement.
Utilise lab.serializers.LabItemSecuritySerializer pour la sérialisation (non détaillé).
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/security/{idsecurity}
–PUT /labs/{idlab}/items/{iditem}/security/{idsecurity}
–PATCH /labs/{idlab}/items/{iditem}/security/{idsecurity}
–DELETE /labs/{idlab}/items/{iditem}/security/{idsecurity}
À faire
voir pourquoi pas FullSerializer
serializer_class
alias de LabItemSecuritySerializer
46
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
class lab.views.LabItemStorageListCreateView(**kwargs)
Affiche la liste des emplacements de stockage pour un élément de laboratoire. - Affichage : tous les utilisateurs du laboratoire. - Création : resp/tech uniquement.
Utilise lab.serializers.LabItemStorageSerializer pour la sérialisation (non détaillé).
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/storages
–POST /labs/{idlab}/items/{iditem}/storages
serializer_class
alias de LabItemStorageSerializer
class lab.views.LabItemStorageRetrieveUpdateDestroyView(**kwargs)
Affiche les détails des emplacements de stockage pour un élément de laboratoire. - Affichage : tous les
utilisateurs du laboratoire. - Suppression / modification : tech / resp uniquement.
Utilise lab.serializers.LabItemStorageSerializer pour la sérialisation (non détaillé).
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.
Urls API :
–GET /labs/{idlab}/items/{iditem}/storages/{idstorage}
–PUT /labs/{idlab}/items/{iditem}/storages/{idstorage}
–PATCH /labs/{idlab}/items/{iditem}/storages/{idstorage}
–DELETE /labs/{idlab}/items/{iditem}/storages/{idstorage}
À faire
voir pourquoi pas FullSerializer
serializer_class
alias de LabItemStorageSerializer
class lab.views.LabListCreateView(**kwargs)
Création d’un laboratoire. Les utilisateurs ne sont pas définis dans cette étape de création, à part le créateur qui devient automatiquement responsable du labo. Tout les utilisateurs authentifiés peuvent créer un
laboratoire (POST). La liste des laboratoires (GET) ne contient que les laboratoires auxquels peut accéder
l’utilisateur.
Utilise lab.serializers.LabSerializer pour la sérialisation.
Accès : lecture / écriture = utilisateurs identifiés.
Urls API :
–GET /labs
–POST /labs
post_save(obj, created=False)
On s’assure que le créateur est bien enregistré dans les responsables. :param obj : laboratoire à sauver
serializer_class
alias de LabSerializer
class lab.views.LabProviderListCreateView(**kwargs)
Liste ou crée (tech/resp) un fournisseur pour un laboratoire.
Utilise lab.serializers.LabProviderSerializer pour la sérialisation.
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire
Urls API :
–GET /labs/{idlab}/providers
–POST /labs/{idlab}/providers
serializer_class
alias de LabProviderSerializer
class lab.views.LabProviderRetrieveUpdateDestroyView(**kwargs)
Affiche les détails, modifie ou supprime un fournisseur pour un laboratoire.
–Affichage : tous les utilisateurs du laboratoire.
–Suppression / modification : tech / resp uniquement.
Utilise lab.serializers.LabProviderSerializer pour la sérialisation.
Accès : lecture = user/resp/tech du laboratoire, écriture = resp/tech laboratoire
Urls API :
2.9. Documentation des objets pyrhon
47
Eskollz Documentation, Version 0.0.3-dev
–GET /labs/{idlab}/providers/{idprovider}
–PUT /labs/{idlab}/providers/{idprovider}
–PATCH /labs/{idlab}/providers/{idprovider}
–DELETE /labs/{idlab}/providers/{idprovider}
serializer_class
alias de LabProviderSerializer
class lab.views.LabRetrieveUpdateDestroyView(**kwargs)
Détails d’un laboratoire / édition suppression.
–Seuls les utilisateurs appartenant au laboratoire peuvent obtenir les détails du labo.
–Seuls les responsables peuvent apporter des modifications / supprimer le laboratoire.
–Seules la modification du nom est autorisée, les modifications concernant les utilisateurs ne sont pas dans
cette vue.
Utilise lab.serializers.LabSerializer pour la sérialisation.
Accès : lecture = user/resp/tech du laboratoire, écriture = resp laboratoire
Urls API :
–GET /labs/{idlab}
–PUT /labs/{idlab}
–PATCH /labs/{idlab}
–DELETE /labs/{idlab}
post_save(obj, created=False)
On s’assure que le créateur est bien enregistré dans les responsables. :param obj : laboratoire à sauver
serializer_class
alias de LabSerializer
class lab.views.LabStorageListCreateView(**kwargs)
Liste ou crée (tech/resp) un emplacement pour un laboratoire.
Utilise lab.serializers.LabStorageSerializer pour la sérialisation.
Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire
Urls API :
–GET /labs/{idlab}/storages
–POST /labs/{idlab}/storages
serializer_class
alias de LabStorageSerializer
class lab.views.LabStorageRetrieveUpdateDestroyView(**kwargs)
Affiche les détails, modifie ou supprime un emplacement pour un laboratoire. - Affichage : tous les utilisateurs du laboratoire. - Suppression / modification : tech / resp uniquement.
Utilise lab.serializers.LabStorageSerializer pour la sérialisation.
Accès : lecture = user/resp/tech du laboratoire, écriture = resp/tech laboratoire
Urls API :
–GET /labs/{idlab}/storages/{idstorage}
–PUT /labs/{idlab}/storages/{idstorage}
–PATCH /labs/{idlab}/storages/{idstorage}
–DELETE /labs/{idlab}/storages/{idstorage}
serializer_class
alias de LabStorageSerializer
class lab.views.LabUpdatePeopleView(**kwargs)
Modification des personnes d’un laboratoire (reponsables, techniciens, utilisateurs). Un PUT permet d’ajouter l’utilisateur au groupe, un DELETE permet de le supprimer du groupe.
Utilise lab.serializers.LabMemberSerializer pour la sérialisation du POST.
À faire
SEE : Empêcher le “hara-kiri” d’un responsable de laboratoire ?
class lab.views.SecurityPictoListCreateView(**kwargs)
Liste (et création) de pictos de sécurité.
Utilise lab.serializers.SecurityPictoSerializer pour la sérialisation.
48
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Accès : lecture = utilisateurs identifiés, création : superuser.
Urls API :
–GET /labs/secpictos
–POST /labs/secpictos
À faire
ajouter la possibilité de filtrer (par type / mot)
serializer_class
alias de SecurityPictoSerializer
class lab.views.SecurityPictoRetrieveUpdateDestroyView(**kwargs)
Détails et modifications des pictos de sécurité.
Utilise lab.serializers.SecurityPictoSerializer pour la sérialisation.
Accès : lecture = utilisateurs identifiés, modification/suppression : superuser.
Urls API :
–PUT /labs/secpictos/{id}
–PATCH /labs/secpictos/{id}
–DELETE /labs/secpictos/{id}
À faire
ajouter la possibilité de filtrer (par type / mot)
serializer_class
alias de SecurityPictoSerializer
class lab.views.SecuritySentenceListCreateView(**kwargs)
Liste (et création) de phrases de sécurité.
Urls API :
–GET /labs/secsentences{?q,lang,type}
–POST /labs/secsentences
Utilise lab.serializers.SecuritySentenceSerializer pour la sérialisation.
Accès : lecture = utilisateurs identifiés, écriture/suppression : superuser.
À faire
ajouter la possibilité de filtrer (par langue / type / mot)
À faire
voir la nécessité de pagination (lourd ?)
serializer_class
alias de SecuritySentenceSerializer
class lab.views.SecuritySentenceRetrieveUpdateDestroyView(**kwargs)
Affichage, modification et suppression d’une phrase de sécurité.
Urls API :
–PUT /labs/secsentences/{id}
–PATCH /labs/secsentences/{id}
–DELETE /labs/secsentences/{id}
serializer_class
alias de SecuritySentenceSerializer
class lab.views.UnitListCreateView(**kwargs)
Liste (et création) des unités de mesure.
Utilise lab.serializers.LabUnitSerializer pour la sérialisation.
Accès : lecture = utilisateurs identifiés, création : superuser.
Urls API :
–GET /labs/units
–POST /labs/units
2.9. Documentation des objets pyrhon
49
Eskollz Documentation, Version 0.0.3-dev
À faire
ajouter la possibilité de filtrer (par type / mot)
serializer_class
alias de UnitSerializer
class lab.views.UnitRetrieveUpdateDestroyView(**kwargs)
Détails et modifications des unités de mesure.
Utilise lab.serializers.LabUnitSerializer pour la sérialisation.
Accès : lecture = utilisateurs identifiés, modification/suppression : superuser.
Urls API :
–PUT /labs/units/{id}
–PATCH /labs/units/{id}
–DELETE /labs/units/{id}
À faire
ajouter la possibilité de filtrer (par type / mot)
serializer_class
alias de UnitSerializer
serializers Module
class lab.serializers.LabCategorySerializer(instance=None, data=None, files=None,
context=None, partial=False, many=None,
allow_add_remove=False, **kwargs)
Affichage des informations de catégorie d’un élément de laboratoire.
Modèle utilisé : lab.models.LabCategory
Tous les champs du modèle sont affichés sauf l’identifiant du laboratoire.
class lab.serializers.LabItemFullSerializer(instance=None, data=None, files=None,
context=None, partial=False, many=None,
allow_add_remove=False, **kwargs)
Affichage detaillé (toutes les infos détaillées) d’un élément de laboratoire.
Modèles
utilisés
:
lab.models.LabItem
lab.models.LabItemProvider
lab.models.LabItemStorage
lab.models.LabItemSecurity
lab.models.LabItemLog
Tous les champs des modèles sont détaillés.
class lab.serializers.LabItemLogFullSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Affichage détaillé d’un élément d’historique d’un élément d’inventaire.
Modèles utilisés : lab.models.LabItemLog et pour les détails lab.models.LabUnit.
Tous les champs sont détaillés (sauf le laboratoire et l’élément d’inventaire).
class lab.serializers.LabItemLogSerializer(instance=None, data=None, files=None,
context=None, partial=False, many=None,
allow_add_remove=False, **kwargs)
Affichage synthétique d’un élément d’historique d’un élément d’inventaire.
Modèle utilisé : lab.models.LabItemLog
Tous les champs du modèle sont affichés sauf l’identifiant du laboratoire et l’élément d’inventaire, mais en
version non détaillée (identifiant uniquement).
50
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
class lab.serializers.LabItemProviderFullSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Affichage détaillé de l’emplacement d’une fiche commande / fournisseur.
Modèles
utilisés
:
lab.models.LabItemProvider
et
pour
les
détails
lab.models.LabProvider et lab.models.LabUnit
Tous les champs sont détaillés (sauf le laboratoire et l’élément d’inventaire).
class lab.serializers.LabItemProviderSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Affichage synthétique du détail d’une fiche commande / fournisseur.
Modèle utilisé : lab.models.LabItemProvider
Tous les champs du modèle sont affichés sauf l’identifiant du laboratoire et l’élément d’inventaire, mais en
version non détaillée (identifiant uniquement).
class lab.serializers.LabItemSecurityFullSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Affichage détaillé d’une fiche de sécurité d’un élément d’inventaire.
Modèles
utilisés
:
lab.models.LabItemSecurity
et
pour
les
détails
lab.models.SecuritySentence et lab.models.SecurityPicto.
Tous les champs sont détaillés (sauf le laboratoire et l’élément d’inventaire).
class lab.serializers.LabItemSecuritySerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Affichage synthétique d’une fiche de sécurité d’un élément d’inventaire.
Modèle utilisé : lab.models.LabItemSecurity
Tous les champs du modèle sont affichés sauf l’identifiant du laboratoire et l’élément d’inventaire, mais en
version non détaillée (identifiant uniquement).
class lab.serializers.LabItemSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Affichage synthétique d’un élément de laboratoire. Tous les champs sont affichés mais en version non détaillée (identifiants uniquement).
Modèle utilisé : lab.models.LabItem
class lab.serializers.LabItemStorageFullSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False,
**kwargs)
Affichage détaillé de l’emplacement d’un élément d’inventaire.
Modèles utilisés : lab.models.LabItemStorage et pour les détails lab.models.LabStorage
et lab.models.LabUnit.
Tous les champs sont détaillés (sauf le laboratoire et l’élément d’inventaire).
class lab.serializers.LabItemStorageSerializer(instance=None,
data=None,
files=None,
context=None,
partial=False,
many=None,
allow_add_remove=False, **kwargs)
Affichage synthétique du détail d’un emplacement de rangement.
Modèle utilisé : lab.models.LabItemStorage
2.9. Documentation des objets pyrhon
51
Eskollz Documentation, Version 0.0.3-dev
Tous les champs du modèle sont affichés sauf l’identifiant du laboratoire et l’élément d’inventaire, mais en
version non détaillée (identifiant uniquement).
class lab.serializers.LabMemberSerializer(instance=None,
data=None,
files=None,
context=None, partial=False, many=None,
allow_add_remove=False, **kwargs)
Affichage des informations utilisateur d’un membre de laboratoire.
Modèle utilisé : User
Champs affichés : - id utilisateur - first_name prénom - last_name nom de famille
class lab.serializers.LabProviderSerializer(instance=None, data=None, files=None,
context=None, partial=False, many=None,
allow_add_remove=False, **kwargs)
Affichage des informations d’un fournisseur de laboratoire.
Modèle utilisé : lab.models.LabProvider
Tous les champs du modèle sont affichés sauf l’identifiant du laboratoire.
class lab.serializers.LabSerializer(instance=None, data=None, files=None, context=None,
partial=False, many=None, allow_add_remove=False,
**kwargs)
Affichage des informations d’un laboratoire + liste des utilisateurs.
Les listes des utilisateurs sont en lecture seule.
Modèle utilisé : lab.models.Lab
Champs affichés : - tous les champs du modèle lab.models.Lab - resp, tech et user sont en lecture
seule.
À faire
Ajouter les URLS de l’API pour consultation/modificaiton des users.
class lab.serializers.LabStorageSerializer(instance=None, data=None, files=None,
context=None, partial=False, many=None,
allow_add_remove=False, **kwargs)
Affichage des informations d’emplacement d’un élément de laboratoire.
Modèle utilisé : lab.models.LabStorage
Tous les champs du modèle sont affichés sauf l’identifiant du laboratoire.
class lab.serializers.SecurityPictoSerializer(instance=None, data=None, files=None,
context=None,
partial=False,
many=None, allow_add_remove=False,
**kwargs)
Affichage (complet) d’un picto de sécurité.
Champs : lab.models.SecurityPicto
Utilisé dans :
–lab.views.SecurityPictoListCreateView
–lab.views.SecurityPictoRetrieveUpdateDestroyViey
class lab.serializers.SecuritySentenceSerializer(instance=None,
data=None,
files=None, context=None, partial=False,
many=None,
allow_add_remove=False, **kwargs)
Affichage (complet) d’une phrase de sécurité.
Champs : lab.models.SecuritySentence
Utilisé dans :
–lab.views.SecuritySentenceListCreateView
–lab.views.SecuritySentenceRetrieveUpdateDestroyView.
class lab.serializers.UnitSerializer(instance=None,
data=None,
files=None,
context=None, partial=False, many=None, allow_add_remove=False, **kwargs)
Affichage (complet) des unités de mesure.
52
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Champs : lab.models.LabUnit
Utilisé dans :
–lab.views.LabUnitListCreateView
–lab.views.LabUnitRetrieveUpdateDestroyViey
2.9.6 evaluation Package
evaluation Package
models Module
class evaluation.models.EvalItem(*args, **kwargs)
Bases : mptt.models.MPTTModel
EvalItem(id, evaluation_id, parent_id, title, itype)
param rght Rght
type rght PositiveIntegerField
param itype Itype
type itype CharField
param parent Parent
type parent TreeForeignKey to EvalItem
param title Title
type title CharField
param level Level
type level PositiveIntegerField
param lft Lft
type lft PositiveIntegerField
param tree_id Tree id
type tree_id PositiveIntegerField
param evaluation Evaluation
type evaluation ForeignKey to Evaluation
param id Id
type id AutoField
exception EvalItem.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalItem.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalItem.children
EvalItem.evalitemanswer_set
EvalItem.evalitemanswerdocument_set
EvalItem.evalitemdocument_set
EvalItem.evalitemevalref_set
EvalItem.evalitempoint_set
EvalItem.evalpaperanswer_set
EvalItem.evalpaperevalitem_set
EvalItem.evaluation
EvalItem.objects = <mptt.managers.TreeManager object at 0x435e490>
EvalItem.parent
class evaluation.models.EvalItemAnswer(*args, **kwargs)
2.9. Documentation des objets pyrhon
53
Eskollz Documentation, Version 0.0.3-dev
Bases : django.db.models.base.Model
EvalItemAnswer(id, item_id, title, atype)
param item Item
type item ForeignKey to EvalItem
param atype Atype
type atype CharField
param id Id
type id AutoField
param title Title
type title CharField
exception EvalItemAnswer.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalItemAnswer.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalItemAnswer.evalitemanswerdocument_set
EvalItemAnswer.evalitemevalref_set
EvalItemAnswer.evalitempoint_set
EvalItemAnswer.item
EvalItemAnswer.objects = <django.db.models.manager.Manager object at 0x4362110>
class evaluation.models.EvalItemAnswerDocument(*args, **kwargs)
Bases : django.db.models.base.Model
EvalItemAnswerDocument(id, item_id, answer_id, title, dtype)
param answer Answer
type answer ForeignKey to EvalItemAnswer
param item Item
type item ForeignKey to EvalItem
param dtype Dtype
type dtype CharField
param id Id
type id AutoField
param title Title
type title CharField
exception EvalItemAnswerDocument.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalItemAnswerDocument.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalItemAnswerDocument.answer
EvalItemAnswerDocument.item
EvalItemAnswerDocument.objects = <django.db.models.manager.Manager object at 0x4362750>
class evaluation.models.EvalItemDocument(*args, **kwargs)
Bases : django.db.models.base.Model
EvalItemDocument(id, item_id, title, dtype)
param item Item
type item ForeignKey to EvalItem
param dtype Dtype
type dtype CharField
param id Id
54
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
type id AutoField
param title Title
type title CharField
exception EvalItemDocument.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalItemDocument.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalItemDocument.item
EvalItemDocument.objects = <django.db.models.manager.Manager object at 0x435ec50>
class evaluation.models.EvalItemEvalref(*args, **kwargs)
Bases : django.db.models.base.Model
EvalItemEvalref(id, item_id, answer_id, condition, evalref_id, evrtext, title, rtype)
param evrtext Evrtext
type evrtext CharField
param title Title
type title CharField
param rtype Rtype
type rtype CharField
param item Item
type item ForeignKey to EvalItem
param answer Answer
type answer ForeignKey to EvalItemAnswer
param evalref Evalref
type evalref ForeignKey to EvalRefItem
param id Id
type id AutoField
param condition Condition
type condition CharField
exception EvalItemEvalref.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalItemEvalref.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalItemEvalref.answer
EvalItemEvalref.evalpaperevalitemevalref_set
EvalItemEvalref.evalref
EvalItemEvalref.item
EvalItemEvalref.objects = <django.db.models.manager.Manager object at 0x4364610>
class evaluation.models.EvalItemPoint(*args, **kwargs)
Bases : django.db.models.base.Model
EvalItemPoint(id, item_id, answer_id, condition, title, ptype)
param title Title
type title CharField
param ptype Ptype
type ptype CharField
param item Item
type item ForeignKey to EvalItem
param answer Answer
2.9. Documentation des objets pyrhon
55
Eskollz Documentation, Version 0.0.3-dev
type answer ForeignKey to EvalItemAnswer
param id Id
type id AutoField
param condition Condition
type condition CharField
exception EvalItemPoint.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalItemPoint.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalItemPoint.answer
EvalItemPoint.evalpaperevalitempoint_set
EvalItemPoint.item
EvalItemPoint.objects = <django.db.models.manager.Manager object at 0x4362dd0>
class evaluation.models.EvalPaper(*args, **kwargs)
Bases : django.db.models.base.Model
EvalPaper(id, evaluation_id, ufor, uby)
param ufor Ufor
type ufor CharField
param evaluation Evaluation
type evaluation ForeignKey to Evaluation
param id Id
type id AutoField
param uby Uby
type uby CharField
exception EvalPaper.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalPaper.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalPaper.evalpaperanswer_set
EvalPaper.evaluation
EvalPaper.objects = <django.db.models.manager.Manager object at 0x4364a90>
class evaluation.models.EvalPaperAnswer(*args, **kwargs)
Bases : django.db.models.base.Model
EvalPaperAnswer(id, paper_id, evalitem_id)
param paper Paper
type paper ForeignKey to EvalPaper
param id Id
type id AutoField
param evalitem Evalitem
type evalitem ForeignKey to EvalItem
exception EvalPaperAnswer.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalPaperAnswer.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalPaperAnswer.evalitem
EvalPaperAnswer.evalpaperevalitem_set
EvalPaperAnswer.evalpaperevalitemevalref_set
EvalPaperAnswer.objects = <django.db.models.manager.Manager object at 0x4364f50>
56
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
EvalPaperAnswer.paper
class evaluation.models.EvalPaperEvalitem(*args, **kwargs)
Bases : django.db.models.base.Model
EvalPaperEvalitem(id, evalitem_id, answer_id, uby, status, comments)
param status Status
type status CharField
param uby Uby
type uby CharField
param comments Comments
type comments TextField
param answer Answer
type answer ForeignKey to EvalPaperAnswer
param id Id
type id AutoField
param evalitem Evalitem
type evalitem ForeignKey to EvalItem
exception EvalPaperEvalitem.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalPaperEvalitem.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalPaperEvalitem.answer
EvalPaperEvalitem.evalitem
EvalPaperEvalitem.evalpaperevalitempoint_set
EvalPaperEvalitem.objects = <django.db.models.manager.Manager object at 0x43675d0>
class evaluation.models.EvalPaperEvalitemEvalref(*args, **kwargs)
Bases : django.db.models.base.Model
EvalPaperEvalitemEvalref(id, anseval_id, evalrefref_id, evalref_id, evrtext, title, rtype, result, status,
comments)
param status Status
type status CharField
param evrtext Evrtext
type evrtext CharField
param title Title
type title CharField
param anseval Anseval
type anseval ForeignKey to EvalPaperAnswer
param rtype Rtype
type rtype CharField
param comments Comments
type comments TextField
param evalrefref Evalrefref
type evalrefref ForeignKey to EvalItemEvalref
param result Result
type result CharField
param evalref Evalref
type evalref ForeignKey to EvalRefItem
2.9. Documentation des objets pyrhon
57
Eskollz Documentation, Version 0.0.3-dev
param id Id
type id AutoField
exception EvalPaperEvalitemEvalref.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalPaperEvalitemEvalref.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalPaperEvalitemEvalref.anseval
EvalPaperEvalitemEvalref.evalref
EvalPaperEvalitemEvalref.evalrefref
EvalPaperEvalitemEvalref.objects = <django.db.models.manager.Manager object at 0x43695d0>
class evaluation.models.EvalPaperEvalitemPoint(*args, **kwargs)
Bases : django.db.models.base.Model
EvalPaperEvalitemPoint(id, pevalitem_id, pointref_id, result, ptype, status, comments)
param status Status
type status CharField
param pointref Pointref
type pointref ForeignKey to EvalItemPoint
param ptype Ptype
type ptype CharField
param pevalitem Pevalitem
type pevalitem ForeignKey to EvalPaperEvalitem
param result Result
type result IntegerField
param id Id
type id AutoField
param comments Comments
type comments TextField
exception EvalPaperEvalitemPoint.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalPaperEvalitemPoint.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalPaperEvalitemPoint.objects = <django.db.models.manager.Manager object at 0x4367c90>
EvalPaperEvalitemPoint.pevalitem
EvalPaperEvalitemPoint.pointref
class evaluation.models.EvalRefItem(*args, **kwargs)
Bases : mptt.models.MPTTModel
EvalRefItem(id, code, parent_id, title, description, evalmode, condition)
param rght Rght
type rght PositiveIntegerField
param code Code
type code CharField
param description Description
type description TextField
param parent Parent
type parent TreeForeignKey to EvalRefItem
param title Title
type title CharField
58
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
param tree_id Tree id
type tree_id PositiveIntegerField
param lft Lft
type lft PositiveIntegerField
param evalmode Evalmode
type evalmode CharField
param level Level
type level PositiveIntegerField
param id Id
type id AutoField
param condition Condition
type condition CharField
exception EvalRefItem.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalRefItem.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalRefItem.children
EvalRefItem.evalitemevalref_set
EvalRefItem.evalpaperevalitemevalref_set
EvalRefItem.ldest
EvalRefItem.lsrc
EvalRefItem.objects = <mptt.managers.TreeManager object at 0x435c150>
EvalRefItem.parent
class evaluation.models.EvalRefItemLink(*args, **kwargs)
Bases : django.db.models.base.Model
EvalRefItemLink(id, src_id, dest_id, mode, condition)
param dest Dest
type dest ForeignKey to EvalRefItem
param src Src
type src ForeignKey to EvalRefItem
param id Id
type id AutoField
param condition Condition
type condition CharField
param mode Mode
type mode CharField
exception EvalRefItemLink.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception EvalRefItemLink.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
EvalRefItemLink.dest
EvalRefItemLink.objects = <django.db.models.manager.Manager object at 0x435c910>
EvalRefItemLink.src
class evaluation.models.Evaluation(*args, **kwargs)
Bases : django.db.models.base.Model
Evaluation model, stores folder and description.
param etype Type d’évaluation
2.9. Documentation des objets pyrhon
59
Eskollz Documentation, Version 0.0.3-dev
type etype CharField
param description Description rapide
type description TextField
param id Id
type id AutoField
param title Titre de l’évaluation
type title CharField
exception Evaluation.DoesNotExist
Bases : django.core.exceptions.ObjectDoesNotExist
exception Evaluation.MultipleObjectsReturned
Bases : django.core.exceptions.MultipleObjectsReturned
Evaluation.TYPES = ((‘PMC’, <django.utils.functional.__proxy__ object at 0x435c8d0>), (‘IMC’, <django.utils.fu
Evaluation.evalitem_set
Evaluation.evalpaper_set
Evaluation.get_etype_display(*moreargs, **morekwargs)
Evaluation.objects = <django.db.models.manager.Manager object at 0x435cf50>
urls Module
views Module
class evaluation.views.EvalItemAnswerDocumentListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalItemAnswerDocumentListCreateView.filter_fields = ()
EvalItemAnswerDocumentListCreateView.permission_classes = []
EvalItemAnswerDocumentListCreateView.queryset
EvalItemAnswerDocumentListCreateView.serializer_class
alias de EvalItemAnswerDocumentListSerializer
class evaluation.views.EvalItemAnswerDocumentRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalItemAnswerDocumentRetrieveUpdateDestroyView.permission_classes = []
EvalItemAnswerDocumentRetrieveUpdateDestroyView.queryset
EvalItemAnswerDocumentRetrieveUpdateDestroyView.serializer_class
alias de EvalItemAnswerDocumentDetailSerializer
class evaluation.views.EvalItemAnswerListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalItemAnswerListCreateView.filter_fields = ()
EvalItemAnswerListCreateView.permission_classes = []
EvalItemAnswerListCreateView.queryset
EvalItemAnswerListCreateView.serializer_class
alias de EvalItemAnswerListSerializer
class evaluation.views.EvalItemAnswerRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalItemAnswerRetrieveUpdateDestroyView.permission_classes = []
EvalItemAnswerRetrieveUpdateDestroyView.queryset
EvalItemAnswerRetrieveUpdateDestroyView.serializer_class
alias de EvalItemAnswerDetailSerializer
class evaluation.views.EvalItemDocumentListCreateView(**kwargs)
60
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
Bases : rest_framework.generics.ListCreateAPIView
EvalItemDocumentListCreateView.filter_fields = ()
EvalItemDocumentListCreateView.permission_classes = []
EvalItemDocumentListCreateView.queryset
EvalItemDocumentListCreateView.serializer_class
alias de EvalItemDocumentListSerializer
class evaluation.views.EvalItemDocumentRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalItemDocumentRetrieveUpdateDestroyView.permission_classes = []
EvalItemDocumentRetrieveUpdateDestroyView.queryset
EvalItemDocumentRetrieveUpdateDestroyView.serializer_class
alias de EvalItemDocumentDetailSerializer
class evaluation.views.EvalItemEvalrefListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalItemEvalrefListCreateView.filter_fields = ()
EvalItemEvalrefListCreateView.permission_classes = []
EvalItemEvalrefListCreateView.queryset
EvalItemEvalrefListCreateView.serializer_class
alias de EvalItemEvalrefListSerializer
class evaluation.views.EvalItemEvalrefRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalItemEvalrefRetrieveUpdateDestroyView.permission_classes = []
EvalItemEvalrefRetrieveUpdateDestroyView.queryset
EvalItemEvalrefRetrieveUpdateDestroyView.serializer_class
alias de EvalItemEvalrefDetailSerializer
class evaluation.views.EvalItemListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalItemListCreateView.filter_fields = ()
EvalItemListCreateView.permission_classes = []
EvalItemListCreateView.queryset
EvalItemListCreateView.serializer_class
alias de EvalItemListSerializer
class evaluation.views.EvalItemPointListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalItemPointListCreateView.filter_fields = ()
EvalItemPointListCreateView.permission_classes = []
EvalItemPointListCreateView.queryset
EvalItemPointListCreateView.serializer_class
alias de EvalItemPointListSerializer
class evaluation.views.EvalItemPointRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalItemPointRetrieveUpdateDestroyView.permission_classes = []
EvalItemPointRetrieveUpdateDestroyView.queryset
EvalItemPointRetrieveUpdateDestroyView.serializer_class
alias de EvalItemPointDetailSerializer
class evaluation.views.EvalItemRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalItemRetrieveUpdateDestroyView.permission_classes = []
2.9. Documentation des objets pyrhon
61
Eskollz Documentation, Version 0.0.3-dev
EvalItemRetrieveUpdateDestroyView.queryset
EvalItemRetrieveUpdateDestroyView.serializer_class
alias de EvalItemDetailSerializer
class evaluation.views.EvalPaperAnswerListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalPaperAnswerListCreateView.filter_fields = ()
EvalPaperAnswerListCreateView.permission_classes = []
EvalPaperAnswerListCreateView.queryset
EvalPaperAnswerListCreateView.serializer_class
alias de EvalPaperAnswerListSerializer
class evaluation.views.EvalPaperAnswerRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalPaperAnswerRetrieveUpdateDestroyView.permission_classes = []
EvalPaperAnswerRetrieveUpdateDestroyView.queryset
EvalPaperAnswerRetrieveUpdateDestroyView.serializer_class
alias de EvalPaperAnswerDetailSerializer
class evaluation.views.EvalPaperEvalitemEvalrefListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalPaperEvalitemEvalrefListCreateView.filter_fields = ()
EvalPaperEvalitemEvalrefListCreateView.permission_classes = []
EvalPaperEvalitemEvalrefListCreateView.queryset
EvalPaperEvalitemEvalrefListCreateView.serializer_class
alias de EvalPaperEvalitemEvalrefListSerializer
class evaluation.views.EvalPaperEvalitemEvalrefRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalPaperEvalitemEvalrefRetrieveUpdateDestroyView.permission_classes = []
EvalPaperEvalitemEvalrefRetrieveUpdateDestroyView.queryset
EvalPaperEvalitemEvalrefRetrieveUpdateDestroyView.serializer_class
alias de EvalPaperEvalitemEvalrefDetailSerializer
class evaluation.views.EvalPaperEvalitemListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalPaperEvalitemListCreateView.filter_fields = ()
EvalPaperEvalitemListCreateView.permission_classes = []
EvalPaperEvalitemListCreateView.queryset
EvalPaperEvalitemListCreateView.serializer_class
alias de EvalPaperEvalitemListSerializer
class evaluation.views.EvalPaperEvalitemPointListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalPaperEvalitemPointListCreateView.filter_fields = ()
EvalPaperEvalitemPointListCreateView.permission_classes = []
EvalPaperEvalitemPointListCreateView.queryset
EvalPaperEvalitemPointListCreateView.serializer_class
alias de EvalPaperEvalitemPointListSerializer
class evaluation.views.EvalPaperEvalitemPointRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalPaperEvalitemPointRetrieveUpdateDestroyView.permission_classes = []
EvalPaperEvalitemPointRetrieveUpdateDestroyView.queryset
62
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
EvalPaperEvalitemPointRetrieveUpdateDestroyView.serializer_class
alias de EvalPaperEvalitemPointDetailSerializer
class evaluation.views.EvalPaperEvalitemRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalPaperEvalitemRetrieveUpdateDestroyView.permission_classes = []
EvalPaperEvalitemRetrieveUpdateDestroyView.queryset
EvalPaperEvalitemRetrieveUpdateDestroyView.serializer_class
alias de EvalPaperEvalitemDetailSerializer
class evaluation.views.EvalPaperListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalPaperListCreateView.filter_fields = ()
EvalPaperListCreateView.permission_classes = []
EvalPaperListCreateView.queryset
EvalPaperListCreateView.serializer_class
alias de EvalPaperListSerializer
class evaluation.views.EvalPaperRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalPaperRetrieveUpdateDestroyView.permission_classes = []
EvalPaperRetrieveUpdateDestroyView.queryset
EvalPaperRetrieveUpdateDestroyView.serializer_class
alias de EvalPaperDetailSerializer
class evaluation.views.EvalRefItemLinkListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvalRefItemLinkListCreateView.filter_fields = ()
EvalRefItemLinkListCreateView.permission_classes = []
EvalRefItemLinkListCreateView.queryset
EvalRefItemLinkListCreateView.serializer_class
alias de EvalRefItemLinkListSerializer
class evaluation.views.EvalRefItemLinkRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalRefItemLinkRetrieveUpdateDestroyView.permission_classes = []
EvalRefItemLinkRetrieveUpdateDestroyView.queryset
EvalRefItemLinkRetrieveUpdateDestroyView.serializer_class
alias de EvalRefItemLinkDetailSerializer
class evaluation.views.EvalRefItemListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
Liste (et création) d’éléments de référence pour l’évaluation.
Urls API :
– GET /evals/evalrefitems{?q,type,parent,depth}
– POST /evals/evalrefitems
Utiliser evaluation.serializers.EvalRefItemListSerializer pour la sérialisation.
Accès :
– pour mode “acad” : lecture = utilisateurs identifiés, écriture/suppression : superuser
– pour mode “etab” : lecture = users & in etab, ecriture/suppression : owner & wgroup
– pour mode “retricted” : lecture = users & in rgroup, ecriture/suppression : owner & wgroup
EvalRefItemListCreateView.filter_fields = ()
EvalRefItemListCreateView.permission_classes = []
EvalRefItemListCreateView.queryset
EvalRefItemListCreateView.serializer_class
alias de EvalRefItemListSerializer
2.9. Documentation des objets pyrhon
63
Eskollz Documentation, Version 0.0.3-dev
class evaluation.views.EvalRefItemRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvalRefItemRetrieveUpdateDestroyView.permission_classes = []
EvalRefItemRetrieveUpdateDestroyView.queryset
EvalRefItemRetrieveUpdateDestroyView.serializer_class
alias de EvalRefItemDetailSerializer
class evaluation.views.EvaluationListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
EvaluationListCreateView.filter_fields = (‘etype’,)
EvaluationListCreateView.permission_classes = []
EvaluationListCreateView.queryset
EvaluationListCreateView.serializer_class
alias de EvaluationListSerializer
class evaluation.views.EvaluationRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
EvaluationRetrieveUpdateDestroyView.permission_classes = []
EvaluationRetrieveUpdateDestroyView.queryset
EvaluationRetrieveUpdateDestroyView.serializer_class
alias de EvaluationDetailSerializer
2.9.7 planning Package
planning Package
models Module
urls Module
views Module
2.10 Permissions
Gestion des permissions dans l’api
– par utilisateur : chaque objet peut être ou pas accédé par un utilisateur, en écriture en lecture, en création de
sous-objets de chaque type
– par établissement : des objets sont disponibles pour chaque prof appartenant à un établissement
2.10.1 Par utilisateur
userpermissions : user permission
object.get_list(user, perms, operation, date, err403)
object.assign_perms(user, perms, datein, dateout)
object.get_perms()
64
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
2.11 TODO List
À faire
Procédure installation sous mac OS X (brew ?)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/doc/install.rst, à la ligne 54.)
À faire
Procédure installation sous Window$ ( ?)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/doc/install.rst, à la ligne 62.)
À faire
rajouter des détails dans les rôles utilisateurs.
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.Lab, à la ligne 13.)
À faire
Ajouter (ou étendre à partir modèle) les champs utiles
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabCategory, à la ligne 5.)
À faire
Revoir les champs nécessaires
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabItem, à la ligne 3.)
À faire
Revoir les champs nécessaires
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabItemLog, à la ligne 3.)
À faire
Revoir les champs nécessaires, voir lien avec log
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabItemProvider, à la ligne 3.)
À faire
Revoir les champs nécessaires
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabItemSecurity, à la ligne 3.)
À faire
Revoir les champs nécessaires, voir lien avec log
2.11. TODO List
65
Eskollz Documentation, Version 0.0.3-dev
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabItemStorage, à la ligne 3.)
À faire
Possibilité de liaison avec version “établissement” des fournisseurs.
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabProvider, à la ligne 3.)
À faire
Ajouter (ou étendre à partir modèle) les champs utiles
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabProvider, à la ligne 5.)
À faire
Ajouter (ou étendre à partir modèle) les champs utiles
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabStorage, à la ligne 5.)
À faire
faire l’inventaire de ce qui est utilisé
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabUnit, à la ligne 3.)
À faire
intégrer les fonctionnalités du projet Units (conversions..)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.LabUnit, à la ligne 4.)
À faire
Rajouter la gestion des traductions.
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/models.py :docstring of lab.models.SecurityPicto, à la ligne 5.)
À faire
changer le type de résultats.
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.LabItemFilter, à la ligne 8.)
À faire
tests
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.LabItemFilter, à la ligne 10.)
À faire
voir pourquoi pas FullSerializer
66
Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.LabItemLogRetrieveUpdateDestroyView, à la ligne 16.)
À faire
voir pourquoi pas FullSerializer
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.LabItemProviderRetrieveUpdateDestroyView, à la ligne 16.)
À faire
voir pourquoi pas FullSerializer
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.LabItemSecurityRetrieveUpdateDestroyView, à la ligne 16.)
À faire
voir pourquoi pas FullSerializer
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.LabItemStorageRetrieveUpdateDestroyView, à la ligne 16.)
À faire
SEE : Empêcher le “hara-kiri” d’un responsable de laboratoire ?
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.LabUpdatePeopleView, à la ligne 6.)
À faire
ajouter la possibilité de filtrer (par type / mot)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.SecurityPictoListCreateView, à la ligne 12.)
À faire
ajouter la possibilité de filtrer (par type / mot)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.SecurityPictoRetrieveUpdateDestroyView, à la ligne 13.)
À faire
ajouter la possibilité de filtrer (par langue / type / mot)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.SecuritySentenceListCreateView, à la ligne 12.)
À faire
voir la nécessité de pagination (lourd ?)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.SecuritySentenceListCreateView, à la ligne 13.)
À faire
2.11. TODO List
67
Eskollz Documentation, Version 0.0.3-dev
ajouter la possibilité de filtrer (par type / mot)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.UnitListCreateView, à la ligne 12.)
À faire
ajouter la possibilité de filtrer (par type / mot)
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/views.py :docstring of lab.views.UnitRetrieveUpdateDestroyView, à la ligne 13.)
À faire
Ajouter les URLS de l’API pour consultation/modificaiton des users.
(L’entrée originale se trouve dans /var/build/user_builds/eskollz-api/checkouts/latest/eskollzapi/lab/serializers.py :docstring of lab.serializers.LabSerializer, à la ligne 11.)
68
Chapitre 2. Table des matières
CHAPITRE 3
Index et tables
–
–
–
–
HTTP Routing
genindex
modindex
search
69
Eskollz Documentation, Version 0.0.3-dev
70
Chapitre 3. Index et tables
HTTP Routing Table
/eval
GET
GET
GET
GET
GET
GET
GET
GET
GET
GET
GET /eval/evaluations/{id}/items/{idi}/documents/
??
/eval/evalrefitems, ??
PATCH
/eval/evaluations/{id}/items/{idi}/document
/eval/evalrefitems/{pkeri}, ??
??
/eval/evalrefitems/{pkeri}/links,
PUT
/eval/evaluations/{id}/items/{idi}/documents/
??
/eval/evalrefitems/{pkeri}/links/{erilpk},??
DELETE /eval/evaluations/{id}/items/{idi}/documen
??
??
/eval/evaluation/{ide}/papers/, ??
GET /eval/evaluations/{id}/items/{idi}/evalref,
/eval/evaluation/{ide}/papers/{cid},
??
??
GET /eval/evaluations/{id}/items/{idi}/evalref/{i
/eval/evaluation/{ide}/papers/{cid}/items/{iid},
??
??
GET /eval/evaluations/{id}/items/{idi}/points,
/eval/evaluation/{ide}/papers/{cid}/items/{iid}/answers,
??
??
GET /eval/evaluations/{id}/items/{idi}/points/{id
/eval/evaluation/{ide}/papers/{cid}/items/{iid}/answers/{aid},
??
??
GET /eval/papers/, ??
/eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals,
??
/labs
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid},
GET /labs, 9
??
POST /labs, 9
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}/evalref,
POST /labs/secpictos, 7
??
GET /labs/secpictos/{id}, 7
GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}/points,
PATCH /labs/secpictos/{id}, 7
??
PUT /labs/secpictos/{id}, 7
GET /eval/evaluations/{?q,folder,status,...},
DELETE /labs/secpictos/{id}, 7
??
GET /labs/secpictos{?q,lang,type}, 6
POST /eval/evaluations/{?q,folder,status,...},
POST /labs/secsentences, 5
??
GET /labs/secsentences/{id}, 5
GET /eval/evaluations/{id}, ??
PATCH /labs/secsentences/{id}, 6
PATCH /eval/evaluations/{id}, ??
PUT /labs/secsentences/{id}, 6
PUT /eval/evaluations/{id}, ??
DELETE /labs/secsentences/{id}, 6
DELETE /eval/evaluations/{id}, ??
GET /labs/secsentences{?q,lang,type},
GET /eval/evaluations/{id}/items, ??
5
POST /eval/evaluations/{id}/items, ??
GET /eval/evaluations/{id}/items/{idi}, POST /labs/units, 8
GET /labs/units/{id}, 8
??
PATCH /labs/units/{id}, 8
GET /eval/evaluations/{id}/items/{idi}/answers,
PUT /labs/units/{id}, 8
??
DELETE /labs/units/{id}, 9
GET /eval/evaluations/{id}/items/{idi}/answers/{idc},
GET /labs/units{?q,lang,type}, 8
??
GET /labs/{idlab}, 10
GET /eval/evaluations/{id}/items/{idi}/documents,
PATCH /labs/{idlab}, 10
??
PUT /labs/{idlab}, 10
POST /eval/evaluations/{id}/items/{idi}/documents,
DELETE /labs/{idlab}, 10
??
GET /labs/{idlab}/categories, 12
71
Eskollz Documentation, Version 0.0.3-dev
POST /labs/{idlab}/categories, 12
PATCH /labs/{idlab}/items/{iditem}/storages/{idst
GET /labs/{idlab}/categories/{idcategorie},
19
12
PUT /labs/{idlab}/items/{iditem}/storages/{idstor
PATCH /labs/{idlab}/categories/{idcategorie}, 19
13
DELETE /labs/{idlab}/items/{iditem}/storages/{ids
PUT /labs/{idlab}/categories/{idcategorie},
19
12
GET /labs/{idlab}/providers, 11
DELETE /labs/{idlab}/categories/{idcategorie},
POST /labs/{idlab}/providers, 11
13
GET /labs/{idlab}/providers/{idprovider},
GET /labs/{idlab}/items, 14
11
POST /labs/{idlab}/items, 14
PATCH /labs/{idlab}/providers/{idprovider},
GET /labs/{idlab}/items/{iditem}, 15
12
PATCH /labs/{idlab}/items/{iditem}, 15 PUT /labs/{idlab}/providers/{idprovider},
PUT /labs/{idlab}/items/{iditem}, 14
11
DELETE /labs/{idlab}/items/{iditem},
DELETE /labs/{idlab}/providers/{idprovider},
15
12
GET /labs/{idlab}/items/{iditem}/logs, PUT /labs/{idlab}/resp/{iduser}, 10
16
DELETE /labs/{idlab}/resp/{iduser}, 10
POST /labs/{idlab}/items/{iditem}/logs, GET /labs/{idlab}/storages, 13
16
POST /labs/{idlab}/storages, 13
GET /labs/{idlab}/items/{iditem}/logs/{idlog},
GET /labs/{idlab}/storages/{idstorage},
16
13
PATCH /labs/{idlab}/items/{iditem}/logs/{idlog},
PATCH /labs/{idlab}/storages/{idstorage},
17
14
PUT /labs/{idlab}/items/{iditem}/logs/{idlog},
PUT /labs/{idlab}/storages/{idstorage},
17
13
DELETE /labs/{idlab}/items/{iditem}/logs/{idlog},
DELETE /labs/{idlab}/storages/{idstorage},
17
14
GET /labs/{idlab}/items/{iditem}/providers,
PUT /labs/{idlab}/tech/{iduser}, 11
17
DELETE /labs/{idlab}/tech/{iduser}, 11
POST /labs/{idlab}/items/{iditem}/providers,
/people
17
GET /labs/{idlab}/items/{iditem}/providers/{idprovider},
POST /people/students/create, ??
17
POST /people/students/fromcsv, ??
PATCH /labs/{idlab}/items/{iditem}/providers/{idprovider},
POST /people/teachers/subscribe, ??
18
GET /people/teachers/subscribe/confirm/{confirmco
PUT /labs/{idlab}/items/{iditem}/providers/{idprovider},
??
18
DELETE /labs/{idlab}/items/{iditem}/providers/{idprovider},
18
GET /labs/{idlab}/items/{iditem}/security,
15
POST /labs/{idlab}/items/{iditem}/security,
15
GET /labs/{idlab}/items/{iditem}/security/{idsecurity},
15
PATCH /labs/{idlab}/items/{iditem}/security/{idsecurity},
16
PUT /labs/{idlab}/items/{iditem}/security/{idsecurity},
16
DELETE /labs/{idlab}/items/{iditem}/security/{idsecurity},
16
GET /labs/{idlab}/items/{iditem}/storages,
18
POST /labs/{idlab}/items/{iditem}/storages,
18
GET /labs/{idlab}/items/{iditem}/storages/{idstorage},
18
72
HTTP Routing Table
Index des modules Python
e
evaluation, ??
evaluation.models, ??
evaluation.urls, ??
evaluation.views, ??
f
folder, ??
folder.models, ??
folder.permissions, ??
folder.serializers, ??
folder.urls, ??
folder.views, ??
g
group, ??
group.models, ??
group.urls, ??
group.views, ??
l
lab, 21
lab.models, 21
lab.serializers, 30
lab.views, 24
p
people, ??
people.models, ??
people.serializers, ??
people.tests.test_student_create, ??
people.tests.test_teacher_subscribe,
??
people.urls, ??
people.views, ??
planning, ??
planning.models, ??
planning.urls, ??
planning.views, ??
s
school, 33
school.models, 33
school.urls, 34
school.views, 34
73