Eskollz DocumentationVersion 0.0.3-dev
Jean-Matthieu BARBIER
01 March 2014
Table des matières
1 Installation 31.1 Installation sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Installation sous MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 API Laboratoires 52.1 Elements communs à tous les laboratoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Eléments spécifiques d’un laboratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Eléments d’inventaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Modules 213.1 lab Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2 school Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4 Permissions 354.1 Par utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 sciencesSont 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-apicd eskollz-api
Installation des dépendances et test
virtualenv venvsource venv/bin/activatepip install -r requirements.txt# Uniquement pour le développementpip install -r requirements-dev.txt# Choix des "settings" selon usage, voir documentation de settingsDANGO_SETTINGS_MODULE=eskollzapi.settings.localtestpython eskollzapi/settings.py test
Configuration
cd eskollzapiexport DATABASE_URL=""# Autres exports nécessaires selon settings choisispython manage.py syncdb --migratepython manage.py runserver
3
https://eskollz.com/demo/api/
Eskollz Documentation, Version 0.0.3-dev
Installation sous MacOS X
À faireProcé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
À faireProcé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.txtcd docmake 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 gandipossible 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’ordid’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/subscribeInscription 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.1Accept: 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èveLa 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.1Accept: 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 (in) etpeople.serializers.PersonDetailSerializer (out)
–Tests : people.tests.test_student_create.StudentCreateTest
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’étudiantsPOST /people/students/fromcsv
Création d’étudiants par lots via un fichier csv. Le fichier csv doit contenir les champs nom, prénom, datede 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 sup-pression 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/secsentencessuperuser 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/secpictossuperuser 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 mesureVue 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/unitssuperuser 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 utili-sateurs du laboratoire, et en lecture/écriture pour les techniciens et responsables de laboratoire (sauf le laboratoirelui-même, modifiable uniquement par le responsable).
Liste des laboratoires
GET /labsAffichage des laboratoires accessibles à un utilisateur (laboratoires dans lesquel l’utilisateur identifié estresponsable / 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 /labsCré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 laboratoire. Itentique à DELETE/labs/{idlab}/resp/{iduser}
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}/providersListe 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}/providersCré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.LabProviderRetrieveUpdateDestroyViewAccè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.LabProviderRetrieveUpdateDestroyViewAccè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}/categoriesListe 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}/categoriesCré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.LabCategoryRetrieveUpdateDestroyViewAccè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.LabCategoryRetrieveUpdateDestroyViewAccè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}/storagesListe 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}/storagesCré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.LabStorageRetrieveUpdateDestroyViewAccè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.LabStorageRetrieveUpdateDestroyViewAccè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}/itemsListe 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}/itemsCré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’inventaireVue 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}/securityListe 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}/securityCré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}/logsListe 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}/logsCré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
http:put:/labs
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}/providersListe 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}/providersCré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
http:put:/labs
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}/storagesListe 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}/storagesCré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
http:put:/labs
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/evalrefitemsListe 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}/linksLiens 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
http:put:/labs
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}/itemsListe des éléments de contenu d’une évaluation
POST /eval/evaluations/{id}/itemsCré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 Schoolstype schools ManyToManyFieldparam is_admin Is admintype is_admin BooleanFieldparam id Idtype id AutoFieldparam user Usertype user OneToOneField to User
exception Admin.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Admin.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedAdmin.objects = 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 Phone2type phone2 CharFieldparam address2 Address2type address2 TextFieldparam comments Commentstype comments TextFieldparam phone Phonetype phone CharFieldparam user Usertype user OneToOneField to Userparam mobile Mobiletype mobile CharFieldparam address Addresstype address TextFieldparam email2 Email2type email2 EmailFieldparam id Idtype id AutoFieldparam mobile2 Mobile2type mobile2 CharField
exception Contact.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Contact.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedContact.objects = 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 @/./+/-/_ cha-racters
type username CharFieldparam first_name First nametype first_name CharFieldparam last_name Last nametype last_name CharFieldparam is_active Designates whether this user should be treated as active. Unselect this
instead of deleting accounts.
type is_active BooleanFieldparam email Email addresstype email EmailFieldparam is_superuser Designates that this user has all permissions without explicitly assi-
gning them.
24 Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
type is_superuser BooleanFieldparam is_staff Designates whether the user can log into this admin site.type is_staff BooleanFieldparam last_login Last logintype last_login DateTimeFieldparam groups The groups this user belongs to. A user will get all permissions granted to
each of his/her group.
type groups ManyToManyFieldparam user_permissions Specific permissions for this user.type user_permissions ManyToManyFieldparam password Passwordtype password CharFieldparam id Idtype id AutoFieldparam date_joined Date joinedtype date_joined DateTimeField
exception EUser.DoesNotExistBases : django.contrib.auth.models.DoesNotExistexception EUser.MultipleObjectsReturnedBases : django.contrib.auth.models.MultipleObjectsReturnedEUser.add_group(group, datein=None, dateout=None)
Ajoute l’utilisateur à un groupe. @param group Groupe @param datein (facultatif) : date d’arri-vé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.editfoldersEUser.get_absolute_url(*moreargs, **morekwargs)EUser.get_groups(dte=datetime.datetime(2014, 3, 1, 0, 46, 5, 719343,
tzinfo=))Récupère (queryset Group) les groupes auxquels appartient l’utilisateur à la date donnée. @pa-ram dte (facultatif) : date de recherche des groupes (défaut : date courante)
EUser.objects = EUser.ownfolders
EUser.remove_group(group, datein=None, dateout=None)Supprime l’utilisateur d’un groupe. @param group Groupe @param datein (facultatif) : datede début de suppression (défaut : date courante) @param dateout (facultatif) : date de fin desuppression (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 Iden-tity (user.identity.) : autres prénoms, date de naissance, nom de jeune fille
param comments Commentstype comments TextFieldparam maidenname Maidennametype maidenname CharFieldparam birthday Birthdaytype birthday DateFieldparam firstname4 Firstname4type firstname4 CharField
2.9. Documentation des objets pyrhon 25
Eskollz Documentation, Version 0.0.3-dev
param firstname3 Firstname3type firstname3 CharFieldparam firstname2 Firstname2type firstname2 CharFieldparam id Idtype id AutoFieldparam user Usertype user OneToOneField to User
exception Identity.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Identity.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedIdentity.objects = 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 Commentstype comments TextFieldparam user Usertype user OneToOneField to Userparam acadid Acadidtype acadid CharFieldparam schools Schoolstype schools ManyToManyFieldparam is_student Is studenttype is_student BooleanFieldparam id Idtype id AutoField
exception Student.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Student.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedStudent.objects = Student.schoolsStudent.user
class people.models.Teacher(*args, **kwargs)
Bases : django.db.models.base.Model
Informations supplémenteaires pour user teacher.
param schools Schoolstype schools ManyToManyFieldparam is_teacher Is teachertype is_teacher BooleanFieldparam id Idtype id AutoFieldparam comments Commentstype comments TextField
26 Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
param user Usertype user OneToOneField to User
exception Teacher.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Teacher.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedTeacher.objects = 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 pkGetUserMixin.get_queryset_for_user()GetUserMixin.get_user()
GetUserMixin.kwargs = NoneGetUserMixin.request = NoneGetUserMixin.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 = []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 = [, ]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 = [, ]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) établisse-
ment(s)– administrateur : toutAccès en écriture (création) :– utilisateurs anonymes : aucun– élèves : aucun– enseignants : aucun (à voir)– administrateur : OKParamè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 filtresPersonListCreateView.filter_backends = (, )PersonListCreateView.get_queryset()PersonListCreateView.get_serializer_class()PersonListCreateView.max_paginate_by = 500PersonListCreateView.ordering = (‘last_name’, ‘first_name’, ‘identity__birthday’, ‘identity__firstname2’)PersonListCreateView.paginate_by = 50PersonListCreateView.permission_classes = [, ]
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 = [, ]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 uniquementParamètres : - username : username ou adresse email principale - password : mot de passePersonRetrieveWithAuthTokenView.post(request, *args, **kwargs)
Get token :param request : Request :return : ReponsePersonRetrieveWithAuthTokenView.throttle_classes = []
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 = [, ]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 = [, ]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 = [, ]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 schoolTeacherSubscribeView.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 = [, ]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 = [, ]
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 EUserPersonAdminListSerializer.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
modelalias de EUser
PersonDetailAdminSerializer.base_fields = {}class people.serializers.PersonDetailSerializer(instance=None, data=None,
files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class PersonDetailSerializer.Meta
fields = [’id’, ‘username’, ‘email’, ‘student’, ‘teacher’, ‘first_name’, ‘last_name’, ‘contact’, ‘identity’, ‘groupmembers_set’]model
alias de EUserPersonDetailSerializer.base_fields = {‘student’ : , ‘teacher’ : , ‘contact’ : , ‘identity’ : , ‘groupmembers_set’ : }
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’ : }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 EUserPersonStudentListSerializer.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 EUserPersonTeacherListSerializer.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’ : , ‘token’ : , ‘user’ : }class people.serializers.StudentCreateSerializer(instance=None, data=None,
files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.Serializer
Données nécessaires à la création d’un étudiant.StudentCreateSerializer.base_fields = {‘lastname’ : , ‘firstname’ : , ‘firstnames’ : , ‘birthday’ : , ‘school’ : }
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’ : , ‘password’ : , ‘firstname’ : , ‘birthday’ : , ‘email’ : , ‘school’ : }
class people.serializers.UserContactSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_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 ContactUserContactSerializer.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 GroupUserGroupDetailsSerializer.base_fields = {‘members’ : }
class people.serializers.UserGroupListSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserGroupListSerializer.Meta
exclude = [’users’]model
alias de GroupUserGroupListSerializer.base_fields = {}
class people.serializers.UserGroupMembershipSerializer(instance=None,data=None, files=None,context=None, par-tial=False, many=None,allow_add_remove=False,**kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserGroupMembershipSerializer.Meta
fields = [’user’, ‘group’, ‘datein’, ‘dateout’]model
alias de GroupMembersUserGroupMembershipSerializer.base_fields = {}
class people.serializers.UserIdentitySerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserIdentitySerializer.Meta
exclude = [’user’, ‘id’]model
alias de IdentityUserIdentitySerializer.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, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserStudentSerializer.Meta
exclude = [’user’, ‘id’]model
alias de StudentUserStudentSerializer.base_fields = {}
class people.serializers.UserTeacherSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class UserTeacherSerializer.Meta
exclude = [’user’, ‘id’]model
alias de TeacherUserTeacherSerializer.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 Userstype users ManyToManyFieldparam gtype Gtypetype gtype CharFieldparam id Idtype id AutoFieldparam name Nametype name CharField
exception Group.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Group.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedGroup.add_user(user, datein=None, dateout=None)Group.get_users(dte=datetime.datetime(2014, 3, 1, 0, 46, 5, 718752,
tzinfo=))Group.groupmembers_setGroup.objects = 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 Dateouttype dateout DateTimeFieldparam datein Dateintype datein DateTimeFieldparam group Grouptype group ForeignKey to Groupparam id Idtype id AutoFieldparam user Usertype user ForeignKey to User
34 Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
exception GroupMembers.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception GroupMembers.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedGroupMembers.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.groupGroupMembers.objects = GroupMembers.user
urls Module
views Module
class group.views.GroupListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIViewGroupListCreateView.permission_classes = []GroupListCreateView.querysetGroupListCreateView.serializer_class
alias de GroupListSerializerclass group.views.GroupMixin
get_group()
class group.views.GroupRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveAPIViewGroupRetrieveUpdateDestroyView.permission_classes = []GroupRetrieveUpdateDestroyView.querysetGroupRetrieveUpdateDestroyView.serializer_class
alias de GroupDetailSerializerclass group.views.GroupUserJoinQuitView(**kwargs)
Bases : rest_framework.views.APIView, group.views.GroupMixinGroupUserJoinQuitView.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.GroupMixinGroupUserListView.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 Titletype title CharFieldparam emaildomains Emaildomainstype emaildomains TextFieldparam code Codetype code CharFieldparam id Idtype id AutoFieldparam slug Slugtype slug SlugField
exception Academy.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Academy.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedAcademy.objects = Academy.school_set
class school.models.School(*args, **kwargs)
Bases : django.db.models.base.Model
Etablissements d’enseignement.
param status Statustype status CharFieldparam categ Categtype categ CharFieldparam code Codetype code CharFieldparam city Citytype city CharFieldparam academy Academytype academy ForeignKey to Academyparam pobox Poboxtype pobox CharFieldparam id Idtype id AutoFieldparam phone Phonetype phone CharFieldparam cedex Cedextype cedex BooleanFieldparam postcode Postcodetype postcode CharFieldparam address Addresstype address TextFieldparam shortname Shortnametype shortname CharField
36 Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
param fullname Fullnametype fullname CharField
exception School.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception School.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedSchool.academySchool.admin_set
School.objects = School.student_setSchool.teacher_set
school.models.get_school_choices()
urls Module
views Module
class school.views.AcademyListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
AcademyListCreateView.permission_classes = []AcademyListCreateView.querysetAcademyListCreateView.serializer_class
alias de AcademySerializer
class school.views.AcademyRetrieveUpdateDestroyView(**kwargs)
Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView
AcademyRetrieveUpdateDestroyView.permission_classes = [, ]AcademyRetrieveUpdateDestroyView.querysetAcademyRetrieveUpdateDestroyView.serializer_class
alias de AcademySerializer
class school.views.SchoolListCreateView(**kwargs)
Bases : rest_framework.generics.ListCreateAPIView
SchoolListCreateView.filter_backends = (, )SchoolListCreateView.paginate_by = 20SchoolListCreateView.permission_classes = []SchoolListCreateView.querysetSchoolListCreateView.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 = []SchoolRetrieveUpdateDestroyView.querysetSchoolRetrieveUpdateDestroyView.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 Rghttype rght PositiveIntegerFieldparam owners Ownerstype owners ManyToManyFieldparam description Description rapidetype description TextFieldparam parent Parenttype parent TreeForeignKey to Folderparam title Titretype title CharFieldparam readers Readerstype readers ManyToManyFieldparam editors Editorstype editors ManyToManyFieldparam lft Lfttype lft PositiveIntegerFieldparam ftype Type de dossiertype ftype CharFieldparam tree_id Tree idtype tree_id PositiveIntegerFieldparam altparents Altparentstype altparents ManyToManyFieldparam level Leveltype level PositiveIntegerFieldparam id Idtype id AutoField
exception Folder.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistFolder.FOLDER_TYPES = ((‘CLA’, ‘Classe’), (‘LVL’, ‘Niveau’), (‘DIS’, ‘Dispositif’), (‘DOC’, ‘Documents’), (‘CDT’, ‘Cahier de textes’), (‘YEA’, ‘P\xc3\xa9riode’), (‘EVA’, ‘Evaluation’), (‘OTH’, ‘Autre’))exception Folder.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedFolder.allow(user, mode, recursive=True)Folder.altparentsFolder.can_admin(user)Folder.can_read(user)Folder.can_write(user)Folder.childrenFolder.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 = Folder.ownersFolder.parentFolder.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 = (, )FolderListCreateView.paginate_by = 100FolderListCreateView.permission_classes = []FolderListCreateView.pre_save(obj)FolderListCreateView.serializer_class
alias de FolderSerializer
class folder.views.FolderMixin
Bases : object
FolderMixin.get_queryset()
FolderMixin.request = Noneclass folder.views.FolderRetrieveUpdateDestroyView(**kwargs)
Bases : folder.views.FolderMixin, rest_framework.generics.RetrieveUpdateDestroyAPIView
FolderRetrieveUpdateDestroyView.permission_classes = [, ]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 = NoneFolderShareUpdateView.get(request, *args, **kwargs)FolderShareUpdateView.initial(request, *args, **kwargs)FolderShareUpdateView.operation = ‘’FolderShareUpdateView.permission_classes = []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, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class FolderDetailSerializer.Meta
exclude = [’lft’, ‘rght’, ‘tree_id’]model
alias de FolderFolderDetailSerializer.base_fields = {‘parent’ : , ‘children’ : , ‘owners’ : , ‘editors’ : , ‘readers’ : , ‘altparents’ : }
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 FolderFolderSerializer.base_fields = {‘owners’ : , ‘editors’ : , ‘readers’ : , ‘altparents’ : }
class folder.serializers.FolderSimpleSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)
Bases : rest_framework.serializers.ModelSerializer
class FolderSimpleSerializer.Meta
fields = [’id’, ‘title’, ‘description’]model
alias de FolderFolderSimpleSerializer.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 EUserFolderUserSerializer.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.
À fairerajouter 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)
À faireAjouter (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
À faireRevoir 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.
À faireRevoir 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.
À faireRevoir 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
À faireRevoir 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
À faireRevoir 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.
À fairePossibilité de liaison avec version “établissement” des fournisseurs.
À faireAjouter (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)
À faireAjouter (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.
À fairefaire l’inventaire de ce qui est utilisé
À faireinté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.
À faireRajouter 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.GetLabItemMixinRenvoie (et enregistre dans self.item) l’élément d’inventaire désigné par pkli.
class lab.views.GetLabListMixinRenvoie get_lablist une QuerySet filtrée donnant uniquement les laboratoires accessibles à l’utilisateur.
class lab.views.GetLabMixinRenvoie (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 laboratoireUrls API :–GET /labs/{idlab}/categories–POST /labs/{idlab}/categoriesserializer_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 laboratoireUrls 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.LabItemFilterRecherche 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 correspon-dant à chaque filtre.
À fairechanger le type de résultats.
44 Chapitre 2. Table des matières
Eskollz Documentation, Version 0.0.3-dev
À fairetests
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 : uti-lisation d’une propriété privée de DRF... https ://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L937
serializer_classalias 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}/logsserializer_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}
À fairevoir pourquoi pas FullSerializer
serializer_classalias de LabItemLogSerializer
class lab.views.LabItemProviderListCreateView(**kwargs)Affiche la liste des fournisseurs / commandes pour un élément de laboratoire. - Affichage : tous les utilisa-teurs 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
https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L937https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L937
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}/providersserializer_class
alias de LabItemProviderSerializer
class lab.views.LabItemProviderRetrieveUpdateDestroyView(**kwargs)Affiche les détails des fournisseurs / commandes pour un élément de laboratoire. - Affichage : tous lesutilisateurs 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}
À fairevoir pourquoi pas FullSerializer
serializer_classalias de LabItemProviderSerializer
class lab.views.LabItemRetrieveUpdateDestroyView(**kwargs)Affiche les détails, modifie ou supprime un élément de laboratoire. Affichage : tous les utilisateurs du labo-ratoire. 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 dulaboratoire. - 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}/securityserializer_class
alias de LabItemSecuritySerializer
class lab.views.LabI