Merge branch 'master' into modif

This commit is contained in:
Matthias HARTMANN 2024-06-17 15:26:04 +02:00
commit 54863f24ad
44 changed files with 1084 additions and 480 deletions

View File

@ -1,3 +1,22 @@
# Les jurys de BUT
Page à rédiger.
!!! warning Travaux en cours
Cette page est en cours de rédaction.
Le Bachelor Universitaire de Technologie (BUT) institue des règles de
progression et de validation spécifiques dont ScoDoc tient compte.
## Décisions de jury en BUT
*décrire sur quoi portent les décisions (UE, )
Voir détail des codes [Codes de jurys BUT](BUTCodesJury.md).
!!! note "Voir aussi"
- [Récapitulatif des opérations en fin de semestre](TransitionSemestre.md)
- [Codes de jurys BUT](BUTCodesJury.md)
- [Calculs spécifiques en BUT](BUT.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -35,8 +35,8 @@ réglées via via la page **Paramétrage** de chaque département:
![Réglage des notifications](fig/config-dept-abs.png)
!!! note "Voir aussi"
- Configuration système: [Envoi des courriers électroniques](ProblemesMail.md)
- Installation, flux réseaux et configuration: [Guide d'installation](GuideInstallDebian11.md)
- Installation, flux réseaux et configuration: [Guide d'installation](GuideInstallDebian12.md)
- [Contacts](Contact.md)

View File

@ -13,8 +13,8 @@ aussi bien l'affaire).
### Conseils pour la machine virtuelle
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Linux ou
Windows. Créer une VM avec Debian 10, et suivre la
[procédure habituelle d'installation de ScoDoc](GuideInstallDebian11.md).
Windows. Créer une VM avec Debian 12, et suivre la
[procédure habituelle d'installation de ScoDoc](GuideInstallDebian12.md).
Sur les Macs anciens (processeurs Intel), VirtualBox fonctionne bien. Sur les
modèles "M1" (Apple Silicon), je conseille d'utiliser
@ -70,7 +70,7 @@ la VM:
ici `enp0s8` correspond à l'`Adapter 2`. Si vous travaillez sur une machine fixe
avec connexion permanente, vous pouvez dans Debian activer cette interface
constamment (modifier `/etc/network/interfaces`).
constamment (modifier `/etc/network/interfaces`).
### Noms des machines
@ -91,9 +91,9 @@ type `sshfs`peut aussi faire l'affaire).
- [Conventions de codage](DevConventions.md)
- [API ScoDoc 9](ScoDoc9API.md)
- [Guide installation](GuideInstallDebian11.md)
- [Guide installation](GuideInstallDebian12.md)
- [Gestion des utilisateurs](AdminUsers.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)
-
-

View File

@ -33,7 +33,7 @@ permet d'indiquer le semestre et l'étudiant à regarder.
Vous trouverez les sources du projet, les tickets (*issues*) et autres outils sur
* [gitea](https://scodoc.org/git/)
* [gitea](https://git.scodoc.org)
Vous pouvez demander un compte sur cette plate-forme pour ajouter des tickets,
proposer votre code (*pull requests*).

View File

@ -7,7 +7,7 @@ collègues, ou en développant ou testant le logiciel.
Les canaux de communication entre développeurs sont
[indiqués sur cette page](Contact.md). Vous pouvez demander un compte sur le [git du
projet](https://scodoc.org/git), consulter/ajouter des tickets, proposer votre
projet](https://git.scodoc.org), consulter/ajouter des tickets, proposer votre
code (*pull requests*).
## Contribuer à la documentation
@ -21,11 +21,11 @@ La documentation est constituée de deux parties:
- Les pages Web comme celle que vous lisez actuellement. La documentation est
générée via `MkDocs`, un système très simple basé sur le format
[Markdown](https://www.markdownguide.org/basic-syntax/). Toutes les sources
sont sur le [dépôt git DocScoDoc](https://scodoc.org/git/viennet/DocScoDoc).
sont sur le [dépôt git DocScoDoc](https://git.scodoc.org/viennet/DocScoDoc).
## Contribuer au logiciel
Le [dépôt principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs
Le [dépôt principal](https://git.scodoc.org/viennet/ScoDoc) comporte plusieurs
branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).

View File

@ -1,6 +1,6 @@
# Utilisation de git pour ScoDoc
Le dépôt est <https://scodoc.org/git/viennet/ScoDoc>
Le dépôt est <https://git.scodoc.org/viennet/ScoDoc>
La branche `master` est celle de ScoDoc 9, d'où sont issues les paquets
distribués (*releases*). Les développements ont lieu sur d'autres branches
@ -48,7 +48,7 @@ mises à jour de `master` (remote), faire:
Vous travaillez sur un clone du dépôt principal ("origin"), obtenu par exemple via
```bash
git clone https://scodoc.org/git/ScoDoc/ScoDoc.git
git clone https://git.scodoc.org/ScoDoc/ScoDoc.git
```
remplacer par l'URL de votre dépôt sur gitea au besoin. Si vous avez votre
@ -57,12 +57,12 @@ nommé `mon_origin`), l'autre pour le dépôt principal ScoDoc (ici nommé
`origin`).
```bash
git remote add origin https://scodoc.org/git/viennet/ScoDoc.git
git remote add origin https://git.scodoc.org/viennet/ScoDoc.git
git remote -v
mon_origin https://xxx.xxx (fetch)
mon_origin https://xxx.xxx (push)
origin https://scodoc.org/git/viennet/ScoDoc.git (fetch)
origin https://scodoc.org/git/viennet/ScoDoc.git (push)
origin https://git.scodoc.org/viennet/ScoDoc.git (fetch)
origin https://git.scodoc.org/viennet/ScoDoc.git (push)
```
Ensuite, tout est prêt, vous créez votre branche:
@ -103,7 +103,7 @@ Lint tous les fichiers modifiés:
Affiche les variables non définies dans un fichier:
```bash
pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \'
pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \'
```
Prépare un sed pour renommer les variables non définies:
@ -154,14 +154,14 @@ la mise en place, le suivi et la livraison.
#### L'installation
Il est pratique d'avoir en ligne les deux dépôts git distants que vous pouvez
utiliser : votre dépôt personnel (`https://scodoc.org/git/<user>/<dépôt>.git`) et
le dépôt officiel (`https://scodoc.org/git/ScoDoc/ScoDoc.git`).
utiliser : votre dépôt personnel (`https://git.scodoc.org/<user>/<dépôt>.git`) et
le dépôt officiel (`https://git.scodoc.org/ScoDoc/ScoDoc.git`).
pour ajouter une référence (et lui donner un nom) vers un dépôt distant, entrez
la commande:
```bash
git remote add nom_remote https://scodoc.org/git/ScoDoc/<dépôt>.git
git remote add nom_remote https://git.scodoc.org/ScoDoc/<dépôt>.git
```
Par la suite vous aurez donc une référence vers votre dépôt personnel (`perso`)
@ -186,7 +186,7 @@ suivantes par `git stash` (avant) et `git stash apply` (après) :
```bash
git reset --hard officiel/master
git checkout -b ma_modif
git checkout -b ma_modif
```
À partir de là, vous pouvez modifier, tester, développer et commit votre travail.
@ -249,7 +249,7 @@ l'équivalent sous *pyCharm*).
for fn in $(git diff --name-only officiel/master)
do
python3 -m black $fn
done
done
```
Faire une première lecture rapide pour vérifier qu'il ne reste pas de fichiers
@ -384,7 +384,7 @@ soit refusé (car le rebase a modifié des commits qui avaient déjà été pous
Dans ce cas l'option `--force` du push vous permette de passer outre, mais
assurez-vous avant d'être le seul à travailler sur cette branche.
#### Etape 5 : La dernière étape se passe sur le site [scodoc.org/git](https://scodoc.org/git/)
#### Etape 5 : La dernière étape se passe sur le site [git.scodoc.org](https://git.scodoc.org/)
- Identifiez-vous

View File

@ -132,7 +132,7 @@ http GET http://localhost:5000/ScoDoc/api/formsemestres/query "Authorization:Bea
### Côté programmation serveur
Reprenons le même exemple (voir `app/api/formsemestres.py`` ligne 91,
<https://scodoc.org/git/ScoDoc/ScoDoc/src/branch/master/app/api/formsemestres.py#L91>):
<https://git.scodoc.org/ScoDoc/ScoDoc/src/branch/master/app/api/formsemestres.py#L91>):
```py
@bp.route("/formsemestres/query")

View File

@ -19,9 +19,27 @@ qui peuvent être négatives).
compte dans les moyennes même si l'évaluation n'est pas affichée.
- **Prise en compte immédiate**: si coché, les notes saisies dans l'évaluation
seront prises en compte dans le calcul des moyennes avant même que les notes
de tous les étudiants ne soit saisies. Ce réglage peut-être dangereux car les
notes sont montrées aux étudiants avant qu'elles soient définitives et devrait
rester réservé à des cas particuliers.
de tous les étudiants ne soit saisies. Ne pas utiliser pour les évaluations de
rattrapage ou de deuxième session (qui sont prises en compte quand elles
existent).
### Pourquoi éviter d'utiliser "prise en compte immédiate" ?
Il est tentant de positionner toutes les évaluations en "*prise en compte
immédiate*", parce que cela permet de communiquer leurs résultats aux étudiants
sans attendre. Ce n'est pourtant pas une bonne idée, car:
- cela complique l'harmonisation: si on a plusieurs correcteurs, et que le second
se rend compte d'une erreur de barème, il sera trop tard pour corriger sans
informer les étudiants;
- cela augmente le risque d'oubli ou de négligence (tout devrait être fait pour
que les collègues corrigent et saisissent leurs notes rapidement);
- en note manquante dans une évaluation "immédiate" est considérée comme "en
attente": cela bloque la tenue du jury pour ces étudiants.
Ce réglage peut-être être contre-productif, voire nuisible si les notes sont
montrées aux étudiants avant qu'elles soient définitives: il devrait rester
réservé à des cas particuliers.
## Coefficient et poids
@ -45,12 +63,13 @@ l'évaluation est dite *en attente*. Elle est prise en compte.
## Modalité d'une évaluation
- **Normale**: produit une note utilisée dans le calcul des moyennes du module.
- **Rattrapage**: la note d'une évaluation de "rattrapage" remplacera la moyenne
du module de l'étudiant *si et seulement si elle est meilleures que celles
calculées*.
- **Deuxième session**: la note remplace, lorsqu'elle est saisie, la moyenne de
l'étudiant à ce module, même si sa note de deuxième session est plus faible
que sa moyenne normale.
- **Rattrapage**: la note d'une évaluation de "rattrapage" remplacera la moyenne
du module de l'étudiant *si et seulement si elle est meilleure que celles
calculées*. S'il y a des évaluations de deuxième session, celles de
rattrapage sont ignorées.
- **Bonus**: la valeur est ajoutée à la moyenne du module, voir détail ci-dessous.
### Évaluations de "bonus"
@ -59,15 +78,23 @@ Les évaluations bonus sont particulières:
- la valeur est ajoutée à la moyenne du module;
- le bonus peut être négatif (malus);
- le bonus ne s'applique pas aux notes de rattrapage et deuxième session;
- le bonus s'applique après utilisation des notes de rattrapage ou de deuxième session;
- le coefficient est ignoré, mais en BUT le bonus vers une UE est multiplié par le poids correspondant (par défaut égal à 1);
- les notes de bonus sont prises en compte même si incomplètes.
Note 1: la conformité des évaluations au programme (coefficients vers les UEs) ne
prend pas en compte les évaluations bonus.
## Bloquage et date de prise en compte
Ceci permet d'empêcher la prise en compte (et éventuellement la publication) de
l'évaluation, même si ses notes sont complètes, ou bien de la différer jusqu'à
la date indiquée.
la date indiquée. Cette fonctionnalité peut être utilisée
- temporairement pour ne pas communiquer trop tôt un résultat aux étudiants (on
peut alors programmer la date de déblocage);
- définitivement parce qu'on décide de ne pas tenir compte d'une évaluation,
mais de garder ses résultats saisis.
!!! note "Voir aussi"

View File

@ -6,7 +6,7 @@
ScoDoc a été conçu et développé par Emmanuel Viennet, puis complété par
plusieurs contributeurs, enseignants ou BIATSS dans les IUT et universités. Son
développement est toujours actif, voir le dépôt git <https://scodoc.org/git>.
développement est toujours actif, voir la plateforme gitea <https://git.scodoc.org>.
En 2020, une association a été créée pour soutenir et pérenniser le projet: par
exemple pour acquérir services et équipements pour le développement
@ -135,7 +135,7 @@ Voir [la page sur la gestion des logos et images](GestionLogos.md).
ScoDoc est accessible depuis n'importe quel navigateur Web (Firefox, Chrome, ...).
Le serveur ScoDoc fonctionne sous Linux. Il n'est testé qu'avec Debian (stable).
Le script d'installation ([GuideInstallDebian11](GuideInstallDebian11.md))
Le script d'installation ([GuideInstallDebian12](GuideInstallDebian12.md))
assure l'installation de tout les éléments nécessaires au bon fonctionnement de
ScoDoc.

View File

@ -54,11 +54,24 @@ Pour éviter d'inonder les utilisateurs de messages, plusieurs paramètres sont
de notification (comptées en demi-journées);
* seuil notifications suivantes: une notifications toutes les *N* absences,
après le premier seuil;
* message notification e-mail (template modifiable).
* message notification e-mail (template modifiable, voir ci-dessous).
Ces paramètres peuvent être spécifiés globalement ou par semestre (comme pour la
plupart des paramètres ScoDoc, voir [PreferencesScoDoc](PreferencesScoDoc.md)).
### Contenu du mail de notification
Le contenu du mail de notification envoyé est défini par la préférence *Message
notification e-mail*, qui peut contenir des balises remplacées, suivant
l'ancienne syntaxe python `%(nom-balise)s`.
- `nbabs`: nombre d'absences
- `nbabsjust`: nombre d'absences justifiées
- `nbabsnonjust`: nombre d'absences non justifiées
- `url_ficheetud`: URL de la fiche de l'étudiant (accessible seulement avec authentification)
- `titre_mois`: titre et dates du semestre concerné (ex: "BUT R&T semestre 1 FI (Sept 2022 - Jan 2023)")
*Absences aux évaluations*: lorsqu'une absence concerne potentiellement une
évaluation, le responsable du module concerné peut être prévenu. Limitations: la
résolution temporelle de l'absence est la demi-journée, une évaluation peut être

View File

@ -1,12 +1,12 @@
# Guide pour les administrateurs système de ScoDoc
ScoDoc 9 est prévu pour fonctionner sur un serveur **Linux Debian 11 (Bullseye)**.
L'installation sur tout autre système n'est **pas supportée**.
ScoDoc 9 est prévu pour fonctionner sur un serveur **Linux Debian 12 (Bookworm)**.
L'installation sur tout autre système n'est **pas supportée**.
Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de machine Debian dédiée.
## Installation
* Installation de ScoDoc: [GuideInstallDebian11](GuideInstallDebian11.md)
* Installation de ScoDoc: [GuideInstallDebian12](GuideInstallDebian12.md)
* Migration d'un serveur ScoDoc 7 vers la nouvelle version Scodoc 9: [MigrationScoDoc7a9](MigrationScoDoc7a9.md)
@ -36,7 +36,7 @@ Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de mac
!!! note "Voir aussi"
- [Guide pour les développeurs](GuideDeveloppeurs.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,7 +1,7 @@
# Prise en main et paramétrage de ScoDoc 9
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans
[GuideInstallDebian11](GuideInstallDebian11.md).
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans
[GuideInstallDebian12](GuideInstallDebian12.md).
## Administration en ligne de commande
@ -10,15 +10,15 @@ création d'utilisateurs "super admin", c'est à dire admin pour tous les
départements. Le reste des paramétrages (création de comptes, de formations,
import d'étudiants, etc) se fait à partir du logiciel (web).
L'administration se fait dans un terminal connecté au serveur (en général via
L'administration se fait dans un terminal connecté au serveur (en général via
ssh), en tant qu'utilisateur `scodoc` (*et non* `root`).
Se connecter et initialiser la session ainsi:
ssh votre.serveur # si nécessaire
su scodoc # idem,
su scodoc # idem,
# ou tout autre moyen d'ouvrir un shell comme scodoc
cd /opt/scodoc
source venv/bin/activate
@ -64,12 +64,12 @@ où `admin2` est ici le pseudo du nouvel admin.
### Changement du mot de passe d'un utilisateur
Cette opération peut s'effectuer via la page de gestion web des
utilisateurs, mais il est parfois commode de le faire depuis la
utilisateurs, mais il est parfois commode de le faire depuis la
console:
flask user-password LOGIN
`LOGIN` est le pseudo de l'utilisateur. Le mot de passe est demandé
`LOGIN` est le pseudo de l'utilisateur. Le mot de passe est demandé
sur la ligne de commande.
### Création d'un nouveau rôle
@ -96,7 +96,7 @@ Ajoute ou retire une permission.
Exemples:
flask user-role dupont
flask user-role dupont
affiche les rôles de l'utilisateur `dupont`.
@ -122,7 +122,7 @@ Ces commandes sont utilisées par le script de migration de ScoDoc 7 à ScoDoc 9
#### Comptes utilisateurs
Toujours migrer les comptes utilisateurs avant d'importer les
Toujours migrer les comptes utilisateurs avant d'importer les
départements.
flask import-scodoc7-users
@ -353,7 +353,7 @@ département, qui à son tour peut déléguer des droits.
!!! note "Voir aussi"
- [Guide installation](GuideInstallDebian11.md)
- [Guide installation](GuideInstallDebian12.md)
- [Gestion des utilisateurs](AdminUsers.md)
- [Rôles et permissions](ConfigPermissionsDept.md)
- [Configuration des envois d'emails](ConfigEmail.md)

View File

@ -4,7 +4,7 @@ Informations pour les développeurs souhaitant étendre ou modifier ScoDoc.
Pour le développement de logiciels externes, [utiliser l'API](ScoDoc9API.md).
Accès à la [plate-forme Gitea](https://scodoc.org/git).
Accès à la [plate-forme Gitea](https://git.scodoc.org).
## Informations générales
@ -146,14 +146,14 @@ Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
## Roadmap
* [voir les tickets](https://scodoc.org/git/viennet/ScoDoc/issues)
* [voir les tickets](https://git.scodoc.org/viennet/ScoDoc/issues)
!!! note "Voir aussi"
- [Conventions de codage](DevConventions.md)
- [API ScoDoc 9](ScoDoc9API.md)
- [Guide installation](GuideInstallDebian11.md)
- [Guide installation](GuideInstallDebian12.md)
- [Gestion des utilisateurs](AdminUsers.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)

View File

@ -1,6 +1,11 @@
# Installation de ScoDoc 9 sur Debian 11 (Bullseye)
!!! warning "Nouvelle version"
La version actuelle de Linux est Debian 12:
[voir le guide d'installation à jour](GuideInstallDebian12.md)
Ce document décrit la procédure d'installation et de configuration de ScoDoc 9.
Cette procédure doit être effectué sur la machine serveur avec un accès
administrateur (root).
@ -102,7 +107,7 @@ Checklist minimale de votre système Linux Debian:
changer leurs mots de passe (bien d'autres fonctions dépendent des mails).
Au besoin, revoir la configuration avec `dpkg-reconfigure postfix` (voir
aussi [envoi des courriers électroniques](ProblemesMail.md)).
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre
réseau (voire d'Internet): par exemple `ping serveur.exemple.fr`.
1. Date et heure: vérifier que les dates et heure sont correctes, même après
@ -117,8 +122,8 @@ Checklist minimale de votre système Linux Debian:
#### Configuration si utilisation d'un proxy
Si votre accès à Internet passe par un proxy, l'indiquer au moment de
l'installation Debian.
l'installation Debian.
Ensuite, dans ScoDoc, indiquer votre proxy: pour cela, éditer le fichier
```/opt/scodoc/.env```
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
@ -152,7 +157,7 @@ redémarrer le service:
éléments, voir par exemple
[ce post sur Stack Overflow](
https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy).
#### Note sur l'install dans un container LXC
Il y a deux possibilités :
@ -250,7 +255,7 @@ ou le créer contenant juste cette ligne:
apt-get install nginx
```
S'assurer que le logiciel `nginx` s'est bien installé. En cas de problème se
référer à sa doc (par exemple, si
référer à sa doc (par exemple, si
[votre serveur ne supporte pas
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
@ -269,7 +274,7 @@ ou le créer contenant juste cette ligne:
```
### 2.2) Configuration des logiciels et des données
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
```bash
@ -308,7 +313,7 @@ Ne pas hésiter à nous contacter (voir [contacts](Contact.md)).
Nota: sur certains réseaux, l'autoconfiguration IPv6 pose problème (par exemple:
bloquage des envois de mails). Au besoin, il est possible de désactiver IPv6
(voir par exemple [ici](https://wiki.debian-fr.xyz/D%C3%A9sactiver_l%27IPv6)).
(voir par exemple [ici](https://wiki.debian-fr.xyz/D%C3%A9sactiver_l%27IPv6)).
## Ensuite...

View File

@ -17,7 +17,7 @@ donc installer et configurer ScoDoc avec des connaissances réduites sur le
système Linux.
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
[Debian](http://www.debian.org) 12 (Bullseye, stable) s'exécutant sur une
[Debian](http://www.debian.org) 12 (Bookworm, stable) s'exécutant sur une
machine intel-like **64bits** (architecture **AMD64** sur Intel/AMD, ou
**aarch64** sur Apple ARM). Debian s'installe facilement en cinq minutes, sur
une machine normale ou un serveur virtualisé. Il est **vivement déconseillé** de
@ -38,7 +38,7 @@ VirtualBox ou VMWare, ou UTM sur Mac). L'installation de ScoDoc va en effet
modifier de nombreux paramètres de votre système Linux (serveur web, firewall,
serveur SQL, messagerie, ...).
## 1) Préalable: configurer un serveur linux
## 1) Préalable: configurer un serveur Linux
Le serveur devrait être accessible depuis Internet.
@ -108,7 +108,7 @@ Checklist minimale de votre système Linux Debian:
changer leurs mots de passe (bien d'autres fonctions dépendent des mails).
Au besoin, revoir la configuration avec `dpkg-reconfigure postfix` (voir
aussi [envoi des courriers électroniques](ProblemesMail.md)).
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre
réseau (voire d'Internet): par exemple `ping serveur.exemple.fr`.
1. Date et heure: vérifier que les dates et heure sont correctes, même après
@ -162,7 +162,7 @@ redémarrer le service:
Dans les cas compliqués, il est possible qu'il vous faille configurer d'autres
éléments, voir par exemple
[ce post sur Stack Overflow](https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy).
#### Note sur l'install dans un container LXC
Il y a deux possibilités :
@ -262,7 +262,7 @@ ou bien le créer afin qu'il contienne juste cette ligne:
apt-get install nginx
```
S'assurer que le logiciel `nginx` s'est bien installé. En cas de problème se
référer à sa doc (par exemple, si
référer à sa doc (par exemple, si
[votre serveur ne supporte pas
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
@ -282,7 +282,7 @@ utilisateur `scodoc` qui sera utilisé par le serveur.
```
### 2.2) Configuration des logiciels et des données
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
```bash

View File

@ -1,5 +1,8 @@
# Utilisation de ScoDoc
Les [principaux objets de ScoDoc](IntroObjetsScoDoc.md) sont présentés sur
[cette page](IntroObjetsScoDoc.md).
ScoDoc contrôle les opérations via un mécanisme de permissions facile à mettre
en œuvre et permettant de bien répartir les rôles entre les utilisateurs:
responsables, enseignants, secrétariats.
@ -13,9 +16,9 @@ département.
* [Guide pour le responsable de formation](GuideAdminFormation.md)
* [Modification d'un programme pédagogique et versions](Formations.md)
* [Exemples et partages de programmes pédagogiques entre établissements](ExemplesProgrammesPedagogiques.md)
* [Importation des étudiants](ImportationEtuds.md)
* [Synchronisation des inscrits avec Apogée](SynchroApogee.md)
* [Procédure d'inscription des étudiants via Apogée](InscriptionsEtudApogee.md)
* [Données sur l'origine des étudiants](DonneesAdmissions.md)
@ -30,7 +33,7 @@ département.
* [Édition des bulletins de notes](BulletinsNotes.md)
* [paramétrage des bulletins pdf](ParametrageBulletins.md)
* [Édition des PV de jury](ParametragePV.md)
* Comment sont calculées les moyennes : [Calcul des notes](CalculNotes.md)

View File

@ -25,7 +25,7 @@ une action de formation continue d'une semaine que d'une formation sur un an.
Saisie des dates de début et fin d'un semestre:
![sco-dates-semestre.png](screens/sco-dates-semestre.png)
Les semestre a un ou plusieurs (co)responsables, utilisateurs ayant des droits
Chaque semestre a un ou plusieurs (co)responsables, utilisateurs ayant des droits
particuliers, dont ceux de modifier la liste des modules d'enseignement à
suivre, de nommer les enseignants, etc. Les responsables de semestres sont
souvent appelés *directeurs ou directrices des études*.
@ -103,7 +103,7 @@ Exemple: extrait de la fiche d'un étudiant
Les étudiants d'un semestre peuvent être répartis dans des groupes.
Chaque *partition* d'un semestre défini un ensemble de groupes: par exemple, les
Chaque *partition* d'un semestre défini un ensemble de groupes: par exemple,
la partition des groupes de TD, ou la partition des projets tuteurés.
On peut à tout moment créer une partition, y créer des groupes, y placer ou

View File

@ -1,5 +1,5 @@
# Migration d'une installation existante de ScoDoc
# Migration d'une installation existante de ScoDoc
Marche à suivre pour transférer les données d'un serveur ScoDoc déjà existant vers un autre. Cas d'usage typiques:
* changement de machine physique
@ -10,8 +10,8 @@ Marche à suivre pour transférer les données d'un serveur ScoDoc déjà exista
Toutes les données seront copiées: bases SQL, configurations, photos, archives, logs.
## Principe
Au lieu de mettre à jour le système Debian, il est préférable de **réinstaller complètement un nouveau serveur**. En effet, ScoDoc utilise certains composants qui ne sont pas fournis dans les versions adéquates par Debian.
## Principe
Au lieu de mettre à jour le système Debian, il est préférable de **réinstaller complètement un nouveau serveur**. En effet, ScoDoc utilise certains composants qui ne sont pas fournis dans les versions adéquates par Debian.
L'expérience montre qu'il est plus rapide de **tout réinstaller** sans se poser de questions. D'ailleurs, la plupart des installations étant sur des serveurs virtualisés, cette méthode est souvent plus simple et évite de toucher au serveur en production. J'insiste : **ne tentez pas de mettre à jour le système Debian de votre ancien serveur**, c'est une perte de temps.
@ -22,14 +22,14 @@ Le principe est donc:
3. Copier les données d'un serveur à l'autre (scripts fournis);
4. Tester, puis le cas échéant couper l'ancien serveur et le remplacer par le nouveau.
## Marche à suivre détaillée
## Marche à suivre détaillée
### Installation de Debian et ScoDoc
Voir les instructions ici: [GuideInstallDebian11](GuideInstallDebian11.md).
### Installation de Debian et ScoDoc
Voir les instructions ici: [GuideInstallDebian12](GuideInstallDebian12.md).
### Copie des données d'un serveur à l'autre
### Copie des données d'un serveur à l'autre
Il est important de suivre rigoureusement et pas à pas cette procédure:
1. S'assurer que le serveur de départ est à jour (pour avoir le bon script de sauvegarde!): voir [MisesAJour](MisesAJour.md)

View File

@ -1,7 +1,7 @@
# Migration des données ScoDoc 7 vers ScoDoc 9
On peut installer à partir de zéro (cas 1), ou sur une machine ayant déjà un ScoDoc 7
et migrer les données (cas 2).
On peut installer à partir de zéro (cas 1), ou sur une machine ayant déjà un ScoDoc 7
et migrer les données (cas 2).
## Cas 1: Migration d'une installation ScoDoc 7 sur un nouveau serveur
@ -11,8 +11,8 @@ basculer d'une version à l'autre.
Dans ce cas, la migration va se faire en suivant les étapes, détaillées plus loin:
1. installer le nouveau serveur Linux Debian 11 et ScoDoc 9;
1. installer le nouveau serveur Linux Debian et ScoDoc 9;
2. sauvegarder les données de ScoDoc7 depuis le serveur de production **et l'arrêter**;
3. charger les données ScoDoc 7 sur le nouveau serveur;
@ -23,9 +23,9 @@ Si vous venez d'installer ScoDoc 9, passez directement à l'**étape 3**.
### Étape 1: Installer le nouveau serveur
Installer le nouveau serveur avec Debian 11 et ScoDoc 9.
Installer le nouveau serveur avec Debian 12 et ScoDoc 9.
Voir [GuideInstallDebian11](GuideInstallDebian11.md).
Voir [GuideInstallDebian12](GuideInstallDebian12.md).
Vérifier que tout fonctionne avant d'aller plus loin.
@ -41,7 +41,7 @@ Ouvrir un terminal en tant que `root`sur l'ancien serveur ScoDoc 7.
# Export des données
./save_scodoc7_data.sh /tmp/sauvegarde-scodoc7
Attention à l'espace disque: au besoin, faire le ménage ou montez un disque supplémentaire.
Attention à l'espace disque: au besoin, faire le ménage ou montez un disque supplémentaire.
Notez que cette migration ne fonctionne qu'à partir de la dernière version de
ScoDoc 7. Si vous avez une version plus ancienne, mettez-la d'abord à jour.
@ -140,24 +140,25 @@ officielle](https://www.debian.org/releases/bullseye/mips64el/release-notes/ch-u
est longue, mais en réalité c'est très simple et prends moins de 10 minutes,
sauf si vous avez configuré votre système de façon exotique.
Nombreux tutos disponibles, voir [par exemple
celui-ci](https://www.cyberciti.biz/faq/update-upgrade-debian-10-to-debian-11-bullseye/).
celui-ci](https://www.cyberciti.biz/faq/update-upgrade-debian-10-to-debian-11-bullseye/).
Attention, il faut désinstaller Apache (avant ou après upgrade Linux), car
ScoDoc 9 utilise un autre serveur web (nginx) qui serait en conflit:
# peut être utile pour récuperer vos certificats SSL ?
mv /etc/apache2 /etc/apache2.old
mv /etc/apache2 /etc/apache2.old
apt-get remove --purge apache2
### 3. Installer ScoDoc 9
Voir [la section 2 du guide d'installation](GuideInstallDebian11.md#2-installation-de-scodoc-sur-debian).
Voir [la section 2 du guide d'installation](GuideInstallDebian12.md#2-installation-de-scodoc-sur-debian).
Vérifier que tout fonctionne avant d'aller plus loin.
### 4. Migrer vos données ScoDoc 7
Les données sont restées dans /opt/scodoc7.
Les données sont restées dans `/opt/scodoc7`.
Lancer le script suivant en tant que `root`:
@ -186,5 +187,3 @@ Au besoin, réglez la fonction de calcul du **bonus sport&culture** via la page
"configuration" accessible depuis la page d'accueil en tant qu'admin uniquement.
Célébrez !

View File

@ -1,15 +1,18 @@
# Préférences de ScoDoc
## Préférences de ScoDoc
Ces variables sont modifiables globalement ou seulement pour un semestre spécifique (sauf pour certaines d'entre elles, qui n'ont de sens que globalement). Si un semestre défini une variable (via la page "Préférences du semestre" accessible dans le menu "Semestre"), sa valeur remplace, pour lui seulement, celle définie globalement (via la page "Paramétrage").
Ces variables sont modifiables globalement ou seulement pour un semestre
spécifique (sauf pour certaines d'entre elles, qui n'ont de sens que
globalement). Si un semestre défini une variable (via la page "Préférences du
semestre" accessible dans le menu "Semestre"), sa valeur remplace, pour lui
seulement, celle définie globalement (via la page "Paramétrage").
*Page générée à l'aide de la méthode* `doc_preferences`
## Générales
Nom | &nbsp; | &nbsp;
---- | ---- | ----
`DeptName` | Nom abrégé du département |
`DeptName` | Nom abrégé du département |
`DeptFullName` | Nom complet du département | inutilisé par défaut
`UnivName` | Nom de l'Université | apparait sur les bulletins et PV de jury
`InstituteName` | Nom de l'Institut | exemple "IUT de Villetaneuse". Peut être utilisé sur les bulletins.
@ -29,7 +32,7 @@ Nom | &nbsp; | &nbsp;
Nom | &nbsp; | &nbsp;
---- | ---- | ----
`email_chefdpt` | e-mail chef du département | utilisé pour envoi mail notification absences
`work_saturday` | Considérer le samedi comme travaillé |
`work_saturday` | Considérer le samedi comme travaillé |
`handle_billets_abs` | Gestion de "billets" d'absence | fonctions pour traiter les "billets" déclarés par les étudiants sur un portail externe
`abs_notify_chief` | Notifier les absences au chef | Envoyer un mail au chef si un étudiant a beaucoup d'absences
`abs_notify_respsem` | Notifier les absences au dir. des études | Envoyer un mail au responsable du semestre si un étudiant a beaucoup d'absences
@ -45,9 +48,9 @@ Nom | &nbsp; | &nbsp;
Nom | &nbsp; | &nbsp;
---- | ---- | ----
`portal_url` | URL du portail |
`portal_url` | URL du portail |
`portal_timeout` | timeout | secondes
`portal_dept_name` | Code du département sur le portail |
`portal_dept_name` | Code du département sur le portail |
`etapes_url` | URL listant les étapes Apogée | par defaut, selon l'api, getEtapes ou scodocEtapes sur l'URL du portail
`maquette_url` | URL maquettes Apogee | par defaut, scodocMaquette sur l'URL du portail
`portal_api` | Version de l'API | 1 ou 2
@ -71,8 +74,8 @@ Nom | &nbsp; | &nbsp;
`SCOLAR_FONT` | Police de caractère principale | pour les pdf
`SCOLAR_FONT_SIZE` | Taille des caractères | pour les pdf
`SCOLAR_FONT_SIZE_FOOT` | Taille des caractères pied de page | pour les pdf
`pdf_footer_x` | Position horizontale du pied de page pdf (en mm) |
`pdf_footer_y` | Position verticale du pied de page pdf (en mm) |
`pdf_footer_x` | Position horizontale du pied de page pdf (en mm) |
`pdf_footer_y` | Position verticale du pied de page pdf (en mm) |
## Procès verbaux de jury (documents PDF)
@ -84,21 +87,21 @@ Nom | &nbsp; | &nbsp;
`INSTITUTION_NAME` | Nom institution sur pied de pages PV | (pdf, balises &lt;b&gt; interprétées)
`INSTITUTION_ADDRESS` | Adresse institution sur pied de pages PV | (pdf, balises &lt;b&gt; interprétées)
`INSTITUTION_CITY` | Ville de l'institution | pour les lettres individuelles
`PV_INTRO` | Paragraphe d'introduction sur le PV | Balises remplacées: %(Univname)s = nom de l'université, %(DecNum)s = numéro de l'arrêté, %(Date)s = date de la commission, %(Type)s = type de commission (passage ou délivrance)
`PV_WITH_BACKGROUND` | Mettre l'image de fond sur les PV de jury (paysage) |
`PV_WITH_HEADER` | Ajouter l'en-tête sur les PV (paysage) |
`PV_WITH_FOOTER` | Ajouter le pied de page sur les PV (paysage) |
`pv_left_margin` | Marge gauche PV en mm |
`pv_top_margin` | Marge haute PV |
`pv_right_margin` | Marge droite PV |
`pv_bottom_margin` | Marge basse PV |
`PV_INTRO` | Paragraphe d'introduction sur le PV | Balises remplacées: %(Univname)s = nom de l'université, %(DecNum)s = numéro de l'arrêté, %(Date)s = date de la commission, %(Type)s = type de commission (passage ou délivrance)
`PV_WITH_BACKGROUND` | Mettre l'image de fond sur les PV de jury (paysage) |
`PV_WITH_HEADER` | Ajouter l'en-tête sur les PV (paysage) |
`PV_WITH_FOOTER` | Ajouter le pied de page sur les PV (paysage) |
`pv_left_margin` | Marge gauche PV en mm |
`pv_top_margin` | Marge haute PV |
`pv_right_margin` | Marge droite PV |
`pv_bottom_margin` | Marge basse PV |
`PV_LETTER_DIPLOMA_SIGNATURE` | Signature des lettres individuelles de diplôme | %(DirectorName)s et %(DirectorTitle)s remplacés
`PV_LETTER_PASSAGE_SIGNATURE` | Signature des lettres individuelles de passage d'un semestre à l'autre | %(DirectorName)s et %(DirectorTitle)s remplacés
`pv_sig_image_height` | Hauteur de l'image de la signature | Lorsqu'on donne une image de signature, elle est redimensionnée à cette taille (en millimètres)
`PV_LETTER_TEMPLATE` | Lettre individuelle | Balises remplacées et balisage XML, voir la documentation
`PV_LETTER_WITH_BACKGROUND` | Mettre l'image de fond sur les lettres individuelles de décision |
`PV_LETTER_WITH_HEADER` | Ajouter l'en-tête sur les lettres individuelles de décision |
`PV_LETTER_WITH_FOOTER` | Ajouter le pied de page sur les lettres individuelles de décision |
`PV_LETTER_WITH_BACKGROUND` | Mettre l'image de fond sur les lettres individuelles de décision |
`PV_LETTER_WITH_HEADER` | Ajouter l'en-tête sur les lettres individuelles de décision |
`PV_LETTER_WITH_FOOTER` | Ajouter le pied de page sur les lettres individuelles de décision |
`pv_htab1` | marge colonne droite lettre | pour les courriers pdf
`pv_htab2` | marge colonne gauche lettre | pour les courriers pdf
`PV_FONTNAME` | Police de caractère pour les PV | pour les pdf
@ -109,32 +112,31 @@ Nom | &nbsp; | &nbsp;
---- | ---- | ----
`bul_title` | Titre des bulletins | <tt>%(DeptName)s</tt> est remplacé par le nom du département
`bul_class_name` | Format des bulletins | format de présentation des bulletins de note (web et pdf)
`bul_show_abs` | Indiquer les absences sous les bulletins |
`bul_show_abs_modules` | Indiquer les absences dans chaque module |
`bul_show_decision` | Faire figurer les décisions sur les bulletins |
`bul_show_abs` | Indiquer les absences sous les bulletins |
`bul_show_abs_modules` | Indiquer les absences dans chaque module |
`bul_show_decision` | Faire figurer les décisions sur les bulletins |
`bul_show_ects` | Faire figurer les ECTS sur les bulletins | crédits associés aux UE ou aux modules, selon réglage
`bul_show_codemodules` | Afficher codes des modules sur les bulletins |
`bul_show_matieres` | Afficher les matières sur les bulletins |
`bul_show_codemodules` | Afficher codes des modules sur les bulletins |
`bul_show_matieres` | Afficher les matières sur les bulletins |
`bul_show_all_evals` | Afficher toutes les évaluations sur les bulletins | y compris incomplètes ou futures
`bul_show_rangs` | Afficher le classement sur les bulletins |
`bul_show_ue_rangs` | Afficher le classement dans chaque UE sur les bulletins |
`bul_show_mod_rangs` | Afficher le classement dans chaque module sur les bulletins |
`bul_show_moypromo` | Afficher moyennes de la promotion sur les bulletins |
`bul_show_minmax` | Afficher min/max moyennes sur les bulletins |
`bul_show_minmax_mod` | Afficher min/max moyennes des modules sur les bulletins |
`bul_show_minmax_eval` | Afficher min/max moyennes des évaluations sur les bulletins |
`bul_show_coef` | Afficher coefficient des ue/modules sur les bulletins |
`bul_show_ue_cap_details` | Afficher détail des notes des UE capitalisées sur les bulletins |
`bul_show_ue_cap_current` | Afficher les UE en cours mais capitalisées sur les bulletins |
`bul_show_temporary_forced` | Bannière "provisoire" sur les bulletins |
`bul_show_temporary` | Bannière "provisoire" si pas de décision de jury |
`bul_temporary_txt` | Texte de la bannière "provisoire |
`bul_show_uevalid` | Faire figurer les UE validées sur les bulletins |
`bul_show_mention` | Faire figurer les mentions sur les bulletins et les PV |
`bul_show_date_inscr` | Faire figurer la date d'inscription sur les bulletins |
`bul_show_sig_left` | Faire figurer le pied de page de gauche (ex.: nom du directeur) sur les bulletins |
`bul_show_sig_right` | Faire figurer le pied de page de droite (ex.: nom du chef de département) sur les bulletins |
`bul_display_publication` | Indique si les bulletins sont publiés | décocher si vous n'avez pas de portal étudiant publiant les bulletins
`bul_show_rangs` | Afficher le classement sur les bulletins |
`bul_show_ue_rangs` | Afficher le classement dans chaque UE sur les bulletins |
`bul_show_mod_rangs` | Afficher le classement dans chaque module sur les bulletins |
`bul_show_moypromo` | Afficher moyennes de la promotion sur les bulletins |
`bul_show_minmax` | Afficher min/max moyennes sur les bulletins |
`bul_show_minmax_mod` | Afficher min/max moyennes des modules sur les bulletins |
`bul_show_minmax_eval` | Afficher min/max moyennes des évaluations sur les bulletins |
`bul_show_coef` | Afficher coefficient des ue/modules sur les bulletins |
`bul_show_ue_cap_details` | Afficher détail des notes des UE capitalisées sur les bulletins |
`bul_show_ue_cap_current` | Afficher les UE en cours mais capitalisées sur les bulletins |
`bul_show_temporary_forced` | Bannière "provisoire" sur les bulletins |
`bul_show_temporary` | Bannière "provisoire" si pas de décision de jury |
`bul_temporary_txt` | Texte de la bannière "provisoire |
`bul_show_uevalid` | Faire figurer les UE validées sur les bulletins |
`bul_show_mention` | Faire figurer les mentions sur les bulletins et les PV |
`bul_show_date_inscr` | Faire figurer la date d'inscription sur les bulletins |
`bul_show_sig_left` | Faire figurer le pied de page de gauche (ex.: nom du directeur) sur les bulletins |
`bul_show_sig_right` | Faire figurer le pied de page de droite (ex.: nom du chef de département) sur les bulletins |
`bul_pdf_title` | Bulletins PDF: paragraphe de titre | (balises interprétées, voir documentation)
`bul_pdf_caption` | Bulletins PDF: paragraphe sous table note | (visible seulement si "Faire figurer les décision" est coché)
`bul_pdf_sig_left` | Bulletins PDF: signature gauche | (balises interprétées, voir documentation)
@ -146,10 +148,10 @@ Nom | &nbsp; | &nbsp;
Nom | &nbsp; | &nbsp;
---- | ---- | ----
`left_margin` | Marge gauche |
`top_margin` | Marge haute |
`right_margin` | Marge droite |
`bottom_margin` | Marge basse |
`left_margin` | Marge gauche |
`top_margin` | Marge haute |
`right_margin` | Marge droite |
`bottom_margin` | Marge basse |
## Envoi des bulletins par e-mail
@ -160,7 +162,7 @@ Nom | &nbsp; | &nbsp;
`bul_intro_mail` | Message d'accompagnement | <tt>%(DeptName)s</tt> est remplacé par le nom du département, <tt>%(nomprenom)s</tt> par les noms et prénoms de l'étudiant, <tt>%(dept)s</tt> par le nom du département, et <tt>%(webmaster)s</tt> par l'adresse mail du Webmaster.
`bul_mail_list_abs` | Indiquer la liste des dates d'absences par mail | dans le mail envoyant le bulletin de notes
`bul_mail_contact_addr` | Adresse mail contact "webmaster" | apparait dans le mail accompagnant le bulletin, voir balise "webmaster" ci-dessus.
`bul_mail_allowed_for_all` | Autoriser tous les utilisateurs à expédier des bulletins par mail |
`bul_mail_allowed_for_all` | Autoriser tous les utilisateurs à expédier des bulletins par mail |
## Mise en forme des feuilles (Absences, Trombinoscopes, ...)
@ -168,13 +170,13 @@ Nom | &nbsp; | &nbsp;
---- | ---- | ----
`feuille_releve_abs_taille` | Taille feuille relevé absences | Dimensions du papier pour les feuilles de relevés d'absences hebdomadaire
`feuille_releve_abs_format` | Format feuille relevé absences | Format du papier pour les feuilles de relevés d'absences hebdomadaire
`feuille_releve_abs_samedi` | Samedi travaillé |
`feuille_releve_abs_samedi` | Samedi travaillé |
`feuille_releve_abs_AM` | Créneaux cours matin | Nombre de créneaux de cours le matin
`feuille_releve_abs_PM` | Créneaux cours après-midi | Nombre de créneaux de cours l'après-midi
`feuille_placement_emargement` | Feuille d'émargement des contrôles - Signature étudiant | Hauteur de l'espace pour signer
`feuille_placement_positions` | Feuille des places lors des contrôles | Nombre maximum de lignes par colonne
`prepa_jury_nip` | Code NIP sur la feuille préparation jury |
`prepa_jury_ine` | Code INE sur la feuille préparation jury |
`prepa_jury_nip` | Code NIP sur la feuille préparation jury |
`prepa_jury_ine` | Code INE sur la feuille préparation jury |
`anonymous_lst_code` | Code pour listes anonymes | à défaut, un code interne sera utilisé
## Avis de poursuites d'études
@ -183,7 +185,7 @@ Nom | &nbsp; | &nbsp;
---- | ---- | ----
`NomResponsablePE` | Nom du responsable des poursuites d'études | pour les avis pdf de poursuite
`pe_avis_latex_tmpl` | Template LaTeX des avis | préparez-le dans un éditeur de texte puis copier le contenu ici (en utf8). Sinon, le fichier un_avis.tex du serveur sera utilisé.
`pe_avis_latex_footer` | Code LaTeX en fin d'avis |
`pe_avis_latex_footer` | Code LaTeX en fin d'avis |
`pe_tag_annotation_avis_latex` | Tag désignant l'avis PE | ajoutez une annotation aux étudiants précédée du tag désigné ici pour qu'elle soit interprétée comme un avis de poursuites d'études et ajoutée aux avis LaTeX.
## Connexion avec le logiciel d'emplois du temps

View File

@ -86,7 +86,8 @@ comptes utilisateurs.
# en tant que root...
systemctl stop scodoc9 # arret du serveur
su - scodoc
dropdb SCODOC # <<< votre base production
cd /opt/scodoc
dropdb SCODOC # <<< votre base production
createdb -E UTF-8 SCODOC
pg_restore -d SCODOC /tmp/SCODOC_pgdump # (nom du fichier dump)
source venv/bin/activate
@ -111,7 +112,7 @@ script
Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement
la base de données SQL mais aussi tous les fichiers générés par votre ScoDoc:
photos, configurations locales, archives, PV de jurys, logos, etc (tout ceci
étant stocké sous `/opt/scodoc-data`).
étant stocké sous `/opt/scodoc-data`).
Attention à l'espace disque: le répertoire destination (`/tmp`dans l'exemple
ci-dessus) doit avoir de l'espace (sinon utilisez un autre répertoire dans

View File

@ -1546,16 +1546,14 @@ mais pas JSON compliant à cause des `NaN`.
* **Permission: `ScoView`**
* **Paramètres:** `formsemestre_id`
* **Query string**: `format`
* **Route:** `/formsemestres/resultats`
* **Route:** `/formsemestre/<int:formsemestre_id>/resultats`
* **Exemple d'utilisation:** `/api/formsemestre/1/resultats`
* **Résultat:** [formsemestre-resultats.json](samples/sample_formsemestre-resultats.json.md)
Récapitulatif par étudiant (état, groupe(s), moyennes d'UEs et de modules)
* **Résultat:** Récapitulatif par étudiant (état, groupe(s), moyennes d'UEs et de modules)
pour un formsemestre spécifié par son id.
Par défaut les valeurs numériques sont formatées en chaînes. Si format=raw,
valeurs numériques mais pas JSON compliant à cause des `NaN`.
* **Exemple de résultat:**
* **Exemple de résultat:** [formsemestre-resultats.json](samples/sample_formsemestre-resultats.json.md)
#### **`moduleimpl-evaluations`**
@ -1715,10 +1713,15 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
| *user_name* | str ou null | login de l'utilisateur ayant créé l'assiduité |
| *est_just* | boolean | l'assiduité est-elle justifiée |
| *entry_date* | string | la date d'entrée de l'assiduité |
| *external_data* | objet ou null | un objet décrivant des actions non utilisée par ScoDoc |
> Rappel du format de date ISO : yyyy-mm-jjTHH:MM:SS
> Rappel du format de date ISO : yyyy-mm-ddTHH:MM:SS
> Vous pouvez aussi spécifier le temps UTC en ajoutant '+HH:MM' à la fin
!!! warning
Le champs `external_data` est utilisé par ScoDoc pour déterminer les assiduités utilisant n'utilisant pas de module particulier (Tout module / Autre module dans ScoDoc). Il aura alors la forme suivante : `{"module": "Autre"}`
#### **assiduite**
* **Méthode:** GET
@ -1728,6 +1731,20 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* **Exemple d'utilisation:** `/api/assiduite/1`
* **Résultat:** Retourne un objet assiduité ou une erreur si l'id n'est pas connu
* **Exemple de résultat:** [assiduite.json](samples/sample_assiduite.json.md)
*
#### **assiduite-justificatifs[-long]**
* **Méthode:** GET
* **Permission: `ScoView`**
* **Paramètres:** `assiduite_id`
* **Routes:**
* `/assiduite/<int:assiduite_id>/justificatifs`
* `/assiduite/<int:assiduite_id>/justificatifs/long`
* **Exemple d'utilisation:**
* `/api/assiduite/123/justificatifs`
* `/api/assiduite/123/justificatifs/long`
* **Résultat:** Retourne une liste de justificatifs. des objets en utilisant la route `long` sinon les justif_id
* **Exemple de résultat:** [assiduite-justificatifs.json](samples/sample_assiduite_justificatifs.json.md)
#### **assiduites[-query]**
@ -1745,6 +1762,9 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* `formsemestre_id` (X : id du formsemestre)
* `est_just` (v,t,f,vrai,faux,true,false)
* `user_id` (X : id de l'utilisateur)
* `order` (retour ordoné par date de début décroisante)
* `courant` (retour restreint à l'année courante)
* `with_justifs` (ajoute un champs "justificatifs" aux assiduités)
* **Routes:**
* `/assiduites/<int:etudid>`
* `/assiduites/<int:etudid>/query?`
@ -1778,6 +1798,8 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* `est_just` (v,t,f,vrai,faux,true,false)
* `user_id` (X : id de l'utilisateur)
* `metric` ('compte', 'demi', 'journee', 'heure')
* `courant` (retour restreint à l'année courante)
* `split` (compte pour chaque état séparément)
* **Routes:**
* `/assiduites/<int:etudid>/count`
* `/assiduites/<int:etudid>/count/query?`
@ -1807,6 +1829,9 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* `date_fin` (X : date format ISO)
* `est_just` (v,t,f,vrai,faux,true,false)
* `user_id` (X : id de l'utilisateur)
* `order` (retour ordoné par date de début décroisante)
* `courant` (retour restreint à l'année courante)
* `with_justifs` (ajoute un champs "justificatifs" aux assiduités)
* **Routes:**
* `/assiduites/formsemestre/<int:formsemestre_id>`
* `/assiduites/formsemestre/<int:formsemestre_id>/query?`
@ -1829,6 +1854,9 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* `date_fin` (X : date format ISO)
* `est_just` (v,t,f,vrai,faux,true,false)
* `user_id` (X : id de l'utilisateur)
* `metric` ('all', 'compte', 'heure', 'journee', 'demi')
* `courant` (retour restreint à l'année courante)
* `split` (compte pour chaque état séparément)
* **Routes:**
* `/assiduites/formsemestre/<int:formsemestre_id>/count`
* `/assiduites/formsemestre/<int:formsemestre_id>/count/query?`
@ -1851,6 +1879,9 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* `date_fin` (X : date format ISO)
* `est_just` (v,t,f,vrai,faux,true,false)
* `user_id` (X : id de l'utilisateur)
* `order` (retour ordoné par date de début décroisante)
* `courant` (retour restreint à l'année courante)
* `with_justifs` (ajoute un champs "justificatifs" aux assiduités)
* **Routes:**
* `/assiduites/group/query?etudids=`
* **Exemple d'utilisation:**
@ -1865,6 +1896,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
etudid3 : [{assiduité...}],
}
```
* **Exemple de résultat:** [assiduites-group.json](samples/sample_assiduites_group.json.md)
#### **assiduites-create**
@ -1876,9 +1908,6 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
[
{
"etudid":<int>,
"date_debut": <string>,
"date_fin": <string>,
"etat": <string>,
"moduleimpl_id"?: <int>,
"desc"?:<string>,
@ -1894,6 +1923,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent","etudid":1}]`
* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST.
* **Exemple de résultat:** [assiduites-create.json](samples/sample_assiduites_create.json.md)
#### **assiduite-create**
@ -1909,8 +1939,6 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
```json
[
{
"date_debut": <string>,
"date_fin": <string>,
"etat": <string>,
"moduleimpl_id"?: <int>,
"desc"?:<string>
@ -1951,9 +1979,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
> `{"etat": "absent"}`
* **Résultat:** Modifie l'assiduité désignée. Renvoie une erreur si la
modification rend incompatible la plage de l'assiduité par rapport aux autres
assiduités du même étudiant.
* **Résultat:** Modifie l'assiduité désignée.
* **Exemple de résultat:** [assiduite_edit.json](samples/sample_assiduite_edit.json.md)
#### **assiduites-edit**
@ -2006,18 +2032,19 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
#### Structure Justificatif
| attribut | type | commentaire |
| :----------- | :------------- | :------------------------------------------------------------ |
| *justif_id* | int | identifiant unique |
| *etudid* | int | identifiant unique de l'étudiant concerné par le justificatif |
| *date_debut* | string | date ISO du début de la période du justificatif |
| *date_fin* | string | date ISO de la fin de la période du justificatif |
| *etat* | string | état du justificatif ( attente, valide, non_valide, modifie) |
| *raison* | string ou null | explication du justificatif si présente |
| *fichier* | string | identifiant de l'archivage des fichiers |
| *user_id* | int or null | id de l'utilisateur ayant créé le justificatif |
| *user_name* | str ou null | login de l'utilisateur ayant créé le justificatif |
| *entry_date* | string | date ISO de l'entrée du justificatif |
| attribut | type | commentaire |
| :-------------- | :------------- | :------------------------------------------------------------ |
| *justif_id* | int | identifiant unique |
| *etudid* | int | identifiant unique de l'étudiant concerné par le justificatif |
| *date_debut* | string | date ISO du début de la période du justificatif |
| *date_fin* | string | date ISO de la fin de la période du justificatif |
| *etat* | string | état du justificatif ( attente, valide, non_valide, modifie) |
| *raison* | string ou null | explication du justificatif si présente |
| *fichier* | string | identifiant de l'archivage des fichiers |
| *user_id* | int or null | id de l'utilisateur ayant créé le justificatif |
| *user_name* | str ou null | login de l'utilisateur ayant créé le justificatif |
| *entry_date* | string | date ISO de l'entrée du justificatif |
| *external_data* | objet ou null | un objet décrivant des actions non utilisée par ScoDoc |
#### **justificatif**
@ -2041,6 +2068,11 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* `etat` ( attente, valide, non_valide, modifie)
* `date_debut` (X : date format ISO)
* `date_fin` (X : date format ISO)
* `user_id` (X : l'id de l'utilisateur ayant créé l'objet)
* `formsemestre_id` (X: l'id d'un formsemestre. restreint aux date du semestre)
* `order` (retoure les justificatifs par ordre décroissant de date_debut)
* `courant` (restreint aux justificatifs de l'année courante)
* `group_id` (X : id du groupe, restreint aux justificatifs d'un group d'étudiant)
* **Routes:**
* `/justificatifs/<int:etudid>`
* `/justificatifs/<int:etudid>/query`
@ -2057,6 +2089,58 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
* **Résultat:** Liste de toutes les objets justificatifs qui correspondent aux critères sélectionnés
* **Exemple de résultat:** [justificatifs.json](samples/sample_justificatifs.json.md)
#### **justificatifs-dept[-query]**
* **Méthode:** GET
* **Permission: `ScoView`**
* **Paramètres:**
* `dept_id`
* **Query string:**
* `etat` ( attente, valide, non_valide, modifie)
* `date_debut` (X : date format ISO)
* `date_fin` (X : date format ISO)
* `user_id` (X : l'id de l'utilisateur ayant créé l'objet)
* `formsemestre_id` (X: l'id d'un formsemestre. restreint aux date du semestre)
* `order` (retoure les justificatifs par ordre décroissant de date_debut)
* `courant` (restreint aux justificatifs de l'année courante)
* `group_id` (X : id du groupe, restreint aux justificatifs d'un group d'étudiant)
* **Routes:**
* `/justificatifs/dept/<int:dept_id>`
* `/justificatifs/dept/<int:dept_id>/query`
* **Exemple d'utilisation:**
* `/api/justificatifs/dept/3`
* `/api/justificatifs/dept/3/query?etat=valide&courant`
* **Résultat:** Liste de toutes les objets justificatifs du département donné qui correspondent aux critères sélectionnés
* **Exemple de résultat:** [justificatifs-dept.json](samples/sample_justificatifs_dept.json.md)
#### **justificatifs-formsemestre[-query]**
* **Méthode:** GET
* **Permission: `ScoView`**
* **Paramètres:**
* `formsemestre_id`
* **Query string:**
* `etat` ( attente, valide, non_valide, modifie)
* `date_debut` (X : date format ISO)
* `date_fin` (X : date format ISO)
* `user_id` (X : l'id de l'utilisateur ayant créé l'objet)
* `formsemestre_id` (X: l'id d'un formsemestre. restreint aux date du semestre)
* `order` (retoure les justificatifs par ordre décroissant de date_debut)
* `courant` (restreint aux justificatifs de l'année courante)
* `group_id` (X : id du groupe, restreint aux justificatifs d'un group d'étudiant)
* **Routes:**
* `/justificatifs/formsemestre/<int:formsemestre_id>`
* `/justificatifs/formsemestre/<int:formsemestre_id>/query`
* **Exemple d'utilisation:**
* `/api/justificatifs/formsemestre/3`
* `/api/justificatifs/formsemestre/3/query?etat=valide&courant`
* **Résultat:** Liste de toutes les objets justificatifs du formsemestre donné qui correspondent aux critères sélectionnés
* **Exemple de résultat:** [justificatifs-formsemestre.json](samples/sample_justificatifs_formsemestre.json.md)
#### **justificatif-create**
* **Méthode:** POST
@ -2168,7 +2252,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
#### **justificatif-export**
* **Méthode:** POST
* **Permission: `AbsChange`**
* **Permission: `ScoView`**
* **Paramètres:**
* `justif_id`
* `filename`

View File

@ -130,3 +130,11 @@ Apogée.
- jury de fin de S1: si le S2 est validé;
- jury de fin de S3: si le S4 est validé.
!!! note "Voir aussi"
- [Inscription des étudiants via Apogée](InscriptionsEtudApogee.md)
- [Exports des résultats BUT vers Apogée](BUTApogee.md)
- [Guide du responsable de formation](GuideAdminFormation.md)
- [Contacts](Contact.md)

View File

@ -1,55 +1,60 @@
# Récapitulatif des opérations en fin de semestre (et début du suivant)
Cette page récapitule les opérations typiquement effectuées par un chef de
département en IUT à la fin d'un semestre. Selon les cas, certaines opérations
peuvent être effectuées par les directeurs des études. La plupart des étapes
mentionnées ici sont aussi applicables pour d'autres types de formation.
Cette page récapitule les opérations typiquement effectuées par le ou la
responsable de formation (par ex. une cheffe de département en IUT) à la fin
d'un semestre. Selon les cas, certaines opérations peuvent être effectuées par
les directeurs des études.
Voir aussi le [Guide pour la cheffe ou le chef de
département](GuideAdminFormation.md).
Voir aussi le [Guide pour la cheffe ou le chef de département](GuideAdminFormation.md).
## À la fin d'un semestre
1. Vérifier que les réglages de votre semestre correspondent bien à ce que vous
voulez. En particulier, les options comme *proposer compensation* et *jurys
avec semestres décalés* (accessibles via *Modifier le semestre*, voir
figure).
![reglages-semestres-check.png](screens/reglages-semestres-check.png)
1. Vérifier que les réglages de votre semestre correspondent bien à ce que vous
voulez. En particulier, surtout pour les DUT, les options comme *proposer
compensation* et *jurys avec semestres décalés* (accessibles via *Modifier
le semestre*, voir figure).
![reglages-semestres-check.png](screens/reglages-semestres-check.png)
2. Vérifier que le cursus choisi est correct (menu *Semestre* / *Voir la
formation*): ainsi, le parcours affiché doit être "DUT selon l'arrêté d'août
2005" pour le DUT.
2. Vérifier que la formation (menu **Semestre / Voir la formation**) est
correcte et, s'il y a des messages d'avertissement dans la formation ou sur
le tableau de bord du semestre, que vous les avez pris en compte ou
comprenez la situation.
3. Vérifier que toutes les notes ont été saisies: regarder le tableau de bord,
qui affiche dans chaque module les évaluations et indique si des notes
manquent ou sont en attente.
3. Vérifier que toutes les notes ont été saisies: regarder le tableau de bord,
qui affiche dans chaque module les évaluations et indique si des notes
manquent ou sont en attente. Le tenue d'un jury exige que toutes les notes
sont à jour.
4. (optionnel) Vérifier les absences si cela n'a pas déjà été fait. Dans le
menu *Semestre* du tableau de bord, suivre *Vérifier les absences aux
évaluations*.
Attention, actuellement ScoDoc enregistre les absences par demi-journées, ce
qui fait qu'un étudiant peut être noté absent alors qu'il a assisté à un
examen sur une partie de la demi-journée et sèché le cours suivant.
4. (optionnel) En BUT, sur un semestre impair (S1, S3, S5), si les étudiants ont
déjà commencé le semestre suivant (par exemple si le S2 a commencé avant que
le jury de S1 ait été enregistré), prendre soin de bloquer la prise en compte
des moyennes du semestre pair: sur celui là, via **Semestre / Modifier le
semestre**, cocher *empêcher le calcul des moyennes d'UE*. Sinon, les
décisions annuelles BUT seraient calculées !
5. Réunir la commission (ou le jury):
5. (optionnel) Vérifier les absences si cela n'a pas déjà été fait. Dans le
menu *Semestre* du tableau de bord, suivre *Vérifier les absences aux
évaluations*.
a. Il peut être utile de préparer des documents pour les membres de la
commission: suivre *Générer feuille préparation Jury* dans le menu *Jury*.
6. Réunir la commission (ou le jury):
b. Durant la commission, nous recommandons de saisir en temps réel les
décisions (menu *Jury / Saisie des décisions*). **Pour éviter que les
étudiants n'aient accès aux décisions pendant le jury, décocher l'option
*publier le bulletin sur le portail* ** (menu *Semestre / Options du
semestre*).
a. Il peut être utile de préparer des documents pour les membres de la
commission: suivre *Générer feuille préparation Jury* dans le menu *Jury*.
6. Édition du procès-verbal: menu *Jury / Voir les décisions du jury*.
b. Durant la commission, nous recommandons de saisir en temps réel les
décisions (menu *Jury / Saisie des décisions*). **Pour éviter que les
étudiants n'aient accès aux décisions pendant le jury, décocher l'option
*publier le bulletin sur la passerelle* ** (menu *Semestre / Options du
semestre*).
1. En bas de la page, un lien *Courriers individuels (classeur pdf)* permet
de générer les courriers à adresser aux étudiants (penser à vérifier
leurs adresses postales au préalable sur leurs fiches).
7. Édition du procès-verbal: menu *Jury / Voir les décisions du jury*.
2. Le lien *PV officiel (pdf)* permet de générer le procès verbal avec la
liste des décisions pour chaque étudiant.
a. En bas de la page, un lien *Courriers individuels (classeur pdf)* permet
de générer les courriers à adresser aux étudiants (penser à vérifier
leurs adresses postales au préalable sur leurs fiches).
b. Le lien *PV officiel (pdf)* permet de générer le procès verbal avec la
liste des décisions pour chaque étudiant.
A ce stade, le semestre est terminé. Il est recommandé de le **verrouiller**
après les prises de décisions définitives.
@ -59,11 +64,11 @@ après les prises de décisions définitives.
1. **Créer une instance du semestre suivant** (par exemple un S2 après un S1).
Pour cela, aller sur la page *Programmes*, choisir la formation (rappelons
que ScoDoc appelle "formation" la définition d'un programme pédagogique) et
suivre le lien *UE, modules, semestres*.
suivre le lien *UE, modules, semestres*.
2. En bas de la page qui détaille le programme, suivre le lien *Mettre en place
un nouveau semestre de formation* et remplissez le formulaire.
Une autre approche, souvent plus rapide, consiste à créer un semestre en
utilisant un semestre existant comme modèle: on reprend la même liste de
modules; pour cela, se placer sur le semestre modèle, et utiliser le menu **
@ -74,14 +79,14 @@ après les prises de décisions définitives.
doit commencer quelques jours (ou semaines) après le précédent !)
2. Désignez le responsable (directeur des études en DUT).
3. Si vous êtes interfacé à Apogée (via un portail), indiquez le code étape
Apogée correspondant à votre nouveau semestre.
4. Cocher les modules de votre semestre, et associez leur un enseignant
responsable (ce dernier pourra créer des évaluations dans ce module et
déclarer des collègues pouvant saisir les notes).
5. Après relecture, cliquez sur le bouton *Créer ce semestre de formation*.
NB: toutes ces informations pourront être ultérieurement modifiées via le lien *Semestre / Modifer le semestre* du tableau de bord.
@ -114,10 +119,10 @@ C'est prêt. Les enseignants autorisés peuvent créer des évaluations et saisi
## Problèmes couramment rencontrés
- **Etudiants en doubles**: ceci arrive lorsqu'on crée manuellement les
- **Etudiants en double**: ceci arrive lorsqu'on crée manuellement les
étudiants. Il faut absolument éviter de créer un étudiant qui existe déjà,
sinon on perd la possibilité de suivre le parcours de chacun. Le respect de la
procédure ci-dessus garanti normalement que les étudiants restent uniques.
procédure ci-dessus garanti que les étudiants restent uniques.
N'utiliser *créer un nouvel étudiant* qu'après vous être assuré qu'il n'était
pas déjà inscrit dans un autre semestre, et que l'on sait que l'on ne va pas
l'importer depuis Apogée.
@ -138,5 +143,6 @@ Pour toute question, n'hésitez pas à nous contacter ([contacts](Contact.md)).
- [Vérifier les codes NIP](VerifCodeNIP.md)
- [Guide pour le ou la responsable de formation](GuideAdminFormation.md)
- [Les jurys de BUT](BUTJurys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)
- [Contacts](Contact.md)

View File

@ -1,18 +1,22 @@
### assiduite
#### GET /assiduite/1
```json
{
"assiduite_id": 1,
"date_debut": "2022-09-25T08:00:00+0200",
"date_fin": "2022-09-25T08:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"moduleimpl_id": 8,
"user_id": null
"assiduite_id": 1,
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"external_data": null,
"moduleimpl_id": 12,
"user_id": null,
"user_name": null,
"user_nom_complet": null
}
```

View File

@ -1,21 +1,38 @@
### assiduite_create
#### POST /assiduite/1/create
> `Content-Type: application/json`
>
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent"}]`
>
> `[{"date_debut": "2023-10-27T08:00","date_fin": "2023-10-27T10:00","etat": "absent"}]`
```json
{
"errors": [],
"success": [
{
"indice": 0,
"message": {
"assiduite_id": 60
}
}
]
"errors": [
{
"indice": 0,
"message": "Duplication: la p\u00e9riode rentre en conflit avec une plage enregistr\u00e9e"
}
],
"success": []
}
```
#### POST /assiduite/1/create
> `Content-Type: application/json`
>
> `[{"date_debut": "2023-10-27T08:00","date_fin": "2023-10-27T10:00","etat": "absent"}]`
```json
{
"errors": [],
"success": [
{
"indice": 0,
"message": {
"assiduite_id": 49
}
}
]
}
```

View File

@ -1,28 +1,28 @@
### assiduite_delete
#### POST /assiduite/delete
> `Content-Type: application/json`
>
>
> `[2,2,3]`
```json
{
"errors": [
{
"indice": 1,
"message": "Assiduite non existante"
}
],
"success": [
{
"indice": 0,
"message": "OK"
},
{
"indice": 2,
"message": "OK"
}
]
"errors": [
{
"indice": 1,
"message": "Assiduite non existante"
}
],
"success": [
{
"indice": 0,
"message": "OK"
},
{
"indice": 2,
"message": "OK"
}
]
}
```

View File

@ -1,37 +1,35 @@
### assiduite_edit
#### POST /assiduite/1/edit
> `Content-Type: application/json`
>
> `{"moduleimpl_id":2}`
```json
{
"OK": true
}
```
#### POST /assiduite/1/edit
> `Content-Type: application/json`
>
>
> `{"etat": "retard","moduleimpl_id":3}`
```json
{
"OK": true
"OK": true
}
```
#### POST /assiduite/1/edit
> `Content-Type: application/json`
>
>
> `{"moduleimpl_id":2}`
```json
{
"OK": true
}
```
#### POST /assiduite/1/edit
> `Content-Type: application/json`
>
> `{"etat":"absent"}`
```json
{
"OK": true
"OK": true
}
```

View File

@ -0,0 +1,32 @@
### assiduite_justificatifs
#### GET /assiduite/1/justificatifs
```json
[
1,
"..."
]
```
#### GET /assiduite/1/justificatifs/long
```json
[
{
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"justif_id": 1,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```

View File

@ -1,71 +1,79 @@
### assiduites
#### GET /assiduites/1
```json
[
{
"assiduite_id": 1,
"date_debut": "2022-09-25T08:00:00+0200",
"date_fin": "2022-09-25T08:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"moduleimpl_id": 8,
"user_id": null
},
{
"assiduite_id": 2,
"date_debut": "2022-09-26T08:00:00+0200",
"date_fin": "2022-09-26T09:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "RETARD",
"etudid": 1,
"moduleimpl_id": 13,
"user_id": null
},
"..."
{
"assiduite_id": 1,
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"external_data": null,
"moduleimpl_id": 12,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```
#### GET /assiduites/1/query?etat=retard
```json
[
{
"assiduite_id": 2,
"date_debut": "2022-09-26T08:00:00+0200",
"date_fin": "2022-09-26T09:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "RETARD",
"etudid": 1,
"moduleimpl_id": 13,
"user_id": null
},
{
"assiduite_id": 3,
"date_debut": "2022-09-27T08:00:00+0200",
"date_fin": "2022-09-27T10:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "RETARD",
"etudid": 1,
"moduleimpl_id": 14,
"user_id": null
},
"..."
"..."
]
```
#### GET /assiduites/1/query?moduleimpl_id=1
```json
["..."]
[
"..."
]
```
#### GET /assiduites/1/query?with_justifs=
```json
[
{
"assiduite_id": 1,
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"external_data": null,
"justificatifs": [
{
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"justif_id": 1,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
}
],
"moduleimpl_id": 12,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```

View File

@ -1,32 +1,84 @@
### assiduites_count
#### GET /assiduites/1/count
```json
{
"compte": 4,
"demi": 3,
"heure": 6.0,
"journee": 4
"compte": 1,
"demi": 0,
"heure": 0.0,
"journee": 1
}
```
#### GET /assiduites/1/count/query?etat=present,retard&metric=compte,heure
```json
{
"compte": 4,
"heure": 6.0
"compte": 1,
"heure": 0.0
}
```
#### GET /assiduites/1/count/query?etat=retard
```json
{
"compte": 3,
"demi": 3,
"heure": 6.0,
"journee": 3
"compte": 0,
"demi": 0,
"heure": 0,
"journee": 0
}
```
#### GET /assiduites/1/count/query?split
```json
{
"absent": {
"compte": 0,
"demi": 0,
"heure": 0,
"journee": 0,
"justifie": {
"compte": 0,
"demi": 0,
"heure": 0,
"journee": 0
},
"non_justifie": {
"compte": 0,
"demi": 0,
"heure": 0,
"journee": 0
}
},
"present": {
"compte": 1,
"demi": 0,
"heure": 0.0,
"journee": 1
},
"retard": {
"compte": 0,
"demi": 0,
"heure": 0,
"journee": 0,
"justifie": {
"compte": 0,
"demi": 0,
"heure": 0,
"journee": 0
},
"non_justifie": {
"compte": 0,
"demi": 0,
"heure": 0,
"journee": 0
}
},
"total": {
"compte": 1,
"demi": 0,
"heure": 0.0,
"journee": 1
}
}
```

View File

@ -0,0 +1,38 @@
### assiduites_create
#### POST /assiduites/create
> `Content-Type: application/json`
>
> `[{"etudid":-1,"date_debut": "2023-10-26T08:00","date_fin": "2023-10-26T10:00","etat": "absent"}]`
```json
{
"errors": [
{
"indice": 0,
"message": "Cet \u00e9tudiant n'existe pas."
}
],
"success": []
}
```
#### POST /assiduites/create
> `Content-Type: application/json`
>
> `[{"etudid":1,"date_debut": "2023-10-26T08:00","date_fin": "2023-10-26T10:00","etat": "absent"}]`
```json
{
"errors": [],
"success": [
{
"indice": 0,
"message": {
"assiduite_id": 50
}
}
]
}
```

View File

@ -1,73 +1,119 @@
### assiduites_formsemestre
#### GET /assiduites/formsemestre/1
```json
[
{
"assiduite_id": 1,
"date_debut": "2022-09-25T08:00:00+0200",
"date_fin": "2022-09-25T08:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"moduleimpl_id": 8,
"user_id": null
},
{
"assiduite_id": 2,
"date_debut": "2022-09-26T08:00:00+0200",
"date_fin": "2022-09-26T09:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "RETARD",
"etudid": 1,
"moduleimpl_id": 13,
"user_id": null
},
"..."
{
"assiduite_id": 1,
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"external_data": null,
"moduleimpl_id": 12,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
{
"assiduite_id": 2,
"code_nip": "NIP2",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "RETARD",
"etudid": 2,
"external_data": null,
"moduleimpl_id": 4,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```
#### GET /assiduites/formsemestre/1/query?etat=retard
```json
[
{
"assiduite_id": 2,
"date_debut": "2022-09-26T08:00:00+0200",
"date_fin": "2022-09-26T09:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "RETARD",
"etudid": 1,
"moduleimpl_id": 13,
"user_id": null
},
"..."
{
"assiduite_id": 2,
"code_nip": "NIP2",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "RETARD",
"etudid": 2,
"external_data": null,
"moduleimpl_id": 4,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
{
"assiduite_id": 7,
"code_nip": "NIP4",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "RETARD",
"etudid": 4,
"external_data": null,
"moduleimpl_id": 6,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```
#### GET /assiduites/formsemestre/1/query?moduleimpl_id=1
```json
[
{
"assiduite_id": 3,
"date_debut": "2022-09-27T08:00:00+0200",
"date_fin": "2022-09-27T08:00:00+0200",
"desc": null,
"entry_date": "2023-07-28T11:13:45+0200",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"moduleimpl_id": 1,
"user_id": null
},
"..."
{
"assiduite_id": 27,
"code_nip": "NIP10",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "PRESENT",
"etudid": 10,
"external_data": null,
"moduleimpl_id": 1,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
{
"assiduite_id": 43,
"code_nip": "NIP14",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "RETARD",
"etudid": 14,
"external_data": null,
"moduleimpl_id": 1,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```

View File

@ -1,32 +1,30 @@
### assiduites_formsemestre_count
#### GET /assiduites/formsemestre/1/count
```json
{
"compte": 0,
"demi": 0,
"heure": 0.0,
"journee": 0
"compte": 48,
"demi": 14,
"heure": 65.0,
"journee": 18
}
```
#### GET /assiduites/formsemestre/1/count/query?etat=present,retard&metric=compte,heure
```json
{
"compte": 0,
"heure": 0.0
"compte": 29,
"heure": 35.0
}
```
#### GET /assiduites/formsemestre/1/count/query?etat=retard
```json
{
"compte": 0,
"demi": 0,
"heure": 0.0,
"journee": 0
"compte": 14,
"demi": 8,
"heure": 19.0,
"journee": 11
}
```

View File

@ -0,0 +1,62 @@
### assiduites_group
#### GET /assiduites/group/query?etudids=1,2,3
```json
{
"1": [
{
"assiduite_id": 1,
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "PRESENT",
"etudid": 1,
"external_data": null,
"moduleimpl_id": 12,
"user_id": null,
"user_name": null,
"user_nom_complet": null
}
],
"2": [
{
"assiduite_id": 2,
"code_nip": "NIP2",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "RETARD",
"etudid": 2,
"external_data": null,
"moduleimpl_id": 4,
"user_id": null,
"user_name": null,
"user_nom_complet": null
}
],
"3": [
{
"assiduite_id": 3,
"code_nip": "3",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"desc": null,
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"est_just": false,
"etat": "PRESENT",
"etudid": 3,
"external_data": null,
"moduleimpl_id": 18,
"user_id": null,
"user_name": null,
"user_nom_complet": null
}
]
}
```

View File

@ -51,12 +51,12 @@
"nbabs": 5,
"nbabsjust": 1,
"nom_disp": "FLEURY",
"nom_short": "FLEURY Ma.",
"partitions": {
"1": 1
},
"prenom": "MADELEINE",
"rang": "1",
"sort_key":"fleury;madeleine",
"specialite": "",
"type_admission": "",
"ues_validables": "3/3"
@ -109,12 +109,12 @@
"nbabs": 3,
"nbabsjust": 1,
"nom_disp": "SAUNIER",
"nom_short": "SAUNIER Ja.",
"partitions": {
"1": 1
},
"prenom": "JACQUES",
"rang": "2",
"sort_key":"fleury;madeleine",
"specialite": "",
"type_admission": "",
"ues_validables": "3/3"

View File

@ -3,15 +3,19 @@
#### GET /justificatif/1
```json
{
"date_debut": "2022-09-25T08:00:00+0200",
"date_fin": "2022-09-25T16:00:00+0200",
"entry_date": "2023-07-28T11:13:45+0200",
"etat": "VALIDE",
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"justif_id": 1,
"raison": "raison",
"user_id": null
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
}
```

View File

@ -1,22 +1,22 @@
### justificatif_create
#### POST /justificatif/1/create
> `Content-Type: application/json`
>
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "attente"}]`
>
> `[{"date_debut": "2023-10-27T08:00","date_fin": "2023-10-27T10:00","etat": "attente"}]`
```json
{
"errors": [],
"success": [
{
"indice": 0,
"message": {
"couverture": [],
"justif_id": 12
}
}
]
"errors": [],
"success": [
{
"indice": 0,
"message": {
"couverture": [],
"justif_id": 25
}
}
]
}
```

View File

@ -1,28 +1,28 @@
### justificatif_delete
#### POST /justificatif/delete
> `Content-Type: application/json`
>
>
> `[2,2,3]`
```json
{
"errors": [
{
"indice": 1,
"message": "Justificatif non existant"
}
],
"success": [
{
"indice": 0,
"message": "OK"
},
{
"indice": 2,
"message": "OK"
}
]
"errors": [
{
"indice": 1,
"message": "Justificatif non existant"
}
],
"success": [
{
"indice": 0,
"message": "OK"
},
{
"indice": 2,
"message": "OK"
}
]
}
```

View File

@ -1,31 +1,36 @@
### justificatif_edit
#### POST /justificatif/1/edit
> `Content-Type: application/json`
>
>
> `{"etat":"valide"}`
```json
{
"couverture": {
"apr\u00e8s": [26],
"avant": [1, 26, 38]
}
"couverture": {
"apres": [
1
],
"avant": []
}
}
```
#### POST /justificatif/1/edit
> `Content-Type: application/json`
>
>
> `{"raison":"MEDIC"}`
```json
{
"couverture": {
"apr\u00e8s": [26],
"avant": [1, 26, 38]
}
"couverture": {
"apres": [
1
],
"avant": [
1
]
}
}
```

View File

@ -1,26 +1,113 @@
### justificatifs
#### GET /justificatifs/1
```json
[
{
"date_debut": "2022-09-25T08:00:00+0200",
"date_fin": "2022-09-25T16:00:00+0200",
"entry_date": "2023-07-28T11:13:45+0200",
"etat": "VALIDE",
"etudid": 1,
"fichier": null,
"justif_id": 1,
"raison": "raison",
"user_id": null
},
"..."
{
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"justif_id": 1,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```
#### GET /justificatifs/1/query?etat=attente
```json
["..."]
[
"..."
]
```
#### GET /justificatifs/dept/1
```json
[
{
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"formsemestre": {
"id": 1,
"title": "TAPI-BUT-FI-S1-2021"
},
"justif_id": 1,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
{
"code_nip": "NIP2",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "NON_VALIDE",
"etudid": 2,
"external_data": null,
"fichier": null,
"formsemestre": {
"id": 1,
"title": "TAPI-BUT-FI-S1-2021"
},
"justif_id": 2,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```
#### GET /justificatifs/formsemestre/1
```json
[
{
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"justif_id": 1,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
{
"code_nip": "NIP2",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "NON_VALIDE",
"etudid": 2,
"external_data": null,
"fichier": null,
"justif_id": 2,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```

View File

@ -0,0 +1,47 @@
### justificatifs_dept
#### GET /justificatifs/dept/1
```json
[
{
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"formsemestre": {
"id": 1,
"title": "TAPI-BUT-FI-S1-2021"
},
"justif_id": 1,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
{
"code_nip": "NIP2",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "NON_VALIDE",
"etudid": 2,
"external_data": null,
"fichier": null,
"formsemestre": {
"id": 1,
"title": "TAPI-BUT-FI-S1-2021"
},
"justif_id": 2,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```

View File

@ -0,0 +1,39 @@
### justificatifs_formsemestre
#### GET /justificatifs/formsemestre/1
```json
[
{
"code_nip": "1",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "MODIFIE",
"etudid": 1,
"external_data": null,
"fichier": null,
"justif_id": 1,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
{
"code_nip": "NIP2",
"date_debut": "2022-08-20T12:00:00.000000+02:00",
"date_fin": "2022-08-20T12:00:00.000000+02:00",
"entry_date": "2022-08-20T12:00:00.000000+02:00",
"etat": "NON_VALIDE",
"etudid": 2,
"external_data": null,
"fichier": null,
"justif_id": 2,
"raison": null,
"user_id": null,
"user_name": null,
"user_nom_complet": null
},
"..."
]
```

View File

@ -52,7 +52,7 @@ nav:
- "FAQ": FAQ.md
- Installation:
- "Guide administration": GuideAdminSys.md
- "Installation": GuideInstallDebian11.md
- "Installation": GuideInstallDebian12.md
- "Mises à jour": MisesAJour.md
- "Interfaces SI": InterrogationPortail.md
- "Publication des notes": PublicationEtudiants.md
@ -62,7 +62,7 @@ nav:
- "Utilisateurs": UtilisateursScoDoc.md
- Développement:
- "Guide Développeurs": GuideDeveloppeurs.md
- "Gitea": https://scodoc.org/git
- "Gitea": https://git.scodoc.org
- "API": ScoDoc9API.md
- "Introduction": DevInternals.md
- "Utiliser Git": DevGit.md