+ All Categories
Home > Documents > Eskollz Documentation · Présentation Eskollz fournit des outils utiles pour les enseignants et...

Eskollz Documentation · Présentation Eskollz fournit des outils utiles pour les enseignants et...

Date post: 15-Jul-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
77
Eskollz Documentation Version 0.0.3-dev Jean-Matthieu BARBIER <[email protected]> 01 March 2014
Transcript
  • Eskollz DocumentationVersion 0.0.3-dev

    Jean-Matthieu BARBIER

    01 March 2014

  • Table des matières

    1 Installation 31.1 Installation sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Installation sous MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2 API Laboratoires 52.1 Elements communs à tous les laboratoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Eléments spécifiques d’un laboratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Eléments d’inventaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3 Modules 213.1 lab Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2 school Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4 Permissions 354.1 Par utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    5 TODO List 37

    6 Index et tables 41

    HTTP Routing Table 43

    Index des modules Python 45

    i

  • ii

  • CHAPITRE 1

    Présentation

    Eskollz fournit des outils utiles pour les enseignants et l’organisation des enseignements.

    Sont actuellement implémentés :– un outil de gestion d’un laboratoire de sciencesSont en cours de développement (ou ont été développés dans une précédente version) :– un outil de correction d’évaluations et de suivi des résultats élèves– un outil de stockage et partage de documents– un outil de création de groupes (besoins / contraintes)– un outil de communication interne– un outil de réservation de ressources– un outil de gestion de planning

    1

  • Eskollz Documentation, Version 0.0.3-dev

    2 Chapitre 1. Présentation

  • CHAPITRE 2

    Table des matières

    2.1 Installation

    Une installation fonctionnelle de démonstration est disponible à l’adresse https ://eskollz.com/demo/api/

    2.1.1 Installation pour le développement

    Installation sous Linux

    Ces instuctions sont testées sur une distribution Debian/Ubuntu pour le développement

    Prérequis :– Python (testé avec =2.7)– virtualenv– git– dépendances de construction : sur une distribution Debian/Ubuntu : build-essential libpq-dev libmysqlclient-dev

    libjpeg-dev libpng-dev libxml2-dev libxslt-dev libyaml-dev– base de données : sqlite (pour test/développement) | mysql (testé avec =5.5) | postgresql (testé avec 9.1)Clonage du dépôt

    git clone https://github.com/jmbarbier/eskollz-apicd eskollz-api

    Installation des dépendances et test

    virtualenv venvsource venv/bin/activatepip install -r requirements.txt# Uniquement pour le développementpip install -r requirements-dev.txt# Choix des "settings" selon usage, voir documentation de settingsDANGO_SETTINGS_MODULE=eskollzapi.settings.localtestpython eskollzapi/settings.py test

    Configuration

    cd eskollzapiexport DATABASE_URL=""# Autres exports nécessaires selon settings choisispython manage.py syncdb --migratepython manage.py runserver

    3

    https://eskollz.com/demo/api/

  • Eskollz Documentation, Version 0.0.3-dev

    Installation sous MacOS X

    À faireProcédure installation sous mac OS X (brew ?)

    A peu de choses près identique à celle de Linux lorsque toutes les dépendances sont satisfaites.

    Installation sous Windows

    À faireProcédure installation sous Window$ ( ?)

    Bonnes volontés attendues pour écrire cette partie :-)

    2.1.2 Générer la documentation

    Dans le répertoire eskollz-api, installation des dépendances de documentation

    pip install -r requirements-doc.txtcd docmake html # ou cible

    2.1.3 Installation en production

    Pour le déploiement en production, voir la doc de django (préférence personnelle pour supervisord + gunicorn,mais Apache|nginx + wsgi est aussi tout à fait acceptable :-). Utilisation d’un service comme heroku ou gandipossible aussi.

    2.2 API Utilisateurs

    Gestion de tous les individus du système (utilisateurs, élèves, enseignants, ...).

    2.2.1 Actions possibles

    Création

    Détails API : voir Création d’utilisateurs– création enseignant : possible pour toutes personne disposant d’une adresse académique (ou correspondant à

    un schéma donné). Association à un établissement sur déclaration de l’enseignant.– création responsable établissement : superuser seulement.– création élève : possible pour tout enseignant, recherche de correspondances au sein des élèves associés à

    l’établissement (association automatique des élèves à l’établissement) pour éviter les doublons. Si responsableétablissement, recherche de correspondances au sein des autres établissements.

    Liste

    – superuser : toutes les listes– responsable établissement : tous les profs de l’académie / tous les élèves de l’académie– enseignant : tous les profs de l’académie / tous les élèves de l’établissement

    4 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    Modification

    – superuser : tout le monde– responsable établissement : tous les élèves de l’établissement– enseignant : tous les élèves de ses groupes

    Suppression

    – superuser : n’importe qui– responsable établissement : personne– enseignant : personne

    TODO : Anonymisation des comptes élèves

    Possibilité de stocker les identifiants élèves via table de correspondances élèves / identifiants uniquement sur l’ordid’un enseignant (tordu mais faisable, pbs de gestion de groupes, ...)

    2.2.2 Détail des actions

    Création d’utilisateurs

    Inscription individuelle enseignants

    POST /people/teachers/subscribeInscription d’un enseignant.–l’email est vérifié : conformité à un domaine (ac-xxx par exemple) et par envoi d’un mail de confirmation–un identifiant d’inscription est renvoyé (pour suivi de l’état, demande de réenvoi de mail, etc...)Documentation des classes :–Vue associée : people.views.TeacherSubscribeView–Serializer : people.serializers.TeacherSubscribeSerializer–Tests : people.tests.test_teacher_subscribe.TeacherSubscribeTest

    POST /people/teachers/subscribe HTTP/1.1Accept: application/json

    {"lastname": "Jean-Matthieu","password": "supersecretpassword","firstname": "BARBIER","birthday": "1920-01-01","email": "[email protected]","school": "0270044B"

    }

    Request Headers– Accept – application/json | text/html | application/xml

    Json Parameters– last_name (string) – Nom de famille– first_name (string) – : Prénom– birthday (string) – Date de naissance– password (string) – Mot de passe– school (string) – Etablissement– email (str) – Adresse email (académique)

    Status Codes– 200 – Success– 404 – Forbidden (bad email, slow down, ...) ; la raison est donnée dans le champ “result”

    2.2. API Utilisateurs 5

  • Eskollz Documentation, Version 0.0.3-dev

    GET /people/teachers/subscribe/confirm/{confirmcode}Confirmation de l’inscription d’un enseignant. Renvoie un code 200 si l’inscription est valide ou a déjà étévalidée, ainsi que le détail de la fiche utilisateur.–Vue associée : people.views.TeacherSubscribeConfirmView–Serializer : people.serializers.PersonDetailSerializer–Tests : people.tests.test_teacher_subscribe.TeacherSubscribeTest

    Request Headers– Accept – application/json | text/html | application/xml

    Status Codes– 200 – Success– 400 – Error : code de confirmation inconnu ou autre

    Création d’étudiants

    La création d’étudiants ne peut être faite que par des enseignants. La création d’un étudiant passe par 3 étapes :– vérification de l’existence potentielle d’un élève identique– si pas d’élève identique : création réelle de l’élève– si élève “doublon” certain : remplacement par l’élève doublon– si élève “doublon” potentiel : demande de confirmation– si confirmation de création de doublon : création réelle de l’élèveLa vérification des doublons se fait :– au sein de l’établissement pour les enseignants– au sein de l’académie pour les responsables d’établissement

    Création d’un étudiant (enseignant)POST /people/students/create

    Vérification de l’existence ou non d’un étudiant. Renvoie un état dans le champ “status” :–201 : pas de doublon potentiel, étudiant créé avec les données fournies (id de l’étudiant dans le champ

    result)–200 : doublon certain, étudiant “créé” avec les données existantes (id de l’étudiant dans le champ result)–303 (NON IMPLEMENTE) : doublons potentiels, confirmation manuelle nécessaire (détails des étudiants

    fournis dans le champ result)–FORCED (NON IMPLEMENTE) : création forcée de l’étudiant malgré les doublons potentiels (champ

    force=True dans la requète)Exemple de requète

    POST /people/students/create HTTP/1.1Accept: application/json

    {"lastname": "Stud","firstname": "Ent","firstnames": "Test,Joe","birthday": "1999-01-01","school": "027044b"

    }

    –Vue associée : people.views.StudentCreateView–Serializers : people.serializers.StudentCreateSerializer (in) etpeople.serializers.PersonDetailSerializer (out)

    –Tests : people.tests.test_student_create.StudentCreateTest

    Json Parameters– last_name (string) – Nom de famille– first_name (string) – : Prénom– birthday (string) – Date de naissance– firstnames (string) – Autres prénoms (facultatif)– school (string) – Etablissement

    6 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    Création d’une liste d’étudiantsPOST /people/students/fromcsv

    Création d’étudiants par lots via un fichier csv. Le fichier csv doit contenir les champs nom, prénom, datede naissance, et optionnellement les autres prénoms.

    Modification d’utilisateurs

    Liste d’utilisateurs

    2.3 API Groupes

    2.4 API Authentification

    2.5 API Laboratoires

    2.5.1 Elements communs à tous les laboratoires

    Les données de cette API sont disponibles pour tous les utilisateurs identifiés, la modification, l’ajout et la sup-pression de données ne sont faisables que par le super administrateur.

    Phrases de sécurité

    Liste et création

    GET /labs/secsentences{?q,lang,type}Affichage des phrases de sécuritéVue associée : lab.views.SecuritySentenceListCreateView

    Query Parameters– q – Search only with q text– lang – Search with these languages– type – Filter with type

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/secsentencessuperuser uniquement. Création d’une phrase de sécurité.Vue associée : lab.views.SecuritySentenceListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Created– 403 – Forbidden

    2.3. API Groupes 7

  • Eskollz Documentation, Version 0.0.3-dev

    Détails et modification

    GET /labs/secsentences/{id}Affichage du détail d’une phrase de sécurité.Pour l’instant n’apporte rien de plus que la vue en “liste”.Vue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/secsentences/{id}superuser uniquement. Modification d’une phrase de sécurité.Vue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/secsentences/{id}superuser uniquement. Modification d’une phrase de sécuritéVue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    DELETE /labs/secsentences/{id}superuser uniquement. Suppression d’une phrase de sécuritéVue associée : lab.views.SecuritySentenceRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – No content (Success)– 403 – Forbidden

    Pictos de sécurité

    Liste et création

    GET /labs/secpictos{?q,lang,type}Affichage des pictos de sécuritéVue associée : lab.views.SecurityPictoListCreateView

    Query Parameters– q – Search only with q text– lang – Search with these languages– type – Filter with type

    Request Headers

    8 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    – Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/secpictossuperuser uniquement. Création d’une picto de sécurité.Vue associée : lab.views.SecurityPictoListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Created– 403 – Forbidden

    Détails et modification

    GET /labs/secpictos/{id}Affichage du détail d’une picto de sécurité.Pour l’instant n’apporte rien de plus que la vue en “liste”.Vue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/secpictos/{id}superuser uniquement. Modification d’une picto de sécurité.Vue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/secpictos/{id}superuser uniquement. Modification d’une picto de sécuritéVue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    DELETE /labs/secpictos/{id}superuser uniquement. Suppression d’une picto de sécuritéVue associée : lab.views.SecurityPictoRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – No content (Success)– 403 – Forbidden

    2.5. API Laboratoires 9

  • Eskollz Documentation, Version 0.0.3-dev

    Unités de mesure

    Liste et création

    GET /labs/units{?q,lang,type}Affichage des unités de mesureVue associée : lab.views.UnitsListCreateView

    Query Parameters– q – Search only with q text– lang – Search with these languages– type – Filter with type

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/unitssuperuser uniquement. Création d’une picto de sécurité.Vue associée : lab.views.UnitListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Created– 403 – Forbidden

    Détails et modification

    GET /labs/units/{id}Affichage du détail d’une picto de sécurité.Pour l’instant n’apporte rien de plus que la vue en “liste”.Vue associée : lab.views.UnitRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/units/{id}superuser uniquement. Modification d’une picto de sécurité.Vue associée : lab.views.UnitRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/units/{id}superuser uniquement. Modification d’une picto de sécuritéVue associée : lab.views.UnitRetrieveUpdateDestroyView

    Request Headers

    10 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    – Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    DELETE /labs/units/{id}superuser uniquement. Suppression d’une picto de sécuritéVue associée : lab.views.UnitRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – No content (Success)– 403 – Forbidden

    2.5.2 Eléments spécifiques d’un laboratoire

    Ces éléments ne sont accessibles que pour un laboratoire donné. Ils sont disponible en lecture seule pour les utili-sateurs du laboratoire, et en lecture/écriture pour les techniciens et responsables de laboratoire (sauf le laboratoirelui-même, modifiable uniquement par le responsable).

    Liste des laboratoires

    GET /labsAffichage des laboratoires accessibles à un utilisateur (laboratoires dans lesquel l’utilisateur identifié estresponsable / technicien / utilisateur.Vue associée : lab.views.LabListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    Création et modification d’un laboratoire

    Création

    POST /labsCréation d’un laboratoire (tout utilisateur identifié).Vue associée : lab.views.LabListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Created– 403 – Forbidden

    2.5. API Laboratoires 11

  • Eskollz Documentation, Version 0.0.3-dev

    Détails et modification

    GET /labs/{idlab}Détails d’un laboratoire (identique à la vue en liste pour l’instant).Vue associée : lab.views.LabRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}Modification d’un laboratoire (uniquement pour un responsable).Vue associée : lab.views.LabRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}Modification d’un champ d’un laboratoire (voir PUT /labs/{idlab}

    DELETE /labs/{idlab}Suppression d’un laboratoire.Vue associée : lab.views.LabRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    Modification des utilisateurs d’un laboratoire

    PUT /labs/{idlab}/resp/{iduser}Ajout d’un responsable à un laboratoire.Vue associée : lab.views.LabUpdatePeopleView (argument : mode = resp / tech / user)Opération possible uniquement par un responsable du laboratoire.

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success (created)– 403 – Forbidden

    DELETE /labs/{idlab}/resp/{iduser}Suppression d’un responsable de laboratoire.Opération possible uniquement par un responsable du laboratoire.

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes

    12 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    – 204 – Success (no content)– 403 – Forbidden

    PUT /labs/{idlab}/tech/{iduser}Ajout d’un technicien à un laboratoire. Identique à PUT /labs/{idlab}/resp/{iduser}

    DELETE /labs/{idlab}/tech/{iduser}Suppression d’un technicient d’un laboratoire. Itentique à DELETE/labs/{idlab}/resp/{iduser}

    PUT /labs/{idlab}/tech/{iduser}Ajout d’un utilisateur à un laboratoire. Identique à PUT /labs/{idlab}/resp/{iduser}

    DELETE /labs/{idlab}/tech/{iduser}Suppression d’un utilisateur à un laboratoire. Identique à PUT /labs/{idlab}/resp/{iduser}

    Propriétés d’un laboratoire

    Fournisseurs

    GET /labs/{idlab}/providersListe des fournisseurs du laboratoire (accessible à tous les utilisateurs du laboratoire).Vue associée : lab.views.LabProviderListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/{idlab}/providersCréation d’un fournisseur du laboratoire (possible pour responsables / techniciens).Vue associée : lab.views.LabProviderListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success (created)– 403 – Forbidden

    GET /labs/{idlab}/providers/{idprovider}Détails d’un fournisseur du laboratoire (même données que dans la liste).Vue associée : lab.views.LabProviderRetrieveUpdateDestroyViewAccès : tous les utilisateurs du laboratoire.

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}/providers/{idprovider}Modification d’un fournisseur (techniciens et responsables uniquement).Vue associée : lab.views.LabProviderRetrieveUpdateDestroyViewAccès : techniciens et responsables du laboratoire.

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    2.5. API Laboratoires 13

  • Eskollz Documentation, Version 0.0.3-dev

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/providers/{idprovider}Modification d’un champ d’un fournisseur (techniciens et responsables uniquement).Voir PUT /labs/{idlab}/providers/{idprovider}

    DELETE /labs/{idlab}/providers/{idprovider}Suppression d’un fournisseur (techniciens et responsables uniquement).Vue associée : lab.views.LabProviderRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    Catégories

    GET /labs/{idlab}/categoriesListe des catégories du laboratoire (accessible à tous les utilisateurs du laboratoire).Vue associée : lab.views.LabCategoryListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/{idlab}/categoriesCréation d’un catégorie du laboratoire (possible pour responsables / techniciens).Vue associée : lab.views.LabCategoryListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success (created)– 403 – Forbidden

    GET /labs/{idlab}/categories/{idcategorie}Détails d’un catégorie du laboratoire (même données que dans la liste).Vue associée : lab.views.LabCategoryRetrieveUpdateDestroyViewAccès : tous les utilisateurs du laboratoire.

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}/categories/{idcategorie}Modification d’un catégorie (techniciens et responsables uniquement).Vue associée : lab.views.LabCategoryRetrieveUpdateDestroyViewAccès : techniciens et responsables du laboratoire.

    Request Headers

    14 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    – Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/categories/{idcategorie}Modification d’un champ d’un catégorie (techniciens et responsables uniquement).Voir PUT /labs/{idlab}/categories/{idcategorie}

    DELETE /labs/{idlab}/categories/{idcategorie}Suppression d’un catégorie (techniciens et responsables uniquement).Vue associée : lab.views.LabCategoryRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    Emplacements

    GET /labs/{idlab}/storagesListe des emplacements du laboratoire (accessible à tous les utilisateurs du laboratoire).Vue associée : lab.views.LabStorageListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/{idlab}/storagesCréation d’un emplacement du laboratoire (possible pour responsables / techniciens).Vue associée : lab.views.LabStorageListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success (created)– 403 – Forbidden

    GET /labs/{idlab}/storages/{idstorage}Détails d’un emplacement du laboratoire (même données que dans la liste).Vue associée : lab.views.LabStorageRetrieveUpdateDestroyViewAccès : tous les utilisateurs du laboratoire.

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}/storages/{idstorage}Modification d’un emplacement (techniciens et responsables uniquement).Vue associée : lab.views.LabStorageRetrieveUpdateDestroyViewAccès : techniciens et responsables du laboratoire.

    2.5. API Laboratoires 15

  • Eskollz Documentation, Version 0.0.3-dev

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/storages/{idstorage}Modification d’un champ d’un emplacement (techniciens et responsables uniquement).Voir PUT /labs/{idlab}/storages/{idstorage}

    DELETE /labs/{idlab}/storages/{idstorage}Suppression d’un emplacement (techniciens et responsables uniquement).Vue associée : lab.views.LabStorageRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    2.5.3 Eléments d’inventaire

    Inventaire (liste d’éléments / recherche)

    GET /labs/{idlab}/itemsListe des éléments.Vue associée : lab.views.LabItemListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    Création / détails d’un élément

    Création / modification

    POST /labs/{idlab}/itemsCréation d’un élément d’inventaire.Vue associée : lab.views.LabItemListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success (created)– 403 – Forbidden

    PUT /labs/{idlab}/items/{iditem}Modification d’un élément d’inventaireVue associée : lab.views.LabItemRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    16 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/items/{iditem}Modification d’un champ d’un élément d’inventaire. Voir PUT /labs/{idlab}/items/{iditem}

    DELETE /labs/{idlab}/items/{iditem}Suppression d’un élément d’inventaire.Vue associée : lab.views.LabItemRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success (no content)– 403 – Forbidden

    Fiche détaillée

    GET /labs/{idlab}/items/{iditem}Affichage détaillé d’un élément d’inventaire (pas plus de détails que dans la liste).Vue associée : lab.views.LabItemRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    Propriétés d’un élement

    Sécurité

    GET /labs/{idlab}/items/{iditem}/securityListe des fiches de sécurité d’un élément d’inventaire.Vue associée : lab.views.LabItemSecurityListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/{idlab}/items/{iditem}/securityCréation d’une fiche de sécurité d’un élément d’inventaire.Vue associée : lab.views.LabItemSecurityListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success– 403 – Forbidden

    GET /labs/{idlab}/items/{iditem}/security/{idsecurity}Vue détaillée d’une fiche de sécurité d’un élément d’inventaire.Vue associée : lab.views.LabItemSecurityRetrieveUpdateDestroyView

    2.5. API Laboratoires 17

  • Eskollz Documentation, Version 0.0.3-dev

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}/items/{iditem}/security/{idsecurity}Modification d’une fiche de sécurité d’un élément d’inventaire.Vue associée : lab.views.LabItemSecurityRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/items/{iditem}/security/{idsecurity}Modification d’un champ d’une fiche de sécurité d’un élément d’inventaire.Voir :http :put :/labs/{idlab}/items/{iditem}/security/{idsecurity}

    DELETE /labs/{idlab}/items/{iditem}/security/{idsecurity}Suppression d’une fiche de sécurité d’un élément d’inventaire.Vue associée : lab.views.LabItemSecurityRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    Historique

    GET /labs/{idlab}/items/{iditem}/logsListe des fiches d’historique d’un élément d’inventaire.Vue associée : lab.views.LabItemLogListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/{idlab}/items/{iditem}/logsCréation d’une fiche d’historique d’un élément d’inventaire.Vue associée : lab.views.LabItemLogListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success– 403 – Forbidden

    GET /labs/{idlab}/items/{iditem}/logs/{idlog}Vue détaillée d’une fiche d’historique d’un élément d’inventaire.Vue associée : lab.views.LabItemLogRetrieveUpdateDestroyView

    18 Chapitre 2. Table des matières

    http:put:/labs

  • Eskollz Documentation, Version 0.0.3-dev

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}/items/{iditem}/logs/{idlog}Modification d’une fiche d’historique d’un élément d’inventaire.Vue associée : lab.views.LabItemLogRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/items/{iditem}/logs/{idlog}Modification d’un champ d’une fiche d’historique d’un élément d’inventaire.Voir :http :put :/labs/{idlab}/items/{iditem}/logs/{idlog}

    DELETE /labs/{idlab}/items/{iditem}/logs/{idlog}Suppression d’une fiche d’historique d’un élément d’inventaire.Vue associée : lab.views.LabItemLogRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    Fournisseur / commande

    GET /labs/{idlab}/items/{iditem}/providersListe des fiches de fournisseur / commande d’un élément d’inventaire.Vue associée : lab.views.LabItemProviderListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/{idlab}/items/{iditem}/providersCréation d’une fiche de fournisseur / commande d’un élément d’inventaire.Vue associée : lab.views.LabItemProviderListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success– 403 – Forbidden

    GET /labs/{idlab}/items/{iditem}/providers/{idprovider}Vue détaillée d’une fiche de fournisseur / commande d’un élément d’inventaire.Vue associée : lab.views.LabItemProviderRetrieveUpdateDestroyView

    2.5. API Laboratoires 19

    http:put:/labs

  • Eskollz Documentation, Version 0.0.3-dev

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}/items/{iditem}/providers/{idprovider}Modification d’une fiche de fournisseur / commande d’un élément d’inventaire.Vue associée : lab.views.LabItemProviderRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/items/{iditem}/providers/{idprovider}Modification d’un champ d’une fiche de fournisseur / commande d’un élément d’inventaire.Voir :http :put :/labs/{idlab}/items/{iditem}/providers/{idprovider}

    DELETE /labs/{idlab}/items/{iditem}/providers/{idprovider}Suppression d’une fiche de fournisseur / commande d’un élément d’inventaire.Vue associée : lab.views.LabItemProviderRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    Rangement

    GET /labs/{idlab}/items/{iditem}/storagesListe des fiches de rangement d’un élément d’inventaire.Vue associée : lab.views.LabItemStorageListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    POST /labs/{idlab}/items/{iditem}/storagesCréation d’une fiche de rangement d’un élément d’inventaire.Vue associée : lab.views.LabItemStorageListCreateView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 201 – Success– 403 – Forbidden

    GET /labs/{idlab}/items/{iditem}/storages/{idstorage}Vue détaillée d’une fiche de rangement d’un élément d’inventaire.Vue associée : lab.views.LabItemStorageRetrieveUpdateDestroyView

    20 Chapitre 2. Table des matières

    http:put:/labs

  • Eskollz Documentation, Version 0.0.3-dev

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PUT /labs/{idlab}/items/{iditem}/storages/{idstorage}Modification d’une fiche de rangement d’un élément d’inventaire.Vue associée : lab.views.LabItemStorageRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 200 – Success– 403 – Forbidden

    PATCH /labs/{idlab}/items/{iditem}/storages/{idstorage}Modification d’un champ d’une fiche de rangement d’un élément d’inventaire.Voir :http :put :/labs/{idlab}/items/{iditem}/storages/{idstorage}

    DELETE /labs/{idlab}/items/{iditem}/storages/{idstorage}Suppression d’une fiche de rangement d’un élément d’inventaire.Vue associée : lab.views.LabItemStorageRetrieveUpdateDestroyView

    Request Headers– Accept – application/json | text/html | application/xml– Authorization – Token xxxxxx

    Status Codes– 204 – Success (no content)– 403 – Forbidden

    2.6 API Dossiers

    TODO ...

    2.7 API de gestion des évaluations

    2.7.1 Eléments de référence

    GET /eval/evalrefitemsListe des éléments de référence

    GET /eval/evalrefitems/{pkeri}Détails d’un élément de référence

    GET /eval/evalrefitems/{pkeri}/linksLiens d’un élément de référence

    GET /eval/evalrefitems/{pkeri}/links/{erilpk}Détails d’un li d’un élément de référence

    2.6. API Dossiers 21

    http:put:/labs

  • Eskollz Documentation, Version 0.0.3-dev

    2.7.2 Evaluations

    Liste des évaluations

    GET /eval/evaluations/{?q,folder,status,...}Liste des évaluations pour un utilisateur

    POST /eval/evaluations/{?q,folder,status,...}Création d’une nouvelle évaluation

    GET /eval/evaluations/{id}Détails d’une évaluation : titre, détails, plan, contenu, barème

    PUT /eval/evaluations/{id}Modification d’une évaluation

    PATCH /eval/evaluations/{id}Modification d’une évaluation

    DELETE /eval/evaluations/{id}Suppression d’une évaluation

    Contenu d’une évaluation

    GET /eval/evaluations/{id}/itemsListe des éléments de contenu d’une évaluation

    POST /eval/evaluations/{id}/itemsCréation d’un nouvel élément d’évaluation

    GET /eval/evaluations/{id}/items/{idi}Détails d’un contenu d’évaluation : titre, contenu, correction, barèmes, evalrefs (direct/indirect)

    Détails d’un contenu d’évaluation

    GET /eval/evaluations/{id}/items/{idi}/documents

    POST /eval/evaluations/{id}/items/{idi}/documents

    GET /eval/evaluations/{id}/items/{idi}/documents/{idd}

    PUT /eval/evaluations/{id}/items/{idi}/documents/{idd}

    PATCH /eval/evaluations/{id}/items/{idi}/documents/{idd}

    DELETE /eval/evaluations/{id}/items/{idi}/documents/{idd}

    Eléments de corrigé

    GET /eval/evaluations/{id}/items/{idi}/answers

    GET /eval/evaluations/{id}/items/{idi}/answers/{idc}

    GET /eval/evaluations/{id}/items/{idi}/points

    GET /eval/evaluations/{id}/items/{idi}/points/{idb}

    GET /eval/evaluations/{id}/items/{idi}/evalref

    GET /eval/evaluations/{id}/items/{idi}/evalref/{ide}

    22 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    2.7.3 Copies

    GET /eval/papers/

    GET /eval/evaluation/{ide}/papers/

    GET /eval/evaluation/{ide}/papers/{cid}

    GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}

    GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/answers

    GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/answers/{aid}

    GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals

    GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}

    GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}/points

    GET /eval/evaluation/{ide}/papers/{cid}/items/{iid}/evals/{eid}/evalref

    2.7.4 Statistiques et résultats

    A faire...

    2.8 API Planning

    2.9 Documentation des objets pyrhon

    2.9.1 people Package

    people Package

    models Module

    class people.models.Admin(*args, **kwargs)

    Bases : django.db.models.base.Model

    Informations supplémentaires pour user administrateur.

    param schools Schoolstype schools ManyToManyFieldparam is_admin Is admintype is_admin BooleanFieldparam id Idtype id AutoFieldparam user Usertype user OneToOneField to User

    exception Admin.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Admin.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedAdmin.objects = Admin.schools

    Admin.user

    2.8. API Planning 23

  • Eskollz Documentation, Version 0.0.3-dev

    class people.models.Contact(*args, **kwargs)

    Bases : django.db.models.base.Model

    Informations supplémentaires de contact utilisateur. * Dans User : email * Dans Contact(user.contact.) : autres emails, téléphones, adresse

    param phone2 Phone2type phone2 CharFieldparam address2 Address2type address2 TextFieldparam comments Commentstype comments TextFieldparam phone Phonetype phone CharFieldparam user Usertype user OneToOneField to Userparam mobile Mobiletype mobile CharFieldparam address Addresstype address TextFieldparam email2 Email2type email2 EmailFieldparam id Idtype id AutoFieldparam mobile2 Mobile2type mobile2 CharField

    exception Contact.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Contact.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedContact.objects = Contact.user

    class people.models.EUser(*args, **kwargs)

    Bases : django.contrib.auth.models.User

    Proxy du modèle user : ajout des fonctions de groupe à l’utilisateur de base.

    param username Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ cha-racters

    type username CharFieldparam first_name First nametype first_name CharFieldparam last_name Last nametype last_name CharFieldparam is_active Designates whether this user should be treated as active. Unselect this

    instead of deleting accounts.

    type is_active BooleanFieldparam email Email addresstype email EmailFieldparam is_superuser Designates that this user has all permissions without explicitly assi-

    gning them.

    24 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    type is_superuser BooleanFieldparam is_staff Designates whether the user can log into this admin site.type is_staff BooleanFieldparam last_login Last logintype last_login DateTimeFieldparam groups The groups this user belongs to. A user will get all permissions granted to

    each of his/her group.

    type groups ManyToManyFieldparam user_permissions Specific permissions for this user.type user_permissions ManyToManyFieldparam password Passwordtype password CharFieldparam id Idtype id AutoFieldparam date_joined Date joinedtype date_joined DateTimeField

    exception EUser.DoesNotExistBases : django.contrib.auth.models.DoesNotExistexception EUser.MultipleObjectsReturnedBases : django.contrib.auth.models.MultipleObjectsReturnedEUser.add_group(group, datein=None, dateout=None)

    Ajoute l’utilisateur à un groupe. @param group Groupe @param datein (facultatif) : date d’arri-vée dans le groupe (défaut : date courante) @param dateout (facultatif) : date de sortie du groupe(défaut : 1er aout de l’année scolaire)

    EUser.editfoldersEUser.get_absolute_url(*moreargs, **morekwargs)EUser.get_groups(dte=datetime.datetime(2014, 3, 1, 0, 46, 5, 719343,

    tzinfo=))Récupère (queryset Group) les groupes auxquels appartient l’utilisateur à la date donnée. @pa-ram dte (facultatif) : date de recherche des groupes (défaut : date courante)

    EUser.objects = EUser.ownfolders

    EUser.remove_group(group, datein=None, dateout=None)Supprime l’utilisateur d’un groupe. @param group Groupe @param datein (facultatif) : datede début de suppression (défaut : date courante) @param dateout (facultatif) : date de fin desuppression (défaut : 1er aout de l’année scolaire)

    EUser.rofolders

    class people.models.Identity(*args, **kwargs)

    Bases : django.db.models.base.Model

    Informations supplémentaires sur l’identité de l’utilisateur. * Dans User : nom, prénom * Dans Iden-tity (user.identity.) : autres prénoms, date de naissance, nom de jeune fille

    param comments Commentstype comments TextFieldparam maidenname Maidennametype maidenname CharFieldparam birthday Birthdaytype birthday DateFieldparam firstname4 Firstname4type firstname4 CharField

    2.9. Documentation des objets pyrhon 25

  • Eskollz Documentation, Version 0.0.3-dev

    param firstname3 Firstname3type firstname3 CharFieldparam firstname2 Firstname2type firstname2 CharFieldparam id Idtype id AutoFieldparam user Usertype user OneToOneField to User

    exception Identity.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Identity.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedIdentity.objects = Identity.user

    class people.models.Student(*args, **kwargs)

    Bases : django.db.models.base.Model

    Informations supplémentaires pour user étudiant. Champs ajoutés : identifiant académique.

    param comments Commentstype comments TextFieldparam user Usertype user OneToOneField to Userparam acadid Acadidtype acadid CharFieldparam schools Schoolstype schools ManyToManyFieldparam is_student Is studenttype is_student BooleanFieldparam id Idtype id AutoField

    exception Student.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Student.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedStudent.objects = Student.schoolsStudent.user

    class people.models.Teacher(*args, **kwargs)

    Bases : django.db.models.base.Model

    Informations supplémenteaires pour user teacher.

    param schools Schoolstype schools ManyToManyFieldparam is_teacher Is teachertype is_teacher BooleanFieldparam id Idtype id AutoFieldparam comments Commentstype comments TextField

    26 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    param user Usertype user OneToOneField to User

    exception Teacher.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Teacher.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedTeacher.objects = Teacher.schools

    Teacher.user

    people.models.create_user_metadata(sender, instance, created, **kwargs)

    urls Module

    views Module

    class people.views.GetUserMixin

    Bases : object

    Mixin pour toutes les vues nécessitant un utilisateur.Restreint les utilisateurs potentiellement accessibles selon l’utilisateur.L’utilisateur à rechercher est donné par le paramètre d’url pkGetUserMixin.get_queryset_for_user()GetUserMixin.get_user()

    GetUserMixin.kwargs = NoneGetUserMixin.request = NoneGetUserMixin.user = None

    class people.views.PersonChangePasswordView(**kwargs)

    Bases : rest_framework.views.APIView, people.views.GetUserMixin

    Changement de mot de passe.Modification = superuser uniquement.POST {“password” : “NEW PASSWORD” } to change user password (admin only for now)PersonChangePasswordView.permission_classes = []PersonChangePasswordView.post(request, *args, **kwargs)

    class people.views.PersonContactRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView,people.views.GetUserMixin

    Récupération / modification des données de contact d’une personne.Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.PersonContactRetrieveUpdateDestroyView.get_object(queryset=None)PersonContactRetrieveUpdateDestroyView.permission_classes = [, ]PersonContactRetrieveUpdateDestroyView.pre_save(obj)PersonContactRetrieveUpdateDestroyView.serializer_class

    alias de UserContactSerializer

    class people.views.PersonFilter

    Bases : rest_framework.filters.BaseFilterBackend

    PersonFilter.filter_queryset(request, queryset, view)

    class people.views.PersonIdentityRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView,people.views.GetUserMixin

    2.9. Documentation des objets pyrhon 27

  • Eskollz Documentation, Version 0.0.3-dev

    Récupération / modification des données d’identité d’une personne.Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.PersonIdentityRetrieveUpdateDestroyView.get_object(queryset=None)PersonIdentityRetrieveUpdateDestroyView.permission_classes = [, ]PersonIdentityRetrieveUpdateDestroyView.pre_save(obj)PersonIdentityRetrieveUpdateDestroyView.serializer_class

    alias de UserIdentitySerializer

    class people.views.PersonListCreateView(**kwargs)

    Bases : rest_framework.generics.ListCreateAPIView, people.views.GetUserMixin

    __Liste et création d’utilisateurs.__Accès en lecture (liste) :– utilisateurs anonymes : aucun– élèves : eux-même– enseignants : liste des enseignants de leur(s) établissement(s), liste des élèves de leur(s) établisse-

    ment(s)– administrateur : toutAccès en écriture (création) :– utilisateurs anonymes : aucun– élèves : aucun– enseignants : aucun (à voir)– administrateur : OKParamètres de filtre :– __search__ : recherche textuelle insensible à la casse sur le nom d’utilisateur, le prénom, le nom de

    famille. Si plusieurs filtres dans l’URL, le résultat est l’union des filtres– __school__ : recherche par établissement (id établissement) ; si plusieurs filtres dans l’URL, le

    résultat est l’union des filtresPersonListCreateView.filter_backends = (, )PersonListCreateView.get_queryset()PersonListCreateView.get_serializer_class()PersonListCreateView.max_paginate_by = 500PersonListCreateView.ordering = (‘last_name’, ‘first_name’, ‘identity__birthday’, ‘identity__firstname2’)PersonListCreateView.paginate_by = 50PersonListCreateView.permission_classes = [, ]

    class people.views.PersonRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView,people.views.GetUserMixin

    Récupération / modification des données d’une personne.Récupération = mêmes restrictions que pour la liste des utilisateurs.Modification : à voir.Suppression : personne.PersonRetrieveUpdateDestroyView.get_object(queryset=None)PersonRetrieveUpdateDestroyView.permission_classes = [, ]PersonRetrieveUpdateDestroyView.serializer_class

    alias de PersonDetailSerializer

    class people.views.PersonRetrieveWithAuthTokenView(**kwargs)

    Bases : rest_framework.views.APIView

    Récupération des données utilisateurs par username/mot de passe. Accès = anonyme throttled.Accès : POST uniquementParamètres : - username : username ou adresse email principale - password : mot de passePersonRetrieveWithAuthTokenView.post(request, *args, **kwargs)

    Get token :param request : Request :return : ReponsePersonRetrieveWithAuthTokenView.throttle_classes = []

    28 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    class people.views.PersonStudentRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView,people.views.GetUserMixin

    Récupération / modification des données spécifiques “étudiant” d’une personne.Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.PersonStudentRetrieveUpdateDestroyView.get_object(queryset=None)PersonStudentRetrieveUpdateDestroyView.permission_classes = [, ]PersonStudentRetrieveUpdateDestroyView.pre_save(obj)PersonStudentRetrieveUpdateDestroyView.serializer_class

    alias de UserStudentSerializer

    class people.views.PersonTeacherRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView,people.views.GetUserMixin

    Récupération / modification des données spécifiques “enseignant” d’une personne.Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.PersonTeacherRetrieveUpdateDestroyView.get_object(queryset=None)PersonTeacherRetrieveUpdateDestroyView.permission_classes = [, ]PersonTeacherRetrieveUpdateDestroyView.pre_save(obj)PersonTeacherRetrieveUpdateDestroyView.serializer_class

    alias de UserTeacherSerializer

    class people.views.StudentCreateMixin

    Bases : object

    StudentCreateMixin.checkdata(data)

    class people.views.StudentCreateView(**kwargs)

    Bases : rest_framework.views.APIView, people.views.StudentCreateMixin

    StudentCreateView.permission_classes = [, ]Création d’un étudiant.

    StudentCreateView.post(request, **kwargs)

    class people.views.TeacherSubscribeConfirmView(**kwargs)

    Bases : rest_framework.views.APIView, people.views.TeacherSubscribeMixin

    Confirmation d’inscription d’un enseignant.TeacherSubscribeConfirmView.get(request, **kwargs)

    class people.views.TeacherSubscribeMixin

    Bases : object

    TeacherSubscribeMixin.checkdata(data)

    class people.views.TeacherSubscribeView(**kwargs)

    Bases : rest_framework.views.APIView, people.views.TeacherSubscribeMixin

    Inscription (individuelle) d’un enseignant :– checks user existence (same email / same names,birthday)– checks user email validity– checks user schoolTeacherSubscribeView.post(request, **kwargs)

    class people.views.UserGroupDetailJoinQuitView(**kwargs)

    Bases : rest_framework.views.APIView, people.views.GetUserMixin

    Assignation / désassignation d’une personne à un groupe.Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.UserGroupDetailJoinQuitView.delete(request, **kwargs)UserGroupDetailJoinQuitView.get(request, **kwargs)

    2.9. Documentation des objets pyrhon 29

  • Eskollz Documentation, Version 0.0.3-dev

    UserGroupDetailJoinQuitView.get_group()UserGroupDetailJoinQuitView.permission_classes = [, ]UserGroupDetailJoinQuitView.post(request, **kwargs)

    class people.views.UserGroupListView(**kwargs)

    Bases : rest_framework.views.APIView, people.views.GetUserMixin

    Récupération / modification des groupes d’une personne.Récupération = tous les utilisateurs authentifiés. Modification = superuser uniquement.UserGroupListView.get(request, **kwargs)UserGroupListView.permission_classes = [, ]

    serializers Module

    class people.serializers.PersonAdminListSerializer(instance=None, data=None,files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class PersonAdminListSerializer.Meta

    fields = [’id’, ‘username’, ‘first_name’, ‘last_name’]model

    alias de EUserPersonAdminListSerializer.base_fields = {}

    class people.serializers.PersonDetailAdminSerializer(instance=None, data=None,files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class PersonDetailAdminSerializer.Meta

    modelalias de EUser

    PersonDetailAdminSerializer.base_fields = {}class people.serializers.PersonDetailSerializer(instance=None, data=None,

    files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class PersonDetailSerializer.Meta

    fields = [’id’, ‘username’, ‘email’, ‘student’, ‘teacher’, ‘first_name’, ‘last_name’, ‘contact’, ‘identity’, ‘groupmembers_set’]model

    alias de EUserPersonDetailSerializer.base_fields = {‘student’ : , ‘teacher’ : , ‘contact’ : , ‘identity’ : , ‘groupmembers_set’ : }

    class people.serializers.PersonPasswordSerializer(instance=None, data=None,files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.Serializer

    30 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    PersonPasswordSerializer.base_fields = {‘password’ : }class people.serializers.PersonStudentListSerializer(instance=None, data=None,

    files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class PersonStudentListSerializer.Meta

    fields = [’id’, ‘username’, ‘first_name’, ‘last_name’]model

    alias de EUserPersonStudentListSerializer.base_fields = {}

    class people.serializers.PersonTeacherListSerializer(instance=None, data=None,files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class PersonTeacherListSerializer.Meta

    fields = [’id’, ‘username’, ‘first_name’, ‘last_name’]model

    alias de EUserPersonTeacherListSerializer.base_fields = {}

    class people.serializers.PersonWithTokenSerializer(instance=None, data=None,files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.Serializer

    PersonWithTokenSerializer.base_fields = {‘known’ : , ‘token’ : , ‘user’ : }class people.serializers.StudentCreateSerializer(instance=None, data=None,

    files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.Serializer

    Données nécessaires à la création d’un étudiant.StudentCreateSerializer.base_fields = {‘lastname’ : , ‘firstname’ : , ‘firstnames’ : , ‘birthday’ : , ‘school’ : }

    class people.serializers.TeacherSubscribeSerializer(instance=None, data=None,files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.Serializer

    Données nécessaires à l’inscription d’un enseignant.TeacherSubscribeSerializer.base_fields = {‘lastname’ : , ‘password’ : , ‘firstname’ : , ‘birthday’ : , ‘email’ : , ‘school’ : }

    class people.serializers.UserContactSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    2.9. Documentation des objets pyrhon 31

  • Eskollz Documentation, Version 0.0.3-dev

    class UserContactSerializer.Meta

    exclude = [’user’, ‘id’]model

    alias de ContactUserContactSerializer.base_fields = {}

    class people.serializers.UserGroupDetailsSerializer(instance=None, data=None,files=None, context=None,partial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class UserGroupDetailsSerializer.Meta

    exclude = [’users’]model

    alias de GroupUserGroupDetailsSerializer.base_fields = {‘members’ : }

    class people.serializers.UserGroupListSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class UserGroupListSerializer.Meta

    exclude = [’users’]model

    alias de GroupUserGroupListSerializer.base_fields = {}

    class people.serializers.UserGroupMembershipSerializer(instance=None,data=None, files=None,context=None, par-tial=False, many=None,allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class UserGroupMembershipSerializer.Meta

    fields = [’user’, ‘group’, ‘datein’, ‘dateout’]model

    alias de GroupMembersUserGroupMembershipSerializer.base_fields = {}

    class people.serializers.UserIdentitySerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class UserIdentitySerializer.Meta

    exclude = [’user’, ‘id’]model

    alias de IdentityUserIdentitySerializer.base_fields = {}

    32 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    class people.serializers.UserStudentSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class UserStudentSerializer.Meta

    exclude = [’user’, ‘id’]model

    alias de StudentUserStudentSerializer.base_fields = {}

    class people.serializers.UserTeacherSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class UserTeacherSerializer.Meta

    exclude = [’user’, ‘id’]model

    alias de TeacherUserTeacherSerializer.base_fields = {}

    tests.test_teacher_subscribe Module

    class people.tests.test_teacher_subscribe.TeacherSubscribeTest(methodName=’runTest’)

    Bases : rest_framework.test.APITestCase

    TeacherSubscribeTest.fixtures = [’schools’, ‘people’]TeacherSubscribeTest.subscribeurl = ‘/people/teachers/subscribe’TeacherSubscribeTest.test_subscribe_flow()

    TeacherSubscribeTest.test_subscribe_flow_badpostdata()TeacherSubscribeTest.test_subscribe_flow_concurrent_subscribes()

    TeacherSubscribeTest.test_subscribe_flow_existing_user_email()

    TeacherSubscribeTest.test_subscribe_flow_existing_user_identity()TeacherSubscribeTest.test_subscribe_flow_existing_username()

    TeacherSubscribeTest.test_subscribe_flow_expirated_token()TeacherSubscribeTest.test_subscribe_flow_forbidden_email()

    TeacherSubscribeTest.test_subscribe_flow_unknown_school()

    tests.test_student_create Module

    class people.tests.test_student_create.StudentCreateTest(methodName=’runTest’)

    Bases : rest_framework.test.APITestCase, people.tests.test_student_create.TestSettings

    StudentCreateTest.createurl = ‘/people/students/create’StudentCreateTest.fixtures = [’schools’, ‘people’]StudentCreateTest.test_student_create_asstudent()

    StudentCreateTest.test_student_create_badrequest()StudentCreateTest.test_student_create_exactclone()

    StudentCreateTest.test_student_create_fullknew()StudentCreateTest.test_student_create_unauthenticated()

    2.9. Documentation des objets pyrhon 33

  • Eskollz Documentation, Version 0.0.3-dev

    class people.tests.test_student_create.TestSettings

    Bases : object

    Sets up users for tests.TestSettings.set_users(username)TestSettings.token = ‘’TestSettings.user = ‘’

    2.9.2 group Package

    group Package

    models Module

    class group.models.Group(*args, **kwargs)

    Bases : django.db.models.base.Model

    Group(id, name, gtype)

    param users Userstype users ManyToManyFieldparam gtype Gtypetype gtype CharFieldparam id Idtype id AutoFieldparam name Nametype name CharField

    exception Group.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Group.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedGroup.add_user(user, datein=None, dateout=None)Group.get_users(dte=datetime.datetime(2014, 3, 1, 0, 46, 5, 718752,

    tzinfo=))Group.groupmembers_setGroup.objects = Group.remove_user(user, datein=None, dateout=None)Group.users

    class group.models.GroupMembers(*args, **kwargs)

    Bases : django.db.models.base.Model

    GroupMembers(id, user_id, group_id, datein, dateout)

    param dateout Dateouttype dateout DateTimeFieldparam datein Dateintype datein DateTimeFieldparam group Grouptype group ForeignKey to Groupparam id Idtype id AutoFieldparam user Usertype user ForeignKey to User

    34 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    exception GroupMembers.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception GroupMembers.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedGroupMembers.get_next_by_datein(*moreargs, **morekwargs)GroupMembers.get_next_by_dateout(*moreargs, **morekwargs)GroupMembers.get_previous_by_datein(*moreargs, **morekwargs)GroupMembers.get_previous_by_dateout(*moreargs, **morekwargs)GroupMembers.groupGroupMembers.objects = GroupMembers.user

    urls Module

    views Module

    class group.views.GroupListCreateView(**kwargs)

    Bases : rest_framework.generics.ListCreateAPIViewGroupListCreateView.permission_classes = []GroupListCreateView.querysetGroupListCreateView.serializer_class

    alias de GroupListSerializerclass group.views.GroupMixin

    get_group()

    class group.views.GroupRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveAPIViewGroupRetrieveUpdateDestroyView.permission_classes = []GroupRetrieveUpdateDestroyView.querysetGroupRetrieveUpdateDestroyView.serializer_class

    alias de GroupDetailSerializerclass group.views.GroupUserJoinQuitView(**kwargs)

    Bases : rest_framework.views.APIView, group.views.GroupMixinGroupUserJoinQuitView.delete(request, format=None, **kwargs)GroupUserJoinQuitView.get(request, format=None, **kwargs)GroupUserJoinQuitView.get_user()GroupUserJoinQuitView.get_user_membership()GroupUserJoinQuitView.post(request, format=None, **kwargs)

    class group.views.GroupUserListView(**kwargs)

    Bases : rest_framework.views.APIView, group.views.GroupMixinGroupUserListView.get(request, format=None, **kwargs)GroupUserListView.get_members()

    2.9.3 school Package

    school Package

    models Module

    Etablissements et académies.

    2.9. Documentation des objets pyrhon 35

  • Eskollz Documentation, Version 0.0.3-dev

    class school.models.Academy(*args, **kwargs)

    Bases : django.db.models.base.Model

    Académie.

    param title Titletype title CharFieldparam emaildomains Emaildomainstype emaildomains TextFieldparam code Codetype code CharFieldparam id Idtype id AutoFieldparam slug Slugtype slug SlugField

    exception Academy.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception Academy.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedAcademy.objects = Academy.school_set

    class school.models.School(*args, **kwargs)

    Bases : django.db.models.base.Model

    Etablissements d’enseignement.

    param status Statustype status CharFieldparam categ Categtype categ CharFieldparam code Codetype code CharFieldparam city Citytype city CharFieldparam academy Academytype academy ForeignKey to Academyparam pobox Poboxtype pobox CharFieldparam id Idtype id AutoFieldparam phone Phonetype phone CharFieldparam cedex Cedextype cedex BooleanFieldparam postcode Postcodetype postcode CharFieldparam address Addresstype address TextFieldparam shortname Shortnametype shortname CharField

    36 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    param fullname Fullnametype fullname CharField

    exception School.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistexception School.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedSchool.academySchool.admin_set

    School.objects = School.student_setSchool.teacher_set

    school.models.get_school_choices()

    urls Module

    views Module

    class school.views.AcademyListCreateView(**kwargs)

    Bases : rest_framework.generics.ListCreateAPIView

    AcademyListCreateView.permission_classes = []AcademyListCreateView.querysetAcademyListCreateView.serializer_class

    alias de AcademySerializer

    class school.views.AcademyRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView

    AcademyRetrieveUpdateDestroyView.permission_classes = [, ]AcademyRetrieveUpdateDestroyView.querysetAcademyRetrieveUpdateDestroyView.serializer_class

    alias de AcademySerializer

    class school.views.SchoolListCreateView(**kwargs)

    Bases : rest_framework.generics.ListCreateAPIView

    SchoolListCreateView.filter_backends = (, )SchoolListCreateView.paginate_by = 20SchoolListCreateView.permission_classes = []SchoolListCreateView.querysetSchoolListCreateView.serializer_class

    alias de SchoolSerializer

    class school.views.SchoolListFilter

    Bases : rest_framework.filters.BaseFilterBackend

    SchoolListFilter.filter_queryset(request, queryset, view)

    class school.views.SchoolRetrieveUpdateDestroyView(**kwargs)

    Bases : rest_framework.generics.RetrieveUpdateDestroyAPIView

    SchoolRetrieveUpdateDestroyView.lookup_field = ‘code’SchoolRetrieveUpdateDestroyView.permission_classes = []SchoolRetrieveUpdateDestroyView.querysetSchoolRetrieveUpdateDestroyView.serializer_class

    alias de SchoolSerializer

    2.9. Documentation des objets pyrhon 37

  • Eskollz Documentation, Version 0.0.3-dev

    2.9.4 folder Package

    folder Package

    models Module

    class folder.models.Folder(*args, **kwargs)

    Bases : mptt.models.MPTTModel

    Generic folder

    param rght Rghttype rght PositiveIntegerFieldparam owners Ownerstype owners ManyToManyFieldparam description Description rapidetype description TextFieldparam parent Parenttype parent TreeForeignKey to Folderparam title Titretype title CharFieldparam readers Readerstype readers ManyToManyFieldparam editors Editorstype editors ManyToManyFieldparam lft Lfttype lft PositiveIntegerFieldparam ftype Type de dossiertype ftype CharFieldparam tree_id Tree idtype tree_id PositiveIntegerFieldparam altparents Altparentstype altparents ManyToManyFieldparam level Leveltype level PositiveIntegerFieldparam id Idtype id AutoField

    exception Folder.DoesNotExistBases : django.core.exceptions.ObjectDoesNotExistFolder.FOLDER_TYPES = ((‘CLA’, ‘Classe’), (‘LVL’, ‘Niveau’), (‘DIS’, ‘Dispositif’), (‘DOC’, ‘Documents’), (‘CDT’, ‘Cahier de textes’), (‘YEA’, ‘P\xc3\xa9riode’), (‘EVA’, ‘Evaluation’), (‘OTH’, ‘Autre’))exception Folder.MultipleObjectsReturnedBases : django.core.exceptions.MultipleObjectsReturnedFolder.allow(user, mode, recursive=True)Folder.altparentsFolder.can_admin(user)Folder.can_read(user)Folder.can_write(user)Folder.childrenFolder.disallow(user, mode, recursive=True)Folder.editors

    38 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    Folder.get_ftype_display(*moreargs, **morekwargs)Folder.objects = Folder.ownersFolder.parentFolder.readers

    folder.models.create_user_folder(sender, instance, created, **kwargs)

    folder.models.inherit_folder_permissions(sender, instance, created, **kwargs)

    urls Module

    views Module

    class folder.views.FolderFilter

    Bases : rest_framework.filters.BaseFilterBackend

    FolderFilter.filter_queryset(request, queryset, view)

    class folder.views.FolderListCreateView(**kwargs)

    Bases : folder.views.FolderMixin, rest_framework.generics.ListCreateAPIView

    FolderListCreateView.filter_backends = (, )FolderListCreateView.paginate_by = 100FolderListCreateView.permission_classes = []FolderListCreateView.pre_save(obj)FolderListCreateView.serializer_class

    alias de FolderSerializer

    class folder.views.FolderMixin

    Bases : object

    FolderMixin.get_queryset()

    FolderMixin.request = Noneclass folder.views.FolderRetrieveUpdateDestroyView(**kwargs)

    Bases : folder.views.FolderMixin, rest_framework.generics.RetrieveUpdateDestroyAPIView

    FolderRetrieveUpdateDestroyView.permission_classes = [, ]FolderRetrieveUpdateDestroyView.serializer_class

    alias de FolderDetailSerializer

    class folder.views.FolderShareUpdateView(**kwargs)

    Bases : folder.views.FolderMixin, rest_framework.views.APIView

    FolderShareUpdateView.data = {}FolderShareUpdateView.delete(request, *args, **kwargs)FolderShareUpdateView.folder = NoneFolderShareUpdateView.get(request, *args, **kwargs)FolderShareUpdateView.initial(request, *args, **kwargs)FolderShareUpdateView.operation = ‘’FolderShareUpdateView.permission_classes = []FolderShareUpdateView.post(request, *args, **kwargs)

    2.9. Documentation des objets pyrhon 39

  • Eskollz Documentation, Version 0.0.3-dev

    serializers Module

    class folder.serializers.FolderDetailSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class FolderDetailSerializer.Meta

    exclude = [’lft’, ‘rght’, ‘tree_id’]model

    alias de FolderFolderDetailSerializer.base_fields = {‘parent’ : , ‘children’ : , ‘owners’ : , ‘editors’ : , ‘readers’ : , ‘altparents’ : }

    class folder.serializers.FolderSerializer(instance=None, data=None, files=None,context=None, partial=False, many=None,allow_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class FolderSerializer.Meta

    exclude = [’lft’, ‘rght’, ‘tree_id’]model

    alias de FolderFolderSerializer.base_fields = {‘owners’ : , ‘editors’ : , ‘readers’ : , ‘altparents’ : }

    class folder.serializers.FolderSimpleSerializer(instance=None, data=None,files=None, context=None, par-tial=False, many=None, al-low_add_remove=False, **kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class FolderSimpleSerializer.Meta

    fields = [’id’, ‘title’, ‘description’]model

    alias de FolderFolderSimpleSerializer.base_fields = {}

    class folder.serializers.FolderUserSerializer(instance=None, data=None, files=None,context=None, partial=False,many=None, allow_add_remove=False,**kwargs)

    Bases : rest_framework.serializers.ModelSerializer

    class FolderUserSerializer.Meta

    fields = [’first_name’, ‘last_name’, ‘username’, ‘id’]model

    alias de EUserFolderUserSerializer.base_fields = {}

    permissions Module

    class folder.permissions.FolderEditPermission

    Bases : rest_framework.permissions.BasePermission

    FolderEditPermission.has_object_permission(request, view, obj)

    40 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    2.9.5 lab Package

    lab Package

    models Module

    class lab.models.Lab(*args, **kwargs)Laboratoire / inventaire.Les champs resp, tech, user listent les différents utilisateurs pour chaque rôle.–Les responsables peuvent tout faire (y compris supprimer le labo et tout ce qu’il contient)–Les techniciens peuvent tout faire (sauf supprimer le labo)–Les users peuvent consulter les éléments, mais pas les modifier.

    À fairerajouter des détails dans les rôles utilisateurs.

    Paramètres– user (ManyToManyField) – Utilisateurs– resp (ManyToManyField) – Responsables– tech (ManyToManyField) – Techniciens– id (AutoField) – Id– name (CharField) – Nom du laboratoire

    class lab.models.LabCategory(*args, **kwargs)Catégories de matériel.Arborescence via name (en utilisant des caractères de séparation)

    À faireAjouter (ou étendre à partir modèle) les champs utiles

    Paramètres– sdesc (CharField) – Short description– id (AutoField) – Id– lab (ForeignKey to Lab) – Lab– name (CharField) – Category

    class lab.models.LabItem(*args, **kwargs)Element d’inventaire

    À faireRevoir les champs nécessaires

    Paramètres– name (CharField) – Name– sdesc (TextField) – Description– barcode (CharField) – Barcode– lab (ForeignKey to Lab) – Lab– comments (TextField) – Comments– timestamp (DateTimeField) – Item update date– categs (ManyToManyField) – Categs– id (AutoField) – Id

    class lab.models.LabItemLog(*args, **kwargs)Suivi des quantités.

    À faireRevoir les champs nécessaires

    2.9. Documentation des objets pyrhon 41

  • Eskollz Documentation, Version 0.0.3-dev

    Paramètres– sdesc (CharField) – Short description– lab (ForeignKey to Lab) – Lab– item (ForeignKey to LabItem) – Item– comments (TextField) – Comments– timestamp (DateTimeField) – Timestamp– id (AutoField) – Id– unit (ForeignKey to LabUnit) – Unit– quantity (DecimalField) – Quantity

    class lab.models.LabItemProvider(*args, **kwargs)Informations de fournisseur pour un élément de laboratoire.

    À faireRevoir les champs nécessaires, voir lien avec log

    Paramètres– status (CharField) – Status– timestamp (DateTimeField) – Timestamp– price (CharField) – Price– lab (ForeignKey to Lab) – Lab– item (ForeignKey to LabItem) – Item– comments (TextField) – Comments– provider (ForeignKey to LabProvider) – Provider– id (AutoField) – Id– unit (ForeignKey to LabUnit) – Unit– quantity (CharField) – Quantity

    class lab.models.LabItemSecurity(*args, **kwargs)Fiche de sécurité pour un élément d’inventaire

    À faireRevoir les champs nécessaires

    Paramètres– updated (DateTimeField) – Updated– secpictos (ManyToManyField) – Secpictos– secrefs (TextField) – Secrefs– seccateg (CharField) – Seccateg– secsentences (ManyToManyField) – Secsentences– lab (ForeignKey to Lab) – Lab– item (ForeignKey to LabItem) – Item– comments (TextField) – Comments– secsignal (CharField) – Secsignal– id (AutoField) – Id

    class lab.models.LabItemStorage(*args, **kwargs)Emplacements de stockage des éléments d’inventaire

    À faireRevoir les champs nécessaires, voir lien avec log

    Paramètres– storage (ForeignKey to LabStorage) – Storage– lab (ForeignKey to Lab) – Lab– item (ForeignKey to LabItem) – Item– comments (TextField) – Comments– id (AutoField) – Id– unit (ForeignKey to LabUnit) – Unit

    42 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    – quantity (CharField) – Quantity

    class lab.models.LabProvider(*args, **kwargs)Fournisseur du laboratoire.

    À fairePossibilité de liaison avec version “établissement” des fournisseurs.

    À faireAjouter (ou étendre à partir modèle) les champs utiles

    Paramètres– url (CharField) – Website– contact (TextField) – Contact– id (AutoField) – Id– lab (ForeignKey to Lab) – Lab– name (CharField) – Name

    class lab.models.LabStorage(*args, **kwargs)Emplacements de rangement du matériel.Arborescence via name (en utilisant des caractères de séparation)

    À faireAjouter (ou étendre à partir modèle) les champs utiles

    Paramètres– sdesc (CharField) – Short description– id (AutoField) – Id– lab (ForeignKey to Lab) – Lab– name (CharField) – Place

    class lab.models.LabUnit(*args, **kwargs)Unités utiles pour un inventaire.

    À fairefaire l’inventaire de ce qui est utilisé

    À faireintégrer les fonctionnalités du projet Units (conversions..)

    Paramètres– lang (CharField) – Language– name (CharField) – Unit– utype (CharField) – Unit type– comments (TextField) – Comments– abbr (CharField) – Unit symbol– id (AutoField) – Id

    class lab.models.SecurityPicto(*args, **kwargs)Pictogrammes de sécurité.Références : voir dossier fixtures.

    À faireRajouter la gestion des traductions.

    Paramètres– code (CharField) – Security picto code

    2.9. Documentation des objets pyrhon 43

  • Eskollz Documentation, Version 0.0.3-dev

    – id (AutoField) – Id– comments (TextField) – Comments– label (CharField) – Security picto label

    class lab.models.SecuritySentence(*args, **kwargs)Phrases de sécurité (R/S/H/P).Référence : voir dossier fixtures.

    Paramètres– lang (CharField) – Langue– code (CharField) – Code– sentence (CharField) – Phrase– comments (TextField) – Comments– id (AutoField) – Id– stype (CharField) – Type de phrase

    views Module

    class lab.views.GetLabItemMixinRenvoie (et enregistre dans self.item) l’élément d’inventaire désigné par pkli.

    class lab.views.GetLabListMixinRenvoie get_lablist une QuerySet filtrée donnant uniquement les laboratoires accessibles à l’utilisateur.

    class lab.views.GetLabMixinRenvoie (et enregistre dans self.lab) le laboratoire désigné par pklab.

    class lab.views.LabCategoryListCreateView(**kwargs)Liste ou crée (tech/resp) une catégorie pour un laboratoire.Utilise lab.serializers.LabCategorySerializer pour la sérialisation.Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoireUrls API :–GET /labs/{idlab}/categories–POST /labs/{idlab}/categoriesserializer_class

    alias de LabCategorySerializer

    class lab.views.LabCategoryRetrieveUpdateDestroyView(**kwargs)Affiche les détails, modifie ou supprime une catégorie pour un laboratoire.–Affichage : tous les utilisateurs du laboratoire.–Suppression / modification : tech / resp uniquement.Utilise lab.serializers.LabCategorySerializer pour la sérialisation.Accès : lecture = user/resp/tech du laboratoire, écriture = resp/tech laboratoireUrls API :–GET /labs/{idlab}/categories/{idcategorie}–PUT /labs/{idlab}/categories/{idcategorie}–PATCH /labs/{idlab}/categories/{idcategorie}–DELETE /labs/{idlab}/categories/{idcategorie}serializer_class

    alias de LabCategorySerializer

    class lab.views.LabItemFilterRecherche d’éléments pour l’inventaire.Ce filtre gère le filtrage de la vue GET /lab/{idlab}/items{?params}Chacun des paramètres peut être précisé plusieurs fois, ce qui réalise une UNION des résultats correspon-dant à chaque filtre.

    À fairechanger le type de résultats.

    44 Chapitre 2. Table des matières

  • Eskollz Documentation, Version 0.0.3-dev

    À fairetests

    Parameters– search* (str) – recherche (non sensible à la casse) par nom, description, commentaires

    (potentiellement aussi : nom de catégorie, description de catégorie, nom du rangement,....

    – fsearch* (str) – comme recherche, mais plus large (nom, description, commentaires,– storage* (number) – recherche par emplacement de rangement (argument = identifiant

    de rangement)– provider* (number) – recherche par fournisseur (argument = identifiant de fournisseur)– categ* (number) – recherche par catégorie (argument = identifiant de catégorie)– secsentence* (number) – recherche par phrase de sécurité (argument = code de sécurité)

    Retourne queryset (queryset) – requète avec tous les filtres

    class lab.views.LabItemListCreateView(**kwargs)Liste ou crée (tech/resp) un élément de laboratoire.

    Parameters ordering (str) – champ de tri (name / -name / sdesc / -sdesc)pre_save(obj)

    Vérification avant sauvegarde qu’on reste bien dans le bon labo... WARNING : uti-lisation d’une propriété privée de DRF... https ://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L937

    serializer_classalias de LabItemSerializer

    class lab.views.LabItemLogListCreateView(**kwargs)Affiche la liste des logs pour un élément de laboratoire. - Affichage : tous les utilisateurs du laboratoire. -Création : resp/tech uniquement.Utilise lab.serializers.LabItemLogSerializer pour la sérialisation (non détaillé).Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.Urls API :–GET /labs/{idlab}/items/{iditem}/logs–POST /labs/{idlab}/items/{iditem}/logsserializer_class

    alias de LabItemLogSerializer

    class lab.views.LabItemLogRetrieveUpdateDestroyView(**kwargs)Affiche les détails des logs pour un élément de laboratoire. - Affichage : tous les utilisateurs du laboratoire.- Suppression / modification : tech / resp uniquement.Utilise lab.serializers.LabItemLogSerializer pour la sérialisation (non détaillé).Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.Urls API :–GET /labs/{idlab}/items/{iditem}/logs/{idlog}–PUT /labs/{idlab}/items/{iditem}/logs/{idlog}–PATCH /labs/{idlab}/items/{iditem}/logs/{idlog}–DELETE /labs/{idlab}/items/{iditem}/logs/{idlog}

    À fairevoir pourquoi pas FullSerializer

    serializer_classalias de LabItemLogSerializer

    class lab.views.LabItemProviderListCreateView(**kwargs)Affiche la liste des fournisseurs / commandes pour un élément de laboratoire. - Affichage : tous les utilisa-teurs du laboratoire. - Création : resp/tech uniquement.Utilise lab.serializers.LabItemProviderSerializer pour la sérialisation (non détaillé).

    2.9. Documentation des objets pyrhon 45

    https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L937https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L937

  • Eskollz Documentation, Version 0.0.3-dev

    Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.Urls API :–GET /labs/{idlab}/items/{iditem}/providers–POST /labs/{idlab}/items/{iditem}/providersserializer_class

    alias de LabItemProviderSerializer

    class lab.views.LabItemProviderRetrieveUpdateDestroyView(**kwargs)Affiche les détails des fournisseurs / commandes pour un élément de laboratoire. - Affichage : tous lesutilisateurs du laboratoire. - Suppression / modification : tech / resp uniquement.Utilise lab.serializers.LabItemProviderSerializer pour la sérialisation (non détaillé).Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.Urls API :–GET /labs/{idlab}/items/{iditem}/providers/{idprovider}–PUT /labs/{idlab}/items/{iditem}/providers/{idprovider}–PATCH /labs/{idlab}/items/{iditem}/providers/{idprovider}–DELETE /labs/{idlab}/items/{iditem}/providers/{idprovider}

    À fairevoir pourquoi pas FullSerializer

    serializer_classalias de LabItemProviderSerializer

    class lab.views.LabItemRetrieveUpdateDestroyView(**kwargs)Affiche les détails, modifie ou supprime un élément de laboratoire. Affichage : tous les utilisateurs du labo-ratoire. Suppression / modification : tech / resp uniquement.get_serializer_class()

    Pour requete GET (retrieve) : affiche tous les détails de l’item et de ses fiches (securité, storage, categs,log, storages...)

    class lab.views.LabItemSecurityListCreateView(**kwargs)Affiche la liste des fiches de sécurité pour un élément de laboratoire. - Affichage : tous les utilisateurs dulaboratoire. - Création : resp/tech uniquement.Utilise lab.serializers.LabItemSecuritySerializer pour la sérialisation (non détaillé).Accès : lecture = user/resp/tech du laboratoire, écriture = resp et tech laboratoire.Urls API :–GET /labs/{idlab}/items/{iditem}/security–POST /labs/{idlab}/items/{iditem}/securityserializer_class

    alias de LabItemSecuritySerializer

    class lab.views.LabI


Recommended