From 6ed0ab6ab7b39e78638fcd6b1ac2e3c9918a1455 Mon Sep 17 00:00:00 2001 From: viennet Date: Thu, 28 Oct 2021 10:23:28 +0200 Subject: [PATCH 1/6] modif page API --- docs/BUT.md | 8 ++++---- docs/GuideAdminSys.md | 2 +- docs/GuideDeveloppeurs.md | 2 +- docs/PublicationEtudiants.md | 2 +- docs/ScoDoc9API.md | 4 +++- docs/ScoDocAPI.md | 3 +-- mkdocs.yml | 3 ++- 7 files changed, 13 insertions(+), 11 deletions(-) diff --git a/docs/BUT.md b/docs/BUT.md index f0b651f6f..d6163d4bd 100644 --- a/docs/BUT.md +++ b/docs/BUT.md @@ -43,7 +43,7 @@ niveaux) et UEs. ## Calcul des notes -Les rôles des SAÉ et ressources étant symétriques, on appellera dans al suite (et +Les rôles des SAÉ et ressources étant symétriques, on appellera dans la suite (et dans ScoDoc) *module* un objet de type SAÉ _ou_ ressource. Dans la suite, on considère les poids et coefficients toujours positifs ou @@ -80,7 +80,7 @@ réduit d'apprentissages critiques: La note (moyenne) d'un module (SAÉ ou ressource) se calcule à partir de ses évaluations. Chaque évaluation est pondérée, par un poids $p$ est fixé par -l'enseignant. ce poids joue le même rôle que le coefficient d'une évaluation +l'enseignant. Ce poids joue le même rôle que le coefficient d'une évaluation classique, mais peut se décliner en plusieurs valeurs, une par UE associée au module. @@ -96,7 +96,7 @@ une UE $u$ *doit* être non nulle; si ce n'est pas le cas, le module sera décla ### Moyenne de module (SAÉ ou ressource) -La moyenne d'un module est un vecteur, car on a une note moyenne par UE: +La moyenne d'un étudiant dans un module est un vecteur, car on a une note moyenne par UE: $$\mu_{m, u} = \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{u,e}}$$ @@ -110,7 +110,7 @@ $$\mu_m = \frac{\sum_e (\sum_u p_{e,u}) \, n_e}{\sum_{u,e} \, p_{u,e}}$$ On va considérer les coefficients de modules et d'évaluations: -$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{u,e}}$$ +$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{e,u}}$$ L'exemple suivant illustre ce mode de calcul: diff --git a/docs/GuideAdminSys.md b/docs/GuideAdminSys.md index ba9cab3e3..4d42fdccb 100644 --- a/docs/GuideAdminSys.md +++ b/docs/GuideAdminSys.md @@ -34,7 +34,7 @@ référer à [GuideInstallDebianDix](GuideInstallDebianDix.md) ou ## Utilisation avancée * [Interfaçage avec Apogée](ScoDocApogee.md) - * [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications + * [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications * [ServicesXml](ServicesXml.md) : web services XML pour interfaçage avec d'autres applications (obsolète). * [AdminUsers](AdminUsers.md) : gestion des utilisateurs * [InterrogationPortail](InterrogationPortail.md) : liaison avec portail diff --git a/docs/GuideDeveloppeurs.md b/docs/GuideDeveloppeurs.md index 3a0f862f1..673bce593 100644 --- a/docs/GuideDeveloppeurs.md +++ b/docs/GuideDeveloppeurs.md @@ -9,7 +9,7 @@ Informations pour les développeurs souhaitant étendre ou modifier ScoDoc. un serveur Discord ouvert sur invitation aux développeur actifs. Contacter Emmanuel. * [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md) * [Créer de nouveaux types de "parcours"](ApiCreationParcours.md) - * [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications + * [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications * Notes diverses * [Discussions pour la future gestion des absences](IdeesGestionAbsences.md) * [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md) diff --git a/docs/PublicationEtudiants.md b/docs/PublicationEtudiants.md index 01ef7110b..80f41dc46 100644 --- a/docs/PublicationEtudiants.md +++ b/docs/PublicationEtudiants.md @@ -7,7 +7,7 @@ Pour communiquer aux étudiants leurs réultats, plusieurs solutions: - Envoi des bulletins (pdf) par mail (c'est facile depuis le menu "Notes"). - Publication sur un autre site Web: typiquement l'ENT de l'établissement, ou un mini-site dédié. - - Pour interfacer un ENT, [voir l'API](ScoDocAPI.md). + - Pour interfacer un ENT, [voir l'API](ScoDoc9API.md). - Plusieurs collègues ont développé des mini-sites pour publier les notes (accès protégé par CAS ou autre). Ces codes ne font pas stricto censu partie de ScoDoc. Quelques exemples en PHP sont distribués dans le répertoire `misc/PublicationBulletins` ([voir ici](https://scodoc.org/git/viennet/ScoDoc/src/branch/master/misc/PublicationBulletins)). - Plus récemment (2020), des collègues de l'IUT de Mulhouse ont développé un mini-portail complet: [Scodoc_Notes](https://github.com/SebL68/Scodoc_Notes) (github), [historique](https://notes.iutmulhouse.uha.fr/maj.php). diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 2fa43e882..8878c3497 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -23,6 +23,8 @@ L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/api/fonction # Fonctions de l'API ScoDoc 7 portées en ScoDoc 9 +L'ancienne API ScoDoc 7 est décrite ici: [ScoDocAPI](ScoDocAPI.md) + Afin de garantir l'interopérabilité avec les clients ScoDoc 7 (ENT, etc), les fonctions suivantes sont disponibles avec le mécanisme d'authentification basique de ScoDoc 7. Elles sont considérées comme *obsolètes* ("deprecated") et @@ -940,7 +942,7 @@ Et un autre exemple en format JSON: ## En savoir plus -Voir l'exemple complet d'utilisation de l'API JSON en Python, dans `misc/example-api-1.py` +Voir exemples d'utilisation de l'API en Python, dans `tests/api/`. diff --git a/docs/ScoDocAPI.md b/docs/ScoDocAPI.md index 48e25d37d..03d5ec841 100644 --- a/docs/ScoDocAPI.md +++ b/docs/ScoDocAPI.md @@ -914,8 +914,7 @@ Et un autre exemple en format JSON: ## En savoir plus -Voir l'exemple complet d'utilisation de l'API JSON en Python, dans `misc/example-api-1.py` - +Voir exemples d'utilisation de l'API en Python, dans `tests/api/`. diff --git a/mkdocs.yml b/mkdocs.yml index 5d0fb746a..74e7dd1ba 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,7 +18,6 @@ nav: - 'Interfaces SI': InterrogationPortail.md - 'Publication des notes': PublicationEtudiants.md - 'Export Apogée': ScoDocApogee.md - - 'API': ScoDocAPI.md - Association: - 'Association 1901': AssociationScoDoc.md @@ -27,6 +26,8 @@ nav: - Développement: - 'Git': https://scodoc.org/git - 'Guide Développeurs': GuideDeveloppeurs.md + - 'API (interfaçages autres logiciels)': ScoDoc9API.md + - FAQ: FAQ.md -- 2.45.2 From d5f2acd896a001491cef78cc260e7526050564fc Mon Sep 17 00:00:00 2001 From: viennet Date: Mon, 1 Nov 2021 19:06:52 +0100 Subject: [PATCH 2/6] added groups_view --- docs/ScoDoc9API.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 8878c3497..4c3d771be 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -39,6 +39,7 @@ Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès. - `Notes/formsemestre_bulletinetud` - `Notes/XMLgetFormsemestres` - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` + - `groups_view` les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est à dire `https://votre.site.fr/ScoDoc//Scolarite/`, et répondent en GET et -- 2.45.2 From b125025eca0563e3d1a5f1cd11301884a340c1cb Mon Sep 17 00:00:00 2001 From: viennet Date: Tue, 9 Nov 2021 21:36:36 +0100 Subject: [PATCH 3/6] roadmap --- docs/GuideInstallDebian11.md | 1 + docs/index.md | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/GuideInstallDebian11.md b/docs/GuideInstallDebian11.md index 2f032546f..5d5cdf2ec 100644 --- a/docs/GuideInstallDebian11.md +++ b/docs/GuideInstallDebian11.md @@ -138,6 +138,7 @@ Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichie ProtectKernelTunables=no ProtectKernelModules=no ReadWritePaths= + ReadOnlyDirectories= Ensuite diff --git a/docs/index.md b/docs/index.md index ea1d35537..e1689cdd6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -85,9 +85,19 @@ Les prochaines versions de ScoDoc (*sous réserve !*): - ScoDoc 9.0 : publiée le 19 sept. 2021, version complètement remaniée en Python 3/Flask. - - ScoDoc 9.1 : octobre 2021 gestion du bachelor (BUT) - - - ScoDoc 9.2 : décembre 2021 nouvelles fonctionnalités liées au BUT. + - ScoDoc 9.1 : novembre 2021 gestion du bachelor (BUT) + - type de formation BUT + - distinction SAE/ressources + - poids (coefs) des évaluations, affichage, édition + - coefs de modules (ressources, SAE): affichage et édition dans ScoDoc + - calculs moyennes modules et vérification conformité + - calcul des moyennes d'UE + - bulletin de note v1 + + - ScoDoc 9.2 : fin 2021 ou début 2022 nouvelles fonctionnalités liées au BUT + - tenue des jurys de S1 + - gestion des parcours (pour la mise en place des semestre) + - import Orébut avec gestion adaptation locale (à l'étude)
-- 2.45.2 From 2d4b651ec7619de97e6df52517b2efaea91bdc12 Mon Sep 17 00:00:00 2001 From: viennet Date: Tue, 9 Nov 2021 21:37:37 +0100 Subject: [PATCH 4/6] =?UTF-8?q?debut=20doc=20nouvelel=20API=20=C3=A0=20ref?= =?UTF-8?q?ormatter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 4c3d771be..ce20dc098 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -48,8 +48,34 @@ en POST. Note: - `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API. +# Résumé des fonctions d'API ScoDoc 9 (work in progress) -# XXX à rédiger XXX Fonctions d'accès aux données +Basé sur le ticket +## Définition des points d'accès à l'API REST (jwt): + +**Note: à reformatter: le tableau n'est pas lisible et exploitable** + +Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction + +| Fonction | Méthode | Paramètres | Exemple | Exemple resultat | Commentaires | +|:--------:|:-------:|:----------:|:-------:|:----------------|:------------:| +|etud_dept |GET|code_nip|/api/etud_dept/123|[ {exist: true, dept: "GEII", id: 987, dept_id: 3} ]|liste des étudiants avec le code NIP donné triée par ordre d'inscription décroissant| +|etud_info |GET|etud_id|/api/etud_info/987|{"nom": "Mutis","sexe": "M.","email": "alvaro.mutis@example.com","prenom": "ALVARO","nomprenom": "M. Alvaro MUTIS","insemestre": [{"etat": "I","formsemestre_id": "SEM12781","date_fin": "2010-07-30","date_debut": "2010-01-25"},{"etat": "I","formsemestre_id": "SEM8396","date_fin": "2009-01-16","date_debut": "2008-09-01"}],"etudid": "EID8768","domicile": "2 Rue Madame","villedomicile": "Paris","telephonemobile": ""}| | +|etud_bul|GET|etud_id ou sem_id|/api/etud_bul **OU** /987/12| |cf formsemestre_bulletinetud de [l'ancienne API](https://scodoc.org/ScoDocAPI/)| +|sem_info|GET|sem_id|/api/sem_info/12|[ {"titre": "DUT Génie Electrique et Informatique Industrielle","date_debut": "01/09/2021","date_fin": "02/02/2022","modalite": "FI","sem_id_txt": "S3","titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3","anneescolaire": "2021 - 2022","periode": 1,"titreannee": "DUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022"} ]| | +|photo|GET|etud_id|/api/photo/123 **OU** /api/photo **OU** /123/smal| | | +|formation_list|GET|dept (*facultatif*)|/api/formation_list **OU** /api/formation_list?dept=GEI| { "id": 1,"dept_id": 1,"acronyme": "BUT GEII", "titre": "BUT G\u00e9nie Electrique et Informatique Industrielle", "titre_officiel": "BUT G\u00e9nie Electrique et Informatique Industrielle","version": 1,"formation_code": "FCOD1","type_parcours": 600,"code_specialite": "","formation_id": 1 }| | +|formsemestre_list|GET|formation_id|/api/formation_list/formation_id| | | +|formsemestre_partition_list|GET|semestre_id|/api/formsemestre_partition_list/semestre_id| | | +|module_list|GET|semestre_id|/api/module_list/semestre_id| | | +|eval_list|GET|module_id|/api/eval_list/module_id| | | +|evaluation_listenotes|GET|evaluation_id|/api/evalutation_listenotes/evaluation_id| | | +|setGroups|POST|partition_id, groupsLists, groupsToDelete, groupsToCreate|/api/setGroups/???| | | +|setNote|POST|evaluation_id, etudid, note|/api/setNote/???| | + + + +# XXX à revoir XXX Fonctions d'accès aux données ## Départements * **`list_depts`** * Paramètres: `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml) -- 2.45.2 From 2db0930bcabbd371dbcf16d0ca0c886801e30db6 Mon Sep 17 00:00:00 2001 From: viennet Date: Tue, 9 Nov 2021 22:24:57 +0100 Subject: [PATCH 5/6] ajout evaluation_listenotes et indique noms dans future API) --- docs/ScoDoc9API.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index ce20dc098..d4005c975 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -34,11 +34,12 @@ Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès. - `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/`) - `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`) - - `Absences/XMLgetAbsEtud` - - `Notes/formsemestre_list` - - `Notes/formsemestre_bulletinetud` - - `Notes/XMLgetFormsemestres` - - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` + - `Absences/XMLgetAbsEtud` (deviendra `api/absences/`, en json) + - `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe) + - `Notes/formsemestre_list` (deviendra `api/formsemestre`) + - `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud`) + - `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) + - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) - `groups_view` les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est -- 2.45.2 From a176adf27bde13c5ed2516971619288c6f60a8f9 Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Wed, 10 Nov 2021 13:22:10 +0100 Subject: [PATCH 6/6] =?UTF-8?q?ajout=20d'informations=20compl=C3=A9mentair?= =?UTF-8?q?es=20sur=20la=20doc=20scodoc9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 194 +---------------------- docs/ScoDoc9API.md | 383 ++++++++++++++++++++++++++++++++------------- 2 files changed, 276 insertions(+), 301 deletions(-) diff --git a/.gitignore b/.gitignore index a1414d4dc..485dee64b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,193 +1 @@ -# ---> Emacs -# -*- mode: gitignore; -*- -*~ -\#*\# -/.emacs.desktop -/.emacs.desktop.lock -*.elc -auto-save-list -tramp -.\#* - -# Org-mode -.org-id-locations -*_archive - -# flymake-mode -*_flymake.* - -# eshell files -/eshell/history -/eshell/lastdir - -# elpa packages -/elpa/ - -# reftex files -*.rel - -# AUCTeX auto folder -/auto/ - -# cask packages -.cask/ -dist/ - -# Flycheck -flycheck_*.el - - - - -# ---> Python -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# Mac OSX OS generated files -.DS_Store? -Thumbs.db -*.DS_Store - -# Other source repository archive directories (protects when importing) -.hg -.svn -CVS - -# MkDocs ScoDoc -site/ +.idea diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index d4005c975..432b42bf6 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -11,8 +11,8 @@ L'API fournit des données JSON, sauf exception (bulletins). Les objets ScoDoc manipulables sont identifiés par des id: - * etudid: étudiant - * formation_id: un programme de formation (page "programmes"); + * etud_id: étudiant + * form_id: un programme de formation (page "programmes"); * ue_id: une UE dans un programme; * matiere_id: une matière dans un programme; * module_id: un module dans un programme. @@ -32,14 +32,14 @@ disparaitront en juillet 2022. Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès. - - `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/`) + - `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/`) - `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`) - - `Absences/XMLgetAbsEtud` (deviendra `api/absences/`, en json) + - `Absences/XMLgetAbsEtud` (deviendra `api/absences/`, en json) - `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe) - - `Notes/formsemestre_list` (deviendra `api/formsemestre`) + - `Notes/form_sem` (deviendra `api/formsemestre`) - `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud`) - `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) - - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) + - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/`) - `groups_view` les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est @@ -61,44 +61,169 @@ Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonctio | Fonction | Méthode | Paramètres | Exemple | Exemple resultat | Commentaires | |:--------:|:-------:|:----------:|:-------:|:----------------|:------------:| |etud_dept |GET|code_nip|/api/etud_dept/123|[ {exist: true, dept: "GEII", id: 987, dept_id: 3} ]|liste des étudiants avec le code NIP donné triée par ordre d'inscription décroissant| -|etud_info |GET|etud_id|/api/etud_info/987|{"nom": "Mutis","sexe": "M.","email": "alvaro.mutis@example.com","prenom": "ALVARO","nomprenom": "M. Alvaro MUTIS","insemestre": [{"etat": "I","formsemestre_id": "SEM12781","date_fin": "2010-07-30","date_debut": "2010-01-25"},{"etat": "I","formsemestre_id": "SEM8396","date_fin": "2009-01-16","date_debut": "2008-09-01"}],"etudid": "EID8768","domicile": "2 Rue Madame","villedomicile": "Paris","telephonemobile": ""}| | -|etud_bul|GET|etud_id ou sem_id|/api/etud_bul **OU** /987/12| |cf formsemestre_bulletinetud de [l'ancienne API](https://scodoc.org/ScoDocAPI/)| +|etud_info |GET|etud_id|/api/etud_info/987|{"nom": "Mutis","sexe": "M.","email": "alvaro.mutis@example.com","prenom": "ALVARO","nomprenom": "M. Alvaro MUTIS","insemestre": [{"etat": "I",form_sem_id": "SEM12781","date_fin": "2010-07-30","date_debut": "2010-01-25"},{"etat": "I",form_sem_id": "SEM8396","date_fin": "2009-01-16","date_debut": "2008-09-01"}],"etud_id": "EID8768","domicile": "2 Rue Madame","villedomicile": "Paris","telephonemobile": ""}| | +|etud_bul|GET|etud_id, sem_id|/api/etud_bul/987/12| |cf formsemestre_bulletinetud de [l'ancienne API](https://scodoc.org/ScoDocAPI/)| |sem_info|GET|sem_id|/api/sem_info/12|[ {"titre": "DUT Génie Electrique et Informatique Industrielle","date_debut": "01/09/2021","date_fin": "02/02/2022","modalite": "FI","sem_id_txt": "S3","titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3","anneescolaire": "2021 - 2022","periode": 1,"titreannee": "DUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022"} ]| | -|photo|GET|etud_id|/api/photo/123 **OU** /api/photo **OU** /123/smal| | | -|formation_list|GET|dept (*facultatif*)|/api/formation_list **OU** /api/formation_list?dept=GEI| { "id": 1,"dept_id": 1,"acronyme": "BUT GEII", "titre": "BUT G\u00e9nie Electrique et Informatique Industrielle", "titre_officiel": "BUT G\u00e9nie Electrique et Informatique Industrielle","version": 1,"formation_code": "FCOD1","type_parcours": 600,"code_specialite": "","formation_id": 1 }| | -|formsemestre_list|GET|formation_id|/api/formation_list/formation_id| | | -|formsemestre_partition_list|GET|semestre_id|/api/formsemestre_partition_list/semestre_id| | | +|photo|GET|etud_id|/api/photo/123 **OU** /api/photo/123/smal| | | +|formations|GET|dept (*facultatif*)|/api/formations **OU** /api/formations?dept=GEI| { "id": 1,"dept_id": 1,"acronyme": "BUT GEII", "titre": "BUT G\u00e9nie Electrique et Informatique Industrielle", "titre_officiel": "BUT G\u00e9nie Electrique et Informatique Industrielle","version": 1,"formation_code": "FCOD1","type_parcours": 600,"code_specialite": "","form_id": 1 }| | +|form_sem|GET|form_id|/api/formations/form_id| | | +|form_sem_partition|GET|semestre_id|/api/form_sem_partition/semestre_id| | | |module_list|GET|semestre_id|/api/module_list/semestre_id| | | |eval_list|GET|module_id|/api/eval_list/module_id| | | -|evaluation_listenotes|GET|evaluation_id|/api/evalutation_listenotes/evaluation_id| | | +|evaluation_listenotes|GET|eval_id|/api/evalutation_listenotes/eval_id| | | |setGroups|POST|partition_id, groupsLists, groupsToDelete, groupsToCreate|/api/setGroups/???| | | -|setNote|POST|evaluation_id, etudid, note|/api/setNote/???| | +|setNote|POST|eval_id, etud_id, note|/api/setNote/???| | # XXX à revoir XXX Fonctions d'accès aux données +## Etudiants + * **`etud_dept`** + * Méthode: GET + * Paramètres: `code_nip` + * Format URL: `/api/etud_dept/` + * Exemple d'utilisation: `/api/etud_dept/123` + * Résultat: Liste des étudiants avec le code NIP donné tirée par ordre d'inscription décroissant. + * Exemple de résultat: + ``` + [ + { + exist: true, + dept: "GEII", + id: 987, + dept_id: 3 + } + ] + ``` + * Codes HTTP: + + + * **`etud_info`** + * Méthode: GET + * Paramètres: `etud_id` + * Format URL: `/api/etud_dept/` + * Exemple d'utilisation: `/api/etud_info/987` + * Résultat: Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. + * Exemple de résultat: + ``` + { + "nom": "Mutis", + "sexe": "M.", + "email": "alvaro.mutis@example.com", + "prenom": "ALVARO", + "nomprenom": "M. Alvaro MUTIS", + "insemestre": [ + { + "etat": "I", + form_sem_id": "SEM12781", + "date_fin": "2010-07-30", + "date_debut": "2010-01-25" + }, + { + "etat": "I", + form_sem_id": "SEM8396", + "date_fin": "2009-01-16", + "date_debut": "2008-09-01" + } + ], + "etud_id": "EID8768", + "domicile": "2 Rue Madame", + "villedomicile": "Paris", + "telephonemobile": "" + } + ``` + * Codes HTTP: + + + * **`etud_bul`** + * Méthode: GET + * Paramètres: `etud_id`, `sem_id` + * Format URL: `/api/etud_bul//` + * Exemple d'utilisation: `/api/etud_bul/987/12` + * Résultat: + * Exemple de résultat: + * Codes HTTP: + + + * **`etud_photo`** + * Méthode: GET + * Paramètres: `etud_id`, `small` + * Format URL: `/api/etud_photo/` **OU** `/api/etud_photo//small` (_ajout du paramètre **small** pour la version small_) + * Exemple d'utilisation: `/api/etud_photo/123` **OU** `/api/etud_photo/123/small` (_pour la version small_) + * Résultat: + * Exemple de résultat: + * Codes HTTP: + + +## Semestres + * **`sem_info`** + * Méthode: GET + * Paramètres: `sem_id` + * Format URL: `/api/sem_id/` + * Exemple d'utilisation: `/api/sem_info/12` + * Résultat: Une liste avec les informations du semestre correspondant à l'id passé en paramètres. + * Exemple de résultat: + ``` + [ + { + "titre": "DUT Génie Electrique et Informatique Industrielle", + "date_debut": "01/09/2021", + "date_fin": "02/02/2022", + "modalite": "FI", + "sem_id_txt": "S3", + "titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3", + "anneescolaire": "2021 - 2022", + "periode": 1, + "titreannee": "DUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022" + } + ] + ``` + * Codes HTTP: + + + ## Départements - * **`list_depts`** + * **`departements`** + * Méthode: * Paramètres: `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml) - * Résultat: liste des id de départements. + * Format URL: + * Exemple d'utilisation: + * Résultat: Liste des id de départements. + * Exemple de résultat: + * Codes HTTP: + ## Programmes de formations - * **`formation_list`** - * Paramètres: `formation_id` (optionnel, si absent liste toutes les formations) - * Résultat: liste de formations. + * **`formations`** + * Méthode: GET + * Paramètres: `form_id` (_optionnel, si absent liste toutes les formations_) + * Format URL: `/api/formations` **ou** `/api/formations/` + * Exemple d'utilisation: `/api/formations` **ou** `̀/api/formations/1` + * Résultat: Liste des formations. + * Exemple de résultat: + * Codes HTTP: - * **`formation_export`** - * Paramètres: `formation_id`, `export_ids` (défaut "faux") + + * **`form_export`** + * Méthode: + * Paramètres: `form_id`, `export_ids` (défaut "faux") + * Format URL: + * Exemple d'utilisation: * Résultat: la formation, avec UE, matières, modules (un arbre). - + * Exemple de résultat: + * Codes HTTP: ## Semestres de formation Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`. - * **`formsemestre_list`** - * Paramètres (tous optionnels): `formsemestre_id`, `formation_id`, `etape_apo`, `etape_apo2` - * Résultat: liste des semestres correspondant. - * Exemple: `formsemestre_list?format=xml&etape_apo=V1RT` + * **`form_sem`** + * Méthode: GET + * Paramètres (_tous optionnels_): `form_sem_id`, `form_id`, `etape_apo`, `etape_apo2` + * Format URL: `/api/form_sem?form_id=1&etape_apo=V1RT` + * Exemple d'utilisation: `/api/form_sem?format=xml&etape_apo=V1RT` + * Résultat: Liste des semestres correspondant. + * Exemple de résultat: + * Codes HTTP: Note sur les identifiants de sessions: le `session_id` peut être utilisé pour identifier de façon prévisible et (presque) unique une session dans un établissement, ce qui est utile notamment pour interfacer ScoDoc à d'autres logiciels (eg gestion d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué des informations suivantes: @@ -116,72 +241,75 @@ Exemple: `INFO-DUT-FI-S1-2014` : semestre S1 d'un DUT informatique de 2014 en fo ## Groupes et partitions L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieurs partitions (types de groupes). Chaque partition est constituée d'un nombre quelconque de groupes d'étudiants. - * **`formsemestre_partition_list`** - * Paramètres: `formsemestre_id` + * **`form_sem_partition`** + * Méthode: GET + * Paramètres: `form_sem_id` + * Format URL: `/api/form_sem_partition/form_sem_id` + * Exemple d'utilisation: * Résultat: - * Exemple: ici au format JSON -``` -[ - { - "formsemestre_id": "SEM12781", - "partition_id": "P23840", - "partition_name": "TD" - "group": [ - { - "formsemestre_id": "SEM12781", - "partition_id": "P23840", - "group_name": "A", - "group_id": "G23841", - "partition_name": "TD" - }, - { - "formsemestre_id": "SEM12781", - "partition_id": "P23840", - "group_name": "B", - "group_id": "G23843", - "partition_name": "TD" - }, - ], - }, - { - "formsemestre_id": "SEM12781", - "partition_id": "P23941", - "partition_name": "TP" - "group": [ - { - "formsemestre_id": "SEM12781", - "partition_id": "P23941", - "group_name": "A1", - "group_id": "G23942", - "partition_name": "TP" - }, - { - "formsemestre_id": "SEM12781", - "partition_id": "P23941", - "group_name": "A2", - "group_id": "G23943", - "partition_name": "TP" - }, - ], - }, - { - "formsemestre_id": "SEM12781", - "partition_id": "P22833", - "partition_name": null - "group": [ - { - "formsemestre_id": "SEM12781", - "partition_id": "P22833", - "group_name": null, - "group_id": "G22834", - "partition_name": null - } - ], - } -] -``` + * Exemple de résultat: ici au format JSON + ``` + [ + { + form_sem_id": "SEM12781", + "partition_id": "P23840", + "partition_name": "TD" + "group": [ + { + form_sem_id": "SEM12781", + "partition_id": "P23840", + "group_name": "A", + "group_id": "G23841", + "partition_name": "TD" + }, + { + form_sem_id": "SEM12781", + "partition_id": "P23840", + "group_name": "B", + "group_id": "G23843", + "partition_name": "TD" + }, + ], + }, + { + form_sem_id": "SEM12781", + "partition_id": "P23941", + "partition_name": "TP" + "group": [ + { + form_sem_id": "SEM12781", + "partition_id": "P23941", + "group_name": "A1", + "group_id": "G23942", + "partition_name": "TP" + }, + { + form_sem_id": "SEM12781", + "partition_id": "P23941", + "group_name": "A2", + "group_id": "G23943", + "partition_name": "TP" + }, + ], + }, + { + form_sem_id": "SEM12781", + "partition_id": "P22833", + "partition_name": null + "group": [ + { + form_sem_id": "SEM12781", + "partition_id": "P22833", + "group_name": null, + "group_id": "G22834", + "partition_name": null + } + ], + } + ] + ``` * **`groups_view`** - * Paramètres: `formsemestre_id `ou `group_ids` (peut être répété), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I` + * Paramètres: form_sem_id `ou `group_ids` (peut être répété), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I` * Résultat: liste des étudiants dans un groupe. * Exemple: ici au format XML avec `with_codes=1`: ``` @@ -192,7 +320,7 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu - + @@ -202,7 +330,7 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu - + @@ -237,12 +365,21 @@ Et un autre exemple en format JSON: ] ``` + * **`set_groups`** + * Méthode: POST + * Paramètres: `partition_id`, `groups`, `groups_to_delete`, `groups_to_create` + * Format URL: `/api/set_groups?partition_id=&groups=&groups_to_delete=&groups_to_create=` + * Exemple d'utilisation: + * Résultat: Set les groups. + * Exemple de résultat: + * Codes HTTP: + ## Etudiants * **`etud_info`** - * Paramètres: `etudid` ou `code_nip` ou `code_ine` + * Paramètres: `etud_id` ou `code_nip` ou `code_ine` * Résultat: informations sur cette étudiant et les semestres dans lesquels il est (ou a été) inscrit. - * Exemple: `etud_info?format=json&etudid=12345` + * Exemple: `etud_info?format=json&etud_id=12345` ``` { "nom": "Mutis", @@ -253,19 +390,19 @@ Et un autre exemple en format JSON: "insemestre": [ { "etat": "I", - "formsemestre_id": "SEM12781", + form_sem_id": "SEM12781", "date_fin": "2010-07-30", "date_debut": "2010-01-25" }, { "etat": "I", - "formsemestre_id": "SEM8396", + form_sem_id": "SEM8396", "date_fin": "2009-01-16", "date_debut": "2008-09-01" } ], "code_ine": "", - "etudid": "EID8768", + "etud_id": "EID8768", "code_nip": "10991002", "photo_url": "/ScoDoc/static/photos/F13/RT_EID8768.h90.jpg", @@ -289,8 +426,38 @@ Et un autre exemple en format JSON: ## Bulletins de notes + * **`evaluations`** + * Méthode: GET + * Paramètres: `module_id` + * Format URL: `/api/evaluations/` + * Exemple d'utilisation: `/api/evaluations/54` + * Résultat: Liste des evaluations à partir de l'id d'un module. + * Exemple de résultat: + * Codes HTTP: + + + * **`eval_notes`** + * Méthode: GET + * Paramètres: `eval_id` + * Format URL: `/api/eval_notes/` + * Exemple d'utilisation: `/api/eval_notes/24` + * Résultat: Liste des notes à partir de l'id d'une évaluation donnée. + * Exemple de résultat: + * Codes HTTP: + + + * **`eval_set_notes`** + * Méthode: POST + * Paramètres: `eval_id`, `etud_id`, `note` + * Format URL: `/api/eval_set_notes?eval_id=&etud_id=¬e=` + * Exemple d'utilisation: `/api/eval_set_notes?eval_id=6&etud_id=456¬e=15` + * Résultat: Set les notes d'une évaluation pour un étudiant donné. + * Exemple de résultat: + * Codes HTTP: + + * **`Notes/formsemestre_bulletinetud`** - * Paramètres: `formsemestre_id`, `etudid`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`) + * Paramètres: `form_sem_id`, `etud_id`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`) * Résultat: bulletin de notes * Exemple: ici au format JSON, pour une version courte (`version=short`) ``` @@ -307,7 +474,7 @@ Et un autre exemple en format JSON: "prenom": "Roberto", "sexe": "M.", "code_ine": "", - "etudid": "EID9860", + "etud_id": "EID9860", "code_nip": "123456789", "email": "roberto@santateresa.mx", "photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg" @@ -322,7 +489,7 @@ Et un autre exemple en format JSON: "decision": { "etat": "I", "code": "ADM", - "compense_formsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */ + "compenseform_sem_id" : "SEM12345" /* si ce semestre en compense un autre */ }, "note": { "max": "15.51", @@ -330,7 +497,7 @@ Et un autre exemple en format JSON: "value": "15.51", "min": "07.29" }, - "etudid": "EID9860", + "etud_id": "EID9860", "decision_ue": [ { "acronyme": "UE11", @@ -403,7 +570,7 @@ Et un autre exemple en format JSON: "group_name": "" } ], - "formsemestre_id": "SEM12345", + form_sem_id": "SEM12345", "etape_apo": "V1RT", "ue": [ { @@ -924,18 +1091,18 @@ Et un autre exemple en format JSON: ## Absences * **`Absences/ListeAbsEtud`** - * Paramètres: `etudid, absjust_only, format`. `absjust_only` spécifie si on veut les absences justifiées ou non. + * Paramètres: `etud_id, absjust_only, format`. `absjust_only` spécifie si on veut les absences justifiées ou non. * Résultat: liste d'absences. Exemple: ```{jour: "2021-02-10", ampm: "0", description: "M2202", }``` (`ampm` vaut 1 le matin et 0 l'après-midi). * **`Absences/doSignaleAbsence`** - * Paramètres: ```datedebut, datefin, moduleimpl_id=None, demijournee=2, estjust=False,description, etudid``` + * Paramètres: ```datedebut, datefin, moduleimpl_id=None, demijournee=2, estjust=False,description, etud_id``` * Résultat: *html* * Remarques: dates au format `dd/mm/yyyy`. Date de fin non incluse. `demijournee`: 2 si journée complète, 1 matin, 0 après-midi. * **`Absences/doAnnuleAbsence`** - * Paramètres: ```datedebut, datefin, demijournee, etudid``` + * Paramètres: ```datedebut, datefin, demijournee, etud_id``` * Résultat: *html* * **`Absences/doAnnuleJustif`** @@ -953,7 +1120,7 @@ Et un autre exemple en format JSON: nbabsnonjust: "7", nbjustifs_noabs: "0", nomprenom: "Mme Poisson Dodouce", - etudid: "EID12345" + etud_id: "EID12345" }, ... ]``` @@ -961,11 +1128,11 @@ Et un autre exemple en format JSON: ## Modules * **`Notes/do_moduleimpl_list`** - * Paramètres: `[formsemestre_id, moduleimpl_id, module_id]` + * Paramètres: `form_sem_id, moduleimpl_id, module_id]` * Résultat: liste de moduleimpl * **`Notes/do_moduleimpl_withmodule_list`** - * Paramètres: `[formsemestre_id, moduleimpl_id, module_id]` + * Paramètres: `form_sem_id, moduleimpl_id, module_id]` * Résultat: liste triée de moduleimpl, avec l'attribut `module` -- 2.45.2