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