Compare commits
7 Commits
master
...
complement
Author | SHA1 | Date | |
---|---|---|---|
|
b16fe3a4cb | ||
|
66e5d75c41 | ||
|
62f5e261ce | ||
|
2a4cf59f02 | ||
|
463273646f | ||
|
d633b4b926 | ||
|
af4525989a |
21
README.md
@ -5,7 +5,6 @@ Documentation (Web) de ScoDoc, en [MkDocs](https://www.mkdocs.org/).
|
|||||||
Version en ligne sur [scodoc.org](https://scodoc.org).
|
Version en ligne sur [scodoc.org](https://scodoc.org).
|
||||||
|
|
||||||
## Historique
|
## Historique
|
||||||
|
|
||||||
L'ancienne documentation de ScoDoc7, hébergée au LIPN sur une plate-forme
|
L'ancienne documentation de ScoDoc7, hébergée au LIPN sur une plate-forme
|
||||||
[Trac](https://trac.edgewall.org/), a été traduite en
|
[Trac](https://trac.edgewall.org/), a été traduite en
|
||||||
[Markdown](https://www.markdownguide.org/basic-syntax/) en septembre
|
[Markdown](https://www.markdownguide.org/basic-syntax/) en septembre
|
||||||
@ -13,26 +12,6 @@ L'ancienne documentation de ScoDoc7, hébergée au LIPN sur une plate-forme
|
|||||||
|
|
||||||
Le site est depuis hébergé sur [https://scodoc.org].
|
Le site est depuis hébergé sur [https://scodoc.org].
|
||||||
|
|
||||||
## Installation mkdocs
|
|
||||||
|
|
||||||
Il est recommandé de créer un virtualenv:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python3.11 -m venv venv
|
|
||||||
source venv/bin/activate
|
|
||||||
```
|
|
||||||
|
|
||||||
puis d'y installer les composants suivants:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install mkdocs
|
|
||||||
pip install pymdown-extensions
|
|
||||||
pip install mkdocs-material
|
|
||||||
pip install mkdocs-plugin-inline-svg
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour générer le site:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdocs build
|
|
||||||
```
|
|
||||||
|
@ -1,52 +1,56 @@
|
|||||||
# Gestion des utilisateurs dans ScoDoc
|
|
||||||
|
|
||||||
ScoDoc gère sa propre base d'utilisateurs (enseignants, administratifs,
|
## Gestion des utilisateurs dans ScoDoc
|
||||||
secrétaires). Rappelons que les étudiants ne sont pas des utilisateurs, ils
|
ScoDoc gère sa liste d'utilisateurs (enseignants, secrétaires) dans
|
||||||
n'ont pas d'accès direct au logiciel.
|
une base de données SQL.
|
||||||
|
|
||||||
## Principes généraux
|
### Principes généraux
|
||||||
|
|
||||||
Les utilisateurs sont associés à:
|
Depuis ScoDoc 9.0, la liste des utilisateurs est enregistrée dans la base de
|
||||||
|
données unique SCODOC (en production) (voir la partie implémentation pour plus
|
||||||
|
de détails).
|
||||||
|
|
||||||
- un identifiant unique (`user_name`), propre à ScoDoc;
|
Les entités gérées par scodoc sont :
|
||||||
- une adresse email;
|
- Les utilisateurs ;
|
||||||
- un ensemble de rôles;
|
- les rôles ;
|
||||||
- un département ScoDoc de rattachement (optionnel);
|
- en liaison avec les départements.
|
||||||
- un statut actif/inactif.
|
|
||||||
- d'autres attributs, comme l'identifiant CAS (voir [Configuration du CAS](ConfigCAS.md))
|
|
||||||
|
|
||||||
### Rôles et permissions
|
#### L'entité utilisateur
|
||||||
|
- possède les propriétés habituelles (nom, prénom, user_name, email);
|
||||||
|
- peut être associé à un département ou pas (cas d'un administrateur gérant
|
||||||
|
plusieurs départements);
|
||||||
|
- assure un ou plusieurs rôles.
|
||||||
|
|
||||||
Les rôles sont eux-même associés à des permissions: on donne une permission (ex:
|
#### L'entité rôle
|
||||||
"enregistrer des absences") à un ou plusieurs rôles, et on associe chaque compte
|
Un rôle est le regroupement d'un certain nombre de privilèges.
|
||||||
utilisateur à un ou plusieurs rôles. Ce système est à la fois flexible et facile
|
C'est généralement la combinaison d'un département et d'un type d'utilisation.
|
||||||
à configurer. Plus de détails [sur la page dédiée](ConfigPermissionsDept.md).
|
Actuellement au nombre de quatre (d'autres sont prévus, notamment pour le module
|
||||||
|
relations entreprises) :
|
||||||
|
- Administrateur
|
||||||
|
- Secrétariat
|
||||||
|
- Enseignant
|
||||||
|
- Observateur
|
||||||
|
|
||||||
Un rôle permet de grouper un ensemble de permissions nécessaire pour remplir des
|
Par ailleurs, le contexte d'utilisation donne certains privilèges (par exemple
|
||||||
tâches données (secrétariat, responsable de formation, intervenant enseignant,
|
la faculté de saisir des notes, de justifier des absences, de modifier la
|
||||||
...).
|
définition des programmes, ...).
|
||||||
|
|
||||||
Un utilisateur peut être associé à un nombre quelconque de rôle, chaque
|
_Exemple:_
|
||||||
association étant valable pour un département donné (ou bien éventuellement
|
|
||||||
tous). Il peut ainsi être "Responsable" dans un département et "Enseignant" dans
|
|
||||||
un autre.
|
|
||||||
|
|
||||||
### Département de rattachement
|
L'utilisateur 'Dupont' est responsable ScoDoc pour son département *RT* mais
|
||||||
|
intervient également en enseignement au département *GEII*.
|
||||||
|
On pourra lui attribuer les rôles `AdminRT` et `EnsGEII`, ce qui lui permettra :
|
||||||
|
|
||||||
Le département de rattachement est utilisé pour afficher rapidement la liste des
|
- de gérer les utilisateurs du (seul) département RT :
|
||||||
comptes d'un département (accès par un responsable de formation, chef de
|
Privilèges associés : `Gérer les utlisateurs (Sco Users Manage)`, `Changer les
|
||||||
département, ...). Certains comptes ne sont pas rattachés à un département
|
formations (Sco Change Formation)`, ...
|
||||||
(administrateurs).
|
- d'accéder aux vues enseignant pour le département GEII :
|
||||||
|
Privilèges associés : `Voir les parties pour les enseignants (Sco View Ens)`,
|
||||||
|
`Saisir des absences (Sco Change Absences)`, ...
|
||||||
|
|
||||||
### Fermeture des comptes
|
Pour une description plus fine des privilèges, voir
|
||||||
|
[ConfigPermissions](ConfigPermissions.md)
|
||||||
|
|
||||||
En principe, on ne **supprime** pas de compte utilisateur s'ils ont déjà été
|
### Opérations et cycle de vie des utilisateurs
|
||||||
utilisés. En effet, afin de permettre la traçabilité des opérations, ScoDoc
|
|
||||||
conserve des références aux utilisateurs. Pour fermer un compte, on le rend
|
|
||||||
**inactif**. Un utilisateur inactif ne peut plus se connecter, et n'apparait pas
|
|
||||||
dans les listes par défaut.
|
|
||||||
|
|
||||||
## Opérations et cycle de vie des utilisateurs
|
|
||||||
|
|
||||||
Un compte utilisateur peut être modifié par 3 types d'utilisateurs :
|
Un compte utilisateur peut être modifié par 3 types d'utilisateurs :
|
||||||
|
|
||||||
@ -56,11 +60,11 @@ Un compte utilisateur peut être modifié par 3 types d'utilisateurs :
|
|||||||
|
|
||||||
Les opérations existantes sont :
|
Les opérations existantes sont :
|
||||||
|
|
||||||
- La création;
|
- La création ;
|
||||||
- la demande de renouvellement de mot de passe;
|
- la demande de renouvellement de mot de passe;
|
||||||
- la désactivation.
|
- la désactivation.
|
||||||
|
|
||||||
### Notes
|
#### Notes:
|
||||||
|
|
||||||
- La suppression d'un utilisateur est impossible (nécessité de garder la trace
|
- La suppression d'un utilisateur est impossible (nécessité de garder la trace
|
||||||
des anciens historiques), mais on peut le rendre inactif (il n'apparait alors
|
des anciens historiques), mais on peut le rendre inactif (il n'apparait alors
|
||||||
@ -69,11 +73,10 @@ Les opérations existantes sont :
|
|||||||
mot de passe par mail) a été remplacé par l'ajout de la mention suivante dans
|
mot de passe par mail) a été remplacé par l'ajout de la mention suivante dans
|
||||||
le formulaire de connexion :
|
le formulaire de connexion :
|
||||||
|
|
||||||
```text
|
|
||||||
En cas d'oubli de votre mot de passe cliquez ici pour le réinitialiser.
|
|
||||||
```
|
|
||||||
|
|
||||||
### Création d'un utilisateur (par formulaire)
|
` En cas d'oubli de votre mot de passe cliquez ici pour le réinitialiser. `
|
||||||
|
|
||||||
|
#### Création d'un utilisateur (par formulaire)
|
||||||
|
|
||||||
La création d'un utilisateur peut être faite par un administrateur ou super
|
La création d'un utilisateur peut être faite par un administrateur ou super
|
||||||
administrateur. Le lien `Ajouter un utlisateur` permettant cela se trouve dans
|
administrateur. Le lien `Ajouter un utlisateur` permettant cela se trouve dans
|
||||||
@ -97,18 +100,20 @@ scenarii suivants :
|
|||||||
Une case à cocher `envoyer un mail d'accueil à l'utlisateur` permet de choisir
|
Une case à cocher `envoyer un mail d'accueil à l'utlisateur` permet de choisir
|
||||||
la troisième option (si décochée), sinon la case suivante `indiquer par mail de
|
la troisième option (si décochée), sinon la case suivante `indiquer par mail de
|
||||||
changer le mot de passe initial` permet de choisir entre l'option 1 et l'option
|
changer le mot de passe initial` permet de choisir entre l'option 1 et l'option
|
||||||
|
2.
|
||||||
|
|
||||||
|
Dans tous les cas les mails seront envoyés avec l'adresse de réponse précisée par la valeur de la variable d'environnement
|
||||||
|
`SCODOC_MAIL_FROM` (par défaut `no-reply@{serveur_mail}`). Cette variable peut être initialisée dans le fichier .env par exemple avec la ligne:
|
||||||
|
|
||||||
Dans tous les cas les mails seront envoyés avec l'adresse de réponse précisée
|
```bash
|
||||||
par la valeur de la variable de configuration `email_from_addr`, qui peut être
|
SCODOC_MAIL_FROM=no-reply@univ-exemple.fr
|
||||||
spécifié au niveau général ou département par département (voir
|
```
|
||||||
[Configuration des envois d'emails](ConfigEmail.md))
|
|
||||||
|
|
||||||
**Le département d'appartenance** peut être choisi si le créateur est
|
**Le département d'appartenance** peut être choisi si le créateur est
|
||||||
administrateur pour plusieurs départements. Il aura alors le loisir
|
administrateur pour plusieurs départements. Il aura alors le loisir
|
||||||
de sélectionner l'un des départements qu'il administre (liste déroulante).
|
de sélectionner l'un des départements qu'il administre (liste déroulante).
|
||||||
|
|
||||||
### Création en masse (fichier xlsx)
|
#### Création en masse (fichier xlsx)
|
||||||
|
|
||||||
Le super-administrateur (et lui seulement) peut également créer des comptes en
|
Le super-administrateur (et lui seulement) peut également créer des comptes en
|
||||||
masse par téléversement d'un fichier au format `.xlsx` par le biais du lien
|
masse par téléversement d'un fichier au format `.xlsx` par le biais du lien
|
||||||
@ -125,18 +130,17 @@ Les colonnes à remplir sont les suivantes :
|
|||||||
- `email`: l'email de l'utilisateur ; (obligatoire, unique dans scodoc)
|
- `email`: l'email de l'utilisateur ; (obligatoire, unique dans scodoc)
|
||||||
- `roles`: le ou les rôles attribués à l'utilisateur séparés par des virgules (exemple `Admin_RT, Ens_GEII`)
|
- `roles`: le ou les rôles attribués à l'utilisateur séparés par des virgules (exemple `Admin_RT, Ens_GEII`)
|
||||||
- `dept`: le département de rattachement de l'utilisateur (acronyme, en lettres capitales).
|
- `dept`: le département de rattachement de l'utilisateur (acronyme, en lettres capitales).
|
||||||
- `cas_id`, ...: optionnel, voir [Configuration du CAS](ConfigCAS.md)
|
|
||||||
|
|
||||||
_Note_:
|
_Note_:
|
||||||
|
|
||||||
- Tous les utilisateurs sont créés ou bien aucun.
|
- Tous les utilisateurs sont créés ou bien aucun.
|
||||||
- Un mail est envoyé à chaque utilisateur nouvellement créé.
|
- Un mail est envoyé à chaque utilisateur nouvellement créé.
|
||||||
|
|
||||||
### Changement du mot de passe
|
#### Changement du mot de passe
|
||||||
|
|
||||||
Deux circonstances sont envisagées.
|
Deux circonstances sont envisagées.
|
||||||
|
|
||||||
#### Oubli de mot de passe
|
##### Oubli de mot de passe
|
||||||
|
|
||||||
Lorsqu'un utilisateur a perdu son mot de passe, il a la possibilité de retrouver
|
Lorsqu'un utilisateur a perdu son mot de passe, il a la possibilité de retrouver
|
||||||
son accès sans intervention d'un administrateur. Il lui suffit de demander la
|
son accès sans intervention d'un administrateur. Il lui suffit de demander la
|
||||||
@ -145,15 +149,15 @@ de son email (qui est maintenant identifiant dans scodoc), un mail lui est
|
|||||||
envoyé. ce mail contient un lien comportant un jeton à durée limitée. Ce lien
|
envoyé. ce mail contient un lien comportant un jeton à durée limitée. Ce lien
|
||||||
renvoie vers la page permettant de redéfinir le mot de passe de l'utilisateur.
|
renvoie vers la page permettant de redéfinir le mot de passe de l'utilisateur.
|
||||||
|
|
||||||
#### Édition du profil
|
##### Edition du profil
|
||||||
|
|
||||||
Si l'utilisateur peut se connecter, il peut éditer son profil (et par là,
|
Si l'utilisateur peut se connecter, il peut éditer son profil (et par là,
|
||||||
modifier son email et/ou son mot de passe). La barre latérale de l'écran
|
modifier son email et/ou son mot de passe). La barre latérale de l'écran
|
||||||
principal de scodoc affiche dans le coin supérieur gauche la version courante de
|
principal de scodoc affiche dans le coin supérieur gauche la version courante de
|
||||||
scodoc ainsi que l'identification de l'utilisateur actuel. Un clic sur le nom
|
scodoc ainsi que l'identification de l'utilisateur actuel. Un clic sur le nom
|
||||||
permet à l'utilisateur d'éditer son profil.
|
permet à l'utilsateur d'éditer son profil.
|
||||||
|
|
||||||
### Activation/désactivation
|
#### Activation/désactivation
|
||||||
|
|
||||||
Une fois créé, le compte utilisateur conserve son existence. Il peut cependant être rendu inactif:
|
Une fois créé, le compte utilisateur conserve son existence. Il peut cependant être rendu inactif:
|
||||||
|
|
||||||
@ -165,7 +169,7 @@ n'est donc pas possible de créer un nouveau compte associé au même email). Il
|
|||||||
est simplement impossible de se connecter ou de modifier le profil de ce compte
|
est simplement impossible de se connecter ou de modifier le profil de ce compte
|
||||||
par l'utilisateur lui-même.
|
par l'utilisateur lui-même.
|
||||||
|
|
||||||
## Implémentation (pour les développeurs)
|
### Implémentation (pour les développeurs)
|
||||||
|
|
||||||
Le graphe d'état ci-dessous explicite les différents états que peux prendre un
|
Le graphe d'état ci-dessous explicite les différents états que peux prendre un
|
||||||
compte utilisateur en fonction des opérations qu'il subit.
|
compte utilisateur en fonction des opérations qu'il subit.
|
||||||
@ -179,6 +183,7 @@ On notera:
|
|||||||
3. Que les états `créé`et `créé + ticket`permettent la connexion (sous réserve
|
3. Que les états `créé`et `créé + ticket`permettent la connexion (sous réserve
|
||||||
de la connaissance du mot de passe).
|
de la connaissance du mot de passe).
|
||||||
|
|
||||||
|
|
||||||
<img src="/fig/GrapheUser.png" />
|
<img src="/fig/GrapheUser.png" />
|
||||||
|
|
||||||
**SCODOC**.
|
**SCODOC**.
|
||||||
@ -204,17 +209,11 @@ La table **user** contient:
|
|||||||
|token | text | dernier token émis (changement de mot de passe) | 1a, 3 |
|
|token | text | dernier token émis (changement de mot de passe) | 1a, 3 |
|
||||||
|token_expiration | timestamp without time zone | date d'expiration du dernier token émis | 1a, 3 |
|
|token_expiration | timestamp without time zone | date d'expiration du dernier token émis | 1a, 3 |
|
||||||
|
|
||||||
(les champs utilisé pour le CAS ne sont pas mentionnés ici)
|
|
||||||
|
|
||||||
🚸 encodage `utf-8`, sauf si vous avez modifié l'installation.
|
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
||||||
|
alt="/!\" /> encodage `utf-8`, sauf si vous avez modifié l'installation.
|
||||||
|
|
||||||
Pour la signification des rôles et l'utilisation du département, voir
|
Pour la signification des rôles et l'utilisation du département, voir
|
||||||
[ConfigPermissions](ConfigPermissions.md).
|
[ConfigPermissions](ConfigPermissions.md).
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Configuration du CAS](ConfigCAS.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [Configuration des envois d'emails](ConfigEmail.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
38
docs/ApiCreationParcours.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# Parcours ScoDoc
|
||||||
|
Les cursus pédagogiques sont définis dans ScoDoc par des classes de "parcours" qui définissent les paramètres: nombre de semestres, modalités de validation des UE, etc.
|
||||||
|
|
||||||
|
Plusieurs parcours sont définis dans ScoDoc, l'utilisateur choisi l'un d'entre eux pour chacun des programmes pédagogique (menu **Type de parcours**).
|
||||||
|
Les parcours existants incluent les suivants:
|
||||||
|
|
||||||
|
* DUT (*Diplôme Universitaire de Technologie*, en quatre semestres)
|
||||||
|
* Licence Professionnelle
|
||||||
|
* Master (différents types)
|
||||||
|
* etc.
|
||||||
|
|
||||||
|
Il est possible d'ajouter des parcours adaptés en ajoutant du code Python. Toutefois, afin de ne pas perturber les mises à jours et de garantir la pérennité des modifications, il est très recommandé de partager les modifications pour inclusion dans le code ScoDoc. Contacter pour cela la liste scodoc-devel ([listes de diffusion](ListesDeDiffusion.md)).
|
||||||
|
|
||||||
|
|
||||||
|
## Quelques indications pour les programmeurs
|
||||||
|
Les parcours sont définis dans le module `sco_codes_parcours.py`. Chaque parcours correspond à une sous-classe de `TypeParcours`, définissant des paramètres et quelques méthodes.
|
||||||
|
|
||||||
|
Les paramètres (déclarés comme des variables de classe) sont les suivants:
|
||||||
|
|
||||||
|
Nom | Type |
|
||||||
|
--- | ---- | ---
|
||||||
|
TYPE_PARCOURS| `int` | id du parcours (un entier unique, à demander sur scodoc-devel)
|
||||||
|
NAME| `string` | nom du parcours présenté à l'utilisateur (requis)
|
||||||
|
NB_SEM| `int` | durée en semestres (1)
|
||||||
|
BARRE_MOY | `float` | seuil validation semestre (10/20)
|
||||||
|
BARRE_UE_DEFAULT | `float` | seuil moy UE pour valider semestre (8/20)
|
||||||
|
BARRE_UE | `dict { ue : seuil }`| seuil par UE (`{}`)
|
||||||
|
NOTES_BARRE_VALID_UE_TH | `float` | seuil validation UE (10./20)
|
||||||
|
ALLOW_SEM_SKIP| `bool` | passage: autorise-t-on les sauts de semestres ? (`False`)
|
||||||
|
SESSION_NAME| `string` | nom des sessions (`'semestre'`)
|
||||||
|
SESSION_ABBRV | `string` | `'S' -> S1, S2, ...`
|
||||||
|
UNUSED_CODES | `set` | ensemble des codes jury non autorisés dans ce parcours (`set()`)
|
||||||
|
UE_IS_MODULE| `bool` | un seul module par UE (si plusieurs modules, etudiants censéments inscrits à un seul d'entre eux) (`False`)
|
||||||
|
ECTS_ONLY| `bool` | parcours avec progression basée uniquement sur les ECTS (`False`)
|
||||||
|
ALLOWED_UE_TYPES | `set` | types d'UE autorisés dans ce parcours
|
||||||
|
|
@ -1,35 +1,28 @@
|
|||||||
|
|
||||||
# Générer des bulletins en Python
|
# Générer des bulletins en Python
|
||||||
|
Il est possible de coder de nouveaux styles de bulletins de notes (web et/ou PDF), pour répondre précisément aux besoins de votre établissement.
|
||||||
|
|
||||||
Il est possible de coder de nouveaux styles de bulletins de notes (web et/ou
|
Ce n'est pas très difficile, mais il faudra coder en langage Python avec pour le PDF la bibliothèque ReportLab (qui est bien documentée, [voir le guide](http://www.reportlab.com/software/opensource/rl-toolkit/guide/)).
|
||||||
PDF), pour répondre précisément aux besoins de votre établissement.
|
|
||||||
|
|
||||||
Ce n'est pas très difficile, mais il faudra coder en langage Python avec pour le
|
ScoDoc demande la création d'un bulletin pour un étudiant donné dans semestre donné (`formsemestre_id`).
|
||||||
PDF la bibliothèque ReportLab (qui est bien documentée, [voir le
|
Le bulletin doit être rendu sous forme d'une liste d'objets PLATYPUS (voir le chapitre 5 du "User Guide" de ReportLab cité plus haut).
|
||||||
guide](http://www.reportlab.com/software/opensource/rl-toolkit/guide/)).
|
|
||||||
|
|
||||||
ScoDoc demande la création d'un bulletin pour un étudiant donné dans semestre
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention (août 2011): nouvelle version, changement d'API: les informations ci-dessous s'appliquent à partir de la subversion 1047.
|
||||||
donné (`formsemestre_id`). Le bulletin doit être rendu sous forme d'une liste
|
|
||||||
d'objets PLATYPUS (voir le chapitre 5 du "User Guide" de ReportLab cité plus
|
|
||||||
haut).
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
|
||||||
alt="/!\" /> Attention (août 2011): nouvelle version, changement d'API: les
|
|
||||||
informations ci-dessous s'appliquent à partir de la subversion 1047.
|
|
||||||
|
|
||||||
## Organisation
|
## Organisation
|
||||||
|
A minima, il vous faut créer un module python (fichier .py) qui se définira une classe chargée de générer vos bulletins.
|
||||||
A minima, il vous faut créer un module python (fichier .py) qui se définira une
|
|
||||||
classe chargée de générer vos bulletins.
|
|
||||||
|
|
||||||
Ce fichier doit être placé dans le répertoire `/opt/scodoc/instance/Products/ScoDoc`
|
Ce fichier doit être placé dans le répertoire `/opt/scodoc/instance/Products/ScoDoc`
|
||||||
|
|
||||||
Il faut aussi l'importer dans `sco_bulletins_generator.py` (voir tout à la fin
|
Il faut aussi l'importer dans `sco_bulletins_generator.py` (voir tout à la fin de ce fichier).
|
||||||
de ce fichier).
|
|
||||||
|
|
||||||
Voici un module minimal commenté (le fichier `sco_bulletins_example.py` est
|
Voici un module minimal commenté (le fichier `sco_bulletins_example.py` est fournit avec ScoDoc):
|
||||||
fournit avec ScoDoc):
|
```
|
||||||
|
#!python
|
||||||
|
# -*- mode: python -*-
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
```py
|
|
||||||
"""Génération d'un bulletin de note style "Exemple"
|
"""Génération d'un bulletin de note style "Exemple"
|
||||||
(commentaire libre ici)
|
(commentaire libre ici)
|
||||||
"""
|
"""
|
||||||
@ -54,7 +47,7 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
|
|||||||
# .bul_part_below(self, format=*) : infos sous la table
|
# .bul_part_below(self, format=*) : infos sous la table
|
||||||
# .bul_signatures_pdf(self) : signatures
|
# .bul_signatures_pdf(self) : signatures
|
||||||
|
|
||||||
def bul_table(self, fmt=*):
|
def bul_table(self, format=*):
|
||||||
"""Défini la partie centrale de notre bulletin PDF.
|
"""Défini la partie centrale de notre bulletin PDF.
|
||||||
Doit renvoyer une liste d'objets PLATYPUS
|
Doit renvoyer une liste d'objets PLATYPUS
|
||||||
"""
|
"""
|
||||||
@ -65,27 +58,23 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
# Déclarer votre classe à ScoDoc
|
# Déclarer votre classe à [ScoDoc](ScoDoc.md):
|
||||||
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorExample)
|
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorExample)
|
||||||
```
|
```
|
||||||
|
|
||||||
Si l'on voulait générer aussi du HTML (pour la version web), il suffirait de le
|
Si l'on voulait générer aussi du HTML (pour la version web), il suffirait de le déclarer dans la liste `supported_formats` et que la méthode `bul_table()` renvoie une chaîne HTML si le paramètre format vaut `'html'`.
|
||||||
déclarer dans la liste `supported_formats` et que la méthode `bul_table()`
|
|
||||||
renvoie une chaîne HTML si le paramètre `fmt` vaut `'html'`.
|
|
||||||
|
|
||||||
|
|
||||||
Pour modifier l'en-tête du bulletin PDF (partie au dessus de la table), il faut
|
Pour modifier l'en-tête du bulletin PDF (partie au dessus de la table), il faut surcharger la méthode `bul_title_pdf` qui elle aussi renvoie une liste d'objets PLATYPUS:
|
||||||
surcharger la méthode `bul_title_pdf` qui elle aussi renvoie une liste d'objets
|
```
|
||||||
PLATYPUS:
|
#!python
|
||||||
|
|
||||||
```py
|
|
||||||
def bul_title_pdf(self):
|
def bul_title_pdf(self):
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
De même, les informations placées sous la table principale sont renvoyées par la méthode `gen_part_below`:
|
De même, les informations placées sous la table principale sont renvoyées par la méthode `gen_part_below`:
|
||||||
|
```
|
||||||
```py
|
#!python
|
||||||
def gen_part_below(self, format=*):
|
def gen_part_below(self, format=*):
|
||||||
"""Génère les informations placées sous la table de notes
|
"""Génère les informations placées sous la table de notes
|
||||||
(absences, appréciations, décisions de jury...)
|
(absences, appréciations, décisions de jury...)
|
||||||
@ -96,45 +85,74 @@ De même, les informations placées sous la table principale sont renvoyées par
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
et les signatures (seulement sur le PDF) par `bul_signatures_pdf`. Toutes ces
|
et les signatures (seulement sur le PDF) par `bul_signatures_pdf`. Toutes ces méthodes renvoient des listes d'objets PLATYPUS quelconques.
|
||||||
méthodes renvoient des listes d'objets PLATYPUS quelconques.
|
|
||||||
|
|
||||||
Vous pouvez partir d'un format de bulletin existant et proche de ce que voulez
|
Vous pouvez partir d'un format de bulletin existant et proche de ce que voulez obtenir et définir une sous-classe modifiant (surchargeant) seulement les méthodes qui génèrent les éléments que vous voulez modifier.
|
||||||
obtenir et définir une sous-classe modifiant (surchargeant) seulement les
|
|
||||||
méthodes qui génèrent les éléments que vous voulez modifier.
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention: ne pas modifier après coup le nom des classes de générateurs (ici `BulletinGeneratorExample`), car il va être stocké en base de données par ScoDoc.
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
|
||||||
alt="/!\" /> Attention: ne pas modifier après coup le nom des classes de
|
|
||||||
générateurs (ici `BulletinGeneratorExample`), car il va être stocké en base de
|
|
||||||
données par ScoDoc.
|
|
||||||
|
|
||||||
## Accès aux informations
|
## Accès aux informations
|
||||||
|
La plupart des informations nécessaires sont accessibles via des attributs de votre instance de générateur que ScoDoc aura positionné avant d'appeler vos méthodes. Notamment:
|
||||||
|
* `self.infos`: un (grand) dictionnaire python avec la plupart des informations préparée pour le bulletin à générer (voir plus loin);
|
||||||
|
* `self.version`: indique la version de bulletin demandée par l'utilisateur ("long" ou "short", vous pouvez en faire ce que bon vous semble);
|
||||||
|
* `self.context`: contexte ScoDoc, permettant l'accès à l'API complète.
|
||||||
|
|
||||||
La plupart des informations nécessaires sont accessibles via des attributs de
|
|
||||||
votre instance de générateur que ScoDoc aura positionné avant d'appeler vos
|
|
||||||
méthodes. Notamment:
|
|
||||||
|
|
||||||
* `self.formsemestre`: l'objet `FormSemestre`
|
|
||||||
* `self.infos`: un (grand) dictionnaire python avec la plupart des informations
|
|
||||||
préparée pour le bulletin à générer (voir plus loin);
|
|
||||||
* `self.version`: indique la version de bulletin demandée par l'utilisateur
|
|
||||||
("long" ou "short", vous pouvez en faire ce que bon vous semble);
|
|
||||||
|
|
||||||
## Le dictionnaire d'informations
|
## Le dictionnaire d'informations
|
||||||
|
L'attribut `infos` est un dictionnaire qui contient de très nombreuses informations. il doit être utilisé en **lecture seule** (il est possible que des informations soient partagées entre threads différents, aussi les modifier peut avoir des effets indésirables). .
|
||||||
L'attribut `infos` est un dictionnaire qui contient de très nombreuses
|
|
||||||
informations. il doit être utilisé en **lecture seule** (il est possible que des
|
|
||||||
informations soient partagées entre threads différents, aussi les modifier peut
|
|
||||||
avoir des effets indésirables). .
|
|
||||||
|
|
||||||
|
|
||||||
### Paramètres (préférences)
|
### Paramètres (préférences)
|
||||||
|
Tous les paramètres du semestre sont accessibles via leur nom. Voir la liste sur la page [NomsPreferences](NomsPreferences.md).
|
||||||
|
|
||||||
Tous les paramètres du semestre sont accessibles via leur nom. Voir la liste sur
|
Exemple: `infos['SCOLAR_FONT_SIZE']` est un entier, `infos['UnivName']` est le nom de l'université.
|
||||||
la page [NomsPreferences](NomsPreferences.md).
|
|
||||||
|
|
||||||
|
### Informations sur le semestre
|
||||||
|
Un semestre est représenté par un dictionnaire avec les attributs
|
||||||
|
suivants:
|
||||||
|
|
||||||
|
Type | Nom | Description | Exemple de valeur
|
||||||
|
----| --- | ---- | ---
|
||||||
|
int |semestre_id| Indice dans le parcours | 1
|
||||||
|
string |titre| | 'DUT GEII'
|
||||||
|
string |titre_num| | 'DUT GEII, semestre 1'
|
||||||
|
string |titreannee| | 'DUT GEII, semestre 1 FI 2011'
|
||||||
|
string |titremois| | 'DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011)'
|
||||||
|
string |annee_debut| | '2011'
|
||||||
|
string |annee_fin| | '2011'
|
||||||
|
| anneescolaire| | '2010 - 2011'
|
||||||
|
string |date_debut| | '09/03/2011'
|
||||||
|
| date_debut_iso| | '2011-03-09'
|
||||||
|
| date_fin| | '31/07/2011'
|
||||||
|
| date_fin_iso| | '2011-07-31'
|
||||||
|
| dateord| | '2011-03-09'
|
||||||
|
| mois_debut| | 'Mars 2011'
|
||||||
|
int |mois_debut_ord| | 3
|
||||||
|
| mois_fin| | 'Jul 2011'
|
||||||
|
int |mois_fin_ord| | 7
|
||||||
|
string |modalite| | 'FI'
|
||||||
|
string |etape_apo| Code étape Apogée | 'V1TR2'
|
||||||
|
string |etape_apo2| Code étape Apogée (si 2 codes) | *
|
||||||
|
string |etat| verrouillé ('0') ou non ('1') | '1'
|
||||||
|
| formation_id| id interne de la formation | 'FORM14570'
|
||||||
|
| formsemestre_id| id interne du semestre | 'SEM15176'
|
||||||
|
string |gestion_compensation| | '0'
|
||||||
|
string |gestion_semestrielle| | '0'
|
||||||
|
string |responsable_id| | 'viennet'
|
||||||
|
int {0,1} |ens_can_edit_eval| | 0
|
||||||
|
int {0,1}|resp_can_change_ens| | 0
|
||||||
|
int {0,1} |resp_can_edit| | 0
|
||||||
|
string |bul_bgcolor| | *
|
||||||
|
string |bul_hide_xml| | '0'
|
||||||
|
|
||||||
|
|
||||||
|
Pour le semestre à traiter, ces attributs sont directement dans `infos`.
|
||||||
|
|
||||||
|
On trouve aussi dans `infos['etud']` tous les semestres par lesquels
|
||||||
|
est passé l'étudiant.
|
||||||
|
|
||||||
Exemple: `infos['SCOLAR_FONT_SIZE']` est un entier, `infos['UnivName']` est le
|
|
||||||
nom de l'université.
|
|
||||||
|
|
||||||
### Informations sur l'étudiant
|
### Informations sur l'étudiant
|
||||||
|
|
||||||
@ -211,14 +229,6 @@ sur les semestres auxquels l'étudiant est ou a été inscrit.
|
|||||||
`etud['sems']`est une liste de dictionnaire représentants les
|
`etud['sems']`est une liste de dictionnaire représentants les
|
||||||
semestres auxquels est ou a été inscrit l'étudiant.
|
semestres auxquels est ou a été inscrit l'étudiant.
|
||||||
|
|
||||||
#### Parcours et référentiel BUT
|
|
||||||
|
|
||||||
Type | Nom | Description | Exemple de valeur
|
|
||||||
--------| ---------------------- | ---- | ---
|
|
||||||
string | parcours_titre | titre du parcours | "Cybersécurité"
|
|
||||||
string | parcours_code | code du parcours | "Cyber"
|
|
||||||
string | refcomp_specialite | code spécialité | "RT"
|
|
||||||
string | refcomp_specialite_long| spécialité | "Réseaux et Télécommunications"
|
|
||||||
|
|
||||||
### Résultats (notes) de l'étudiant dans le semestre
|
### Résultats (notes) de l'étudiant dans le semestre
|
||||||
Quelques infos sur les résultats. Le détail des notes est dans la
|
Quelques infos sur les résultats. Le détail des notes est dans la
|
||||||
@ -359,17 +369,17 @@ Le module (tel que décrit dans le programme de la formation) est représenté p
|
|||||||
|
|
||||||
**Etat d'une évaluation:**
|
**Etat d'une évaluation:**
|
||||||
|
|
||||||
Le champ `etat` d'une évaluation est un dict donnant des informations sur les résultats de la promo (et des groupes) dans cette évaluation:
|
Le champ `etat` d'une évaluation ets un dict donnant des informations sur les résultats de la promo (et des groupes) dans cette évaluation:
|
||||||
|
|
||||||
Type | Nom | Description | Exemple de valeur
|
Type | Nom | Description | Exemple de valeur
|
||||||
----| --- | ---- | ---
|
----| --- | ---- | ---
|
||||||
bool | evalattente | | False
|
bool | evalattente | | False
|
||||||
bool | evalcomplete | | True
|
bool | evalcomplete | | True
|
||||||
| evaluation_id | id interne | 15226
|
| evaluation_id | id interne | 'EVAL15226'
|
||||||
list | gr_incomplets | | []
|
list | gr_incomplets | | []
|
||||||
list | gr_moyennes | | []
|
list | gr_moyennes | | []
|
||||||
list | groups | liste des groupes | {}
|
list | groups | liste des groupes | {}
|
||||||
datetime | last_modif | | datetime
|
datetime | last_modif | | <mx.DateTime.DateTime object>
|
||||||
string | median | note médianne promo | '11.00'
|
string | median | note médianne promo | '11.00'
|
||||||
string | moy | note moyenne promo | '11.00'
|
string | moy | note moyenne promo | '11.00'
|
||||||
| nb_abs | nb étudiants absents | 0
|
| nb_abs | nb étudiants absents | 0
|
||||||
@ -418,13 +428,9 @@ Le champ `notes` dans une évaluation est un dictionnaire dont les clés sont le
|
|||||||
| filigranne | texte en surimpression | 'Provisoire'
|
| filigranne | texte en surimpression | 'Provisoire'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Note: la fonction log
|
## Note: la fonction log
|
||||||
|
Pour la mise au point, il peut être utile de recourir à la bonne vieille fonction log, qui envoie du texte dans le fichier de log courant, normalement `/opt/scodoc/instance/log/notes.log`. La date et le saut de ligne final sont automatiquement ajoutés.
|
||||||
Pour la mise au point, il peut être utile de recourir à la bonne vieille
|
|
||||||
fonction log, qui envoie du texte dans le fichier de log courant, normalement
|
|
||||||
`/opt/scodoc-data/log/scodoc.log`. La date et le saut de ligne final sont
|
|
||||||
automatiquement ajoutés.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
log("toto")
|
log("toto")
|
||||||
```
|
```
|
||||||
|
@ -1,261 +0,0 @@
|
|||||||
# Module "Assiduités"
|
|
||||||
|
|
||||||
Ce module de ScoDoc remplace l'ancien module de suivi des absences de Scodoc.
|
|
||||||
En plus de moderniser l'ancien module, le module assiduités met à disposition une API complète.
|
|
||||||
|
|
||||||
Ce projet a été développé en 2022-2023, par Matthias Hartmann, apprenti de l'IUT de
|
|
||||||
Lannion financé par l'Association ScoDoc.
|
|
||||||
|
|
||||||
**Ce module est disponible à partir de ScoDoc version 9.6**.
|
|
||||||
|
|
||||||
[Vidéo de présentation du module d'assiduités ](https://youtu.be/p7xips26W54)
|
|
||||||
|
|
||||||
## Fonctionnalités
|
|
||||||
|
|
||||||
Le module fournit:
|
|
||||||
|
|
||||||
- Gestion des absences/présences/retards
|
|
||||||
- Précision des saisies (périodes déterminées par une heure de début et une
|
|
||||||
heure de fin au lieu de demi-journées)
|
|
||||||
- Gestion et sauvegarde de justificatifs (documents)
|
|
||||||
- Une [API complète](ScoDoc9API.md#api-assiduites)
|
|
||||||
|
|
||||||
## Guide d'utilisation
|
|
||||||
|
|
||||||
- [Module "Assiduités"](#module-assiduités)
|
|
||||||
- [Fonctionnalités](#fonctionnalités)
|
|
||||||
- [Guide d'utilisation](#guide-dutilisation)
|
|
||||||
- [Migration de l'ancien module](#migration-de-lancien-module)
|
|
||||||
- [Personnalisation du module](#personnalisation-du-module)
|
|
||||||
- [Saisie des Assiduités](#saisie-des-assiduités)
|
|
||||||
- [Saisie d'un groupe](#saisie-dun-groupe)
|
|
||||||
- [Saisie Journalière](#saisie-journalière)
|
|
||||||
- [Saisie différée](#saisie-différée)
|
|
||||||
|
|
||||||
### Migration de l'ancien module
|
|
||||||
|
|
||||||
Afin de favoriser la transition de l'ancien module au nouveau, un script de
|
|
||||||
migration a été développé: à l'installation de ScoDoc 9.6, les anciennes
|
|
||||||
données d'absences et justificatifs sont traduites pour ce module.
|
|
||||||
|
|
||||||
Voir détails dans [la documentation d'installation](UpgradeToDeb12Sco96.md) et
|
|
||||||
sur la [documentation des commandes de migration des absences](AssiduitesMigration.md).
|
|
||||||
|
|
||||||
### Personnalisation du module
|
|
||||||
|
|
||||||
Le module possède deux types de configuration, une générale et une par département/semestre.
|
|
||||||
|
|
||||||
**La configuration générale permet de configurer la ligne temporelle visible sur certaines pages de saisie d'assiduités.**
|
|
||||||
|
|
||||||
![Configuration de l'assiduité : Général](screens/config_assiduites_gen.png)
|
|
||||||
|
|
||||||
Route : `/ScoDoc/config_assiduites`
|
|
||||||
|
|
||||||
- `Début de la journée` : l'heure de début de la ligne temporelle (par défaut :
|
|
||||||
8h00)
|
|
||||||
- `L'heure de midi` : l'heure pivot qui sépare la matinée de l'après-midi (par
|
|
||||||
défaut : 13h00)
|
|
||||||
- `Fin de la journée` : l'heure de fin de la ligne temporelle (par défaut :
|
|
||||||
18h00)
|
|
||||||
- `Granularité` : La granularité de la ligne temporelle. (par défaut : 15 min)
|
|
||||||
|
|
||||||
**La configuration par département/semestre permet de configurer certaines actions liés à l'assiduité**
|
|
||||||
|
|
||||||
![Configuration de l'assiduité : département](screens/config_assiduites_dept.png)
|
|
||||||
|
|
||||||
Route : `/ScoDoc/<Dept>/Scolarite/edit_preferences`
|
|
||||||
|
|
||||||
- `Forcer la déclaration du module` : Forcer les utilisateurs de ScoDoc à
|
|
||||||
renseigner le module à chaque saisie d'assiduités.
|
|
||||||
- `Forcer l'appel des présents` : Force les utilisateurs à noter les
|
|
||||||
présences/absences/retard lors d'une saisie.
|
|
||||||
- `Durée par défaut d'un créneau` : Détermine la durée classique d'un cours. (Ce
|
|
||||||
sera la période préenregistrée sur la ligne temporelle)
|
|
||||||
- `Définir l'état par défaut` : Défini l'état par défaut qui sera appliqué aux
|
|
||||||
étudiants avant validation d'une saisie d'assiduité.
|
|
||||||
- `Jours non travaillés` : Défini les jours sur lesquels la saisie d'assiduités
|
|
||||||
ne sera pas possible.
|
|
||||||
- `Métrique de l'assiduité` : Défini l'unité de l'assiduité qui sera utilisé par
|
|
||||||
les autres modules de ScoDoc.
|
|
||||||
- `1/2 J.` : Demi-Journée
|
|
||||||
- `J.` : Journées
|
|
||||||
- `H.` : Heures
|
|
||||||
|
|
||||||
### Saisie des Assiduités
|
|
||||||
|
|
||||||
La saisie se fait soit sur un groupe soit sur un étudiant. Dans tous les cas il
|
|
||||||
y a deux façons de saisir l'assiduité. Une saisie `Journalière` et une saisie
|
|
||||||
`Différée`.
|
|
||||||
|
|
||||||
#### Saisie d'un groupe
|
|
||||||
|
|
||||||
Comme dans l'ancien système, pour saisir l'assiduité d'un groupe il faut se
|
|
||||||
rendre sur la page un semestre du département concerné.
|
|
||||||
|
|
||||||
![Page du semestre concerné](#)
|
|
||||||
|
|
||||||
Au bas de cette page vous retrouverez la liste des groupes du semestre. Si vous
|
|
||||||
avez la permission de modifier l'assiduité, vous observerez 3 boutons
|
|
||||||
supplémentaires sur chaque groupe vous permettant de voir ou saisir l'assiduité
|
|
||||||
du groupe.
|
|
||||||
|
|
||||||
#### Saisie Journalière
|
|
||||||
|
|
||||||
La première chose à faire lorsque vous êtes arrivés sur la page "Saisie
|
|
||||||
Journalière" c'est de compléter les informations de la séance :
|
|
||||||
|
|
||||||
![Capture des sélecteurs](#)
|
|
||||||
|
|
||||||
- Le ou les groupes sélectionnés (dans la plupart des cas, le groupe est déjà
|
|
||||||
présélectionné)
|
|
||||||
- Le module concerné (par défaut il n'est pas obligatoire de sélectionner un
|
|
||||||
module, cependant une configuration permet de forcer la sélection)
|
|
||||||
- La date de la saisie. Attention, seule les dates comprises dans le semestre
|
|
||||||
sont valides. (Un message d'erreur vous le signalera si la date n'est pas
|
|
||||||
valide)
|
|
||||||
|
|
||||||
Lorsque vous êtes sûr de vous, appuyer sur le bouton `Valider`.
|
|
||||||
|
|
||||||
**Attention : La validation est définitive, si vous avez fait une erreur il faudra recharger la page**
|
|
||||||
|
|
||||||
Après la validation, les champs précédents seront grisés.
|
|
||||||
|
|
||||||
Explication de l'interface
|
|
||||||
|
|
||||||
![Capture de l'interface](#)
|
|
||||||
|
|
||||||
1. La ligne temporelle (Timeline) sert à désigner la période de l'assiduité qui sera saisie.
|
|
||||||
|
|
||||||
Il est possible de la déplacer en maintenant le clic gauche dessus puis en
|
|
||||||
bougeant la souris.
|
|
||||||
|
|
||||||
Si la période n'est pas de la bonne taille, il est possible de l'agrandir ou
|
|
||||||
de la réduire en plaçant sa souris à l'extrémité droite.
|
|
||||||
|
|
||||||
Votre curseur devrait changer, à partir de ce moment là vous pouvez cliquer
|
|
||||||
puis bouger l'extrémité pour modifier la taille de la période.
|
|
||||||
|
|
||||||
Si la période bouge toujours alors que vous avez lâché le clic gauche,
|
|
||||||
cliquer à nouveau.
|
|
||||||
|
|
||||||
2. Les boutons d'actions de masse `Mettre tout le monde : `. Ces boutons
|
|
||||||
définirons le même état pour chaque étudiant sur la période sélectionnée.
|
|
||||||
|
|
||||||
En cliquant sur un bouton d'état, l'état sera mis pour chaque étudiant, pour
|
|
||||||
modifier cet état il faut appuyer sur un autre bouton d'état.
|
|
||||||
|
|
||||||
Si vous souhaitez retirer les assiduités, il faut cliquer sur le bouton
|
|
||||||
d'état ayant le même état que les étudiants.
|
|
||||||
|
|
||||||
3. Les lignes étudiants sont des lignes montrant les informations d'assiduité de
|
|
||||||
chaque étudiant. Chaque ligne est composée de 3 parties :
|
|
||||||
|
|
||||||
1. Le nom, le prénom et une photo de l'étudiant afin de le reconnaître
|
|
||||||
facilement
|
|
||||||
|
|
||||||
2. Une petite ligne temporelle montrant l'assiduité de l'étudiant sur la
|
|
||||||
journée.
|
|
||||||
|
|
||||||
Le carré au début de la ligne montre la dernière assiduité du jour
|
|
||||||
précédent.
|
|
||||||
|
|
||||||
En passant votre souris au dessus des couleurs, vous aurez accès à plus
|
|
||||||
d'informations sur l'assiduité de l'étudiant.
|
|
||||||
|
|
||||||
Cliquer sur une assiduité positionnera la ligne temporelle globale sur
|
|
||||||
la période de l'assiduité.
|
|
||||||
|
|
||||||
La période globale est représentée par un encadré bleu sur la ligne
|
|
||||||
temporelle.
|
|
||||||
|
|
||||||
Les assiduités justifiées et validés sont représentés par leur couleur
|
|
||||||
respective + un hachage bleu
|
|
||||||
|
|
||||||
Les assiduités justifiées mais non validées sont représentés par leur
|
|
||||||
couleur respective + un hachage rouge.
|
|
||||||
|
|
||||||
3. Les boutons d'assiduités individuels. Ces boutons permettent de déterminer l'état de l'étudiant.
|
|
||||||
|
|
||||||
Ils fonctionnent de la même façon que les boutons `mettre tout le monde :`.
|
|
||||||
|
|
||||||
Si la ligne de l'étudiant est rouge, cela signifie que la période
|
|
||||||
sélectionnée rentre en conflit avec les assiduités de l'étudiant.
|
|
||||||
Cliquer sur un bouton d'assiduité ne modifiera pas l'état de l'étudiant
|
|
||||||
mais ouvrira un menu de résolution de conflit.
|
|
||||||
|
|
||||||
![Résolution de conflit](#)
|
|
||||||
|
|
||||||
Les assiduités de la page sont enregistrées en temps réel. Lorsque la saisie est
|
|
||||||
terminée vous pouvez fermer la page.
|
|
||||||
|
|
||||||
#### Saisie différée
|
|
||||||
|
|
||||||
La page saisie différée a pour but de faciliter la saisie d'assiduités avec
|
|
||||||
plusieurs périodes.
|
|
||||||
|
|
||||||
![Page différée](#)
|
|
||||||
|
|
||||||
La page est composée d'un tableau et d'un bouton valider.
|
|
||||||
**Cette page ne sauvegarde pas automatiquement les modifications**
|
|
||||||
|
|
||||||
Explication du tableau :
|
|
||||||
|
|
||||||
- La colonne `Noms` : Vous y retrouverez tous les étudiants du groupe
|
|
||||||
sélectionné. En cliquant sur le titre de la colonne vous pourrez changer
|
|
||||||
l'ordre des étudiants (croissant ou décroissant)
|
|
||||||
- Les colonnes `Assiduités` : Lorsque vous arrivez sur la page, une seule
|
|
||||||
colonne d'assiduité est présente.
|
|
||||||
|
|
||||||
Si vous avez besoins d'autres colonnes, appuyer sur le bouton `+`.
|
|
||||||
|
|
||||||
Si vous souhaitez supprimer une colonne appuyer sur la `croix X` de la
|
|
||||||
colonne.
|
|
||||||
|
|
||||||
Il vous faudra remplir la colonne afin de pouvoir saisir l'assiduité des
|
|
||||||
étudiants :
|
|
||||||
|
|
||||||
1. La date de début : Sur la première colonne, la date par défaut sera la
|
|
||||||
date du jour, sur les nouvelles colonnes, la date par défaut sera la date
|
|
||||||
de fin de la colonne précédente.
|
|
||||||
2. La date de fin : La date de fin n'est pas renseignée par défaut,
|
|
||||||
cependant la première fois que vous changer la date de début de la
|
|
||||||
colonne, la date de fin sera automatiquement mise à jour de façon à
|
|
||||||
prendre la taille d'un créneau classique (configuration du
|
|
||||||
semestre/département).
|
|
||||||
3. Le module concerné par l'assiduité. Ce sélecteur n'est pas obligatoire
|
|
||||||
par défaut (configuration du semestre/département).
|
|
||||||
4. `Sélectionner une assiduité` permet de mettre tous les étudiants à un
|
|
||||||
certain état. Ce sélecteur n'est pas obligatoire.
|
|
||||||
|
|
||||||
- Chaque ligne du tableau correspond à un étudiant. Vous pouvez alors
|
|
||||||
sélectionner l'état de l'assiduité de chaque étudiant pour chaque colonne.
|
|
||||||
|
|
||||||
Après avoir rempli le tableau il faudra valider en cliquant sur `valider les assiduités`.
|
|
||||||
|
|
||||||
Après validation, toutes les colonnes seront désactivées, si besoins vous pouvez
|
|
||||||
les réactiver en cliquant sur `Activer` pour chaque colonne.
|
|
||||||
|
|
||||||
Il est possible que des erreurs apparaissent. Les erreurs sont gérées par
|
|
||||||
colonnes puis par étudiant. Cela signifie qu'une erreur de colonne (ex: une
|
|
||||||
mauvaise date) désactivera complètement la colonne alors qu'une erreur
|
|
||||||
d'étudiant (ex: l'étudiant possède déjà une assiduité sur cette période)
|
|
||||||
désactivera uniquement l'envoie de l'assiduité le concernant.
|
|
||||||
|
|
||||||
Vous pouvez obtenir plus d'informations sur l'erreur en plaçant votre souris au dessus du `ℹ️`.
|
|
||||||
|
|
||||||
Il est possible de forcer la mise à jour des assiduités : **Attention, cela ne
|
|
||||||
fonctionnera que pour les assiduités ayant exactement la même période** (ceci
|
|
||||||
permet de corriger facilement les saisies où l'on aurait oublié d'indiquer le
|
|
||||||
module).
|
|
||||||
|
|
||||||
Chaque colonne possède un numéro distinctif qui est visible en laissant la
|
|
||||||
souris au dessus de l'entête de la colonne. Ce numéro est utilisé dans les
|
|
||||||
messages d'erreurs.
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Migration des absences vers les assiduités](AssiduitesMigration.md)
|
|
||||||
- [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
|
|
||||||
- [API et fichiers justificatifs](FichiersJustificatifs)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,86 +0,0 @@
|
|||||||
# Migration des absences de ScoDoc 9.5 vers les assiduités 9.6
|
|
||||||
|
|
||||||
Lors du passage de ScoDoc 9.5 à 9.6, les anciennes données d'absences et
|
|
||||||
justificatifs sont traduites pour [le module assiduités](Assiduites.md).
|
|
||||||
|
|
||||||
## Script de Migration
|
|
||||||
|
|
||||||
Le script se nomme `migrate-abs-to-assiduites` et ne peut se lancer qu'en ligne
|
|
||||||
de commande:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
su scodoc # au besoin
|
|
||||||
cd /opt/scodoc
|
|
||||||
source venv/bin/activate
|
|
||||||
|
|
||||||
flask migrate-abs-to-assiduites --help
|
|
||||||
```
|
|
||||||
|
|
||||||
Par défaut, la migration s'opérera sur l'ensemble des départements en utilisant
|
|
||||||
les préférences de ScoDoc.
|
|
||||||
|
|
||||||
Néanmoins le script possède 4 options pour modifier son comportement :
|
|
||||||
|
|
||||||
- `-d, --dept`
|
|
||||||
Permet de restreindre la migration à un département à l'aide de son acronyme.
|
|
||||||
Utilisation : `flask migrate-abs-to-assiduites -d <ACRONYME>`
|
|
||||||
- `-m, --morning`
|
|
||||||
Permet de définir l'heure de début des cours.
|
|
||||||
Utilisation : `flask migrate-abs-to-assiduites -m <hh:mm>`
|
|
||||||
exemple : `hh:mm` -> `08:30`
|
|
||||||
- `-n, --noon`
|
|
||||||
Permet de définir l'heure de fin du matin (= l'heure de début de l'après-midi).
|
|
||||||
Utilisation : `flask migrate-abs-to-assiduites -n <hh:mm>`
|
|
||||||
exemple : `hh:mm` -> `13:30`
|
|
||||||
- `-e, --evening`
|
|
||||||
Permet de définir l'heure de fin des cours.
|
|
||||||
Utilisation : `flask migrate-abs-to-assiduites -e <hh:mm>`
|
|
||||||
exemple : `hh:mm` -> `18:30`
|
|
||||||
|
|
||||||
Les options peuvent s’enchaîner : `flask migrate-abs-to-assiduites -d TEST -m 10:30 -n 14:50 -e 19:45`
|
|
||||||
|
|
||||||
Lors du lancement du script, une barre de progression apparaîtra. Celle si vous
|
|
||||||
indique l'avancée de la transformation des absences en assiduités.
|
|
||||||
|
|
||||||
Une fois arrivée à 100%, Un processus de validation et de justification des
|
|
||||||
assiduités se lancera. Celui-ci peut (suivant les configurations) prendre un
|
|
||||||
certain temps. Veuillez ne pas le stopper en cours de route.
|
|
||||||
|
|
||||||
Lorsque la migration sera finie, un fichier log de la migration sera généré pour
|
|
||||||
chaque département. Vous recevrez aussi des statistiques sur le nombre de
|
|
||||||
justificatif et d'assiduités générés.
|
|
||||||
|
|
||||||
## Script de Suppression
|
|
||||||
|
|
||||||
En cas de problème, ou si vous souhaitez purger la base de donnée, un script de
|
|
||||||
suppression des assiduités et des justificatifs est disponible.
|
|
||||||
|
|
||||||
Le script se nomme `downgrade-assiduites-module`.
|
|
||||||
|
|
||||||
Si vous lancer le script sans aucune option, il ne se passera rien.
|
|
||||||
|
|
||||||
Voici les options :
|
|
||||||
|
|
||||||
- `-d, --dept`
|
|
||||||
Permet de restreindre la suppression à un département à l'aide de son acronyme.
|
|
||||||
Utilisation : `flask downgrade-assiduites-module -d <ACRONYME>`
|
|
||||||
- `-a, --assiduites`
|
|
||||||
Provoque la suppression de toutes les assiduités
|
|
||||||
Utilisation : `flask downgrade-assiduites-module -a`
|
|
||||||
- `-j, --justificatifs`
|
|
||||||
Provoque la suppression de tous les justificatifs
|
|
||||||
Utilisation : `flask downgrade-assiduites-module -j`
|
|
||||||
|
|
||||||
Quelques exemples :
|
|
||||||
|
|
||||||
- Pour tout supprimer : `flask downgrade-assiduites-module -a -j`
|
|
||||||
- Pour supprimer un département : `flask downgrade-assiduites-module -d DEPT -a -j`
|
|
||||||
- Pour supprimer l'assiduité d'un département : `flask downgrade-assiduites-module -d DEPT -a`
|
|
||||||
- Pour supprimer les justificatifs d'un département : `flask downgrade-assiduites-module -d DEPT -j`
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Le module assiduités](Assiduites.md)
|
|
||||||
- [Mise à jour vers ScoDoc 9.6 / Debian 12](UpgradeToDeb12Sco96.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,5 +1,6 @@
|
|||||||
# Association 1901 ScoDoc
|
# Association 1901 ScoDoc
|
||||||
|
|
||||||
|
|
||||||
ScoDoc est un logiciel libre et gratuit, Open Source.
|
ScoDoc est un logiciel libre et gratuit, Open Source.
|
||||||
|
|
||||||
Le développement du projet a été porté par son créateur, Emmanuel Viennet,
|
Le développement du projet a été porté par son créateur, Emmanuel Viennet,
|
||||||
@ -7,8 +8,8 @@ professeur à l'université Sorbonne Paris Nord (ex Paris 13), plusieurs fois ch
|
|||||||
du département Réseaux et Télécommunications de l'IUT de Villetaneuse et
|
du département Réseaux et Télécommunications de l'IUT de Villetaneuse et
|
||||||
Président de l'ACD R&T. Plusieurs collègues bénévoles ont contribué, corrigeant
|
Président de l'ACD R&T. Plusieurs collègues bénévoles ont contribué, corrigeant
|
||||||
ou ajoutant des fonctions. Ils sont enseignants ou BIATSS dans les IUT de
|
ou ajoutant des fonctions. Ils sont enseignants ou BIATSS dans les IUT de
|
||||||
Colmar, Ville d'Avray, Grenoble, Le Havre, Lille, Lyon, Mulhouse, Nantes, pour
|
Colmar, Ville d'Avray, Grenoble, Le Havre, Lille, Nantes, pour ne citer que
|
||||||
ne citer que ceux-là.
|
ceux-là.
|
||||||
|
|
||||||
Le développement d'un logiciel de cette ampleur prend du temps et demande des
|
Le développement d'un logiciel de cette ampleur prend du temps et demande des
|
||||||
moyens matériels : serveurs, machines de développement et de test. La
|
moyens matériels : serveurs, machines de développement et de test. La
|
||||||
@ -23,8 +24,8 @@ l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise
|
|||||||
jour et support technique.
|
jour et support technique.
|
||||||
|
|
||||||
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion
|
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion
|
||||||
PDF](papers/Adhesion-2023-2024-Association-ScoDoc.pdf) ([version
|
PDF](papers/Adhesion-2022-2023-Association-ScoDoc.pdf) ([version
|
||||||
Word](papers/Adhesion-2023-2024-Association-ScoDoc.docx)), à renvoyer à
|
Word](papers/Adhesion-2022-2023-Association-ScoDoc.docx)), à renvoyer à
|
||||||
<emmanuel.viennet@gmail.com>. (note: toutes les informations nécessaires à la
|
<emmanuel.viennet@gmail.com>. (note: toutes les informations nécessaires à la
|
||||||
"création fournisseur" sont sur le bulletin d'adhésion).
|
"création fournisseur" sont sur le bulletin d'adhésion).
|
||||||
|
|
||||||
|
@ -1,217 +1,248 @@
|
|||||||
# Jury de Poursuites d'Etudes
|
## Jury et avis de Poursuites d'Etudes
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
Partant d'un semestre sélectionné, l'onglet **Statistiques > Documents Avis de Poursuite d'Etudes** (ci-dessous appelé **outil PE**) propose une aide à la tenue du jury et à l'édition des avis de poursuites d'études pour les étudiants de DUT.
|
||||||
|
|
||||||
|
### Les tags
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred"></i> **Attention** : cette **fonctionnalité** est en cours de révision pour le BUT depuis janvier 2024 ; les documents (avis) en LaTeX ne sont plus générés dans cette nouvelle version : seul des classeurs excel sont générés. Merci de vos retours.
|
Les avis (demandés par les différents établissements post-DUT) attendent fréquemment des moyennes transverses aux modules voire aux
|
||||||
|
semestres du PPN : par exemple, moyenne sur les matières théoriques, les matières techniques,
|
||||||
|
moyenne en français, etc...
|
||||||
|
|
||||||
## Cadre d'usage et nomenclature
|
L'outil PE permet le calcul de ces moyennes en utilisant des **tags** affectés aux modules dans le **Programme** de formation.
|
||||||
|
Tous les modules portant le même tag (attention à la casse et à l'accentuation) seront intégrés ensemble dans le calcul de la moyenne.
|
||||||
|
|
||||||
Un jury de Poursuites d'Etudes émet des avis sur la capacité des étudiants à intégrer une formation post-BUT (master, écoles d'ingénieur, écoles de commerce, ...) en s'appuyant sur l'ensemble des résultats qu'ont obtenus les étudiants au cours de leur scolarité de BUT.
|
Voici l'exemple du programme du DUT RT taggué (figure ci-dessous), où par exemple, le tag *mathématiques* est affecté à tous les
|
||||||
|
modules du programme en lien avec des maths.
|
||||||
|
|
||||||
Les étudiants considérés sont ceux d'une **promotion** :
|
Les tags peuvent également faire mention d'un coefficient servant à la pondération des modules dans le calcul de la moyenne (cf. section coefficient).
|
||||||
|
Le tag sera alors de la forme : `nom_du_tag:coeff_entier`.
|
||||||
|
|
||||||
> Une **promotion** est l'ensemble des étudiants qui recevront leur **diplôme** la même année, quelque soit leurs _semestres_, leurs _parcours_, leurs _modalités_ d'apprentissage (formation initiale ou apprentissage) ou leurs redoublements éventuels.
|
Un tag *dut* reprenant la moyenne de l'étudiant à chaque semestre est automatiquement ajouté.
|
||||||
|
|
||||||
|
![programmeRTtaggue.png](screens/programmeRTtaggue.png)
|
||||||
|
|
||||||
Les avis émis s'appuient sur différents critères (**notes moyennes/classements**) obtenus :
|
|
||||||
|
|
||||||
* sur des **moyennes prévues dans le règlement des études** : moyenne par **UE**, par **niveau de compétence** (regroupement cohérent d'UE)
|
### Les moyennes
|
||||||
* sur des **moyennes _personnalisées_** (cf. tag), souvent demandées par les formations post-BUT dans les dossiers de candidature des étudiants : moyenne en anglais, en mathématiques, en français, ...
|
|
||||||
* à **différents instants de la scolarité** (cf. regroupement cohérent de semestres) des étudiants : moyenne en 1ère année, en 2ème année, sur 3 ans, ...
|
|
||||||
* sur des **interclassements**, classant les étudiants indépendamment du _chemin_ (parcours, modalité, redoublement, ...) qu'ils ont parcouru au cours de leur scolarité de BUT.
|
|
||||||
|
|
||||||
Ces critères variant d'un établissement à un autre et d'un dossier de candidature à un autre, la fonctionnalité **Jury de Poursuites d'Etudes** de Scodoc (appelée ci-dessous **outil PE**) fournit un **ensemble de notes moyennes/classements le plus large possible** centralisé dans des tableurs xlsx, pour en avoir différentes vues.
|
#### Les moyennes intra et inter semestres
|
||||||
|
|
||||||
> A vous de _piocher_ dans les données fournies en fonction de vos besoins pour construire votre tableur émettre vos avis et renseigner les dossiers de candidature de vos étudiants.
|
Au delà du "thème" des moyennes, les avis attendent parfois que ces moyennes soient calculées sur plusieurs semestres : moyenne en 1ère année, en 2ème année
|
||||||
|
voire (pour le jury) sur l'ensemble du parcours de l'étudiant. 8 plages de calculs temporelles sont donc prévus pour ces moyennes : pour chaque tag,
|
||||||
|
|
||||||
***
|
* le label **S1** (respectivement S2, S3, S4) désigne une moyenne sur ce tag calculée sur le **S1** (respectivement S2, S3, S4) - ou plus précisement sur les modules du **S1** (respectivement S2, S3, S4) ayant été associé au tag considéré
|
||||||
|
* le label **1A** (respectivement 2A) désigne une moyenne sur ce tag calculée sur la **première année** (respectivement la deuxième année) - ou plus précisement sur tous les modules **du S1 et du S2** (respectivement du S3 et du S4) ayant été associé au tag considéré
|
||||||
|
* le label **3S** (souvent utilisé dans un jury de poursuites d'études se tenant juste après le S3) désigne une moyenne sur ce tag calculée sur l'**ensemble du parcours allant du S1 au S3** (inclus) - ou plus précisement sur tous les modules **du S1, S2, S3** ayant été associé à ce tag.
|
||||||
|
* le label **4S** désigne une moyenne sur ce tag calculée sur l'**ensemble du parcours allant du S1 au S4** (inclus) - donc plus précisement sur tous les modules du programme ayant été associé à ce tag.
|
||||||
|
|
||||||
## Premiers pas
|
#### Les coefficients de pondération
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Dans la suite, sera pris l'exemple du jury des poursuites d'études **2024**, qui traitera TOUS les étudiants qui termineront leur scolarité (généralement en juin) 2024 : vos diplômés de la **promotion 2024**.
|
Par défaut, les moyennes calculées sur les modules associés à un tag donné utilisent
|
||||||
|
les coefficients de pondération des modules dans le programme DUT, ramenés au total des
|
||||||
|
coefficients dans les semestres qui les concernent : partant d'un semestre \(i\), en notant :
|
||||||
|
|
||||||
### Générer l'archive zip des documents standards
|
* \(m_{i,j}\) la note d'un étudiant à un module associé au tag dans le semestre \(i\) (\(j\) donnant donc le numéro du module au sein du semestre parmi les modules associés au tag),
|
||||||
|
* \(c_{i,j}\) le coefficient du module \(m_{i,j}\) dans le programme de formation
|
||||||
|
|
||||||
1. Editer n'importe lequel des semestres Scodoc dans lequel à étudier un étudiant de la promotion (quelque soit sa _modalité d'apprentissage_ ou son _parcours_). <i class="fas fa-eye" style="color: teal"></i> Par exemple, un semestre 5 2023-2024.
|
alors la moyenne \(M_i\) associée au tag pour le semestre \(i\) est calculée avec :
|
||||||
2. Partant du semestre sélectionné, l'onglet `Statistiques` > `Documents Avis de Poursuite d'Etudes`.
|
$$
|
||||||
3. `Générer les documents` pour télécharger l'archive zip du jury. <i class="fas fa-eye" style="color: teal"></i> Dans notre exemple, <i class="fa-solid fa-file" style="color: orange"></i> `Jury_PE_2024.zip`
|
M_i = \frac{ \sum_{j} c_{i,j} m_{i,j} }{ \sum_{j} c_{i,j} }
|
||||||
|
$$
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred; font-size: 200%"></i> L'outil PE n'analyse pas seulement les futurs diplômés ; il analyse également TOUS les étudiants que vos diplômés ont cotoyés dans leur scolarité, mais qui ont démissionné, abandonné, redoublé (cf. <i class="fa-solid fa-file" style="color: orange"></i>`Jury_PE_2024.zip` > `details/etudiants.xlsx`) car ils impactent les classements. De fait, <i class="fas fa-eye" style="color: teal"></i> pour un jury de semestre 5 :
|
En notant ensuite \(c_i\) la somme des coefficients des modules du semestre \(i\) associé au tag considéré (ici \(c_i = \sum_{j} c_{i,j}\))
|
||||||
* si vous avez commencé à peupler des semestres 6, assurez-vous que tous vos diplômés y soient inscrits, au risque que l'outil les croit démissionnaires.
|
et \(C_i\) la somme des coefficients de tous les modules (y compris ceux n'étant pas associés au tag considéré) du semestre \(i\) (donc \(C_i \geq c_i\)), la
|
||||||
* si vous avez créé les semestres 6 mais sans étudiant inscrits, pas de souci !
|
moyenne \(M\) associée au tag sur les 4 semestres de formation (donc de label **4S**) est calculée avec :
|
||||||
|
$$
|
||||||
|
M = \frac{ \sum_{i} \frac{c_i}{C_i} M_i }{ \sum_{i} \frac{c_i}{C_i} }
|
||||||
|
$$
|
||||||
|
Plus simplement, le poids des modules associés au tag au sein d'un semestre est conservé dans le calcul de la moyenne.
|
||||||
|
|
||||||
### Contenu de l'archive zip
|
L'outil PE offre la possibilité de recoefficienter les modules associés au tag dans le calcul de la moyenne en
|
||||||
|
leur joignant un (éventuel) coefficient de pondération supplémentaire entier \(p_{i,j}\) (voir section Les tags).
|
||||||
|
|
||||||
L'archive obtenue contient plusieurs tableurs :
|
Dans ce cas, la moyenne \(M_i\) associée au tag sur le semestre \(i\) est impactée avec :
|
||||||
|
$$
|
||||||
|
M_i = \frac{ \sum_{j} p_{i,j} c_{i,j} m_{i,j} }{ \sum_{j} p_{i, j} c_{i,j} }
|
||||||
|
$$
|
||||||
|
La somme des coefficients des modules dans le semestre \(c_i\) devient \(c_i = \sum_{j} p_{i,j} c_{i,j}\) mais la somme
|
||||||
|
des coefficients de tous les modules \(C_i\) reste inchangée.
|
||||||
|
|
||||||
1. <i class="fa-solid fa-file" style="color: orange"></i> `synthese_jury_par_tag.xlsx` : résume les données du jury de votre promotion dans différents onglets :
|
Plus simplement, l'idée de cette pondération est de conserver le poids des modules au sein du semestre
|
||||||
|
tout en accord plus d'importance (lorsque \(p_{i,j} > 1\)) à la note obtenue par l'étudiant.
|
||||||
|
|
||||||
* l'onglet `but` s'appuie sur des moyennes de semestre (cf. plus bas)
|
Le calcul des moyennes intra-semestres (1A, 2A ou 3S) est basée sur le même principe en n'utilisant que les semestres concernés.
|
||||||
* plusieurs onglets nommés `comp. <titre_competence>` (dépendant des _parcours_ de votre formation) retraçent les moyennes/classements obtenues dans les différentes UE rattachées à la `competence`
|
|
||||||
|
|
||||||
Il peut être utilisé pour :
|
#### Cas des étudiants redoublants
|
||||||
|
|
||||||
* préparer (en piochant) les moyennes/classements qui vous intéressent
|
Dans le cas des étudiants redoublants (par exemple ayant fait 2 semestres S1), ne sont conservés que les notes obtenues dans les UE validées
|
||||||
* intégrer une solution de publipostage (non proposée par l'outil PE) pour générer les **fiches d'avis PE** à transmettre aux étudiants pour leur dossier de candidature
|
par les décisions de jury : dans l'exemple, il s'agira (le plus souvent) des notes du S1 le plus récent, sauf pour un étudiant qui aurait capitalisé
|
||||||
|
une UE et dont une partie des notes proviendrait de son UE capitalisée.
|
||||||
|
|
||||||
2. <i class="fa-solid fa-file" style="color: orange"></i> `synthese_jury_par_etudiants.xslx` : résume les données de chaque étudiant dans un onglet qui lui est propre. Il peut être utilisé pour communiquer/transmettre à l'étudiant ses moyennes/classements pour préparer ses dossiers
|
### Les classements et les statistiques
|
||||||
|
|
||||||
3. des tableurs dans `details` qui traduisent les différentes étapes de calcul faites par l'outil et sont plutôt destinés aux <i class="fa-solid fa-bullseye" style="color: violet"></i> développeurs
|
Les avis demandent souvent le classement associé à la moyenne obtenue sur un tag et pour un temps donné (label 1A, 2A, ...) avec l'ambiguité
|
||||||
|
de la cohorte considérée. Ce classement peut aller de pair avec des données statistiques (nombre d'étudiants, note minimum, maximum, moyenne sur la cohorte).
|
||||||
|
L'outil PE propose deux cohortes et donc deux séries de classement/statistique par tag et label temporel.
|
||||||
|
|
||||||
## Moyennes personnalisées : les tags¶
|
#### La "cohorte" filière
|
||||||
|
|
||||||
Pour obtenir des **moyennes personnalisées** (par exemple moyenne en mathématiques, en anglais, en expression-communication, ...), l'outil s'appuie sur un système de **tags**.
|
Est appelé filière l'ensemble des étudiants inscrits dans le même semestre temporel que le dernier impliqué dans la moyenne calculée. Prenons l'exemple
|
||||||
|
d'une moyenne sur le tag mathématiques portant sur le label 3S (c'est à dire sur les semestres S1, S2, et S3). La filière sera l'ensemble des étudiants inscrits
|
||||||
|
dans le S3. Dans ce S3, pourront se trouver des étudiants de différents parcours comme :
|
||||||
|
|
||||||
> Les tags sont des _mots-clés_ (courts et sans caractères spéciaux) affectés à des modules (ressources ou SAEs) dans le `Programme de formation`. <i class="fa-solid fa-triangle-exclamation" style="color: darkred"></i> Ils ne peuvent pas être `but` ni `comp. <titre_competence>` (réservés par l'outil).
|
* des étudiants "standards" avec S1 validé, S2 validé, S3 validé (du premier coup)
|
||||||
|
* des étudiants redoublants avec (par exemple) un parcours de la forme S1 validé, S2 non validé, S3 non validé, S2 validé, S3 validé (dont étant entrés à l'IUT un an avant les étudiants "standards").
|
||||||
|
|
||||||
Tous les modules portant le même tag (<i class="fa-solid fa-triangle-exclamation" style="color: darkred"></i> à la casse et à l'accentuation) seront _intégrés_ ensemble dans le calcul de moyennes/classements pour ce tag. Elles apparaitront sous la forme d'un nouvel onglet dans <i class="fa-solid fa-file" style="color: orange"></i> `synthese_jury_par_etudiants.xslx`.
|
De fait, les notes prises en compte pour les étudiants standards et les étudiants redoublant pourront provenir de modules ne s'étant pas tenus
|
||||||
|
aux même universitaires. Les seuls modules communs garantis seront ceux du S3 (aka le dernier semestre de l'ensemble S1+S2+S3).
|
||||||
|
|
||||||
### Renseigner les tags
|
#### La "cohorte" promo
|
||||||
|
|
||||||
Après avoir sélectionné un _programme de formation_ depuis le menu `Programmes` :
|
Est appelé promo 20XX l'ensemble des étudiants susceptibles de valider leur diplôme DUT en date de juillet 20XX quelque soit le programme de formation DUT
|
||||||
|
suivi.
|
||||||
|
|
||||||
![Ajouter des tags](img/ajouter_tags.png)
|
Par exemple, la promo 2017 inclut les étudiants qui valideront leur S4 en juillet 2017 ; ceux ayant validé leur S4 en juillet 2016 appartiennent à la promo 2016.
|
||||||
|
Parmi les étudiants de la promo 2017, on retrouve les étudiants "standards" étant entrés à l'IUT en septembre 2015 avec un parcours S1 validé, S2 validé, S3 validé et S4 validé.
|
||||||
|
On retrouve également les étudiants entrés à l'IUT en septembre 2014 et ayant redoublé 1 à 2 semestres donc validant leur S4 entre janvier et juillet 2017. Les étudiants
|
||||||
|
ayant démissionnés ou s'étant réorientés (aka. ne s'étant pas réinscrit dans un semestre DUT là où il aurait "du" le faire) sont exclus de la promo.
|
||||||
|
|
||||||
1. Cochez `Montrer les tags...`
|
Remarque: les calculs des étudiants de la promo fonctionnent à condition que les dates des semestres de début d'année universitaire s'étalent sur 2 années civiles (par exemple
|
||||||
2. Renseigner pour chaque module le ou les tags souhaités (<i class="fa-solid fa-bullseye" style="color: violet"></i> ici 3 tags : réseaux, ressources, techniques )
|
S1 de septembre 2016 à janvier 2017) et que les dates des semestres de fin d'année universitaire sont limitées à une année civile (par exemple S2 de janvier à juillet 2017).
|
||||||
|
|
||||||
<i class="fa-solid fa-lightbulb" style="color: gold"></i> Le menu `Tagguer tous les modules par leur type (tag res, sae)` (après la description des ressources et des SAEs) permettant de tagguer automatiquement les ressources avec le tag `res` et les SAEs avec le tag `sae`.
|
#### Les classements
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred; font-size: 200%"></i> Si vos étudiants ont suivi plusieurs programmes de formation différents, tous leurs programmes doivent être taggués.
|
Un élève au regard de sa moyenne à un tag, sur un laps de temps donné (label S1, 1A, 3S, ...) est donc classé soit sur sa filière soit sur la promo. Les statistiques
|
||||||
|
du groupe (que ce soit la filière ou la promo), plus précisément la note minimum, maximum et la moyenne du groupe sont également fournies.
|
||||||
|
|
||||||
### Paramètrer les coefficients des tags
|
## L'export du tableur récapitulatif
|
||||||
|
|
||||||
Les tags peuvent faire mention d'un **coefficient** servant à la pondération des modules dans le calcul de la moyenne (cf. section coefficient). Le tag sera alors de la forme : `nom_du_tag:coeff_entier`.
|
L'onglet PE renvoie une archive zip pour une promotion d'élèves diplômés en 20XX,
|
||||||
|
contenant notamment un fichier Jury_PE_20XXjurySyntheseDict_20XX_v2.xls. Ce fichier récapitule l'ensemble des moyennes, des classements et des statistiques
|
||||||
|
des élèves dont le S4 sera (prévisiblement) validé en 20XX. Le fichier contient un tab par tag saisi dans le programme. Par défaut, un tag est présent :
|
||||||
|
le tag dut. En plus des données numériques, on retrouve pour chaque élève la liste des semestres parcourues (colonne P1 à P6).
|
||||||
|
|
||||||
## Regroupements cohérents de semestre
|
|
||||||
|
|
||||||
|
|
||||||
Les moyennes (quelque soit le tag) peuvent être calculées sur plusieurs semestres appelés **regroupements cohérents de semestres** : moyenne en 1ère année, en 2ème année voire (pour le jury) sur l'ensemble des semestres (même redoublés) qu'a suivi un étudiant.
|
## Les avis PE au format LaTeX
|
||||||
|
|
||||||
> Un **regroupement cohérent de semestres** (RCS) est un ensemble de semestres suivis par les étudiants formant un tout cohérent pour calculer une moyenne sur plusieurs semestres.
|
L'archive zip contient également un export des données de poursuites d'études de la promotion d'élèves au format LaTeX (fichier .tex) pour permettre (après compilation latex à faire sur votre machine) de génerer des avis de poursuites d'études des étudiants "quasi prêts à l'emploi" (pour impression ou envoi par mail).
|
||||||
|
|
||||||
Globalement, 3 types de regroupements cohérents de semestres sont fournis :
|
### Arborescence LaTeX
|
||||||
|
|
||||||
* Les RCS `Semestre <n>` (avec `<n>` le numéro du semestre parmi 1, 2, 3, 4, 5, 6) désignent la moyenne (pour chaque tag) calculée en utilisant les notes du (ou des) semestre `<n>`.
|
Les sources latex (fournies ici dans le fichier zip exporté par ScoDoc) s'articulent autour de l'arborescence suivante :
|
||||||
|
```
|
||||||
|
avis.tex # Fichier principal point d'entrée du compilateur latex
|
||||||
|
avis_poursuite.tex # Fichier permettant d'inclure les avis des étudiants et fourni par ScoDoc
|
||||||
|
avis_poursuite_nom_prenom_identifiant.tex # Avis de poursuite d'études d'un étudiant généré suivant le template
|
||||||
|
avisPE.cls # Classe LaTex pour paramètrant la mise en page du document
|
||||||
|
README.txt # Informations de configuration pour les administrateurs de ScoDoc
|
||||||
|
logos # Répertoire contenant les figures (375 x 256 où toutes autres proportions équivalentes)
|
||||||
|
+ logo_header.png # Le logo de l'établissement à adapter à vos besoins
|
||||||
|
+ logo_footer.png # Un second logo pour le pied de page
|
||||||
|
modeles # Répertoire contenant des macros pour la mise en forme latex
|
||||||
|
+ un_avis.tex # Modèle pour la génération de avis_poursuite_nom_prenom_EID0000.tex
|
||||||
|
+ parcourstimeline.tex # Ligne temporelle retraçant le parcours d'un étudiant
|
||||||
|
+ un_footer.tex # Modèle pour le pied de page des avis PE
|
||||||
|
```
|
||||||
|
|
||||||
* Les RCS `BUT<a>` (avec `<a>` le numéro de l'année parmi 1, 2, 3) désignent la moyenne calculée sur les deux semestres d'une même année `<a>`.
|
La compilation pourra se lancer avec : `pdflatex avis.tex`
|
||||||
|
|
||||||
* Les RCS `Moyenne du semestre <ini> à <final>` désignent les moyennes calculées en utilisant toutes les notes du semestre <ini> au semestre <final>. Plus particulièrement :
|
|
||||||
|
|
||||||
* Le RCS `Moyenne du semestre 1 à 5` (intégrant les semestres S1+S2+S3+S4+S5) peut être utile pour une vue d'ensemble des résultats - sur 5 semestres - lors d'un jury se tenant au S5 pour des avis de poursuites d'études
|
### Template LaTeX
|
||||||
|
|
||||||
* Le RCS `Moyenne du semestre 1 à 3` (intégrant les semestres S1+S2+S3) peut être utile pour une vue d'ensemble des résultats - sur 3 semestres - lors d'un jury se tenant au S3 pour des avis de _réorientation_ (pour rester _politiquement correct_).
|
Les avis LaTeX sont générés à partir de deux *templates latex*, dont le contenu est fourni dans modeles/un_avis.tex et modeles/un_footer.tex de l'archive avis.zip.
|
||||||
|
|
||||||
|
Ces templates sont livrés avec l'installation standard de ScoDoc.
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred; font-size: 200%"></i> Dans le cas des étudiants redoublants, seront **systématiquement** pris en compte les notes des semestres redoublés :
|
Vous pouvez également copier leur contenu dans les paramètres de ScoDoc, onglet **Paramétrage > Template LaTeX des avis** pour le modèle un_avis.tex et onglet **Paramétrage > Code LaTeX en fin d'avis** pour le modèle un_footer.tex. Vous pourrez ainsi par la suite les modifier à votre guise en respectant le format décrit ci-dessous.
|
||||||
|
|
||||||
|
### Signataire des avis de PE
|
||||||
|
|
||||||
Le mode de calcul des moyennes de chaque regroupement cohérent de semestres dépend du regroupement et du tag (cf. décription à suivre).
|
Le nom du signataire qui sera apposé sur les avis de poursuites d'études est à saisir dans les paramètres de ScoDoc, onglet **Paramétrage > Nom du responsable des poursuites d'études**.
|
||||||
|
|
||||||
|
|
||||||
Les données de ces regroupements cohérents de semestres sont fournis, en colonne, dans <i class="fa-solid fa-file" style="color: orange"></i> `synthese_jury_par_tag.xslx`.
|
### Les sources LaTeX fournis par l'outil PE
|
||||||
|
|
||||||
![Regroupements cohérents de semestre](img/regroupement_coherent_semestre.png)
|
L'outil PE renvoie dans l'archive `Jury_PE_20XX.zip` de la promotion d'élèves diplômés en 20XX, où vous trouverez :
|
||||||
|
|
||||||
## Mode de calcul des moyennes
|
1. un fichier par étudiant de la promotion. Ce fichier est nommé sous la forme `avis_poursuite_nom_prenom_identifiant.tex` ; il synthétise les résultats et les moyennes de l'étudiant au cours de sa scolarité DUT en suivant les *templates latex* un_avis.tex et un_footer.tex.
|
||||||
|
|
||||||
Les moyennes de poursuites d'études (contrairement aux moyennes d'UE ou de regroupement cohérent d'UE) ne sont pas règlementées par l'arrêté du BUT. Leur mode de calcul (décrit ci-dessous) a été choisi pour **comparer les étudiants**, sachant la diversité des parcours, la complexité et les contraintes des coefficients du programme, en étant le plus cohérent possible.
|
2. un fichier `avis_poursuite.tex` qui liste tous les avis des étudiants à compiler (inclusion des fichiers latex de chaque étudiant).
|
||||||
|
|
||||||
> <i class="fa-solid fa-triangle-exclamation" style="color: darkred; font-size: 200%"></i> Dans le cas des étudiants redoublants, seront **systématiquement** pris en compte les notes de tous ses semestres y compris redoublés. L'outil ne se focalise pas sur les _meilleures notes_ mais sur la _moyenne_.
|
|
||||||
>
|
|
||||||
> <i class="fa-solid fa-comment" style="color: darkgreen"></i> Ce choix trouve un équilibre entre _pénaliser_ un étudiant en situation de redoublement par rapport à un autre ayant réussi _du premier coup_ et permettre à l'étudiant redoublant d'améliorer sa moyenne.
|
|
||||||
|
|
||||||
### Moyennes des RCS `Semestre <n>`
|
#### Pour obtenir le document PDF
|
||||||
|
|
||||||
Rappelons que les RCS `Semestre <n>` (avec `<n>` le numéro du semestre parmi 1, 2, 3, 4, 5, 6) désignent la moyenne (pour chaque tag) calculée en utilisant les notes du (ou des) semestre `<n>`. <i class="fas fa-eye" style="color: teal"></i> Par exemple, `Semestre 1` désigne la moyenne obtenue en partant de toutes les notes du S1.
|
1. Ouvrez l'archive zip renvoyée par ScoDoc dans votre *répertoire de travail*.
|
||||||
|
|
||||||
#### Moyenne `comp. <titre_competence>` au RCS `Semestre <n>`
|
2. Dans une invite de commande (cmd en Windows, terminal en linux) dont le répertoire courant est celui créé à l'ouverture de l'archive (commande `cd Jury_PE_...`), lancez la compilation des avis en exécutant la commande :
|
||||||
|
```
|
||||||
|
pdflatex avis.tex
|
||||||
|
```
|
||||||
|
Le résultat est le classeur **avis.pdf**.
|
||||||
|
|
||||||
La moyenne des tags (automatiques) `comp. <titre_competence>` (déduit de votre référentiel de compétaire) pour un `Semestre <n>` est une recopie de la moyenne de l'UE associée à la compétence (utilisant les modules et leurs coefficients du programme pédagogique).
|
Cette compilation déclenche celle de `avis_poursuite.tex` qui elle-même lancera celle des avis par étudiants `avis_poursuite_nom_prenom_identifiant.tex` faisant partie de la promotion ciblée (on pourra commenter les avis des étudiants que l'on ne souhaite pas compiler en faisant débuter la ligne d'inclusion de leur avis dans `avis_poursuite.tex` d'un %).
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred"></i> Dans le cas des étudiants redoublants est fourni la moyenne des UEs des deux semestres qu'il a suivis (souvent l'une validée l'autre non) : par exemple, pour le `Semestre 1` : $moy_ue_au_semestre1 = (moy_ue_semestre1_non_valide + moy_ue_semestre1_valide)/2$
|
### Le rendu PDF du template proposé
|
||||||
|
|
||||||
#### Moyenne `but` au RCS `Semestre <n>`
|
Le template proposé permet un résultat similaire à celui de la capture d'écran :
|
||||||
|
|
||||||
La moyenne du tag (automatique) `but` pour un `Semestre <n>` est similaire à la moyenne de semestre donnée à titre indicatif par Scodoc dans les notes/jury du semestre. Elle utilise tous les modules, leurs coefficients par UE définis dans le programme pédagogique pour calculer les moyennes par UE. Puis elle fournit une moyenne pondérée des UEs en utilisant les crédits ECTS associés à chaque UE. Pour faire court :
|
* page1 : ![avis1.png](screens/avis1.png)
|
||||||
|
|
||||||
$$moy_but_au_semestre = (UE1 x ects1 + UE2 x ects2 + ...)/(ects1 + ects2 + ...)$$
|
* page2 : ![avis2.png](screens/avis2.png)
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred"></i> Dans le cas des étudiants redoublants est fourni la moyenne aux deux semestres qu'il a suivi (souvent l'un validé l'autre non) : par exemple, pour le `Semestre 1` : $moy_but_au_semestre1 = (moy_but_au_semestre1_non_valide + moy_but_au_semestre1_valide)/2$
|
En l'état, il fournit pour chaque étudiant :
|
||||||
|
|
||||||
#### Moyenne des tags personnalisés au RCS `Semestre <n>`
|
* son nom, son prénom, son âge;
|
||||||
|
* une frise temporelle décrivant tous les semestres DUT dans lesquels il a été inscrit (avec la nomenclature que vous avez choisi dans ScoDoc);
|
||||||
|
* un bilan synthétique de ses moyennes aux différents semestres (avec ses classements dans son groupe et dans sa promo - voir section "les classements et les statistiques" pour l'interprétation des cohortes);
|
||||||
|
* une zone d'annotation permettant un commentaire individualisé, l'annotation étant recherchée parmi les annotations du profil ScoDoc de l'étudiant (cf. section "L'annotation PE").
|
||||||
|
|
||||||
Pour les moyennes aux tags que vous avez ajoutés dans le programme de formation, le calcul est similaire à celle de la moyenne `but` en n'utilisant cette fois que les modules qui portent le tag visé.
|
### L'annotation PE
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Par exemple, si le semestre 1 a deux modules d'anglais taggué `anglais`, est calculé : la moyenne dans chaque UE avec les notes des modules d'anglais pondérés par leur coefficients (coefficients du programme + coefficients d'évaluation dirigeant les notes vers une UE ou une autre). Les moyennes dans chaque UE sont ensuite intégrée dans une moyenne globale en utilisant les crédits ECTS :
|
Lorsqu'on édite la fiche d'un étudiant, il est possible de saisir des annotations à son sujet. Ces annotations sont aussi utilisées ici pour saisir un commentaire individualisé à apposer sur l'avis de poursuites d'études au format LaTeX de l'étudiant. Pour distinguer ce commentaire des annotations plus standards, l'annotation doit débutée par un mot-clé (ici PE:) comme le montre la capture d'écran ci-dessous :
|
||||||
|
|
||||||
$$moy_anglais_au_semestre = (UE1_anglais x ects1 + UE2_anglais x ects2 + ...)/(ects1 + ects2 + ...)$$
|
![annotation_PE.png](screens/annotation_PE.png)
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred"></i> Il vous est possible (via la déclaration du tag de la forme `nom_tag:coefficient_entier`) d'ajouter une **pondération supplémentaire** qui s'ajoute (par multiplication) aux coefficients du programme des modules taggués.
|
|
||||||
|
|
||||||
### Moyennes des RCS `BUT<a>`
|
Cette annotation sera alors automatiquement ajoutée à l'avis LaTeX de l'étudiant (cf. `avis_poursuite_nom_prenom_identifiant.tex`).
|
||||||
|
|
||||||
Les RCS `BUT<a>` (avec `<a>` le numéro de l'année parmi 1, 2, 3) regroupent deux semestres d'une même année `<a>` : par exemple, `BUT1` regroupent le `Semestre 1` et le `Semestre 2`.
|
L'annotation peut bien entendue être remodifiée (ou ajoutée si manquante) à la main dans le fichier `avis_poursuite_nom_prenom_identifiant.tex` avant compilation en pdf.
|
||||||
|
|
||||||
Quelque soit le tag (`comp. <titre_compétence>`, `but` ou personnalisés), les moyennes _annuelles_ calculées ici s'appuient sur les moyennes des deux semestres regroupés (dont le mode de calcul est décrit au dessus) et fournissent la moyenne des deux semestres avec équipndération.
|
Plusieurs annotations ayant trait à un commentaire PE peuvent également être mémorisées dans ScoDoc (à condition de les faire toutes précéder du tag "PE:"). Dans ce cas, seule la plus récente sera ajoutée à l'avis LaTeX de l'étudiant.
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Par exemple, pour l'anglais et le RCS `BUT1`
|
Enfin, il est possible de modifier le tag (ici "PE:") identifiant les commentaires PE dans les annotations en allant dans l'onglet **Paramètrage > Tag désignant l'avis PE** et en y saisissant votre tag (éviter les caractères spéciaux propres au HTML, comme le ">").
|
||||||
$moy_anglais_BUT1 = (moy_anglais_S1 + moy_anglais_S2)/2$ (où `moy_anglais_S1` désigne la moyenne d'anglais du RCS `Semestre 1` et `moy_anglais_S2` du RCS `Semestre 2`).
|
|
||||||
|
|
||||||
### Moyennes des RCS `Moyenne du semestre <ini> à <fin>`
|
### Personnaliser son template
|
||||||
|
|
||||||
Le principe est le même que les moyennes des RCS `BUT<a>` mais en considérant tous les semestres allant du semestre `<ini>` au semestre `<fin>` et en moyennant les résultats semestre par semestre avec équipondération.
|
#### Les patterns de base
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Par exemple, pour l'anglais et le RCS `Moyenne du semestre <ini> à <fin>` :
|
Les templates d'avis (un_avis et un_footer) sont des codes LaTeX classiques que vous pouvez adaptez à loisir à vos besoins.
|
||||||
$moy_anglais = (moy_anglais_S1 + moy_anglais_S2 + moy_anglais_S3 + moy_anglais_S4 + moy_anglais_S5)/5$
|
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred"></i> Si un semestre n'a pas de modules associé au tag visé, il n'est pas pris en compte.
|
Ils interprètent également une série de **patterns**, reconnaissables au fait qu'elles sont toutes encapsulées par deux séries de doubles * ; ces patterns sont traitées par ScoDoc pour accéder aux données de l'étudiant. Ainsi:
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Par exemple, pour l'anglais et le RCS `Moyenne du semestre <ini> à <fin>` mais pour lequel il n'y a pas de notes au S4 :
|
* `**nom**` sera remplacé par le nom de l'étudiant
|
||||||
$moy_anglais = (moy_anglais_S1 + moy_anglais_S2 + moy_anglais_S3 + moy_anglais_S5)/4$
|
* `**prenom**` par le prénom
|
||||||
|
* `**age**` par son age (à la date de création des fichiers tex)
|
||||||
|
* `**sexe**` par son genre
|
||||||
|
|
||||||
## Classements et statistiques¶
|
Plusieurs **patterns/macros** sont proposées :
|
||||||
|
|
||||||
Les moyennes (pour chaque tag et chaque RCs) sont généralement associée à des **classements** et à des statistiques (note **minimum**, note **moyenne**, note **maximum**) qui dépendent de la **cohorte** considérée.
|
* `**parcourstimeline**` ajoute le code LaTeX pour retracer le parcours de l'étudiant (les différents semestres dans lesquels il a été inscrit) sous la forme d'une frise temporelle (cf. capture d'écran précédente)
|
||||||
|
* `**bilanParTag**` ajoute le code LaTeX d'un tableau, qui synthétise - pour tous les tags (sauf le tag *dut*) que vous avez affecté aux semestres de l'étudiant (cf. section Les tags) ses résultats aux différents aggrégats proposés (S1, S2, S3, S4, 1ère année, 2ème année, S1+S2+S3 et totalité du DUT)
|
||||||
|
|
||||||
### Cohortes de classement
|
#### Les patterns personnalisées
|
||||||
|
|
||||||
L'outil PE propose plusieurs cohortes pour ces classements et ces statistiques.
|
Tous les éléments calculés pour le jury de poursuite d'études sont également accessibles sous la forme *aggregat:cohorte:tag:critere** où :
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred; font-size:200%"></i> L'outil PE ne fonctionne que si :
|
* aggregat est l'un des aggrégats parmi S1, S2, S3, S4, 1A, 2A, 3S ou 4S;
|
||||||
|
* cohorte est soit groupe soit promo (suivant la "cohorte" que l'on souhaite prendre en compte);
|
||||||
|
* tag est l'un des tags que vous avez déclarés dans ScoDoc (dut étant proposé par défaut);
|
||||||
|
* critere est l'un des calculs faits pour établir le jury parmi note (la note de l'étudiant), rang (le rang dans la cohorte), min, max, moy (le minimum, le maximum ou la moyenne de la cohorte).
|
||||||
|
|
||||||
* les dates des semestres de début d'année universitaires (généralement des semestres impairs) s'étalent sur 2 années civiles (par exemple S1 de septembre 2021 à janvier 2022)
|
Par exemple,
|
||||||
* les dates des semestres de fin d'année universitaire (généralement des semestres pairs) sont limitées à une année civile (par exemple S2 de janvier à juillet 2022).
|
|
||||||
|
|
||||||
#### La cohorte `groupe¶`
|
* **S2:groupe:mathématiques:note** sera remplacé par la note-moyenne de l'étudiant en mathématiques pour le S2;
|
||||||
|
* **4S:promo:dut:rang** sera remplacé par le rang de l'étudiant, calculé au sein de la promo, sur sa note moyenne de DUT (moyenne calculée sur les 4 semestres S1+S2+S3+S4);
|
||||||
|
* **1A:promo:physique:min** sera remplacé par la plus petite note de la promo obtenue en physique (moyenne de tous les modules tagués physique) sur toute la 1ère année (S1+S2).
|
||||||
|
|
||||||
> La cohorte `groupe` est l'ensemble des étudiants inscrits dans le même semestre que le dernier impliqué dans la moyenne calculée.
|
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Par exemple, pour le tag `maths` portant sur le RCS `Moyenne du semestre 1 à 3` c'est-à-dire sur les semestres S1, S2, et pour finir S3, le groupe est constitué des élèves ayant tous été inscrits au S3 final. Dans ce groupe, il peut y avoir des redoublants qui débuté un an plus tôt et ont fait un S1+S2+S1+S2 avant d'atteindre ce S3.
|
|
||||||
|
|
||||||
De fait, les notes prises en compte pour les moyennes pourront provenir de modules ne s'étant pas tenus aux même universitaires.
|
|
||||||
|
|
||||||
#### La cohorte `promo`
|
|
||||||
|
|
||||||
> La cohorte `promo 20XX` est l'ensemble des étudiants susceptibles de valider leur diplôme BUT à l'année `20XX` indépendamment de leur parcours (en supposant qu'ils ne redoublent plus).
|
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Par exemple, si votre département propose un _parcours A_ et un _parcours B_, la promo 2024 inclut les étudiants qui valideront leur S6 en juillet 2024 (voire en décembre 2024 en cas de semestres décalés).
|
|
||||||
|
|
||||||
<i class="fas fa-eye" style="color: teal"></i> Autre exemple, la promo 2025 : parmi les étudiants de la promo 2025, on retrouve les étudiants "standards" étant entrés à l'IUT en septembre 2022 avec un parcours sans redoublement. On retrouve également les étudiants entrés à l'IUT en septembre 2021 et ayant redoublé 2 semestres (de BUT1 ou de BUT2). Les étudiants ayant démissionnés ou s'étant réorientés (aka ne s'étant pas réinscrit dans un semestre BUT là où il aurait "du" le faire) sont exclus de la promo. (cf. tableur <i class="fa-solid fa-file" style="color: orange"></i> `Jury_PE_2024.zip > details/etudiants_20XX.xlsx`)
|
|
||||||
|
|
||||||
#### La cohorte `parcours` (à venir)
|
|
||||||
|
|
||||||
> La cohorte `parcours 20XX` est l'ensemble des étudiants susceptibles de valider leur diplôme BUT à l'année `20XX` et ayant suivi le même parcours (du référentiel de compétences).
|
|
||||||
|
|
||||||
### Classements par cohorte
|
|
||||||
|
|
||||||
<i class="fa-solid fa-triangle-exclamation" style="color: darkred; font-size:200%"></i> Dans une même cohorte et pour certains tags (notamment ceux des `comp. <titre_compétence>`), les étudiants peuvent avoir suivi des modules différents (par exemple parce qu'ils sont prévu dans le parcours A mais pas dans le parcours B). Les classements dans la cohorte sont donc systématiquement ramenés au nombre d'étudiants inscrits dans les modules raccrochés au tag visé.
|
|
||||||
|
|
||||||
### Statistiques par cohorte
|
|
||||||
|
|
||||||
Pour chaque cohorte et chaque tag (considérant les inscrits aux modules rattachés aux tags) des statistiques sont fournies :
|
|
||||||
|
|
||||||
* `min` la plus petite note (moyenne du tag) obtenu par les étudiants de la cohorte
|
|
||||||
* `max` la plus grande note (moyenne du tag) obtenu par les étudiants de la cohorte
|
|
||||||
* `moy` la moyenne des notes (au tag) de la cohorte
|
|
||||||
|
160
docs/BUT.md
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
# Le Bachelor Universitaire de Technologie (BUT)
|
# Le Bachelor Universitaire de Technologie (BUT)
|
||||||
|
|
||||||
Formation en trois ans dispensées par les IUT français, introduite en 2021, et
|
Formation en trois ans dispensées par les IUT français, introduite en 2021, et
|
||||||
@ -5,24 +6,17 @@ basée sur une forme d'approche par compétences nécessitant un système
|
|||||||
d'évaluation spécifique.
|
d'évaluation spécifique.
|
||||||
|
|
||||||
Cette page décrit les principaux éléments du BUT utiles à comprendre pour le
|
Cette page décrit les principaux éléments du BUT utiles à comprendre pour le
|
||||||
gérer avec ScoDoc. Vous trouverez ensuite un exemple de mise en place des
|
gérer avec ScoDoc. Pour les curieux, la page
|
||||||
semestres d'un BUT ici: [Modélisation BUT: exemple de la spécialité
|
[modélisation des parcours BUT](ModelisationParcoursBUT.md)
|
||||||
Informatique](BUTExempleInfo.md). Pour les curieux et les développeurs, la page
|
donne quelques détails sur la façon dont ScoDoc organise les objets du BUT.
|
||||||
[modélisation des parcours BUT](ModelisationParcoursBUT.md) donne quelques
|
|
||||||
détails sur la façon dont ScoDoc organise les objets du BUT.
|
|
||||||
|
|
||||||
De nombreux aspects sont aussi décrits dans les
|
|
||||||
<a
|
|
||||||
href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1"
|
|
||||||
target="_blank">Tutoriels sur YouTube <img src="/img/tube.png" alt=""
|
|
||||||
style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
|
|
||||||
|
|
||||||
## UE, modules, évaluations
|
## UE, modules, évaluations
|
||||||
|
|
||||||
- UE : Unité d'Enseignement, associée à des crédits (ECTS) et validée (ou non)
|
- UE : Unité d'Enseignement, associée à des crédits (ECTS) et validée (ou non)
|
||||||
en jury. Une UE est rattachée à une *formation*.
|
en jury. Une UE est rattachée à une *formation*.
|
||||||
|
|
||||||
- Module: dans ScoDoc, un module désigne une dispositif pédagogique, évalué.
|
- Module: dans ScoDoc, un module désigne une dispositif pédagogique, évalué.
|
||||||
Dans les formations BUT, le module prend la forme d'une *ressource* ou d'une
|
Dans les formations BUT, le module prend la forme d'une *ressource* ou d'une
|
||||||
SAE (*situation d'apprentissage et d'évaluation*). Un module est rattaché à
|
SAE (*situation d'apprentissage et d'évaluation*). Un module est rattaché à
|
||||||
une (seule) UE.
|
une (seule) UE.
|
||||||
@ -30,20 +24,20 @@ style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
|
|||||||
Dans le BUT, un module est aussi associé à une ou ou plusieurs UE, cette
|
Dans le BUT, un module est aussi associé à une ou ou plusieurs UE, cette
|
||||||
association étant affecté de *coefficients* (une valeur par UE associée).
|
association étant affecté de *coefficients* (une valeur par UE associée).
|
||||||
|
|
||||||
- Évaluation: dispositif produisant une note pour les étudiants inscrits à un
|
- Évaluation: dispositif produisant une note pour les étudiants inscrits à un
|
||||||
module. L'évaluation est associée à des coefficients.
|
module. L'évaluation est associée à des coefficients.
|
||||||
|
|
||||||
## Structure des formations par compétences de type BUT
|
## Structure des formations par compétences de type BUT
|
||||||
|
|
||||||
L'architecture d'une formation BUT est définie par les éléments suivants:
|
L'architecture d'une formation BUT est définie par les éléments suivants:
|
||||||
|
|
||||||
- Compétence
|
- Compétence
|
||||||
- Niveau
|
- Niveau
|
||||||
- Composantes essentielles ("En respectant les règles métiers...")
|
- Composantes essentielles ("En respectant les règles métiers...")
|
||||||
- Situations professionnelles ("Surveillance de la qualité de la
|
- Situations professionnelles ("Surveillance de la qualité de la
|
||||||
production...")
|
production...")
|
||||||
|
|
||||||
- Niveaux de compétence: associés à une année. Attention, le niveau 1 commence
|
- Niveaux de compétence: associés à une année. Attention, le niveau 1 commence
|
||||||
parfois en deuxième année.
|
parfois en deuxième année.
|
||||||
- Numéro (1, 2, 3)
|
- Numéro (1, 2, 3)
|
||||||
- Titre
|
- Titre
|
||||||
@ -60,13 +54,12 @@ niveaux) et UEs.
|
|||||||
## Calcul des notes
|
## Calcul des notes
|
||||||
|
|
||||||
Les rôles des SAÉ et ressources étant symétriques, on appellera dans la 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 ScoDoc) *module* un objet de type SAÉ _ou_ ressource.
|
||||||
|
|
||||||
Dans la suite, on considère les poids et coefficients toujours positifs ou
|
Dans la suite, on considère les poids et coefficients toujours positifs ou
|
||||||
nuls (pas de coefficients négatifs).
|
nuls (pas de coefficients négatifs).
|
||||||
|
|
||||||
### Coefficients des SAÉ et ressources
|
### Coefficients des SAÉ et ressources
|
||||||
|
|
||||||
Les coefficients des modules (ressources et SAÉ) sont fixés par le PN (*adapté
|
Les coefficients des modules (ressources et SAÉ) sont fixés par le PN (*adapté
|
||||||
localement*).
|
localement*).
|
||||||
|
|
||||||
@ -111,8 +104,8 @@ coefficient du module vers l'UE $u$ est non nul, la somme des poids vers
|
|||||||
une UE $u$ *doit* être non nulle; si ce n'est pas le cas, le module sera déclaré
|
une UE $u$ *doit* être non nulle; si ce n'est pas le cas, le module sera déclaré
|
||||||
*non conforme* et le jury ne pourra pas être tenu.
|
*non conforme* et le jury ne pourra pas être tenu.
|
||||||
|
|
||||||
### Moyenne de module (SAÉ ou ressource)
|
|
||||||
|
|
||||||
|
### Moyenne de module (SAÉ ou ressource)
|
||||||
La moyenne d'un étudiant dans 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}}$$
|
$$\mu_{m, u} = \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{u,e}}$$
|
||||||
@ -137,7 +130,6 @@ Par ailleurs, il est (parfois, peut-être) utile de calculer des moyennes par
|
|||||||
pôles au sein de l'UE: pôle SAÉ, pôle ressource.
|
pôles au sein de l'UE: pôle SAÉ, pôle ressource.
|
||||||
|
|
||||||
### Validation d'une UE
|
### Validation d'une UE
|
||||||
|
|
||||||
La validation ou non d'une UE dépend uniquement de la moyenne générale (et des
|
La validation ou non d'une UE dépend uniquement de la moyenne générale (et des
|
||||||
conditions habituelles d'assiduité et de défaillance spécifiées dans les
|
conditions habituelles d'assiduité et de défaillance spécifiées dans les
|
||||||
règlements des établissements):
|
règlements des établissements):
|
||||||
@ -149,11 +141,11 @@ peuvent entrainer la validation d'UE a posteriori.
|
|||||||
|
|
||||||
### Capitalisation
|
### Capitalisation
|
||||||
|
|
||||||
Les UE sont capitalisables, c'est à dire qu'un étudiant conserve les UEs
|
Les UE sont capitalisables, c'est à dire qu'un étudiant conserve son UE s'il
|
||||||
obtenues (avec moyenne > 10/20) s'il arrête temporairement ses études ou redouble un semestre.
|
arrête temporairement ses études ou redouble un semestre.
|
||||||
|
|
||||||
En cas de redoublement, l'étudiant qui choisi de répéter une UE capitalisée conserve le
|
En cas de redoublement, l'étudiant qui choisi de répéter une UE conserve le
|
||||||
résultat antérieur sauf s'il obtient une meilleure moyenne.
|
résultat antérieur sauf s'il obtient mieux.
|
||||||
|
|
||||||
### Moyenne générale
|
### Moyenne générale
|
||||||
|
|
||||||
@ -170,11 +162,7 @@ considéré:
|
|||||||
|
|
||||||
$$ g = \frac{1}{\sum_{u \in \cal S} \mbox{ects}_u} \sum_{u \in \cal S} \mbox{ects}_u \, \mu_u $$
|
$$ g = \frac{1}{\sum_{u \in \cal S} \mbox{ects}_u} \sum_{u \in \cal S} \mbox{ects}_u \, \mu_u $$
|
||||||
|
|
||||||
Attention, les UEs sans notes sont ici considérées comme ayant une moyenne
|
|
||||||
nulle. En début d'année, la moyenne générale indicative sera donc souvent très basse.
|
|
||||||
|
|
||||||
### Passage d'une année à l'autre
|
### Passage d'une année à l'autre
|
||||||
|
|
||||||
Les conditions de passages vers l'année suivante sont:
|
Les conditions de passages vers l'année suivante sont:
|
||||||
|
|
||||||
1. Moyenne supérieure ou égale à 10/20 obtenue à plus de de la moitié des
|
1. Moyenne supérieure ou égale à 10/20 obtenue à plus de de la moitié des
|
||||||
@ -188,13 +176,12 @@ Note: La validation des deux UE du niveau d’une compétence emporte la validat
|
|||||||
l’ensemble des UE du niveau inférieur de cette même compétence.
|
l’ensemble des UE du niveau inférieur de cette même compétence.
|
||||||
|
|
||||||
### Redoublements
|
### Redoublements
|
||||||
|
|
||||||
La poursuite d'études dans un semestre pair d’une même année est *de droit* pour
|
La poursuite d'études dans un semestre pair d’une même année est *de droit* pour
|
||||||
tout étudiant. La poursuite d’études dans un semestre impair est possible si et
|
tout étudiant. La poursuite d’études dans un semestre impair est possible si et
|
||||||
seulement si l’étudiant a obtenu :
|
seulement si l’étudiant a obtenu :
|
||||||
|
|
||||||
- la moyenne à plus de la moitié des regroupements cohérents d’UE ;
|
- la moyenne à plus de la moitié des regroupements cohérents d’UE ;
|
||||||
- et une moyenne égale ou supérieure à 8 sur 20 à chaque regroupement cohérent
|
- et une moyenne égale ou supérieure à 8 sur 20 à chaque regroupement cohérent
|
||||||
d’UE. La poursuite d'études dans le semestre 5 nécessite de plus la validation
|
d’UE. La poursuite d'études dans le semestre 5 nécessite de plus la validation
|
||||||
de toutes les UE des semestres 1 et 2 dans les conditions de validation des
|
de toutes les UE des semestres 1 et 2 dans les conditions de validation des
|
||||||
points 4.3 et 4.4, ou par décision de jury.
|
points 4.3 et 4.4, ou par décision de jury.
|
||||||
@ -207,6 +194,7 @@ appréciée par ses soins. Tout refus d'autorisation de redoubler est pris aprè
|
|||||||
avoir entendu l'étudiant à sa demande. Il doit être motivé et assorti de
|
avoir entendu l'étudiant à sa demande. Il doit être motivé et assorti de
|
||||||
conseils d'orientation.
|
conseils d'orientation.
|
||||||
|
|
||||||
|
|
||||||
### Obtention du diplôme
|
### Obtention du diplôme
|
||||||
|
|
||||||
Le diplôme de BUT est obtenu lorsque toutes les compétences du parcours suivi
|
Le diplôme de BUT est obtenu lorsque toutes les compétences du parcours suivi
|
||||||
@ -223,10 +211,9 @@ bonus pourra donc être appliqué au niveau des moyennes UE: soit sur toutes
|
|||||||
Les règles précises du calcul de ce bonus sont malheureusement variables d'un
|
Les règles précises du calcul de ce bonus sont malheureusement variables d'un
|
||||||
établissement à l'autre: ScoDoc 7 proposait plus d'une douzaine de variantes. La
|
établissement à l'autre: ScoDoc 7 proposait plus d'une douzaine de variantes. La
|
||||||
situation sera identique avec le BUT et ScoDoc 9, et la mise en place d'une
|
situation sera identique avec le BUT et ScoDoc 9, et la mise en place d'une
|
||||||
fonction spécifique dans ScoDoc demandera un paramétrage particulier: voir [la
|
fonction spécifique dans ScoDoc demandera un paramétrage particulier.
|
||||||
page sur les bonus et malus](BonusMalus.md).
|
|
||||||
|
|
||||||
## Éditer ou importer une formation
|
# Éditer ou importer une formation
|
||||||
|
|
||||||
ScoDoc permet d'importer des programmes de formations créés par d'autres
|
ScoDoc permet d'importer des programmes de formations créés par d'autres
|
||||||
applications, comme Orébut, puis de les modifier pour introduire une *adaptation
|
applications, comme Orébut, puis de les modifier pour introduire une *adaptation
|
||||||
@ -234,22 +221,21 @@ locale*.
|
|||||||
|
|
||||||
TODO: voir si on offre la possibilité de voir/gérer le delta entre le PN et le local.
|
TODO: voir si on offre la possibilité de voir/gérer le delta entre le PN et le local.
|
||||||
|
|
||||||
## Modules et évaluations
|
# Modules et évaluations
|
||||||
|
|
||||||
### Créer une évaluation
|
## Créer une évaluation
|
||||||
|
|
||||||
Pour fixer les poids des évaluations du module, on peut employer plusieurs méthodes:
|
Pour fixer les poids des évaluations du module, on peut employer plusieurs méthodes:
|
||||||
|
|
||||||
- un nombre (poids de l'évaluation dans le module, sans préciser si cette
|
- un nombre (poids de l'évaluation dans le module, sans préciser si cette
|
||||||
évaluation affecte plus un UE qu'une autre);
|
évaluation affecte plus un UE qu'une autre);
|
||||||
|
|
||||||
- cocher des apprentissages critiques (on rappelle que les AC sont associés à des niveaux de
|
- cocher des apprentissages critiques (on rappelle que les AC sont associés à des niveaux de
|
||||||
compétences, donc à 2 UE consécutives);
|
compétences, donc à 2 UE consécutives);
|
||||||
|
|
||||||
- indiquer un poids par UE.
|
- indiquer un poids par UE.
|
||||||
|
|
||||||
#### Coefficient et poids d'une évaluation
|
#### Coefficient et poids d'une évaluation
|
||||||
|
|
||||||
Afin de faciliter la tâche des enseignants, ScoDoc sépare le coefficient d'une
|
Afin de faciliter la tâche des enseignants, ScoDoc sépare le coefficient d'une
|
||||||
évaluation (qui donne sa place dans le module) et les poids (qui ajustent son
|
évaluation (qui donne sa place dans le module) et les poids (qui ajustent son
|
||||||
impact dans chaque UE). On introduit donc un coefficient $w_e$, et les poids
|
impact dans chaque UE). On introduit donc un coefficient $w_e$, et les poids
|
||||||
@ -261,19 +247,21 @@ $$p_{e, u} = w_e \, \frac{b_{e,u}}{\sum_u b_{e,u}}$$
|
|||||||
|
|
||||||
<img src="/fig/but-dialog-eval-create.png" width="50%">
|
<img src="/fig/but-dialog-eval-create.png" width="50%">
|
||||||
|
|
||||||
- L'enseignant *doit* renseigner le coefficient de l'évaluation.
|
- L'enseignant _doit_ renseigner le coefficient de l'évaluation.
|
||||||
- Par défaut, les poids valent 1 (la contribution de l'évaluation vers les
|
- Par défaut, les poids valent 1 (la contribution de l'évaluation vers les
|
||||||
différentes UE respecte alors le PN).
|
différentes UE respecte alors le PN).
|
||||||
- Si on décoche un AC, les poids sont mis à jour, au prorata du nombre d'AC
|
- Si on décoche un AC, les poids sont mis à jour, au prorata du nombre d'AC
|
||||||
dans chaque UE (compétence).
|
dans chaque UE (compétence).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Tableau de bord module
|
## Tableau de bord module
|
||||||
|
|
||||||
Fonctions de base, en plus de celles déjà présentes en ScoDoc 7:
|
Fonctions de base, en plus de celles déjà présentes en ScoDoc 7:
|
||||||
|
|
||||||
- Vérification de la conformité (tous les AC cochés dans le PN sont évalués)
|
- Vérification de la conformité (tous les AC cochés dans le PN sont évalués)
|
||||||
|
|
||||||
- Poids de chaque évaluation dans chaque UE et conformité au programme de la formation
|
- Poids de chaque évaluation dans chaque UE et conformité au programme de la formation
|
||||||
|
|
||||||
En bas du tableau de bord du module on aura un tableau récapitulatif:
|
En bas du tableau de bord du module on aura un tableau récapitulatif:
|
||||||
|
|
||||||
@ -284,19 +272,20 @@ des poids ou oubli d'une évaluation):
|
|||||||
|
|
||||||
<img src="/fig/but-tableau-evals-module-ko.png" width="50%">
|
<img src="/fig/but-tableau-evals-module-ko.png" width="50%">
|
||||||
|
|
||||||
## Bulletins de notes
|
|
||||||
|
|
||||||
|
# Bulletins de notes
|
||||||
|
|
||||||
La quantité d'information à présenter rend la conception des bulletins de notes difficile.
|
La quantité d'information à présenter rend la conception des bulletins de notes difficile.
|
||||||
|
|
||||||
### Modèle "Lillois"
|
## Modèle "Lillois"
|
||||||
|
|
||||||
Proposition de l'IUT de Lille:
|
Proposition de l'IUT de Lille:
|
||||||
|
|
||||||
- en ligne, les ressources, puis les SAÉ;
|
- en ligne, les ressources, puis les SAÉ;
|
||||||
- en colonnes, les UE;
|
- en colonnes, les UE;
|
||||||
- dans chaque case, le coefficient et la note obtenue;
|
- dans chaque case, le coefficient et la note obtenue;
|
||||||
- on peut ajouter les évaluations (lignes);
|
- on peut ajouter les évaluations (lignes);
|
||||||
- on pourrait ajouter les infos habituelles en colonnes: min/max/moy/rangs/...
|
- on pourrait ajouter les infos habituelles en colonnes: min/max/moy/rangs/...
|
||||||
|
|
||||||
Avantage: toutes les informations importantes sont présentées.
|
Avantage: toutes les informations importantes sont présentées.
|
||||||
|
|
||||||
@ -305,8 +294,7 @@ exploiter pour un non spécialiste du BUT (poursuites d'études, employeurs).
|
|||||||
|
|
||||||
<img src="/fig/but-bul-lille.png" width="50%">
|
<img src="/fig/but-bul-lille.png" width="50%">
|
||||||
|
|
||||||
### Modèle "Bordelais"
|
## Modèle "Bordelais"
|
||||||
|
|
||||||
Cette proposition a été reçue sous différentes formes de plusieurs collègues.
|
Cette proposition a été reçue sous différentes formes de plusieurs collègues.
|
||||||
L'idée est de présenter le bulletin en deux parties: d'abord les résultats de
|
L'idée est de présenter le bulletin en deux parties: d'abord les résultats de
|
||||||
chaque ressource et SAE, puis les résultats de chaque UE.
|
chaque ressource et SAE, puis les résultats de chaque UE.
|
||||||
@ -315,59 +303,17 @@ Un exemple préliminaire:
|
|||||||
|
|
||||||
<img src="/fig/but-bul-bdx.png" width="50%">
|
<img src="/fig/but-bul-bdx.png" width="50%">
|
||||||
|
|
||||||
## Tenue des Jury BUT
|
|
||||||
|
|
||||||
La tenue des jury BUT dans ScoDoc est en fait plus simple que celle des anciens DUTs, avec moins
|
|
||||||
de décisions ad-hoc (compensations plus simples, moins de cas de mise en
|
|
||||||
attente). Comme pour les formations LMD, il s'agit avant tout de constater ou
|
|
||||||
valider manuellement les Unités d'Enseignements (UEs) associées à des ECTS.
|
|
||||||
|
|
||||||
Avant de tenir un jury de BUT il est absolument indispensable que la formation
|
|
||||||
et les semestre soient bien paramétrés. Voir [l'exemple complet du paramétrage
|
|
||||||
d'un BUT](BUTExempleInfo.md).
|
|
||||||
|
|
||||||
On va enregistrer:
|
|
||||||
|
|
||||||
- Validations des UEs, comme pour toutes les formations LMD.
|
|
||||||
- Validation des années: spécifique BUT (BUT1, BUT2 ou BUT3)
|
|
||||||
- Validation des niveaux de compétences: ces derniers sont évalués grâce à la
|
|
||||||
constitution du couple de deux UEs associées au même niveau de compétence.
|
|
||||||
**Attention: un niveau ne peut être validé qu'une seule fois.** Cette
|
|
||||||
validation peut changer d'état, par exemple si un étudiant redouble.
|
|
||||||
|
|
||||||
Exemple: un étudiant commence en 2021-2022, puis redouble son BUT1 en 2022-2023.
|
|
||||||
Sa spécialité compte seulement deux UEs en BUT1, UE11 et UE21 en S1, puis UE12
|
|
||||||
et UE22 en S2:
|
|
||||||
|
|
||||||
| S1 | S2 |
|
|
||||||
| ---- | ---- |
|
|
||||||
| UE11 | UE12 |
|
|
||||||
| UE21 | UE22 |
|
|
||||||
|
|
||||||
Il ne valide pas ses UEs en BUT1 (tout `AJ`), ses RCUE1 et RCUE2 sont `AJ`.
|
|
||||||
En redoublant, il acquiert de nouveaux codes d'UE (disons `ADM`), et change ses
|
|
||||||
codes d'RCUE.
|
|
||||||
|
|
||||||
De même, les validations d'année BUT sont uniques: en cas de redoublement, on
|
|
||||||
met à jour sa validation de BUT1, qui peut passer (si tout va bien) de
|
|
||||||
`RED`(redoublement) à `ADM` (validée).
|
|
||||||
|
|
||||||
A la fin, les validations enregistrées pour cet étudiant sont:
|
|
||||||
|
|
||||||
- UE11/2021: AJ
|
|
||||||
- UE12/2021: AJ
|
|
||||||
- UE11/2022: ADM
|
|
||||||
- UE12/2022: ADM
|
|
||||||
- RCUE1: ADM
|
|
||||||
- Années BUT1 : ADM
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
# Tenue des Jury BUT
|
||||||
|
|
||||||
|
La tenue des jury BUT dans ScoDoc est très similaire à celle du DUT, avec moins
|
||||||
|
de décisions ad-hoc (compensations plus simples, moins de cas de mise en attente).
|
||||||
|
|
||||||
|
- Validation des semestres (bien que cela ait peu de conséquences concrètes
|
||||||
|
pour les semestres impairs.
|
||||||
|
|
||||||
|
- Règles de compensation au sein de chaque niveau, pour validation de l'année.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- [Modélisation BUT: exemple de la spécialité Informatique](BUTExempleInfo.md)
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- [Guide du responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Développeurs: Implémentation des parcours du BUT](ModelisationParcoursBUT.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
# Exports des résultats BUT vers Apogée
|
|
||||||
|
|
||||||
Les exports des résultats du BUT vers Apogée (et dans le futur vers Pégase)
|
|
||||||
posent un certain nombre de problèmes spécifiques liés aux caractéristiques
|
|
||||||
atypiques du BUT. Nous listons ci-dessous quelques points qu'il est important
|
|
||||||
d'avoir à l'esprit.
|
|
||||||
|
|
||||||
## Compétences et référentiels
|
|
||||||
|
|
||||||
Avant toute chose, et avant de tenir un jury BUT, s'assurer que la formation est
|
|
||||||
bien configurée, liée à son référentiel de compétences et que chaque UE est bien
|
|
||||||
associée à un niveau de compétence (dans le bon parcours le cas échéant).
|
|
||||||
|
|
||||||
## Pas de moyennes générales en BUT
|
|
||||||
|
|
||||||
En BUT, les seules notes définies sans ambigüité sont:
|
|
||||||
|
|
||||||
- les moyennes d'UE dans chaque semestre;
|
|
||||||
- les moyennes de ressources et SAÉ *vers chaque UE* (une note par couple
|
|
||||||
UE/ressource ou UE/SAÉ);
|
|
||||||
- les notes d'évaluations.
|
|
||||||
|
|
||||||
En conséquence, aucune moyenne générale d'année ou de semestre ne devrait
|
|
||||||
logiquement figurer sur des documents officiels comme les procès verbaux de jury
|
|
||||||
ou les exports Apogée (utilisés en général pour éditer les diplômes).
|
|
||||||
|
|
||||||
Pour la même raison, il n'y a pas de classement par ordre de mérite en BUT (même
|
|
||||||
si ScoDoc propose moyennes indicatives et classements).
|
|
||||||
|
|
||||||
## Résultats semestriels et annuels
|
|
||||||
|
|
||||||
En général, les établissement ont l'habitude d'exporter les résultats de ScoDoc
|
|
||||||
vers Apogée en fin de semestre. Ce n'est pas strictement nécessaire en BUT après
|
|
||||||
les semestres impairs (S1, S3, S5), mais c'est possible.
|
|
||||||
|
|
||||||
Après un semestre impair, on peut donc exporter les résultats aux UEs (décisions
|
|
||||||
de jury et notes), ainsi bien entendu que les résultats plus fins (ressources,
|
|
||||||
évaluations).
|
|
||||||
|
|
||||||
Après les jurys de fin d'année scolaire (juillet), on peut exporter, outre les
|
|
||||||
résultats aux UEs:
|
|
||||||
|
|
||||||
- la décision annuelle (à l'étape): code jury (pas de note en BUT);
|
|
||||||
- les décisions RCUEs (niveaux de compétences) [**note: pas encore disponible en
|
|
||||||
ScoDoc 9.4.x** : personne ne l'a demandé !].
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Interfaces ScoDoc / Apogée](ScoDocApogee.md)
|
|
||||||
- [Le Bachelor Universitaire de Technologie (BUT)](BUT.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,79 +0,0 @@
|
|||||||
# Capitalisation des Unités d'Enseignement en BUT
|
|
||||||
|
|
||||||
## Principe général
|
|
||||||
|
|
||||||
Une formation est constituée d'une succession de semestres (dans ScoDoc un
|
|
||||||
"semestre" peut avoir une durée quelconque, mais pour le BUT ce sont de vrais
|
|
||||||
semestres), eux-mêmes divisés en Unités d'Enseignement (UEs).
|
|
||||||
|
|
||||||
Les UEs sont constituées de modules (ressources et SAÉs en BUT). Les UEs sont
|
|
||||||
*capitalisables* et associées à des crédits académiques (ECTS). Lorsqu'un
|
|
||||||
étudiant interrompt ses études ou redouble, il conserve ses UEs capitalisées.
|
|
||||||
|
|
||||||
ScoDoc prend en compte cela par différents mécanismes:
|
|
||||||
|
|
||||||
- lorsqu'un étudiant redouble dans la même formation, ses UEs capitalisées sont
|
|
||||||
automatiquement prises en compte. L'étudiant peut choisir de refaire une UE
|
|
||||||
capitalisée. Dans ce cas, ScoDoc prendra automatiquement en compte celle ayant
|
|
||||||
la meilleure note. Il peut aussi choisir de ne pas refaire cette UE (voir plus
|
|
||||||
loin).
|
|
||||||
- Il arrive que les programmes évoluent d'une année sur l'autre (changement de
|
|
||||||
version, réformes). ScoDOc permet d'indiquer si des UEs de différents
|
|
||||||
programmes sont équivalentes et peuvent se capitaliser.
|
|
||||||
- Enfin, ScoDoc permet d'enregistrer la validation d'une UE obtenue par ailleurs
|
|
||||||
(par exemple dans un autre établissement suite à un transfert, à l'étranger,
|
|
||||||
etc.).
|
|
||||||
|
|
||||||
## Formations ScoDoc et UEs
|
|
||||||
|
|
||||||
Chaque UE possède un code interne ScoDoc que l'on peut modifier via la page
|
|
||||||
d'édition des programmes:
|
|
||||||
|
|
||||||
<img src="/screens/ue-edit-code.png" width="70%"
|
|
||||||
alt="Modification du code interne d'une UE">
|
|
||||||
|
|
||||||
On peut utiliser un code quelconque, y compris celui donné dans un autre
|
|
||||||
logiciel comme Apogée. En bas de cette même page, ScoDoc affiche la liste des
|
|
||||||
UEs ayant le même code, afin de vérifier facilement la compatibilité:
|
|
||||||
|
|
||||||
<img src="/screens/ue-edit-code-equiv.png" width="70%"
|
|
||||||
alt="UEs partageant le même code">
|
|
||||||
|
|
||||||
Ne pas confondre ce code d'UE interne avec le code Apogée, qui n'est utilisé que pour
|
|
||||||
les exports de résultats.
|
|
||||||
|
|
||||||
## Exemple BUT avec UE capitalisée
|
|
||||||
|
|
||||||
Soit une formation BUT, ici R&T, avec 3 UE. Certaines ressources (comme R101) sont communes à
|
|
||||||
deux ou trois UEs.
|
|
||||||
|
|
||||||
<img src="/fig/but-uescap-coefs.png" width="25%">
|
|
||||||
|
|
||||||
L'étudiant "Mael REDOUBLE" a redoublé sa première année, mais avait capitalisé
|
|
||||||
l'UE 1 de S1. Son parcours s'affiche ainsi:
|
|
||||||
|
|
||||||
<img src="/fig/but-uescap-fiche.png" width="60%">
|
|
||||||
|
|
||||||
Son bulletin montre l'UE 1 actuelle (moyenne 8,32/20) et celle capitalisée
|
|
||||||
(moyenne 10,36/20):
|
|
||||||
<img src="/fig/but-uescap-bul-avant.png" width="70%">
|
|
||||||
|
|
||||||
Il décide de ne pas refaire cette UE1. Pour cela, on le désinscrit de l'UE (menu
|
|
||||||
**Inscriptions** / **Gérer les inscriptions aux UEs et modules**).
|
|
||||||
|
|
||||||
<img src="/fig/but-uescap-desincr.png" width="40%">
|
|
||||||
|
|
||||||
Maintenant, son UE1 capitalisée apparait seule sur son bulletin.
|
|
||||||
|
|
||||||
Dans cet exemple, la ressource `R101` (commune) est rattachée à l'UE 1 (mais ce
|
|
||||||
rattachement technique n'a pas de conséquences pratiques). L'étudiant reste bien
|
|
||||||
sûr inscrit à `R101` (et doit suivre ses cours), puisque cette ressource
|
|
||||||
intervient dans les autres UE non capitalisées.
|
|
||||||
|
|
||||||
S'il y a des ressources dont les notes ne contribuent qu'à l'UE1, l'étudiant
|
|
||||||
peut ne pas les suivre: il faut alors le désincrire sélectivement au niveau du
|
|
||||||
tableau de bord module.
|
|
||||||
|
|
||||||
C'est dans cet exemple le cas pour la SAÉ `SAE11`.
|
|
||||||
|
|
||||||
<img src="/fig/but-uescap-inscrmodule.png" width="30%">
|
|
@ -1,83 +0,0 @@
|
|||||||
# Codes jury en Bachelor Universitaire de Technologie (BUT)
|
|
||||||
|
|
||||||
Les tableaux ci-dessous récapitulent les codes utilisés lors des jurys BUT. La
|
|
||||||
signification de chaque code est expliquée, ainsi que la correspondance avec
|
|
||||||
certains codes préconisés par l'AMUE et l'ADIUT pour Apogée.
|
|
||||||
|
|
||||||
## Codes d'année
|
|
||||||
|
|
||||||
*Les codes d'année BUT sont associés à la formation et non au semestre: on ne
|
|
||||||
valide qu'une seule fois BUT1, BUT2 puis BUT3.*
|
|
||||||
|
|
||||||
| ScoDoc | AMUE | Signification |
|
|
||||||
|--------|------|---------------|
|
|
||||||
| `ABAN` | `ABAN` | ABANdon constaté (sans lettre de démission) |
|
|
||||||
| `ABL` | `ABL` | Année Blanche |
|
|
||||||
| `ADM` | | Admis |
|
|
||||||
| `ADJ` | | Admis par décision jury |
|
|
||||||
| `ATJ` | `nd` | Non validé pour une autre raison, voir règlement local |
|
|
||||||
| `DEF` | | (défaillance) Non évalué par manque assiduité |
|
|
||||||
| `DEM` | | Démission |
|
|
||||||
| `EXCLU`| `EXC` | EXClusion, décision réservée à des décisions disciplinaires |
|
|
||||||
| `NAR` | `REO` | Non admis, réorientation |
|
|
||||||
| `PAS1NCI`| `PAS1NCI` | Non admis, mais passage par décision de jury (Passage en Année Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE<8)) |
|
|
||||||
| `PASD` | `PASD` | Non admis, mais passage de droit |
|
|
||||||
| `RAT` | | En attente d’un rattrapage |
|
|
||||||
| `RED` | `RED` | Ajourné, mais autorisé à redoubler |
|
|
||||||
|
|
||||||
|
|
||||||
## Codes RCUE (niveaux de compétences annuels)
|
|
||||||
|
|
||||||
*Les codes de RCUE sont associés à la formation: chaque niveau de compétence est
|
|
||||||
validé une fois au maximum. En cas de redoublement, le code RCUE peut changer.*
|
|
||||||
|
|
||||||
| ScoDoc | AMUE | Signification |
|
|
||||||
|--------|------|---------------|
|
|
||||||
| `ABAN` | | Non évalué pour manque assiduité |
|
|
||||||
| `ADM` | `VAL`| Acquis |
|
|
||||||
| `ADJ` | `CODJ`| Acquis par décision du jury |
|
|
||||||
| `ADSUP`| | Acquis parce que le niveau de compétence supérieur est acquis |
|
|
||||||
| `AJ` | `AJ` | Attente pour problème de moyenne |
|
|
||||||
| `ATJ` | `nd` | Non validé pour une autre raison, voir règlement local |
|
|
||||||
| `CMP` | | Acquis par compensation annuelle |
|
|
||||||
| `DEF` | | Défaillant |
|
|
||||||
| `RAT` | | En attente d’un rattrapage |
|
|
||||||
|
|
||||||
|
|
||||||
## Codes des Unités d'Enseignement (UE)
|
|
||||||
|
|
||||||
Les codes d'UE sont associés aux UE d'un semestre. En cas de redoublement,
|
|
||||||
l'UE antérieure garde son code, non écrasé par le redoublement. Chaque UE suivie a son code.
|
|
||||||
|
|
||||||
| ScoDoc | AMUE | Signification |
|
|
||||||
|---------|------|---------------|
|
|
||||||
| `ABAN` | `ABAN` | Non évalué pour manque d’assiduité Non présentation des notes de l’étudiant au jury |
|
|
||||||
| `ADM` | `VAL` | Acquis (ECTS acquis, UE capitalisée) |
|
|
||||||
| `ADJ` | | Acquis par décision de jury (ECTS acquis) |
|
|
||||||
| `ADJR` | | Acquis par décision de jury sur le RCUE (ECTS acquis) |
|
|
||||||
| `ADSUP` | | Acquis parce que le niveau de compétence supérieur est acquis |
|
|
||||||
| `AJ` | `AJ` | Attente pour problème de moyenne |
|
|
||||||
| `ATJ` | `nd` | Non validé pour une autre raison, voir règlement local |
|
|
||||||
| `CMP` | `COMP`| Acquis par compensation UE compensée avec l’UE de même compétence et de même année (ECTS acquis) |
|
|
||||||
| `DEF` | `ABAN`| Défaillant Pas ou peu de notes par arrêt de la formation |
|
|
||||||
| `DEM` | | Démission |
|
|
||||||
| `RAT` | | En attente d’un rattrapage |
|
|
||||||
| `UEBSL` | `UEBSL`| UE blanchie |
|
|
||||||
|
|
||||||
## Rappels de l'arrêté BUT (extraits)
|
|
||||||
|
|
||||||
- Au sein de chaque regroupement cohérent d’UE, la compensation est intégrale. Si une UE n’a pas été acquise en raison d’une moyenne inférieure à 10, cette UE sera acquise par compensation si et seulement si l’étudiant a obtenu la moyenne au regroupement cohérent auquel l’UE appartient.
|
|
||||||
- La poursuite d'études dans un semestre pair d’une même année est de droit pour tout étudiant. La poursuite d’études dans un semestre impair est possible _si et seulement si_ l’étudiant a obtenu :
|
|
||||||
- la moyenne à plus de la moitié des regroupements cohérents d’UE
|
|
||||||
- et une moyenne égale ou supérieure à 8 sur 20 à chaque regroupement cohérent d’UE.
|
|
||||||
- La poursuite d'études dans le semestre 5 nécessite de plus la validation de toutes les UE des semestres 1 et 2 dans les conditions de validation des points 4.3 et 4.4, ou par décision de jury.
|
|
||||||
|
|
||||||
### Textes de référence
|
|
||||||
|
|
||||||
- [Bulletin officiel spécial n°4 du 26 mai 2022](https://www.enseignementsup-recherche.gouv.fr/fr/bo/21/Special4/ESRS2114777A.htm)
|
|
||||||
- [Version pdf de l'arrêté de mai 2022 sur la licence professionnelle « bachelor universitaire de technologie »](https://cache.media.education.gouv.fr/file/SP4-MESRI-26-5-2022/10/0/spe617_annexe1_1426100.pdf)
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Le BUT](BUT.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,211 +0,0 @@
|
|||||||
# Modélisation BUT: exemple de la spécialité Informatique
|
|
||||||
|
|
||||||
Le BUT Informatique possède quatre parcours basés sur six compétences. Les
|
|
||||||
parcours se différencient en BUT3 (S5/S6) par des approfondissements différents
|
|
||||||
de certaines compétences, comme on le voit ici:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-niveaux-parcours.png" width="70%"
|
|
||||||
alt="Niveaux de compétences des parcours du BUT Informatique">
|
|
||||||
|
|
||||||
Les coefficients des ressources et SAÉs en BUT sont définis localement par les
|
|
||||||
établissement, ainsi que les crédits ECTS associés aux UE.
|
|
||||||
|
|
||||||
Cette page détaille un exemple de mise en place d'un BUT Info. Cette
|
|
||||||
configuration est plus complexe que le cas d'une spécialité typique de BUT: on
|
|
||||||
va supposer que les coefficients d'une même ressource varient suivant le
|
|
||||||
parcours suivi par l'étudiant, et que les ECTS d'une même UE dépendent parfois
|
|
||||||
du parcours.
|
|
||||||
|
|
||||||
Après mise en place de la formation, nous allons créer les semestres, y inscrire
|
|
||||||
les étudiants et ternir un jury.
|
|
||||||
|
|
||||||
## Saisir ou importer le programme de formation
|
|
||||||
|
|
||||||
Avant toute chose, il faut saisir le programme pédagogique de la formation. On
|
|
||||||
peut souvent l'importer en demandant à des collègues d'autres IUT sur le Discord
|
|
||||||
assistance ScoDoc, ou à son ACD. le fichier importé sera alors modifié pour
|
|
||||||
refléter son adaptation locale.
|
|
||||||
|
|
||||||
Ensuite, **associer ce programme au référentiel de compétence du BUT Info**:
|
|
||||||
|
|
||||||
## Associer la formation à son référentiel de compétences
|
|
||||||
|
|
||||||
<img src="/screens/but-info-assoc-refcomp.png" width="50%">
|
|
||||||
|
|
||||||
Les référentiels officiels sont fournis par ScoDoc:
|
|
||||||
|
|
||||||
<img src="/screens/but-choix-refcomp.png" width="50%">
|
|
||||||
|
|
||||||
## Associer les UE à des parcours
|
|
||||||
|
|
||||||
Une UE peut intervenir dans un ou plusieurs parcours. Par défaut, elle
|
|
||||||
intervient dans *tous les parcours*. Un étudiant inscrit à un parcours devra
|
|
||||||
valider toutes les UEs de celui-ci. Il est donc fondamental de bien indiquer dans
|
|
||||||
quels parcours intervient une UE.
|
|
||||||
|
|
||||||
Pour cela, passer par le formulaire d'édition de l'UE:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-edit-ue.png" width="50%">
|
|
||||||
|
|
||||||
et cliquer sur le ou les parcours:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-choix-ue-parcours.png" width="50%">
|
|
||||||
|
|
||||||
Ici l'UE 45, compétence *Conduire*, n'existe que dans les parcours C et D.
|
|
||||||
|
|
||||||
Faire de même pour toutes les UEs de la formation qui ne sont pas identiques
|
|
||||||
dans tous les parcours.
|
|
||||||
|
|
||||||
Pour le S4 du BUT Info, cela pourrait donner:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-ues-S4.png" width="100%">
|
|
||||||
|
|
||||||
où l'on a dupliqué l'UE41 afin de lui affecter des coefficients différents dans
|
|
||||||
les parcours A et B. Notez que dans cet exemple, l'UE46 est commune et identique
|
|
||||||
dans tous les parcours.
|
|
||||||
|
|
||||||
De même, pour le S6, version simplifiée sans UE spécifiques:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-ues-S6.png" width="100%">
|
|
||||||
|
|
||||||
## Remarque: nommer les UEs
|
|
||||||
|
|
||||||
!!! note "Bien nommer les UEs !"
|
|
||||||
Prenez soin de nommer correctement et uniformément vos UEs, c'est
|
|
||||||
important pour obtenir de beaux relevés de notes et PV de jurys.
|
|
||||||
|
|
||||||
- pas de redondance: le titre de l'UE ne doit pas reprendre
|
|
||||||
l'acronyme, et il est inutile d'indiquer le parcours ou autre infos déjà présentes par ailleurs;
|
|
||||||
- acronymes uniformes: `UE41` pour la première UE du S4;
|
|
||||||
- le plus simple en BUT est de reprendre le nom (éventuellement abrégé) de la compétence.
|
|
||||||
|
|
||||||
<img src="/screens/but-info-choisir-nom-ue.png" width="50%">
|
|
||||||
|
|
||||||
## Associer les UE et les niveaux de compétences
|
|
||||||
|
|
||||||
Chaque niveau de compétence (1, 2 ou 3) correspond à une année, donc à deux UEs
|
|
||||||
consécutives. Il faut indiquer à ScoDoc le niveau de compétence associé à
|
|
||||||
chacune des UEs.
|
|
||||||
|
|
||||||
Pour cela, cliquer sur un parcours:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-choix-parcours.png" width="50%">
|
|
||||||
|
|
||||||
ce qui permet de visualiser l'ensemble des UEs et compétences du programme:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-parcours-formation.png" width="75%">
|
|
||||||
|
|
||||||
et d'associer une UE à chaque niveau de compétence:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-choix-ue-niveau.png" width="75%">
|
|
||||||
|
|
||||||
Le symbole <img src="/screens/but-info-symbole-tc.png" width="20px" alt="TC">
|
|
||||||
(TC) désigne les niveaux du tronc commun (c'est à dire présents dans tous les
|
|
||||||
parcours de la spécialité).
|
|
||||||
|
|
||||||
Notez qu'une UE ne peut être associée qu'à un seul niveau de compétences (mais
|
|
||||||
chaque niveau peut-être en relation avec plusieurs UE, de parcours ou programme
|
|
||||||
différents).
|
|
||||||
|
|
||||||
### Parcours A
|
|
||||||
|
|
||||||
Après édition, le parcours A ressemble à ceci:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-parcours-A.png" width="75%">
|
|
||||||
|
|
||||||
Remarques:
|
|
||||||
|
|
||||||
- Pas d'UEs en compétences *Administrer*, *Gérer* et *Conduire* car dans ce
|
|
||||||
parcours elles s'arrêtent au niveau 2.
|
|
||||||
|
|
||||||
- UE5.2 et UE6.2 spécifiques au parcours A car on veut y indiquer des
|
|
||||||
coefficients et ECTS spécifiques: nous les avons nommées `UE5.2-A` et
|
|
||||||
`UE6.2-A`.
|
|
||||||
|
|
||||||
## Parcours B
|
|
||||||
|
|
||||||
On fait la même chose pour le parcours B.
|
|
||||||
Pour changer de parcours, cliquer sur les boutons au dessus:
|
|
||||||
<img src="/screens/but-info-but-parcours.png" width="30%">
|
|
||||||
|
|
||||||
Les niveaux de tronc commun sont déjà associés. Dans certains cas (UE
|
|
||||||
spécifiques à un parcours, on doit changer l'association). Bien vérifier
|
|
||||||
l'ensemble avant de poursuivre !
|
|
||||||
|
|
||||||
## ECTS par parcours
|
|
||||||
|
|
||||||
Dans la plupart des cas, le nombre de crédits ECTS d'une UE est constant. Néanmoins,
|
|
||||||
certaines spécialités ou établissement, on peut vouloir le faire varier selon le
|
|
||||||
parcours. Une solution serait de dupliquer l'UE (comme on le fait pour décliner
|
|
||||||
les coefficients), mais il est plus simple de déclarer les ECTS dans chaque
|
|
||||||
parcours:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-ue-lien-ects.png" width="40%">
|
|
||||||
|
|
||||||
<img src="/screens/but-info-ects-parcours.png" width="40%">
|
|
||||||
|
|
||||||
## Coefficients des ressources et SAÉs
|
|
||||||
|
|
||||||
Imaginons qu'en S4, la ressource `R4.01` ait le coefficient 14 vers l'UE41 dans
|
|
||||||
le parcours A, mais le coefficient 23 dans le parcours B. Nous avons vu plus
|
|
||||||
haut que nous avions créé une UE par parcours, `UE41-A` et `UE41-B`. reste à
|
|
||||||
leur attribuer leurs coefficients via le formulaire habituel:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-edit-coefs-S4.png" width="40%">
|
|
||||||
|
|
||||||
L'intérêt de cette approche est qu'on a une seule ressource pour les deux
|
|
||||||
parcours, ce qui simplifie la saisie et le suivi des évaluations et des notes.
|
|
||||||
Bien sûr, si la ressource était pédagogiquement distincte dans les deux parcours
|
|
||||||
(activités différentes, examens spécifiques...) il serait préférable de créer
|
|
||||||
deux versions de la ressources (par exemple `R4.01-A`et `R4.01-B`).
|
|
||||||
|
|
||||||
## Mise en place des semestres
|
|
||||||
|
|
||||||
La création des semestres ne présentent aucune particularité dans ce cas. Il
|
|
||||||
faut juste indiquer les parcours proposés dans le semestre. Dans notre exemple:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-sem-parcours-A-B.png" width="50%">
|
|
||||||
|
|
||||||
Remarque: si la spécialité n'a que des compétences communes dans ce semestre
|
|
||||||
(tronc commun, fréquent en BUT1), *ne pas cocher de parcours*.
|
|
||||||
|
|
||||||
## Affectation des étudiants aux parcours
|
|
||||||
|
|
||||||
Nous supposons dans la suite que nous avons les deux parcours A et B dans notre
|
|
||||||
département, les étudiants des deux parcours étant dans les mêmes semestres
|
|
||||||
ScoDoc. Les ressources et coefficients proposés sont là pour illustrer et ne
|
|
||||||
correspondent pas à la réalité.
|
|
||||||
|
|
||||||
On affecte les étudiants aux parcours grâce à l'éditeur de groupes et partitions
|
|
||||||
(accessible via le menu **Groupes**): la partition nommée *parcours* est
|
|
||||||
spéciale et est utilisée par ScoDoc pour savoir à quel parcours appartient
|
|
||||||
l'étudiant.
|
|
||||||
|
|
||||||
Dans l'exemple ci-dessous, on a deux étudiants dans chaque parcours A et B:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-groupes-parcours.png" width="75%">
|
|
||||||
|
|
||||||
## Inscriptions des étudiants aux modules de leurs parcours
|
|
||||||
|
|
||||||
Il faut que chaque étudiant soit inscrit aux modules (ressources ou SAÉs) de
|
|
||||||
tronc commun, à et à ceux spécifiques à son parcours. Pour cela, on passe par le
|
|
||||||
menu "**Inscriptions / Gérer les inscriptions aux UEs et modules**".
|
|
||||||
|
|
||||||
Dans chaque module, on peut régler les inscriptions:
|
|
||||||
|
|
||||||
<img src="/screens/but-info-inscr-module.png" width="30%">
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Le BUT: détails et calculs](BUT.md)
|
|
||||||
- [Guide du responsable de formation](GuideAdminFormation/md)
|
|
||||||
- [Programmes de formation](Formations.md)
|
|
||||||
- [Référentiel de compétence du BUT](BUTReferentielCompetences.md)
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
|
|
||||||
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
|
|
||||||
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
|
|
||||||
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
|
|
||||||
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,70 +0,0 @@
|
|||||||
# Le référentiel de compétence du BUT
|
|
||||||
|
|
||||||
Chaque spécialité de BUT est définie par un référentiel de compétence et un
|
|
||||||
référentiel de formation. Ces documents sont publiés ici:
|
|
||||||
[https://www.enseignementsup-recherche.gouv.fr/fr/bo/21/Special4/ESRS2114777A.htm](https://www.enseignementsup-recherche.gouv.fr/fr/bo/21/Special4/ESRS2114777A.htm)
|
|
||||||
|
|
||||||
Le référentiel de compétence définit notamment les compétences et leurs niveaux
|
|
||||||
pour chaque parcours de la spécialité. Ce document publié par le ministère ne
|
|
||||||
peut pas être modifié par les universités: les adaptations portent uniquement
|
|
||||||
sur les modalités de formation (adaptations locales du référentiel de formation,
|
|
||||||
validées par le CFVU de chaque établissement).
|
|
||||||
|
|
||||||
ScoDoc propose de charger les référentiels de compétences, qui ont été publiés
|
|
||||||
en format XML par l'application Orébut de l'ADIUT.
|
|
||||||
|
|
||||||
Une fois chargées, ces données ne sont pas modifiables.
|
|
||||||
|
|
||||||
## Formation et référentiel de compétences
|
|
||||||
|
|
||||||
Rappel: dans ScoDoc, on appelle *formation* le programme pédagogique, qui
|
|
||||||
définit l'ensemble des UEs, ressources, SAÉs et leurs coefficients respectifs.
|
|
||||||
Voir détails [sur la page Formation](Formations.md).
|
|
||||||
|
|
||||||
Un formation de type BUT *doit* être associée à un référentiel de compétence.
|
|
||||||
Sans cela, ScoDoc ne sait pas quels UEs et RCUEs doivent être validés. Voir
|
|
||||||
détail de la configuration sur la page
|
|
||||||
[Modélisation BUT: exemple de la spécialité Informatique](BUTExempleInfo.md).
|
|
||||||
|
|
||||||
## Changement de versions du référentiel de compétences
|
|
||||||
|
|
||||||
Il peut arriver que le référentiel de compétences d'une spécialité soit mis à
|
|
||||||
jour: ainsi, en 2023 de nouvelles versions ont été publiées pour de nombreuses
|
|
||||||
spécialités, corrigeant certains détails (intitulés de parcours, ...).
|
|
||||||
|
|
||||||
Les étudiants ayant commencé dans un référentiel devraient en principe continuer
|
|
||||||
jusqu'au diplôme avec ce même référentiel.
|
|
||||||
|
|
||||||
Exemple de situation en Septembre 2023:
|
|
||||||
|
|
||||||
- S1 : formation v2, référentiel 2023
|
|
||||||
- S3 : formation v1, référentiel 2021
|
|
||||||
- S5 : formation v1, référentiel 2021
|
|
||||||
|
|
||||||
Ici "formation v2" aura été créé comme une nouvelle version de la formation v1,
|
|
||||||
puis associée au nouveau référentiel.
|
|
||||||
|
|
||||||
Si toutefois le S3 était associé à la v2, avec le nouveau référentiel, ScoDoc
|
|
||||||
considérait que les RCUEs du BUT1 ne sont pas valides pour la nouvelle version:
|
|
||||||
en effet, RCUEs et compétences sont liés à un référentiel donné.
|
|
||||||
Dans ce cas, il faudrait procéder, pour chaque étudiant, à la validation
|
|
||||||
manuelle de ses RCUEs du nouveau référentiel comme des validation de RCUEs
|
|
||||||
"antérieurs". C'est heureusement facile à faire sur la page de suivi de
|
|
||||||
l'acquisition des niveaux de compétences:
|
|
||||||
|
|
||||||
<img src="/screens/but-validation-rcues.png" width="50%">
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Le BUT: détails et calculs](BUT.md)
|
|
||||||
- [Guide du responsable de formation](GuideAdminFormation/md)
|
|
||||||
- [Programmes de formation](Formations.md)
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
|
|
||||||
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
|
|
||||||
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
|
|
||||||
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
|
|
||||||
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,315 +0,0 @@
|
|||||||
|
|
||||||
# Mise en œuvre de Bonus/Malus sur les notes
|
|
||||||
|
|
||||||
Scodoc permet l'application de bonus/malus sur les moyennes générales (formation
|
|
||||||
non BUT) et/ou les moyennes d'UE. Il existe deux mécanismes complémentaires pour
|
|
||||||
cela:
|
|
||||||
|
|
||||||
## Les bonus sport/culture
|
|
||||||
|
|
||||||
Le bonus sport/culture permet de calculer un modificateur sur la moyenne
|
|
||||||
générale (formations non BUT) ou sur chacune des UE (BUT). La valeur du bonus
|
|
||||||
est calculée à partir d'un note sur 20 et au moyen d'une formule propre à chaque
|
|
||||||
IUT.
|
|
||||||
|
|
||||||
## Les modules de malus
|
|
||||||
|
|
||||||
Il est fréquent d'introduire des pénalités ou *malus* sur les moyennes calculées
|
|
||||||
à partir des notes. Par exemple, dans certains établissements, l'absence de
|
|
||||||
l'étudiant à des activités obligatoires peut entrainer des points de pénalités.
|
|
||||||
Inversement, certaines activités facultatives pourraient donner lieu à des
|
|
||||||
bonifications.
|
|
||||||
|
|
||||||
|
|
||||||
Pour gérer cela ScoDoc propose de déclarer des modules de *malus*: les notes de
|
|
||||||
malus sont directement *soustraites* à la moyenne générale de l'UE à laquelle
|
|
||||||
elles appartiennent. Contrairement aux
|
|
||||||
notes ordinaires dans ScoDoc, les notes de malus sont toujours comprises entre
|
|
||||||
-20 et +20. Une note de malus de 1 va diminuer la moyenne de l'UE de 1. Une note
|
|
||||||
négative augmenterait cette moyenne. Les moyennes d'UE sont toujours comprises
|
|
||||||
entre 0 et 20: si l'application du malus donne une note supérieure à 20 (ou
|
|
||||||
inférieure à zéro), elle est ramenée à 20 (ou à zéro).
|
|
||||||
|
|
||||||
- A la différence du bonus sport/culture, ces modifications ne portent pas
|
|
||||||
uniformément sur la totalité des UEs. Si on veut que le malus s'applique à
|
|
||||||
plusieurs UE, il faudra créer plusieurs modules de malus.
|
|
||||||
|
|
||||||
- De plus, aucune formule n'est implémentée et on saisira directement la valeur
|
|
||||||
du malus (ou bonus)
|
|
||||||
|
|
||||||
- Les valeurs saisies ne sont pas affichées telles quelles sur les bulletins.
|
|
||||||
Seule la somme des modificateurs est affichée (à coté de l'UE sur laquelle
|
|
||||||
elle porte)
|
|
||||||
|
|
||||||
- Il est possible de décrire plusieurs évaluations (donc plusieurs saisies):
|
|
||||||
c'est la moyenne (non pondérée) des valeurs de malus qui sera appliquée à l'UE.
|
|
||||||
|
|
||||||
- La valeur saisie peut être négative (et donnera alors un bonus);
|
|
||||||
l'affichage est mis à jour en conséquence. C'est donc la possibilité
|
|
||||||
d'inclure un bonus donc la valeur n'est pas calculée par la formule
|
|
||||||
configurée (cf. [Intégration de la formule](#intégration-de-la-formule)).
|
|
||||||
|
|
||||||
## Comparatif bonus/malus
|
|
||||||
|
|
||||||
Le tableau ci-dessous résume les différences entre les bonus sport/culture et
|
|
||||||
les modules de malus.
|
|
||||||
|
|
||||||
| Critère | Bonus Sport/culture | Module de Malus |
|
|
||||||
|:-------------------------------------|:--------------------------------------------------|:-------------------------------------------|
|
|
||||||
| **Structure** | UE Spécifique et modules (type standard) attachés | Module spécifique (type malus) |
|
|
||||||
| **Valeur du bonus/malus** | Calculé à partir d'une note | Saisie directe |
|
|
||||||
| **Application sur toutes les UE** | Automatique | Autant de modules que d'UE modifiées |
|
|
||||||
| **Application sur une seule UE** | Impossible | Un module par UE modifiée | |
|
|
||||||
| **Modification** | Bonus seulement | Malus ou Bonus |
|
|
||||||
| **Affichage** | Affichage du bonus et du détail | Affichage du bonus/malus seulement |
|
|
||||||
| **Cumul de plusieurs modificateurs** | voir [les remarques](#remarques) | Déclarer une évaluation par type de modif. |
|
|
||||||
|
|
||||||
## Bonus Sport & Culture
|
|
||||||
|
|
||||||
### Intégration de la règle de calcul
|
|
||||||
|
|
||||||
Il faut tout d'abord régler ScoDoc pour utiliser la formule propre à votre
|
|
||||||
établissement. Cela est fait une fois pour toutes et pour tous les départements
|
|
||||||
et affectera les semestres pour lesquels un bonus sport est utilisé.
|
|
||||||
|
|
||||||
Pour cela l'administrateur du site (lui seul y est autorisé) doit aller sur la
|
|
||||||
page de configuration de Scodoc (bandeau en haut de la page d'accueil)
|
|
||||||
|
|
||||||
![configuration](screens/BonusMalus_01.png)
|
|
||||||
|
|
||||||
puis, dans la section '`Calcul des "bonus" définis par l'établissement`', sélectionner
|
|
||||||
l'établissement dans le dans le menu déroulant.
|
|
||||||
|
|
||||||
![choix-bonus-sport](screens/BonusMalus_02.png)
|
|
||||||
|
|
||||||
Si l'établissement n'apparaît pas:
|
|
||||||
|
|
||||||
1. L'item '`Bonus "Direct"`' permet de saisir directement la valeur du
|
|
||||||
modificateur (après un calcul préalable hors scodoc)
|
|
||||||
|
|
||||||
2. Vous pouvez demander la création de la formule spécifique à votre
|
|
||||||
établissement sur le serveur discord en précisant:
|
|
||||||
- Le nom de votre établissement,
|
|
||||||
- l'extrait du règlement intérieur qui décrit cette bonification, (celui ci
|
|
||||||
apparaîtra dans l'encadré explicatif)
|
|
||||||
- Quelques cas d'usages (pour les tests)
|
|
||||||
|
|
||||||
### Ajout d'UE Sport/culture
|
|
||||||
|
|
||||||
#### Bonus sport/culture
|
|
||||||
|
|
||||||
L'opération suivante consiste à ajouter dans le programme l'UE Sport/Culture.
|
|
||||||
|
|
||||||
1. Éditer la formation. Pour cela vous pouvez passer par le menu `SEMESTRE >
|
|
||||||
Voir la formation...` (ceci permet d'aller dans le programme associé au
|
|
||||||
semestre.
|
|
||||||
|
|
||||||
2. Ajouter une UE 'Sport/Culture',
|
|
||||||
- Donner un titre (en y incluant le semestre visé - toutes les UEs d'une
|
|
||||||
formation doivent avoir leur propre nom et il y aura aussi probablement
|
|
||||||
des UE sport pour les autres semestres)
|
|
||||||
- Idem pour l'acronyme
|
|
||||||
- Choisissez le Type `Sport/Culture (points bonus)`
|
|
||||||
- Indiquez 0 ECTS (obligatoire bien que cette valeur n'ait pas d'importance)
|
|
||||||
![ajout-UE-sport](screens/BonusMalus_03.png)
|
|
||||||
|
|
||||||
3. Ajouter un module à l'UE sport et l'attacher à l'UE Sport du semestre
|
|
||||||
Attention ! ce module est un module standard (pas un module de malus, ni une
|
|
||||||
ressource, ni une SAÉ) ![module-sport](screens/BonusMalus_04.png)
|
|
||||||
|
|
||||||
## Modules de Malus
|
|
||||||
|
|
||||||
Il faut ajouter à la formation un ou plusieurs modules de malus. Le module est
|
|
||||||
rattaché à une UE et modifiera la moyenne de cette UE.
|
|
||||||
|
|
||||||
1. Entrer dans le semestre,
|
|
||||||
|
|
||||||
2. activer le menu `SEMESTRE > Modifier le semestre`
|
|
||||||
![modifier-le-semestre](screens/BonusMalus_05.png)
|
|
||||||
|
|
||||||
A ce niveau, vous pouvez soit:
|
|
||||||
|
|
||||||
- ajouter les modules malus en une seule fois pour toutes les UEs par le lien
|
|
||||||
`ajouter un module de malus dans chaque UE su S...`
|
|
||||||
![ajout-global-malus](screens/BonusMalus_11.png)
|
|
||||||
|
|
||||||
- Ou, si une des UEs ne demande pas l'application d'un malus, ajouter seulement
|
|
||||||
les modules nécessaires en les créant un par un:
|
|
||||||
![ajout-simple-malus](screens/BonusMalus_12.png) en précisant le type `Malus`
|
|
||||||
et en l'attachant à l'UE concernée.
|
|
||||||
![ajout-simple-malus-détail](screens/BonusMalus_13.png)
|
|
||||||
|
|
||||||
L'étape [Ajout d'UE et de module
|
|
||||||
Sport/Culture](#ajout-due-sportculture-etou-de-module-de-malus) doit être faite
|
|
||||||
lors de la conception d'un programme, mais n'a pas a être réitérée lors de la
|
|
||||||
création d'une nouvelle version d'un programme avec UE sport.
|
|
||||||
|
|
||||||
Une fois le module créé (et ajouté à un semestre), on peut y déclarer une
|
|
||||||
évaluation et saisir les notes de bonus/malus. Ces notes sont par défaut *à prise
|
|
||||||
en compte immédiate*, auquel cas il n'est pas nécessaire de saisir des notes de malus
|
|
||||||
pour tous les étudiants.
|
|
||||||
|
|
||||||
|
|
||||||
## Application à un semestre
|
|
||||||
|
|
||||||
Quel que soit le type de bonus utilisé, le semestre concerné doit intégrer le
|
|
||||||
ou les modules créés précédemment, que ce soit les modules appartenant à l'UE
|
|
||||||
sport/culture ou les modules de malus.
|
|
||||||
|
|
||||||
Si la création du semestre est postérieur à la modification du programme, ou si
|
|
||||||
le semestre résulte du clonage d'un semestre déjà configuré, les éléments de
|
|
||||||
bonus/malus sont déjà pris en compte et on peut passer directement à la partie
|
|
||||||
[inscription des
|
|
||||||
étudiants](finaliser-linscription-des-étudiants-concernés-si-inscription-sélective)
|
|
||||||
|
|
||||||
Dans le cas contraire (le bonus n'avait pas été prévu au départ et doit être
|
|
||||||
ajouté en cours de semestre) la manipulation suivante permet l'application des
|
|
||||||
éléments de bonus/malus aux au semestre existant:
|
|
||||||
|
|
||||||
### Stratégies d'inscription
|
|
||||||
|
|
||||||
Dans tous les cas de figure, l'objectif est d'inscrire aux modules de
|
|
||||||
bonus/malus au moins les étudiants qui en bénéficient. On a deux stratégies
|
|
||||||
possibles:
|
|
||||||
|
|
||||||
1. Inscription de tous les étudiants du semestre (inscription générale)
|
|
||||||
et attribuer la note `EXC`aux étudiants non concernés. Stratégie à
|
|
||||||
éviter pour le bonus sport/culture afin d'éviter l'affichage d'une
|
|
||||||
section bonus vide dans les bulletins des étudiants non concernés.
|
|
||||||
|
|
||||||
2. N'inscrire que les étudiants concernés (inscription sélective). **Note**: si
|
|
||||||
le bonus sport/culture peut résulter de plusieurs activités (par exemple
|
|
||||||
sport et LV2) on peut tout de même être amené à placer des `EXC`.
|
|
||||||
|
|
||||||
### Application des modifications du programme à un semestre existant
|
|
||||||
|
|
||||||
1. Entrer dans le semestre,
|
|
||||||
|
|
||||||
2. activer le menu `SEMESTRE > Modifier le semestre`
|
|
||||||
![modifier-le-semestre](screens/BonusMalus_05.png)
|
|
||||||
|
|
||||||
3. Les éléments de bonus/malus apparaissent mais ne sont pas activés
|
|
||||||
![activation-module-sport](screens/BonusMalus_06.png)
|
|
||||||
|
|
||||||
4. Activer les modules utilisés et y affecter les étudiants selon la stratégie
|
|
||||||
choisie (inscription générale: tous, inscription sélective: aucun)
|
|
||||||
|
|
||||||
5. Valider les modifications opérées
|
|
||||||
|
|
||||||
### Finaliser l'inscription des étudiants concernés (si inscription sélective)
|
|
||||||
|
|
||||||
**Note**: cette finalisation peut être faite juste avant la saisie des notes de sport.
|
|
||||||
|
|
||||||
1. Se placer dans le module bonus/malus
|
|
||||||
![sélection-module-sport](screens/BonusMalus_07.png)
|
|
||||||
ou
|
|
||||||
![sélection-module-malus](screens/BonusMalus_14.png)
|
|
||||||
|
|
||||||
2. Affiner les inscriptions en cliquant sur le lien de modification:
|
|
||||||
![inscriptions-module-sport](screens/BonusMalus_08.png)
|
|
||||||
|
|
||||||
### Saisie des notes
|
|
||||||
|
|
||||||
- Créer si besoin une évaluation dans le module courant
|
|
||||||
|
|
||||||
- Saisir les notes des étudiants.
|
|
||||||
- Pour un bonus sport/culture : la valeur à saisir (valeur du bonus, note sur
|
|
||||||
20, ...) dépend de la règle de l'établissement.
|
|
||||||
- Pour un module de malus Saisir directement la valeur du *malus* (pour que
|
|
||||||
l'étudiant bénéficie d'un bonus, entrer une valeur négative)
|
|
||||||
|
|
||||||
#### Remarques
|
|
||||||
|
|
||||||
- Le `Bonus "direct"` autorise des bonus de 0 à 20 mais plafonne les notes d'UE à 20
|
|
||||||
- On peut avoir plusieurs évaluations dans le module sport: dans ce cas ScoDoc
|
|
||||||
calcul la note de module comme habituellement (y compris en prenant en
|
|
||||||
compte les éventuels coefficients), puis calcul la valeur du bonus à partir
|
|
||||||
de cette note de module. On ne peut donc pas 'cumuler' (un bonus sport et un
|
|
||||||
bonus LV2 par exemple) par ce biais.
|
|
||||||
- On peut avoir plusieurs modules attachées à l'UE sport. Dans ce cas, ScoDoc
|
|
||||||
calcule le bonus qui produirait chacun de ces modules et les additionne.
|
|
||||||
Dans ce cas, les bonus sont cumulés, mais:
|
|
||||||
|
|
||||||
- Cette méthode n'est applicable que si les formules de calcul de chacun des bonus cumulés sont identiques.
|
|
||||||
|
|
||||||
- Dans tous les cas, les notes d'UE restent plafonnées entre 0 et 20.
|
|
||||||
|
|
||||||
#### Exemple
|
|
||||||
|
|
||||||
On a déclaré dans une UE sport 2 modules:
|
|
||||||
|
|
||||||
- `Sport` alimenté par 2 évaluations (Sport et Autre),
|
|
||||||
|
|
||||||
- `LV2` alimenté par une seule évaluation
|
|
||||||
|
|
||||||
Un étudiant participe aux deux activités et obtient les notes suivantes:
|
|
||||||
![notes-sport-exemple](screens/BonusMalus_09.png)
|
|
||||||
|
|
||||||
Le calcul effectué par ScoDoc est le suivant:
|
|
||||||
|
|
||||||
- Calcul de la moyenne du module `Sport` ( 13.00 (coef. 1) et 10.00 (coef. 2)):
|
|
||||||
résultat : 11.00 soit un bonus de 1 pt x 5% (calcul Villetaneuse) = 0.05 points
|
|
||||||
|
|
||||||
- Calcul de la moyenne `LV2`: 15.00 (une seule note) soit un bonus de 5 points x 5% = 0.25 points
|
|
||||||
|
|
||||||
- Le bonus total sera donc de 0.30 points
|
|
||||||
|
|
||||||
- L'UE1 qui est de base à 19.80 sera donc amenée à 20 (plafond) grâce au bonus de 0.30
|
|
||||||
![notes-sport-exemple-UE1](screens/BonusMalus_10.png)
|
|
||||||
Les autres UE bénéficient du bonus de 0.30 points
|
|
||||||
|
|
||||||
## Affichages
|
|
||||||
|
|
||||||
La forme que prend l'affichage du ou des bonus/malus varie en fonction des circonstances:
|
|
||||||
|
|
||||||
- Aucun bonus/malus
|
|
||||||
|
|
||||||
- Cas 1: Bonus sport/culture uniquement
|
|
||||||
|
|
||||||
- Cas 2: Malus
|
|
||||||
|
|
||||||
- Cas 3: Bonus formulé comme malus négatif
|
|
||||||
|
|
||||||
Les bonus/malus sont affichés principalement sur:
|
|
||||||
|
|
||||||
### Table récapitulative des notes
|
|
||||||
|
|
||||||
Deux colonnes sont affichées pour chaque UE. pour indiquer le bonus
|
|
||||||
sport/culture d'une part et le malus (ou bonus complémentaire) comme indiqué
|
|
||||||
ci-dessous ![Table-des-notes](screens/BonusMalus_15.png)
|
|
||||||
|
|
||||||
### Relevé de notes web d'un étudiant (y compris sur la passerelle)
|
|
||||||
|
|
||||||
La description de l'UE inclut la valeur des bonus et malus (même si nulle) comme
|
|
||||||
indiqué dans les exemple ci-dessous. La moyenne avant altération figure en bas
|
|
||||||
tandis que la valeur supérieure (en gras) affiche la moyenne après bonus/malus
|
|
||||||
(plafonnée si besoin):
|
|
||||||
|
|
||||||
###### Cas 1. aucun bonus malus
|
|
||||||
![relevé-web-cas1](screens/BonusMalus_16.png)
|
|
||||||
###### Cas 2. Bonus sport/culture uniquement
|
|
||||||
![relevé-web-cas2](screens/BonusMalus_17.png)
|
|
||||||
###### Cas 3. Malus
|
|
||||||
![relevé-web-cas3](screens/BonusMalus_18.png)
|
|
||||||
###### Cas 4. Malus négatif
|
|
||||||
![relevé-web-cas4](screens/BonusMalus_19.png)
|
|
||||||
|
|
||||||
### Relevé de notes en version pdf
|
|
||||||
|
|
||||||
###### Cas 1. aucun bonus malus
|
|
||||||
![relevé-pdf-cas1](screens/BonusMalus_20.png)
|
|
||||||
###### Cas 2. Bonus sport/culture uniquement
|
|
||||||
![relevé-pdf-cas2](screens/BonusMalus_21.png)
|
|
||||||
###### Cas 3. Malus
|
|
||||||
![relevé-pdf-cas3](screens/BonusMalus_22.png)
|
|
||||||
###### Cas 4. Malus négatif
|
|
||||||
![relevé-pdf-cas4](screens/BonusMalus_23.png)
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Calcul des notes](CalculNotes.md#bonus-sportculture)
|
|
||||||
- [Tutoriel vidéo: ajouter un bonus sport&culture](https://www.youtube.com/watch?v=SVbjuDpq-lI)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
|
@ -1,133 +1,104 @@
|
|||||||
|
|
||||||
# Édition des bulletins de notes
|
# Edition des bulletins de notes
|
||||||
|
|
||||||
Vous pouvez obtenir les bulletins de notes en différents formats:
|
Vous pouvez obtenir les bulletins de notes en différents formats:
|
||||||
|
|
||||||
* page web
|
* page web
|
||||||
|
|
||||||
* fichier PDF (dit "version papier", car très pratique pour l'impression)
|
* fichier PDF (dit "version papier", car très pratique pour l'impression)
|
||||||
|
|
||||||
|
* données XML (pour interfaçage avec d'autres logiciels, comme par exemple le portail utilisé par les étudiants)
|
||||||
|
|
||||||
|
Vous pouvez aussi générer des classeurs PDF, documents regroupant tous les bulletins des étudiants d'un semestre, c'est utile pour imprimer tous les bulletins ou les archiver.
|
||||||
|
|
||||||
* données JSON ou XML (pour interfaçage avec d'autres logiciels, comme par
|
|
||||||
exemple la "passerelle" utilisée par les étudiants)
|
|
||||||
|
|
||||||
Vous pouvez aussi générer des classeurs PDF, documents regroupant tous les
|
|
||||||
bulletins des étudiants d'un semestre, c'est utile pour imprimer tous les
|
|
||||||
bulletins ou les archiver.
|
|
||||||
|
|
||||||
## Versions courtes, intermédiaires, longues
|
## Versions courtes, intermédiaires, longues
|
||||||
|
|
||||||
Les bulletins sont disponibles en trois versions:
|
Les bulletins sont disponibles en trois versions:
|
||||||
|
|
||||||
* **version courte**: montre les moyennes d'UE et de modules, mais pas les notes des évaluations.
|
* **version courte**: montre les moyennes d'UE et de modules, mais pas les notes des évaluations.
|
||||||
|
|
||||||
|
* **version intermédiaire**: montre les moyennes d'UE et de modules, et certaines évaluations (celles pour lesquelles l'option "Visible sur bulletins en version intermédiaire" est cochée.
|
||||||
|
|
||||||
|
* **version longue**: montre les moyennes d'UE et de modules, et toutes les évaluations.
|
||||||
|
|
||||||
* **version intermédiaire**: montre les moyennes d'UE et de modules, et certaines évaluations (celles pour lesquelles l'option "Visible sur bulletins en version intermédiaire" est cochée.
|
|
||||||
|
|
||||||
* **version longue**: montre les moyennes d'UE et de modules, et toutes les évaluations.
|
|
||||||
|
|
||||||
## Informations sur les bulletins
|
## Informations sur les bulletins
|
||||||
|
|
||||||
Voici un exemple de bulletin en version courte. Dans ce cas, vous constaterez
|
Voici un exemple de bulletin en version courte. Dans ce cas, vous constaterez que les noms abrégés des modules n'ont pas été choisis de façon très pertinente (ils sont redondants et peu compréhensibles). Les noms et codes de modules et d'UE peuvent être changés dans le programme pédagogique.
|
||||||
que les noms abrégés des modules n'ont pas été choisis de façon très pertinente
|
|
||||||
(ils sont redondants et peu compréhensibles). Les noms et codes de modules et
|
|
||||||
d'UE peuvent être changés dans le programme pédagogique.
|
|
||||||
|
|
||||||
![bulletin-info-short.png](screens/bulletin-info-short.png)
|
![bulletin-info-short.png](screens/bulletin-info-short.png)
|
||||||
|
|
||||||
**Note:** les exemples présentés ici correspondent à une version très ancienne
|
|
||||||
de ScoDoc !
|
|
||||||
|
|
||||||
Le bulletin en version longue montre les notes obtenues aux différentes évaluations (contrôles et examens):
|
Le bulletin en version longue montre les notes obtenues aux différentes évaluations (contrôles et examens):
|
||||||
|
|
||||||
![bulletin-info-long.png](screens/bulletin-info-long.png)
|
![bulletin-info-long.png](screens/bulletin-info-long.png)
|
||||||
|
|
||||||
|
|
||||||
Les UE capitalisées (acquises lors des semestres redoublés, [[CapitalisationUE| voir explications ici]]) sont automatiquement prises en compte sur
|
Les UE capitalisées (acquises lors des semestres redoublés, [[CapitalisationUE| voir explications ici]]) sont automatiquement prises en compte sur
|
||||||
les bulletins, comme on le voit dans cet exemple:
|
les bulletins, comme on le voit dans cet exemple:
|
||||||
|
|
||||||
![bulletin-ue-capitalisee-legend.png](screens/bulletin-ue-capitalisee-legend.png).
|
![bulletin-ue-capitalisee-legend.png](screens/bulletin-ue-capitalisee-legend.png).
|
||||||
|
|
||||||
## Choix des informations à afficher
|
|
||||||
|
|
||||||
Le choix des informations affichées sur les bulletins est effectué via des
|
|
||||||
options s'appliquant à tous les bulletins d'un semestre. Seul le responsable du
|
## Choix des informations à afficher
|
||||||
semestre (directeur des études) et les responsables supérieurs peuvent changer
|
Le choix des informations affichées sur les bulletins est effectué via des options s'appliquant à tous les bulletins d'un semestre. Seul le responsable du semestre (directeur des études) et les responsables supérieurs peuvent changer ces options.
|
||||||
ces options.
|
|
||||||
|
|
||||||
Utiliser le menu "Réglages bulletins" depuis le tableau de bord semestre.
|
Utiliser le menu "Réglages bulletins" depuis le tableau de bord semestre.
|
||||||
|
|
||||||
Les options sont:
|
Les options sont:
|
||||||
|
|
||||||
* *indiquer les absences* : indique le nombre d'absences
|
* *indiquer les absences* : indique le nombre d'absences
|
||||||
|
|
||||||
* *faire figurer les décisions* : afficher la décision du jury. Il est conseillé
|
* *faire figurer les décisions* : afficher la décision du jury. Il est conseillé de n'activer cette option qu'après le jury définitif.
|
||||||
de n'activer cette option qu'après le jury définitif.
|
|
||||||
|
|
||||||
* *afficher codes des modules*
|
* *afficher codes des modules*
|
||||||
|
|
||||||
* *afficher le classement dans chaque UE*
|
* *afficher le classement dans chaque UE*
|
||||||
|
|
||||||
* *afficher le classement dans chaque module*
|
* *afficher le classement dans chaque module*
|
||||||
|
|
||||||
* *faire figurer les UE validées sur les bulletins* : code jury des UE
|
* *faire figurer les UE validées sur les bulletins* : code jury des UE
|
||||||
|
|
||||||
* *publier le bulletin sur le portail étudiants*: contrôle l'export XML des
|
* *publier le bulletin sur le portail étudiants*: contrôle l'export XML des bulletins, utilisé par le portail étudiant. Désactiver si vous ne voulez pas que les étudiants puisse lire leurs bulletins.
|
||||||
bulletins, utilisé par le portail étudiant. Désactiver si vous ne voulez pas
|
|
||||||
que les étudiants puisse lire leurs bulletins.
|
|
||||||
|
|
||||||
* *Bannière "provisoire" sur les bulletins*: affiche la mention "Provisoire" (ou
|
* *Bannière "provisoire" sur les bulletins*: affiche la mention "Provisoire" (ou le message saisi) en filigrane
|
||||||
le message saisi) en filigrane.
|
|
||||||
|
|
||||||
* *Bannière "provisoire" si pas de décision de jury*: affiche la mention
|
* *Bannière "provisoire" si pas de décision de jury*: affiche la mention "Provisoire" en filigrane sur les bulletins quand il n'y a pas encore de décision de jury.
|
||||||
"Provisoire" en filigrane sur les bulletins quand il n'y a pas encore de
|
|
||||||
décision de jury.
|
|
||||||
|
|
||||||
* *Texte de la bannière "provisoire*: le texte à afficher en filigrane sur les
|
* *Texte de la bannière "provisoire*: le texte à afficher en filigrane sur les bulletins provisoires.
|
||||||
bulletins provisoires.
|
|
||||||
|
|
||||||
|
|
||||||
## Mise en page des bulletins PDF et autres réglages
|
## Mise en page des bulletins PDF et autres réglages
|
||||||
|
Vous pouvez agir sur la mise en page des bulletins PDF en passant par la page "Réglages des bulletins de notes": suivre en bas de cette page le lien *Réglage de la mise en page et envoi mail des bulletins*.
|
||||||
Vous pouvez agir sur la mise en page des bulletins PDF en passant par la page
|
|
||||||
"Réglages des bulletins de notes": suivre en bas de cette page le lien *Réglage
|
|
||||||
de la mise en page et envoi mail des bulletins*.
|
|
||||||
|
|
||||||
Les paramètres réglables sont:
|
Les paramètres réglables sont:
|
||||||
|
* marges additionnelles, exprimées en millimètres, étant entendu que le tableau de notes est toujours redimensionné pour occuper tout l'espace disponible entre les marges de la feuille, et tenir sur une page (c'est pourquoi un bulletin très long sera écrit plus petit qu'un bulletin court).
|
||||||
|
|
||||||
* marges additionnelles, exprimées en millimètres, étant entendu que le tableau
|
* titre des bulletins (typiquement `Université Paris 13 - IUT de Villetaneuse - Département %(DeptName)s`). Le symbole `%(DeptName)s` est remplacé par le nom du département.
|
||||||
de notes est toujours redimensionné pour occuper tout l'espace disponible
|
|
||||||
entre les marges de la feuille, et tenir sur une page (c'est pourquoi un
|
|
||||||
bulletin très long sera écrit plus petit qu'un bulletin court).
|
|
||||||
|
|
||||||
* titre des bulletins (typiquement `Université Paris 13 - IUT de Villetaneuse -
|
* message texte accompagnant les bulletins envoyés par courrier électronique (mail).
|
||||||
Département %(DeptName)s`). Le symbole `%(DeptName)s` est remplacé par le nom
|
|
||||||
du département.
|
|
||||||
|
|
||||||
* message texte accompagnant les bulletins envoyés par courrier électronique (mail).
|
Les champs des bulletins de notes PDF peuvent être paramétrés assez finement, voir [ParametrageBulletins](ParametrageBulletins.md).
|
||||||
|
Les développeurs peuvent coder (en Python) de nouveaux formats de bulletins. Voir la documentation sur [ApiGenerationBulletinsPdf](ApiGenerationBulletinsPdf.md).
|
||||||
|
|
||||||
Les champs des bulletins de notes PDF peuvent être paramétrés assez finement,
|
|
||||||
voir [ParametrageBulletins](ParametrageBulletins.md). Les développeurs peuvent
|
|
||||||
coder (en Python) de nouveaux formats de bulletins. Voir la documentation sur
|
|
||||||
[ApiGenerationBulletinsPdf](ApiGenerationBulletinsPdf.md).
|
|
||||||
|
|
||||||
## Classeurs PDF
|
## Classeurs PDF
|
||||||
|
Pour générer un fichier PDF regroupant tous les bulletins (une page par bulletin), utiliser le menu "bulletins" du tableau de bord semestre.
|
||||||
Pour générer un fichier PDF regroupant tous les bulletins (une page par
|
|
||||||
bulletin), utiliser le menu "bulletins" du tableau de bord semestre.
|
|
||||||
|
|
||||||
|
|
||||||
## Expédition par mail
|
## Expédition par mail
|
||||||
|
|
||||||
ScoDoc vous permet d'envoyer par courrier électronique un bulletin à un étudiant. Pour cela, l'adresse mail de l'étudiant doit avoir été renseignée et être valide (voir la [FicheEtudiant](FicheEtudiant.md)).
|
ScoDoc vous permet d'envoyer par courrier électronique un bulletin à un étudiant. Pour cela, l'adresse mail de l'étudiant doit avoir été renseignée et être valide (voir la [FicheEtudiant](FicheEtudiant.md)).
|
||||||
|
|
||||||
Le mail contient un petit texte expliquant que le bulletin n'a pas de valeur
|
Le mail contient un petit texte expliquant que le bulletin n'a pas de valeur officielle (seule la version distribuée après le jury fait foi), et le bulletin PDF en pièce jointe.
|
||||||
officielle (seule la version distribuée après le jury fait foi), et le bulletin
|
|
||||||
PDF en pièce jointe.
|
|
||||||
|
|
||||||
Vous pouvez envoyer un bulletin via le menu "Autres opérations" de la page affichant le bulletin.
|
Vous pouvez envoyer un bulletin via le menu "Autres opérations" de la page affichant le bulletin.
|
||||||
|
|
||||||
Vous pouvez aussi envoyer tous les bulletins par mail (chaque étudiant du semestre reçoit seulement le sien), via le menu "Bulletins" du semestre.
|
Vous pouvez aussi envoyer tous les bulletins par mail (chaque étudiant du semestre reçoit seulement le sien), via le menu "Bulletins" du semestre.
|
||||||
|
|
||||||
Voici un exemple du message envoyé aux étudiants avec leur bulletin:
|
Voici un exemple du message envoyé aux étudiants avec leur bulletin:
|
||||||
|
|
||||||
```
|
```
|
||||||
M. Pierre Dupont,
|
M. Pierre Dupont,
|
||||||
|
|
||||||
@ -139,5 +110,4 @@ Pour toute question sur ce document, contactez votre enseignant ou le directeur
|
|||||||
Cordialement,
|
Cordialement,
|
||||||
la scolarité du département XXX.
|
la scolarité du département XXX.
|
||||||
```
|
```
|
||||||
|
|
||||||
(le contenu de ce message est paramétrable, voir ci-dessus).
|
(le contenu de ce message est paramétrable, voir ci-dessus).
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
|
|
||||||
# Calcul des notes
|
## Calcul des notes
|
||||||
|
|
||||||
*Tout ce que vous avez toujours voulu savoir sur le calcul des moyennes...*
|
*Tout ce que vous avez toujours voulu savoir sur le calcul des moyennes...*
|
||||||
|
|
||||||
Pour les formations par compétences, voir aussi [la page dédiée au BUT](BUT.md).
|
**Attention :** Les informations ci-dessous s'appliquent aux formations traditionnelles.
|
||||||
|
Pour les formations par compétences, voir [la page dédiée au BUT](BUT.md).
|
||||||
|
|
||||||
## En résumé
|
### En résumé:
|
||||||
|
|
||||||
À chaque instant, ScoDoc prend en compte les notes des évaluations "complètes"
|
A chaque instant, ScoDoc prend en compte les notes des évaluations "complètes"
|
||||||
(dans lesquelles toutes les notes ont été saisies ou bien signalées "en attente"
|
(dans lesquelles toutes les notes ont été saisies ou bien signalées "en attente"
|
||||||
avec le code ATT. Les évaluations partiellement saisies ne sont pas prises en
|
avec le code ATT. Les évaluations partiellement saisies ne sont pas prises en
|
||||||
compte, sauf si l'option "*prise en compte immédiate*" a été cochée sur
|
compte, sauf si l'option "*prise en compte immédiate*" a été cochée sur
|
||||||
@ -20,50 +21,41 @@ Les moyennes d'UE et générale sont calculées à partir des moyennes de module
|
|||||||
en utilisant les coefficients du programme pédagogique (dénommé dans ScoDoc
|
en utilisant les coefficients du programme pédagogique (dénommé dans ScoDoc
|
||||||
"formation").
|
"formation").
|
||||||
|
|
||||||
|
|
||||||
Plus de détails ci-dessous.
|
Plus de détails ci-dessous.
|
||||||
|
|
||||||
## Calcul des moyennes de modules
|
|
||||||
|
### Calcul des moyennes de modules
|
||||||
|
|
||||||
Chaque évaluation produit des notes de différents types:
|
Chaque évaluation produit des notes de différents types:
|
||||||
|
|
||||||
* note numérique (positive ou nulle): sera normalisée entre 0 et 20
|
* note numérique (positive ou nulle): sera normalisée entre 0 et 20
|
||||||
|
|
||||||
* note absente: considérée comme zéro
|
* note absente: considérée comme zéro
|
||||||
|
|
||||||
* note en attente: non prise en compte
|
* note en attente: non prise en compte
|
||||||
|
|
||||||
* note excusée: non pris en compte
|
* note excusée: non pris en compte
|
||||||
|
|
||||||
Chaque étudiant a donc un nombre variable de notes à prendre en compte dans
|
Chaque étudiant a donc un nombre variable de notes à prendre en compte dans
|
||||||
chaque module. Chaque note est associée à un coefficient: le coefficient de
|
chaque module. Chaque note est associée à un coefficient: le coefficient de
|
||||||
l'évaluation dans le module.
|
l'évaluation dans le module.
|
||||||
|
|
||||||
### En formation classique (hors approches par compétences, BUT)
|
|
||||||
|
|
||||||
La moyenne de module est la somme pondérée par le coefficient des évaluations
|
La moyenne de module est la somme pondérée par le coefficient des évaluations
|
||||||
des notes aux évaluations prises en compte, sauf si on a défini une formule
|
des notes aux évaluations prises en compte, sauf si on a défini une formule
|
||||||
spécifique.
|
spécifique.
|
||||||
|
|
||||||
### En BUT
|
|
||||||
|
|
||||||
Comme expliqué en détail sur [la page dédiée au BUT](BUT.md), chaque module
|
#### Formules de calcul spéciales
|
||||||
(ressource ou SAÉ) peut produire des notes différentes pour chaque UE. Le
|
|
||||||
programme pédagogique (adapté du Programme National publié au BO) défini des
|
|
||||||
coefficients permettant le calcul des moyennes d'UE.
|
|
||||||
|
|
||||||
De façon plus fine, chaque évaluation peut s'adresser à un sous-ensemble
|
Il est possible de définir des formules de calcul spéciales pour calculer les
|
||||||
d'apprentissages critiques, et donc être associée à une ou plusieurs UE avec des
|
moyennes. Ces formules sont alors utilisées par ScoDoc à la place de la moyenne
|
||||||
pondérations différentes: les poids de l'évaluation.
|
pondérée standard. Voir
|
||||||
|
[FormulesCalculUtilisateur](FormulesCalculUtilisateur.md)
|
||||||
|
pour plus d'informations.
|
||||||
|
|
||||||
On a donc **pour chaque évaluation**:
|
|
||||||
|
|
||||||
- des poids, un par UE, qui sont par défaut égaux à 1 pour les UE concernées
|
### Moyennes d'UE
|
||||||
(c'est à dire ayant un coefficient non nul);
|
|
||||||
- un coefficient.
|
|
||||||
|
|
||||||
Le calcul de la moyenne du module vers les UEs s'effectue en *multipliant* les poids par le coefficient.
|
|
||||||
|
|
||||||
## Moyennes d'UE
|
|
||||||
|
|
||||||
moyenne_ue = moyenne pondérée des moyennes de modules de l'UE (- malus)
|
moyenne_ue = moyenne pondérée des moyennes de modules de l'UE (- malus)
|
||||||
|
|
||||||
@ -72,11 +64,20 @@ notes sont considérés.
|
|||||||
|
|
||||||
Le malus appliqué à la moyenne d'UE est donné par la somme des notes du ou des
|
Le malus appliqué à la moyenne d'UE est donné par la somme des notes du ou des
|
||||||
modules de malus de cette UE (un type spécial de modules, voir
|
modules de malus de cette UE (un type spécial de modules, voir
|
||||||
[BonusMalus](BonusMalus.md)).
|
[ModulesMalus](ModulesMalus.md)).
|
||||||
|
|
||||||
## Calcul de la moyenne générale
|
Comme pour le calcul des moyennes de modules, il est possible de définir une
|
||||||
|
formule ad-hoc pour le calcul de la moyenne d'UE (cela est toutefois rarement
|
||||||
|
nécessaire, et il est recommandé de ne pas abuser de cette fonctionnalité: la
|
||||||
|
présence de formules ralentit considérablement les calculs).
|
||||||
|
La syntaxe et les variables sont les mêmes que pour les modules; ici, le vecteur
|
||||||
|
de notes est celui des moyennes de modules (et non des évaluations). Voir
|
||||||
|
[FormulesCalculUtilisateur](FormulesCalculUtilisateur.md).
|
||||||
|
|
||||||
### En formations classiques
|
La présence de formules d'UE est signalée sur le tableau de bord du semestre.
|
||||||
|
|
||||||
|
|
||||||
|
### Calcul de la moyenne générale
|
||||||
|
|
||||||
moyenne = moyenne pondérée des moyennes d'UE + bonus sport/culture
|
moyenne = moyenne pondérée des moyennes d'UE + bonus sport/culture
|
||||||
|
|
||||||
@ -97,14 +98,8 @@ Les modules des UEs de type "Sport & Culture" ne sont évidemment pas pris en
|
|||||||
compte dans la moyenne pondérée: ils sont utilisés pour calculer le bonus, comme
|
compte dans la moyenne pondérée: ils sont utilisés pour calculer le bonus, comme
|
||||||
expliqué ci-dessous.
|
expliqué ci-dessous.
|
||||||
|
|
||||||
### Moyenne générale en BUT
|
|
||||||
|
|
||||||
En BUT, on calcule des notes pour les Unités d'Enseignement, et la moyenne
|
### Notes de rattrapage
|
||||||
générale n'est pas définie. Toutefois, ScoDoc calcule une *moyenne indicative*,
|
|
||||||
qui est la moyenne des moyennes des UE du semestre pondérée par leurs ECTS. Voir
|
|
||||||
détails [sur la page BUT](BUT.md#moyenne-generale)
|
|
||||||
|
|
||||||
## Notes de rattrapage
|
|
||||||
|
|
||||||
Dans chaque module, il est possible de définir une évaluation de "rattrapage".
|
Dans chaque module, il est possible de définir une évaluation de "rattrapage".
|
||||||
Lors de la création (ou modification) de l'évaluation, indiquer le type
|
Lors de la création (ou modification) de l'évaluation, indiquer le type
|
||||||
@ -115,7 +110,9 @@ Lors de la création (ou modification) de l'évaluation, indiquer le type
|
|||||||
Pour chaque étudiant, la note obtenue à l'évaluation de rattrapage remplace la
|
Pour chaque étudiant, la note obtenue à l'évaluation de rattrapage remplace la
|
||||||
moyenne du module, seulement si elle est supérieure à celle-ci.
|
moyenne du module, seulement si elle est supérieure à celle-ci.
|
||||||
|
|
||||||
## Bonus sport/culture
|
|
||||||
|
|
||||||
|
### Bonus sport/culture
|
||||||
|
|
||||||
Ce bonus s'applique directement sur la **moyenne générale** et/ou sur les
|
Ce bonus s'applique directement sur la **moyenne générale** et/ou sur les
|
||||||
moyennes d'UE (notamment en BUT).
|
moyennes d'UE (notamment en BUT).
|
||||||
@ -140,46 +137,3 @@ vous souhaitez disposer d'une nouvelle règle, il faut contacter l'équipe de
|
|||||||
développement en indiquant (en français) le règlement en vigueur dans votre
|
développement en indiquant (en français) le règlement en vigueur dans votre
|
||||||
établissement. Le code correspondant sera ajouté via une mise à jour.
|
établissement. Le code correspondant sera ajouté via une mise à jour.
|
||||||
|
|
||||||
Pour plus de détails, voir [BonusMalus](BonusMalus.md).
|
|
||||||
|
|
||||||
## Arrondis et affichages
|
|
||||||
|
|
||||||
ScoDoc calcule les notes en haute précision. On peut saisir des notes comme
|
|
||||||
`12,3456789 / 20` (convenons que c'est un peu ridicule, mais possible).
|
|
||||||
|
|
||||||
Les résultats sont en général affichés avec 4 chiffres (12,34/20), soit 1 millième de précision.
|
|
||||||
Le nombre de chiffres exportés vers Apogée (dans des fichiers textes) est paramétrable.
|
|
||||||
Les exports vers Excel conservent la précision maximale (types numériques).
|
|
||||||
|
|
||||||
Les décisions prises par ScoDoc (`ADM` automatique par exemple) sont calculées
|
|
||||||
avec une *tolérance* pour éviter que les étudiants ne soient victimes d'erreurs
|
|
||||||
d'arrondis: par exemple:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Pour valider une RCUE, on vérifie que moy_rcue > sco_codes.BUT_RCUE_SUFFISANT
|
|
||||||
|
|
||||||
où est défini comme BUT_RCUE_SUFFISANT = 8.0 - NOTES_TOLERANCE.
|
|
||||||
|
|
||||||
avec
|
|
||||||
NOTES_TOLERANCE = 0.00499999999999
|
|
||||||
```
|
|
||||||
|
|
||||||
Donc un étudiant avec 7.996 (affichée `08.00` dans les tableaux) validera mais un autre avec 7.995 (affichée `07.99`) ne validera pas.
|
|
||||||
|
|
||||||
⚠️ Attention: il y a deux façon d'exporter vers Excel:
|
|
||||||
|
|
||||||
1- l'une est fournie par le navigateur (javascript) et part de la version
|
|
||||||
affichée. C'est commode et conserve la mise en forme du tableau affiché, mais on
|
|
||||||
n'a pas toute la précision.
|
|
||||||
|
|
||||||
2- la seconde est exportée par ScoDoc qui veille à conserver le maximum d'information.
|
|
||||||
|
|
||||||
![menu export excel](fig/menu-export-excel.png)
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- [Calculs spécifiques en BUT](BUT.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,106 +1,87 @@
|
|||||||
# Capitalisation des UEs de DUT
|
|
||||||
|
|
||||||
Brève note expliquant le système de capitalisation de UE dans le cadre des DUT.
|
## Capitalisation des UE
|
||||||
Pour le Bachelor (BUT), voir [Capitalisation des Unités d'Enseignement en
|
|
||||||
BUT](BUTCapitalisationUE.md).
|
|
||||||
|
|
||||||
## Principe
|
Brève note explicant le système de capitalisation de UE dans le cadre des DUT.
|
||||||
|
|
||||||
|
|
||||||
|
### Principe
|
||||||
|
|
||||||
***Arrêté d'août 2005***
|
***Arrêté d'août 2005***
|
||||||
|
|
||||||
**Article 19** - *Les unités d'enseignement sont définitivement acquises et
|
**Article 19** - *Les unités d'enseignement sont définitivement acquises et
|
||||||
capitalisables dès lors que l'étudiant y a obtenu la moyenne. L'acquisition de
|
capitalisables dès lors que l'étudiant y a obtenu la moyenne.
|
||||||
l'unité d'enseignement emporte l'acquisition des crédits européens
|
L'acquisition de l'unité d'enseignement emporte l'acquisition
|
||||||
correspondants.*
|
des crédits européens correspondants.*
|
||||||
|
|
||||||
*Toute unité d'enseignement capitalisée est prise en compte dans le dispositif
|
*Toute unité d'enseignement capitalisée est prise en compte dans le
|
||||||
de compensation, au même titre et dans les mêmes conditions que les autres
|
dispositif de compensation, au même titre et dans les mêmes conditions
|
||||||
unités d'enseignement.*
|
que les autres unités d'enseignement.*
|
||||||
|
|
||||||
*Dans le cas de redoublement d'un semestre, si un étudiant ayant acquis une
|
*Dans le cas de redoublement d'un semestre, si un étudiant ayant acquis
|
||||||
unité d'enseignement souhaite, notamment pour améliorer les conditions de
|
une unité d'enseignement souhaite, notamment pour améliorer les
|
||||||
réussite de sa formation, suivre les enseignements de cette unité d'enseignement
|
conditions de réussite de sa formation, suivre les enseignements de
|
||||||
et se représenter au contrôle des connaissances correspondant, la compensation
|
cette unité d'enseignement et se représenter au contrôle des
|
||||||
prend en compte le résultat le plus favorable pour l'étudiant.*
|
connaissances correspondant, la compensation prend en compte le
|
||||||
|
résultat le plus favorable pour l'étudiant.*
|
||||||
|
|
||||||
(...)
|
(...)
|
||||||
|
|
||||||
**Article 25** - *Les unités d'enseignement dans lesquelles la moyenne de 10 a
|
**Article 25** - *Les unités d'enseignement dans lesquelles la moyenne de
|
||||||
été obtenue sont capitalisables en vue de la reprise d'études en formation
|
10 a été obtenue sont capitalisables en vue de la reprise d'études en
|
||||||
continue.*
|
formation continue.*
|
||||||
|
|
||||||
### Exemple (cas simple)
|
|
||||||
|
|
||||||
Soit un étudiant qui suit un parcours S1, S2, S2D (redoublement en semestre
|
#### Exemple (cas simple)
|
||||||
décalé). En S2, il obtient 11.5 à l'UE 1. En S2D, il obtient 10.2 en UE 1: on
|
|
||||||
calcule alors sa moyenne de S2D en remplaçant ce 10.2 par 11.5.
|
|
||||||
|
|
||||||
ScoDoc prend automatiquement en compte la capitalisation des UE et l'indique sur
|
Soit un étudiant qui suit un parcours S1, S2, S2D (redoublement en semestre décalé). En S2, il obtient 11.5 à l'UE 1. En S2D, il obtient 10.2 en UE 1: on calcule alors sa moyenne de S2D en remplaçant ce 10.2 par 11.5.
|
||||||
les bulletins.
|
|
||||||
|
|
||||||
## UE capitalisées et inscriptions aux modules
|
ScoDoc prend automatiquement en compte la capitalisation des UE et l'indique sur les bulletins.
|
||||||
|
|
||||||
En général, les étudiants ayant capitalisé des UE et qui redoublent un ou deux
|
|
||||||
semestres peuvent choisir de repasser ou non ces UE. ScoDoc conservera
|
|
||||||
automatiquement la meilleure note moyenne.
|
|
||||||
|
|
||||||
Si l'étudiant décide de ne pas repasser l'UE, il est préférable de ne pas
|
### UE capitalisées et inscriptions aux modules
|
||||||
l'inscrire aux modules correspondant du semestre qu'il redouble. Le menu
|
|
||||||
"Inscription / Voir les inscriptions aux modules" permet de gérer facilement
|
|
||||||
cela.
|
|
||||||
|
|
||||||
### Cas des changements de programmes
|
En général, les étudiants ayant capitalisé des UE et qui redoublent un ou deux semestres peuvent choisir de repasser ou non ces UE. ScoDoc conservera automatiquement la meilleure note moyenne.
|
||||||
|
|
||||||
Il arrive que le programme pédagogique change et que l'étudiant redoublant suive
|
Si l'étudiant décide de ne pas repasser l'UE, il est préférable de ne pas l'inscrire aux modules correspondant du semestre qu'il redouble. Le menu "Inscription / Voir les inscriptions aux modules" permet de gérer facilement cela.
|
||||||
un programme différent de celui de l'UE qu'il a capitalisé. Ici, les textes sont
|
|
||||||
flous et la jurisprudence fait défaut pour déterminer quelles UE sont
|
|
||||||
capitalisables. En pratique, les responsables de formation (chefs de
|
|
||||||
département) décident au cas par cas des équivalences entre UE de l'ancien
|
|
||||||
programme et du nouveau. ScoDoc permet de faire cela en spécifiant un code d'UE
|
|
||||||
qui sera identique (ou non) dans les deux programmes. Il convient d'être
|
|
||||||
particulièrement attentif à ce point: dans le passé récent des IUT, il est
|
|
||||||
arrivé dans certaines spécialités que l'UE 1 devienne l'UE 2 du nouveau
|
|
||||||
programme.
|
|
||||||
|
|
||||||
## Calcul des coefficients
|
|
||||||
|
|
||||||
Le calcul des coefficients des UE capitalisées pour le calcul de la moyenne
|
#### Cas des changements de programmes
|
||||||
générale est un peu compliqué. En effet:
|
Il arrive que le programme pédagogique change et que l'étudiant redoublant suive un programme différent de celui de l'UE qu'il a capitalisé. Ici, les textes sont flous et la jurisprudence fait défaut pour déterminer quelles UE sont capitalisables. En pratique, les responsables de formation (chefs de département) décident au cas par cas des équivalences entre UE de l'ancien programme et du nouveau. ScoDoc permet de faire cela en spécifiant un code d'UE qui sera identique (ou non) dans les deux programmes. Il convient d'être particulièrement attentif à ce point: dans le passé récent des IUT, il est arrivé dans certaines spécialités que l'UE 1 devienne l'UE 2 du nouveau programme.
|
||||||
|
|
||||||
* les UE n'ont pas de coefficients propres: dans le programme pédagogique, les
|
|
||||||
coefficients sont attribués aux modules et non aux UE;
|
|
||||||
|
|
||||||
* le coefficient d'une UE est donc la somme des coefficients des modules qui la composent;
|
### Calcul des coefficients
|
||||||
|
|
||||||
* remarque: en cas d'absences excusées (notes neutralisées sur tout un module),
|
Le calcul des coefficients des UE capitalisées pour le calcul de la moyenne générale est un peu compliqué. En effet:
|
||||||
le coef. d'une UE peut fort bien varier d'un étudiant à l'autre (ou, pour un
|
|
||||||
même étudiant, d'un semestre à l'autre s'il redouble).
|
|
||||||
|
|
||||||
* en cas de capitalisation, ScoDoc calcule actuellement le coef. de l'UE
|
* les UE n'ont pas de coefficients propres: dans le programme pédagogique, les coefficients sont attribués aux modules et non aux UE;
|
||||||
capitalisée comme la somme des coefficients des modules de cette UE dans
|
|
||||||
lesquels l'étudiant était inscrit *dans le programme du semestre durant lequel
|
|
||||||
il a capitalisé l'UE* (changement en janvier 2016). Il est aussi possible de
|
|
||||||
forcer manuellement le coefficient utilisé (via la page "modification du
|
|
||||||
semestre").
|
|
||||||
|
|
||||||
### Exemple (cas compliqué)
|
* le coefficient d'une UE est donc la somme des coefficients des modules qui la composent;
|
||||||
|
|
||||||
|
* remarque: en cas d'absences excusées (notes neutralisées sur tout un module), le coef d'une UE peut fort bien varier d'un étudiant à l'autre (ou, pour un même étudiant, d'un semestre à l'autre s'il redouble).
|
||||||
|
|
||||||
|
* en cas de capitalisation, ScoDoc calcule actuellement le coef. de l'UE capitalisée comme la somme des coefficients des modules de cette UE dans lesquels l'étudiant était inscrit *dans le programme du semestre durant lequel il a capitalisé l'UE* (changement en janvier 2016). Il est aussi possible de forcer manuellement le coefficient utilisé (via la page "modification du semestre").
|
||||||
|
|
||||||
|
|
||||||
|
#### Exemple (cas compliqué)
|
||||||
|
|
||||||
Soit un étudiant qui suit un parcours S1, S2, S2.2 (redoublement en semestre décalé) et capitalise l'UE 2.1 du S2.
|
Soit un étudiant qui suit un parcours S1, S2, S2.2 (redoublement en semestre décalé) et capitalise l'UE 2.1 du S2.
|
||||||
|
|
||||||
* en S2, moy. UE = 11.03, coef. 8
|
* en S2, moy. UE = 11.03, coef 8
|
||||||
|
|
||||||
* en S2,2, moy. UE = 10.32, coef. 5.7 car pas de notes en M322 et M324
|
* en S2,2, moy UE = 10.32, coef 5.7 car pas de notes en M322 et M324
|
||||||
|
|
||||||
Mais supposons que le programme de S2,2 ne soit *pas le même* que celui de S2 !. Par exemple on pourrait avoir:
|
Mais supposons que le programme de S2,2 ne soit *pas le même* que celui de S2 !. Par exemple on pourrait avoir:
|
||||||
|
|
||||||
* En S2: UE2.1 = { M121, M221, M322, M324, AL2.1 } coef. 8
|
* En S2: UE2.1 = { M121, M221, M322, M324, AL2.1 } coef 8
|
||||||
|
|
||||||
* En S2.2: UE2.1 = { M121, M221, M322, M324, TH21, ESP21, ESPDEB21 } coef. 9
|
* En S2.2: UE2.1 = { M121, M221, M322, M324, TH21, ESP21, ESPDEB21 } coef 9
|
||||||
|
|
||||||
ScoDoc prend le coef. 9, afin que l'UE2.1 pèse la même chose pour tous
|
ScoDoc prend le coef 9, afin que l'UE2.1 pèse la même chose pour tous
|
||||||
les étudiants de S2,2.
|
les étudiants de S2,2.
|
||||||
|
|
||||||
### Conclusion
|
|
||||||
|
|
||||||
|
#### Conclusion
|
||||||
|
|
||||||
Les textes officiels étant muets sur cette question, il n'y a pas de consensus sur la meilleure façon de calculer le coefficient
|
Les textes officiels étant muets sur cette question, il n'y a pas de consensus sur la meilleure façon de calculer le coefficient
|
||||||
affecté aux UEs capitalisées. Le mode de calcul par défaut de ScoDoc à l'avantage d'avoir les
|
affecté aux UEs capitalisées. Le mode de calcul par défaut de ScoDoc à l'avantage d'avoir les
|
||||||
@ -108,12 +89,13 @@ mêmes coefficients d'UE pour tous les étudiants du semestre (sauf
|
|||||||
absences et options), et l'inconvénient de voir la même UE affectée
|
absences et options), et l'inconvénient de voir la même UE affectée
|
||||||
de coefs différents dans des semestres successifs.
|
de coefs différents dans des semestres successifs.
|
||||||
|
|
||||||
## Mise en œuvre dans ScoDoc
|
|
||||||
|
|
||||||
* ScoDoc offre depuis le 21 janvier 2008 la possibilité de forcer les
|
### Mise en œuvre dans ScoDoc
|
||||||
coefficients des UE capitalisées. Passer par "Modifier le semestre".
|
|
||||||
|
* ScoDoc offre depuis le 21 janvier 2008 la possibilité de forcer les coefficients des UE capitalisées. Passer par "Modifier le semestre".
|
||||||
|
|
||||||
|
* Pour entrer les moyennes d'UE capitalisées antérieurement (dans un semestre non géré par ScoDoc ou dans un autre établissement, etc), passer par le bulletin de note de l'étudiant, et dans le menu "Autres opérations", choisir ""Enregistrer une validation d'UE antérieure".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Pour entrer les moyennes d'UE capitalisées antérieurement (dans un semestre
|
|
||||||
non géré par ScoDoc ou dans un autre établissement, etc), passer par le
|
|
||||||
bulletin de note de l'étudiant, et dans le menu "Autres opérations", choisir
|
|
||||||
""Enregistrer une validation d'UE antérieure".
|
|
||||||
|
@ -1,24 +1,17 @@
|
|||||||
|
|
||||||
# Compensation des semestres DUT
|
## Compensation des semestres
|
||||||
|
L'[arrêté du 3 août 2005](http://www.education.gouv.fr/bo/2005/31/MENS0501754A.htm) définit les modalités des parcours de DUT.
|
||||||
|
|
||||||
L'[arrêté du 3 août
|
L'article 20 (b) stipule "*Lorsque les conditions posées ci-dessus ne sont pas remplies, la
|
||||||
2005](http://www.education.gouv.fr/bo/2005/31/MENS0501754A.htm) définit les
|
validation est assurée, sauf opposition de l'étudiant, par une
|
||||||
modalités des parcours de DUT.
|
compensation organisée entre deux semestres consécutifs sur la base
|
||||||
|
d'une moyenne générale égale ou supérieure à 10 sur 20 et d'une
|
||||||
|
moyenne égale ou supérieure à 8 sur 20 dans chacune des unités
|
||||||
|
d'enseignement constitutives de ces semestres. Le semestre servant à
|
||||||
|
compenser ne peut être utilisé qu'une fois au cours du cursus.*".
|
||||||
|
|
||||||
L'article 20 (b) stipule "*Lorsque les conditions posées ci-dessus ne sont pas
|
|
||||||
remplies, la validation est assurée, sauf opposition de l'étudiant, par une
|
|
||||||
compensation organisée entre deux semestres consécutifs sur la base d'une
|
|
||||||
moyenne générale égale ou supérieure à 10 sur 20 et d'une moyenne égale ou
|
|
||||||
supérieure à 8 sur 20 dans chacune des unités d'enseignement constitutives de
|
|
||||||
ces semestres. Le semestre servant à compenser ne peut être utilisé qu'une fois
|
|
||||||
au cours du cursus.*".
|
|
||||||
|
|
||||||
ScoDoc propose automatiquement la compensation du semestre *n+1* avec le
|
ScoDoc propose automatiquement la compensation du semestre *n+1* avec le semestre *n* lorsque c'est possible: le code décision est alors ADC, et on mémorise que le semestre *n* a été utilisé pour compenser.
|
||||||
semestre *n* lorsque c'est possible: le code décision est alors ADC, et on
|
|
||||||
mémorise que le semestre *n* a été utilisé pour compenser.
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> cette possibilité n'est offerte que lorsque l'option "*proposer compensations de semestres (parcours DUT)*" (menu "*Modifier le semestre*") est activée (en effet, la règle de compensation est spécifique aux DUT et ne s'applique pas à toutes les formations LMD).
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
|
||||||
alt="/!\" /> cette possibilité n'est offerte que lorsque l'option "*proposer
|
|
||||||
compensations de semestres (parcours DUT)*" (menu "*Modifier le semestre*") est
|
|
||||||
activée (en effet, la règle de compensation est spécifique aux DUT et ne
|
|
||||||
s'applique pas à toutes les formations LMD).
|
|
||||||
|
@ -1,167 +0,0 @@
|
|||||||
# Configuration de l'authentification CAS
|
|
||||||
|
|
||||||
*Cette page s'adresse aux administrateurs système en charge de ScoDoc.*
|
|
||||||
|
|
||||||
Le CAS, *Central Authentication Service* CAS est un système d'authentification
|
|
||||||
unique (SSO) très utilisé dans les universités. Il permet à l'utilisateur de
|
|
||||||
s'identifier sur un site unique (souvent appelé "ENT" en raccourci), pour
|
|
||||||
ensuite accéder aux différents services. Il évite de s'authentifier à
|
|
||||||
chaque fois qu'on accède à une application en mettant en place un système de
|
|
||||||
ticket.
|
|
||||||
|
|
||||||
Notons que le CAS peut introduire des faiblesses dans l'application:
|
|
||||||
|
|
||||||
- indisponibilité ou lenteur du service;
|
|
||||||
- vulnérabilité si le serveur CAS (ou l'annuaire sur lequel il s'appuie) venait
|
|
||||||
à être piraté.
|
|
||||||
|
|
||||||
Il est donc conseillé de s'assurer du bon fonctionnement et de la sécurisation de
|
|
||||||
son service CAS avant d'aller plus loin.
|
|
||||||
|
|
||||||
## Comptes utilisateurs ScoDoc et CAS
|
|
||||||
|
|
||||||
Rappel: voir [Gestion des utilisateurs](AdminUsers.md)
|
|
||||||
|
|
||||||
Pour simplifier, l'utilisateur va partir de ScoDoc, passer par le site CAS (redirection), puis
|
|
||||||
revenir si l'authentification réussi, avec un jeton et un identifiant CAS. À ce moment, ScoDoc cherche s'il a un
|
|
||||||
utilisateur ayant l'identifiant donné, dans le champ `cas_id`de sa base
|
|
||||||
utilisateur. Si oui, il ouvre une session pour cet utilisateur, avec ses rôles
|
|
||||||
et permissions.
|
|
||||||
|
|
||||||
## Paramètres spécifiques pour le CAS
|
|
||||||
|
|
||||||
### Configuration générale
|
|
||||||
|
|
||||||
Les pages de configuration générale de ScoDoc sont accessibles via la page
|
|
||||||
d'accueil, uniquement lorsqu'on est connecté comme super-admin.
|
|
||||||
|
|
||||||
![accès au panneau de config](fig/config-accueil.png)
|
|
||||||
|
|
||||||
De cette page, on accède à la page consacrée au CAS:
|
|
||||||
|
|
||||||
![config du CAS](fig/config-cas.png)
|
|
||||||
|
|
||||||
Page sur laquelle on va pouvoir spécifier:
|
|
||||||
|
|
||||||
- si on active le CAS (ce qui permet aussi de le désactiver globalement);
|
|
||||||
- si on force son utilisation;
|
|
||||||
- l'URL complète du serveur CAS (exemple: `https://mon.serveur.cas.fr:1234/cas/`);
|
|
||||||
- un attribut pour l'identification (laisser vide normalement);
|
|
||||||
- si on veut vérifier le certificat SSL (normalement oui, par sécurité, et
|
|
||||||
fournir le fichier certificat PEM dans le champ suivant).
|
|
||||||
|
|
||||||
Si l'option **Forcer l'utilisation du CAS** est activée, l'utilisateur qui tente
|
|
||||||
de se connecter sera immédiatement redirigé vers la page du CAS. Sinon, il aura
|
|
||||||
le choix via le formulaire classique, avec un lien en plus:
|
|
||||||
|
|
||||||
![login scodoc avec CAS](fig/config-cas-cnx.png)
|
|
||||||
|
|
||||||
🚸 Attention, le lien de réinitialisation du mot de passe ne concerne évidemment
|
|
||||||
pas le mot de passe du CAS, mais celui de ScoDoc. C'est ennuyeux.
|
|
||||||
|
|
||||||
À ce stade, CAS est utilisable, mais on n'a aucun utilisateur reconnu !
|
|
||||||
|
|
||||||
### Configuration des utilisateurs
|
|
||||||
|
|
||||||
ScoDoc doit connaitre l'identifiant CAS de ses utilisateurs. A défaut d'un
|
|
||||||
annuaire, il va falloir saisir ces identifiants pour chaque compte. On peut le
|
|
||||||
faire via le formulaire habituel de paramétrage du compte utilisateur, ou bien
|
|
||||||
par import Excel.
|
|
||||||
|
|
||||||
Cette configuration n'est accessible qu'au super-admin.
|
|
||||||
|
|
||||||
![form. config. utilisateur](fig/config-cas-user.png)
|
|
||||||
|
|
||||||
Ici trois champs nous intéressent:
|
|
||||||
|
|
||||||
- **Identifiant CAS**: nécessaire
|
|
||||||
- **Autorise connexion via CAS**: spécifie si ce compte peut ou non se connecter via CAS.
|
|
||||||
- **Autorise connexion via ScoDoc**: spécifie si cet utilisateur peut se connecter via
|
|
||||||
ScoDoc, sans CAS, lorsque le CAS est activé et forcé. Ceci est nécessaire par
|
|
||||||
exemple pour des comptes utilisés pour l'API, ou bien pour des personnes
|
|
||||||
extérieures à l'établissement et qui ne seraient pas (encore) dans le CAS.
|
|
||||||
|
|
||||||
En cas de besoin, les comptes "super-admin" peuvent toujours se connecter à ScoDoc sans CAS: si le
|
|
||||||
forçage est activé, il leur faut passer par une adresse spéciale:
|
|
||||||
|
|
||||||
```text
|
|
||||||
https://votre.serveur.scodoc.fr/auth/login_scodoc
|
|
||||||
```
|
|
||||||
|
|
||||||
(remplacer `https://votre.serveur.scodoc.fr` par le début de l'adresse de votre serveur).
|
|
||||||
|
|
||||||
🚸 **Attention**: en général, les **clients d'API** (et notamment la
|
|
||||||
"passerelle") n'utilisent pas le CAS: si vous forcez les utilisateurs à utiliser
|
|
||||||
le CAS, pensez à autoriser les comptes de l'API à se connecter sur ScoDoc sans
|
|
||||||
CAS.
|
|
||||||
|
|
||||||
## Sécurité: permissions et informations
|
|
||||||
|
|
||||||
L'utilisateur connecté via CAS a exactement les mêmes permissions que s'il
|
|
||||||
s'était connecté via ScoDoc.
|
|
||||||
|
|
||||||
### Permission
|
|
||||||
|
|
||||||
Le paramétrage CAS au niveau général nécessite la permission `Super Administrateur`.
|
|
||||||
|
|
||||||
Il est naturel de déléguer la création des comptes utilisateurs ScoDoc aux
|
|
||||||
responsables de département ou à leur représentant. Toutefois, le réglage CAS
|
|
||||||
pourrait créer des problèmes de sécurité (par exemple affecter à un département
|
|
||||||
un utilisateur CAS qui n'en fait pas réellement partie).
|
|
||||||
|
|
||||||
Le CAS ajoute une permission ScoDoc `ScoUsersChangeCASId` qui contrôle la
|
|
||||||
possibilité de changer l'identifiant CAS d'un compte. Cette permission peut ou
|
|
||||||
non être associée au rôle `Admin` d'un département, selon la politique de
|
|
||||||
l'établissement.
|
|
||||||
|
|
||||||
Les réglages par compte **Autorise connexion via CAS**
|
|
||||||
et **Autorise connexion via ScoDoc** sont réservés au `Super Administrateur`.
|
|
||||||
|
|
||||||
### Informations sur un utilisateur
|
|
||||||
|
|
||||||
Le super-administrateur (et elle seule) peut visualiser les dates de:
|
|
||||||
|
|
||||||
- dernière utilisation (date du dernier chargement de page);
|
|
||||||
- dernière connexion (login) via CAS.
|
|
||||||
|
|
||||||
dans les tables d'utilisateurs et sur la page de chaque compte:
|
|
||||||
|
|
||||||
![Informations sur un utilisateur](fig/config-user-view.png)
|
|
||||||
|
|
||||||
### Logs
|
|
||||||
|
|
||||||
Les connexions et tentatives de connexions via CAS sont logguées au niveau
|
|
||||||
`INFO`, qui arrive par défaut dans `/opt/scodoc-data/scodoc.log`.
|
|
||||||
Exemples:
|
|
||||||
|
|
||||||
- Connexion réussie:
|
|
||||||
|
|
||||||
```text
|
|
||||||
INFO: CAS: login user_name
|
|
||||||
```
|
|
||||||
|
|
||||||
- Tentative de connexion CAS réussie mais utilisateur non reconnu par ScoDoc:
|
|
||||||
|
|
||||||
```text
|
|
||||||
INFO: CAS login denied for cas_id=prenom.nom (unknown or inactive)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Accès via l'API
|
|
||||||
|
|
||||||
L'authentification des clients de l'API utilise un jeton (*token*), qui est
|
|
||||||
demandé par l'appel `/ScoDoc/api/tokens` (qui lui même appelle
|
|
||||||
`User.get_token()`). Ce mécanisme ne passe jamais par le CAS, à condition que le
|
|
||||||
compte utilisateur utilisé par l'API soit "*Autorisé à se connecter via ScoDoc*"
|
|
||||||
(voir le formulaire plus haut, [configuration des
|
|
||||||
utilisateurs](#configuration-des-utilisateurs)).
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Gestion des utilisateurs](AdminUsers.md)
|
|
||||||
- [Rôles et permissions](ConfigPermissionsDept.md)
|
|
||||||
- [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [API pour ScoDoc 9](ScoDoc9API.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,42 +0,0 @@
|
|||||||
# Configuration des envois d'emails
|
|
||||||
|
|
||||||
ScoDoc envoie ou peut envoyer des emails, ou e-mails, ou courriels à de
|
|
||||||
nombreuses occasions, par exemple:
|
|
||||||
|
|
||||||
- comptes utilisateurs (réinitialisation mot de passe);
|
|
||||||
- envois de bulletins par mail aux étudiants;
|
|
||||||
- envois de notifications (notamment concernant l'assiduité);
|
|
||||||
- messages de diagnostic lors d'erreurs logicielles pour les développeurs.
|
|
||||||
|
|
||||||
Il est donc important de bien configurer le système de messagerie du serveur
|
|
||||||
ScoDoc. Ce point ne peut pas être documenté ici, car il dépend de
|
|
||||||
l'environnement local: relais de messagerie, politiques de filtrage, etc.
|
|
||||||
Par défaut, ScoDoc utilise le service SMTP Postfix, qui doit donc être configuré
|
|
||||||
pour relayer les messages vers la passerelle de l'établissement: voir la page
|
|
||||||
[envoi des courriers électroniques](ProblemesMail.md).
|
|
||||||
|
|
||||||
Une fois cela fait, l'utilisateur (administrateur) de ScoDoc a peu de réglages a
|
|
||||||
effectuer.
|
|
||||||
|
|
||||||
## Adresse d'origine (From)
|
|
||||||
|
|
||||||
On peut spécifier l'adresse d'origine (le champ `From`) de tous les mails émis.
|
|
||||||
![Réglage de l'adresse origine](fig/config-generale-mail.png)
|
|
||||||
|
|
||||||
Ce réglage peut être modifié au niveau de chaque département, via la page
|
|
||||||
**Paramétrage**:
|
|
||||||
|
|
||||||
![Réglage de l'adresse origine sur un département](fig/config-dept-mail.png)
|
|
||||||
|
|
||||||
## Notifications d'absences
|
|
||||||
|
|
||||||
Les notifications liées à l'absentéisme (fréquences, contenu) peuvent être
|
|
||||||
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)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
|
@ -1,83 +1,83 @@
|
|||||||
|
|
||||||
# Rôles et permissions définis dans l'installation standard
|
## Rôles définis dans l'installation standard
|
||||||
|
Voir aussi sur les rôles et leur utilisation la page [ConfigPermissionsDept](ConfigPermissionsDept.md)
|
||||||
|
|
||||||
La page [ConfigPermissionsDept](ConfigPermissionsDept.md) introduit les notions
|
Les informations ci-dessous ne sont utiles que pour les développeurs ou pour des usages avancés de ScoDoc.
|
||||||
de rôles et de permissions.
|
|
||||||
|
|
||||||
Ci-dessous la liste des permissions, qui est utile notamment pour les
|
|
||||||
utilisateurs de l'API.
|
|
||||||
|
|
||||||
## Liste des permissions
|
## Principales permissions et fonctions associées
|
||||||
|
### Liste des permissions Zope
|
||||||
|
Les permissions utilisées par ScoDoc ont des noms qui commencent par "Sco", de façon à les grouper dans l'interface de Zope (ZMI), qui est peu pratique.
|
||||||
|
|
||||||
* **AbsAddBillet** : Saisir des billets d'absences
|
Pour changer ces permissions (plus précisément pour associer les permissions à des rôles), aller dans l'onglet "Security" du dossier "Dept" (celui qui *contient* l'instance de ScoDoc, habituellement nommée "Scolarite").
|
||||||
* **AbsChange** : Saisir des absences
|
|
||||||
* **AbsJustifView** : Visualisation des fichiers justificatifs
|
|
||||||
* **EditAllEvals** : Modifier toutes les évaluations
|
|
||||||
* **EditAllNotes** : Modifier toutes les notes
|
|
||||||
* **EditApogee** : Gérer les exports Apogée
|
|
||||||
* **EditFormSemestre** : Mettre en place une formation (créer un semestre)
|
|
||||||
* **EditFormation** : Changer les formations
|
|
||||||
* **EditFormationTags** : Tagguer les formations
|
|
||||||
* **EditPreferences** : Modifier les préférences
|
|
||||||
* **EnsView** : Voir les parties pour les enseignants
|
|
||||||
* **EtudAddAnnotations** : Éditer les annotations
|
|
||||||
* **EtudChangeAdr** : Changer les adresses d'étudiants
|
|
||||||
* **EtudChangeGroups** : Modifier les groupes
|
|
||||||
* **EtudInscrit** : Inscrire des étudiants
|
|
||||||
* **Observateur** : Observer (accès lecture restreint aux bulletins)
|
|
||||||
* **RelationsEntrepEdit** : Modifier les entreprises
|
|
||||||
* **RelationsEntrepExport** : Exporter les données de l'application relations entreprises
|
|
||||||
* **RelationsEntrepSend** : Envoyer des offres
|
|
||||||
* **RelationsEntrepValidate** : Valide les entreprises
|
|
||||||
* **RelationsEntrepView** : Voir l'application relations entreprises
|
|
||||||
* **RelationsEntrepViewCorrs** : Voir les correspondants
|
|
||||||
* **ScoSuperAdmin** : Super Administrateur
|
|
||||||
* **ScoView** : Voir
|
|
||||||
* **UsersAdmin** : Gérer les utilisateurs (de son département)
|
|
||||||
* **UsersChangeCASId** : Paramétrer l'id CAS
|
|
||||||
* **UsersView** : Voir les utilisateurs (de tous les départements)
|
|
||||||
|
|
||||||
## Rôles
|
Voici les permissions utilisées:
|
||||||
|
|
||||||
Les rôles peuvent êtres associés à un nombre quelconque de permissions.
|
* **Sco View** : voir les pages de ScoDoc (à réserver aux enseignants et administratifs)
|
||||||
|
|
||||||
|
* **Sco View Ens** : voir les parties réservées aux enseignants (à l'exclusion des secrétariats)
|
||||||
|
|
||||||
|
* **Sco Modifier toutes notes** : modifier toutes les notes (dans tous les semestres)
|
||||||
|
|
||||||
|
* **Sco Modifier toutes les evaluations** : créer/modifier/supprimer des évaluations dans tous les semestres (mais pas saisir des notes)
|
||||||
|
|
||||||
|
* **Sco Change Formation** : créer/modifier/supprimer des formations (programmes pédagogiques)
|
||||||
|
|
||||||
|
* **Sco Implement Formation** : mettre en place des semestres (sessions) de formation
|
||||||
|
|
||||||
|
* **Sco Change Absences** : saisir des absences
|
||||||
|
|
||||||
|
* **Sco Change Etud Address** : changer les adresses des étudiants
|
||||||
|
|
||||||
|
* **Sco Change Etud Groups** : changer les groupes des étudiants
|
||||||
|
|
||||||
|
* **Sco Inscrire Etud** : inscrire des étudiants
|
||||||
|
|
||||||
|
* **Sco Etud Add Annotations** : ajouter des annotations sur les étudiants
|
||||||
|
|
||||||
|
* **Sco View Entreprises** : accéder au fichier d'entreprises
|
||||||
|
|
||||||
|
* **Sco Change Entreprises** : modifier le fichier d'entreprises
|
||||||
|
|
||||||
|
* **Sco Users Manage** : voir et modifier les utilisateurs ScoDoc
|
||||||
|
|
||||||
|
* **Sco Users View** : voir les utilisateurs ScoDoc
|
||||||
|
|
||||||
|
* **Sco Change Preferences** : modifier les préférences du département
|
||||||
|
|
||||||
|
* **Sco Super Admin** : réservé à l'administrateur (création de départements)
|
||||||
|
|
||||||
|
Pour la liste à jour des permissions et leur nom complet, et les associations initiales rôles/permissions, voir le fichier `sco_permissions.py` dans les sources.
|
||||||
|
|
||||||
|
|
||||||
|
### Rôles associés à chaque permission dans chaque département
|
||||||
|
Les rôles listés ici sont ceux définis dans chaque département (`Admin` réfère donc à l'`AdminXXX` du département `XXX`, à ne pas confondre avec l'utilisateur `admin`).
|
||||||
|
|
||||||
|
Permission | Rôles... | |
|
||||||
|
-----------| ------- | -- | --
|
||||||
|
**`ScoView`** | `Ens` | `Secr` | `Admin`
|
||||||
|
**`ScoEnsView`** | `Ens` | | `Admin`
|
||||||
|
**`ScoUsersView`** | `Ens` | `Secr` | `Admin`
|
||||||
|
**`ScoEtudAddAnnotations`** | `Ens` | `Secr` | `Admin`
|
||||||
|
**`ScoAbsChange`** | `Ens` | `Secr` | `Admin`
|
||||||
|
**`ScoEntrepriseView`** | `Ens` | `Secr` | `Admin`
|
||||||
|
**`ScoEntrepriseChange`** | | `Secr` | `Admin`
|
||||||
|
**`ScoEtudChangeAdr`** | | `Secr` | `Admin`
|
||||||
|
**`ScoChangeFormation`** | | | `Admin`
|
||||||
|
**`ScoEditAllNotes`** | | | `Admin`
|
||||||
|
**`ScoEditAllEvals`** | | | `Admin`
|
||||||
|
**`ScoImplement`** | | | `Admin`
|
||||||
|
**`ScoEtudChangeGroups`** | | | `Admin`
|
||||||
|
**`ScoEtudInscrit`** | | | `Admin`
|
||||||
|
**`ScoUsersAdmin`** | | | `Admin`
|
||||||
|
**`ScoChangePreferences`** | | | `Admin`
|
||||||
|
|
||||||
ScoDoc définit un certain nombre de rôles *standards* (`Ens`, `Secr`, ...) mais
|
|
||||||
l'administrateur peut facilement définir de nouveaux rôles et leur associer un
|
|
||||||
ensemble de permissions.
|
|
||||||
|
|
||||||
## Gestion des utilisateurs
|
## Gestion des utilisateurs
|
||||||
|
Les utilisateurs sont associés à des rôles et à un département principal.
|
||||||
|
|
||||||
Les utilisateurs sont associés à un département principal et à des rôles.
|
Le fait d'être, ou non, associé à un département est important pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, *il ne pourra créer des utilisateurs que dans ce département* (c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département).
|
||||||
|
|
||||||
Le fait d'être, ou non, associé à un département est important:
|
|
||||||
|
|
||||||
* pour tous les utilisateurs: hormis le SuperAdmin, seuls les administrateurs du
|
|
||||||
département d'appartenance sont habilités à modifier les caractéristiques
|
|
||||||
principales (nom, prenom, email, mot de passe) de cet utilisateur.
|
|
||||||
* pour les responsables (rôle `Admin_XXX`). En effet, si le responsable est
|
|
||||||
associé à un département, *il ne pourra créer des utilisateurs que dans ce
|
|
||||||
département* (c'est en général ce qu'on veut pour un chef de département, qui
|
|
||||||
"recrute" des enseignant uniquement dans son département).
|
|
||||||
|
|
||||||
Pour la gestion des rôles, l'administrateur d'un département peut ajouter ou
|
|
||||||
supprimer les rôles *de ce département* à n'importe quel utilisateur, y compris
|
|
||||||
à ceux qui ne sont pas du même département.
|
|
||||||
|
|
||||||
Exemple: si Paul est du département GEII et a les rôles `Admin_GEII` et `Admin_CJ`
|
|
||||||
|
|
||||||
* Il pourra *créer* des utilisateurs *uniquement dans son département d'origine*, GEII;
|
|
||||||
* Il pourra ajouter ou retirer les rôles `Ens_GEII`, `Secr_GEII`, `Admin_GEII` à tout
|
|
||||||
utilisateur de ScoDoc;
|
|
||||||
* Il pourra ajouter ou retirer les rôles `Ens_CJ`, `Secr_CJ`, `Admin_CJ` à tout
|
|
||||||
utilisateur de ScoDoc.
|
|
||||||
|
|
||||||
Plus d'informations techniques sur la page [AdminUsers](AdminUsers.md).
|
Plus d'informations techniques sur la page [AdminUsers](AdminUsers.md).
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Introduction aux rôles et permissions](ConfigPermissionsDept.md)
|
|
||||||
- [Gestion des utilisateurs](AdminUsers.md)
|
|
||||||
- [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,88 +1,36 @@
|
|||||||
# Rôles et permissions dans ScoDoc
|
|
||||||
|
|
||||||
ScoDoc défini par défaut quatre rôles principaux (d'autres sont prévus,
|
|
||||||
notamment pour le module relations entreprises):
|
|
||||||
|
|
||||||
* Administrateur
|
|
||||||
* Secrétariat
|
|
||||||
* Enseignant
|
|
||||||
* Observateur
|
|
||||||
|
|
||||||
Par ailleurs, le contexte d'utilisation donne certains privilèges (par exemple
|
|
||||||
la faculté de saisir des notes, de justifier des absences, de modifier la
|
|
||||||
définition des programmes, ...).
|
|
||||||
|
|
||||||
## Exemple
|
|
||||||
|
|
||||||
L'utilisateur *Dupont* est responsable ScoDoc pour son département *RT* mais
|
|
||||||
intervient également en enseignement au département *GEII*. On pourra lui
|
|
||||||
attribuer les rôles `Admin_RT` et `Ens_GEII`, ce qui lui permettra :
|
|
||||||
|
|
||||||
* de gérer les utilisateurs du (seul) département RT :
|
|
||||||
Privilèges associés : `Gérer les utilisateurs`, `Changer les formations`, ...
|
|
||||||
* d'accéder aux vues enseignant pour le département GEII :
|
|
||||||
Privilèges associés : `Voir les parties pour les enseignants`,
|
|
||||||
`Saisir des absences`, ...
|
|
||||||
|
|
||||||
Pour une description plus fine des permissions, voir
|
|
||||||
[ConfigPermissions](ConfigPermissions.md).
|
|
||||||
|
|
||||||
## Rôles définis dans l'installation standard
|
## Rôles définis dans l'installation standard
|
||||||
|
|
||||||
`XXX` désigne typiquement le nom du département ("RT" ou "GEA").
|
`XXX` désigne typiquement le nom du département ("RT" ou "GEA").
|
||||||
|
|
||||||
* `Admin_XXX`: toutes opérations ScoDoc (chef de département, et éventuellement
|
* `AdminXXX`: toutes opérations ScoDoc (chef de département, et éventuellement un ou deux collaborateurs de confiance);
|
||||||
un ou deux collaborateurs de confiance);
|
|
||||||
|
|
||||||
* `Ens_XXX`: enseignant du département;
|
* `EnsXXX`: enseignant du département;
|
||||||
|
|
||||||
* `Secr_XXX`: secrétaire du département.
|
* `SecrXXX`: secrétaire du département.
|
||||||
|
|
||||||
L'installation standard défini aussi un utilisateur "*admin*", qui a le rôle
|
L'installation standard défini aussi un utilisateur "*admin*", qui a le rôle "Manager", ce qui lui confère normalement tous les droits sur toutes les parties du site. L'usage de cet utilisateur particulier devrait être réduit à la création de nouveaux départements, et son mot de passe ne devrait pas être divulgué aux utilisateurs de ScoDoc.
|
||||||
"Manager", ce qui lui confère normalement tous les droits sur toutes les parties
|
|
||||||
du site. L'usage de cet utilisateur particulier devrait être réduit à la
|
|
||||||
création de nouveaux départements, et son mot de passe ne devrait pas être
|
|
||||||
divulgué aux utilisateurs de ScoDoc.
|
|
||||||
|
|
||||||
Les utilisateurs sont associés à des rôles et à un (et un seul) département
|
Les utilisateurs sont associés à des rôles et à un (et un seul) département principal.
|
||||||
principal.
|
|
||||||
|
|
||||||
Un utilisateur peut avoir un nombre quelconque de rôles dans différents
|
Un utilisateur peut avoir un nombre quelconque de rôles dans différents départements.
|
||||||
départements.
|
|
||||||
|
|
||||||
Le département de rattachement est utile pour indiquer qui (quel administrateur)
|
Le département de rattachement est utile pour indiquer qui (quel administrateur) a le droit de modifier l'utilisateur (lui changer son mot de passe, etc), mais n'influe pas sur les permissions accordées à l'utilisateur (sauf pour les administrateurs).
|
||||||
a le droit de modifier l'utilisateur (lui changer son mot de passe, etc), mais
|
|
||||||
n'influe pas sur les permissions accordées à l'utilisateur (sauf pour les
|
Le fait d'être, ou non, associé à un département est important pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, il ne pourra créer des utilisateurs que dans ce département (c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département).
|
||||||
administrateurs).
|
|
||||||
|
|
||||||
Le fait d'être, ou non, associé à un département est important pour les
|
|
||||||
responsables (rôle `Admin_XXX`. En effet, si le responsable est associé à un
|
|
||||||
département, il ne pourra créer des utilisateurs que dans ce département (c'est
|
|
||||||
en général ce qu'on veut pour un chef de département, qui "recrute" des
|
|
||||||
enseignant uniquement dans son département).
|
|
||||||
|
|
||||||
## Permissions dépendantes du contexte
|
## Permissions dépendantes du contexte
|
||||||
|
Outre les rôles associés à chaque utilisateur, le calcul des autorisations dépend du contexte de l'opération. Par exemple, un responsable de semestre a des droits particulier sur ce semestre, ou encore un responsable de module sur la saisie des notes dans ce module.
|
||||||
|
|
||||||
Outre les rôles associés à chaque utilisateur, le calcul des autorisations
|
|
||||||
dépend du contexte de l'opération. Par exemple, un responsable de semestre a des
|
|
||||||
droits particulier sur ce semestre, ou encore un responsable de module sur la
|
|
||||||
saisie des notes dans ce module.
|
|
||||||
|
|
||||||
### Qui peut saisir des notes ?
|
### Qui peut saisir des notes ?
|
||||||
|
|
||||||
Peuvent saisir des notes dans une évaluation située dans un module:
|
Peuvent saisir des notes dans une évaluation située dans un module:
|
||||||
|
|
||||||
* le ou les administrateurs (rôle `Admin_XXX`, où `XXX` est le département);
|
* le ou les administrateurs (rôle `AdminXXX`, où `XXX` est le département);
|
||||||
* le responsable du semestre (directeur des études);
|
* le responsable du semestre (directeur des études);
|
||||||
* le responsable du module;
|
* le responsable du module;
|
||||||
* les enseignants "associés" au module (en général des collègues désignés par le
|
* les enseignants "associés" au module (en général des collègues désignés par le responsable de module ou le directeur des études).
|
||||||
responsable de module ou le directeur des études).
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
----
|
||||||
|
Voir aussi la page [ConfigPermissions](ConfigPermissions.md) pour plus de détails sur les permissions (pour les développeurs).
|
||||||
- [ConfigPermissions](ConfigPermissions.md) pour plus de détails sur les permissions (pour les développeurs)
|
|
||||||
- [Gestion des utilisateurs](AdminUsers.md)
|
|
||||||
- [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,20 +1,17 @@
|
|||||||
# Configuration d'un environnement de développement
|
# Configuration d'un environnement de développement
|
||||||
|
|
||||||
Quelques indications pour développer avec ScoDoc, à adapter à vos goûts et outils.
|
Quelques indications pour développer avec ScoDoc 7.x, à adapter à vos goûts et outils.
|
||||||
|
|
||||||
Commencez par lire
|
# Machine virtuelle
|
||||||
[Installation du code pour les développeurs](https://scodoc.org/git/ScoDoc/ScoDoc#pour-les-d%C3%A9veloppeurs)
|
|
||||||
|
|
||||||
## Machine virtuelle
|
|
||||||
|
|
||||||
Il est confortable de développer dans une VM (un container Docker ferait
|
Il est confortable de développer dans une VM (un container Docker ferait
|
||||||
aussi bien l'affaire).
|
aussi bien l'affaire).
|
||||||
|
|
||||||
### Conseils pour la machine virtuelle
|
## Conseils pour la machine virtuelle
|
||||||
|
|
||||||
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Linux ou
|
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Linux ou
|
||||||
Windows. Créer une VM avec Debian 10, et suivre la
|
Windows. Créer une VM avec Debian 10, et suivre la [procédure habituelle
|
||||||
[procédure habituelle d'installation de ScoDoc](GuideInstallDebian11.md).
|
d'installation de ScoDoc](GuideInstallDebian11.md).
|
||||||
|
|
||||||
Sur les Macs anciens (processeurs Intel), VirtualBox fonctionne bien. Sur les
|
Sur les Macs anciens (processeurs Intel), VirtualBox fonctionne bien. Sur les
|
||||||
modèles "M1" (Apple Silicon), je conseille d'utiliser
|
modèles "M1" (Apple Silicon), je conseille d'utiliser
|
||||||
@ -27,13 +24,12 @@ En général, vous préférez développer sur la machine hôte pour disposer de
|
|||||||
éditeur préféré, mais exécutez ScoDoc dans la VM.
|
éditeur préféré, mais exécutez ScoDoc dans la VM.
|
||||||
|
|
||||||
### Éditeur de texte / IDE
|
### Éditeur de texte / IDE
|
||||||
|
|
||||||
Si vous êtes expérimenté, vous avez vos outils préférés. Mais si vous débutez,
|
Si vous êtes expérimenté, vous avez vos outils préférés. Mais si vous débutez,
|
||||||
surtout pour un environnement de développement distant (le code développé tourne
|
surtout pour un environnement de développement distant (le code développé tourne
|
||||||
dans une machine virtuelle ou réelle séparée de votre machine de bureau), nous
|
dans une machine virtuelle ou réelle séparée de votre machine de burea), nous
|
||||||
vous conseillons **VS Code** avec le module
|
vous conseillons **VS Code** avec le module
|
||||||
[*Remote-SSH*](https://code.visualstudio.com/docs/remote/ssh). Ceci vous évite
|
[*Remote-SSH*](https://code.visualstudio.com/docs/remote/ssh). Ceci vous évite
|
||||||
de fastidieuses configurations de partage de fichiers entre les machines, il
|
de fastidieuses configurations de partage de fichiers entre les machine, il
|
||||||
suffit d'une connexion SSH fonctionnelle.
|
suffit d'une connexion SSH fonctionnelle.
|
||||||
|
|
||||||
### Configuration réseau de VirtualBox
|
### Configuration réseau de VirtualBox
|
||||||
@ -41,14 +37,14 @@ suffit d'une connexion SSH fonctionnelle.
|
|||||||
La VM a besoin d'accéder à Internet pour l'installation, et aussi pour les mises
|
La VM a besoin d'accéder à Internet pour l'installation, et aussi pour les mises
|
||||||
à jour et peut-être certains tests que vous voudrez lancer. L'accès à la VM
|
à jour et peut-être certains tests que vous voudrez lancer. L'accès à la VM
|
||||||
depuis l'hôte doit être possible via un réseau privé interne (car vous ne serez
|
depuis l'hôte doit être possible via un réseau privé interne (car vous ne serez
|
||||||
pas toujours connecté à Internet, et ne souhaitez pas que l'on accède à votre
|
pas toujours conencté à Internet, et ne souhaitez pas que l'on accède à votre
|
||||||
serveur de test de l'extérieur).
|
serveur de test de l'extérieur).
|
||||||
|
|
||||||
Modifier la config réseau via l'UI graphique de VirtualBox, la VM étant éteinte.
|
Modifier la config réseau via l'UI graphique de VirtualBox, la VM étant éteinte.
|
||||||
|
|
||||||
- `Adapter 1` : accès à la VM depuis l'hôte: réseau privé hôte `vboxnet0`
|
- `Adapter 1` : accès à la VM depuis l'hôte: réseau privé hôte vboxnet0
|
||||||
|
|
||||||
- `Adapter 2` : accès à Internet depuis la VM, configurer un interface réseau NAT.
|
- `Adapter 2` : accès à Internet depuis la VM, configurer un interface réseau NAT.
|
||||||
|
|
||||||
Dans le Debian, j'utilise `/etc/network/interfaces`
|
Dans le Debian, j'utilise `/etc/network/interfaces`
|
||||||
|
|
||||||
@ -60,40 +56,91 @@ Dans le Debian, j'utilise `/etc/network/interfaces`
|
|||||||
allow-hotplug enp0s3
|
allow-hotplug enp0s3
|
||||||
iface enp0s3 inet dhcp
|
iface enp0s3 inet dhcp
|
||||||
|
|
||||||
(le `enp0s3` désigne chez moi l'`Adapter 1`, mais c'est susceptible de changer.
|
(le `enp0s3` désigne chez moi l'`Adapter 1`, mais c'est susceptible de changer. Normalement, l'installeur créé ce fichier )
|
||||||
Normalement, l'installateur a créé ce fichier )
|
|
||||||
|
|
||||||
Pour lancer l'interface externe , quand on a besoin d'accéder à Internet depuis
|
Pour lancer l'interface externe , quand on a besoin d'accéder à Internet depuis
|
||||||
la VM:
|
la VM (en fait assez rarement):
|
||||||
|
|
||||||
dhclient enp0s8
|
dhclient enp0s8
|
||||||
|
|
||||||
ici `enp0s8` correspond à l'`Adapter 2`. Si vous travaillez sur une machine fixe
|
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`).
|
||||||
avec connexion permanente, vous pouvez dans Debian activer cette interface
|
|
||||||
constamment (modifier `/etc/network/interfaces`).
|
|
||||||
|
|
||||||
### Noms des machines
|
### Noms des machines
|
||||||
|
Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre VM, par exemple (adapter l'IP !):
|
||||||
Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre
|
|
||||||
VM, par exemple (adapter l'IP !):
|
|
||||||
|
|
||||||
192.168.12.10 scodoc scodoc.dev.net
|
192.168.12.10 scodoc scodoc.dev.net
|
||||||
|
|
||||||
### Partage de fichiers
|
|
||||||
|
|
||||||
|
### Partage de fichiers
|
||||||
Pour éditer votre code au chaud sur votre hôte, il y a plein de solutions.
|
Pour éditer votre code au chaud sur votre hôte, il y a plein de solutions.
|
||||||
La plus simple, déjà mentionnée, consiste à passer par une connexion SSH (VS
|
La plus simple, déjà mentionnée, consiste à passer par une connexion SSH (VS
|
||||||
Code propose un module dédié très simple et performant, mais tout montage de
|
Code propose un module dédié très simple et performant, mais tout montage de
|
||||||
type `sshfs`peut aussi faire l'affaire).
|
type `sshfs`peut aussi faire l'affaire).
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
Une autre solution est de laisser le source (clone git) sur l'hôte, et de
|
||||||
|
partager ce répertoire avec la VM. Dans VirtualBox / config. VM / Dossiers
|
||||||
|
partagés, ajouter un partage. Par exemple, vous mettez vos sources sur l'hôte
|
||||||
|
dans `~/src`, et dans la VM sur `/src`.
|
||||||
|
Dans ScoDoc, `/opt/scodoc/Products/ScoDoc` est alors un lien symbolique vers
|
||||||
|
votre `src/ScoDoc`.
|
||||||
|
|
||||||
|
#### Détails sur les partages avec VirtualBox
|
||||||
|
Pour pouvoir utiliser des liens symboliques dans le partage:
|
||||||
|
|
||||||
|
VBoxManage setextradata "Debian11" VBoxInternal2/SharedFoldersEnableSymlinksCreate/src 1
|
||||||
|
|
||||||
|
Attention, VirtualBox gère mal les droits/permissions du répertoire partagé. les utilisateurs linux (dans la VM) doit être dans le groupe `vboxsf`:
|
||||||
|
|
||||||
|
usermod -a -G vboxsf root
|
||||||
|
|
||||||
|
Typiquement, les fichiers sources vus de la VM ont les droits
|
||||||
|
|
||||||
|
-rwxrwx--- 1 root vboxsf 129579 Feb 1 15:04 ZNotes.py
|
||||||
|
|
||||||
|
alors que le même fichier sera vu de l'hôte
|
||||||
|
|
||||||
|
-rw-r--r-- 1 viennet staff 127K Feb 1 15:04 ../ScoDoc/ZNotes.py
|
||||||
|
|
||||||
|
Compte-tenu de ces différences, je préfères utiliser git sur l'hôte.
|
||||||
|
|
||||||
|
Il arrive (?) que Virtual Box change les droits unix sur les fichiers partagés. Dans ce cas, j'utilise, sur l'hôte
|
||||||
|
|
||||||
|
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
|
||||||
|
|
||||||
|
# Interaction avec ScoDoc 7 (ancien ScoDoc, avant l'été 2021)
|
||||||
|
|
||||||
|
ScoDoc 7 utilise Zope, et ce n'est pas un environnement commode pour débugguer.
|
||||||
|
|
||||||
|
Pour avoir un terminal interactif permettant de jouer avec ScoDoc, lancer
|
||||||
|
|
||||||
|
cd /opt/scodoc/Product/ScoDoc
|
||||||
|
|
||||||
|
scotests/scointeractive.sh DEPT
|
||||||
|
|
||||||
|
où `DEPT` est un département existant.
|
||||||
|
|
||||||
|
Ce script lance ScoDoc et charge `debug.py`.
|
||||||
|
|
||||||
|
Vous pouvez lancer un script avant d'entrer en mode interactif, par exemple
|
||||||
|
|
||||||
|
scotests/scointeractive.sh -r DEPT scotests/test_capitalisation.py
|
||||||
|
|
||||||
|
(voir plus d'exemples dans le répertoire `scotests`).
|
||||||
|
|
||||||
|
## problèmes de verrous
|
||||||
|
Zope créé un verrou pour ne jamais avoir deux process accédant à sa base de données objet à la fois. Celà empêche de lancer les scripts intercatif si un serveur ScoDoc est lancé, ce qui est ennuyeux quand on debugue. On peut, sur une machine de développement seulement, contourner cela en hackant le code du serveur:
|
||||||
|
|
||||||
|
Éditer (après installation normale sur votre serveur de développement):
|
||||||
|
/opt/zope213/lib/python2.7/site-packages/zc/lockfile
|
||||||
|
|
||||||
|
Ligne 56, méthode `_lock_file`
|
||||||
|
ajouter juste
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- [Conventions de codage](DevConventions.md)
|
|
||||||
- [API ScoDoc 9](ScoDoc9API.md)
|
|
||||||
- [Guide installation](GuideInstallDebian11.md)
|
|
||||||
- [Gestion des utilisateurs](AdminUsers.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
-
|
|
@ -1,51 +0,0 @@
|
|||||||
# Contacter le projet ScoDoc
|
|
||||||
|
|
||||||
La plate-forme Discord est le principal canal de communication entre les
|
|
||||||
utilisateurs et entre les développeurs:
|
|
||||||
[rejoindre le discord ScoDoc Assistance](https://discord.gg/ybw6ugtFsZ)
|
|
||||||
|
|
||||||
Il existe aussi un autre salon Discord réservé aux développeurs, n'hésitez pas à
|
|
||||||
demander à le rejoindre.
|
|
||||||
|
|
||||||
## Liste de diffusion
|
|
||||||
|
|
||||||
* [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces) liste à très faible trafic, en lecture seule, seules des annonces importantes sont postées (quelques messages par an), tous les utilisateurs sont encouragés à s'y abonner. Indispensable aux administrateurs du logiciel.
|
|
||||||
|
|
||||||
## Signaler un problème (bug logiciel)
|
|
||||||
|
|
||||||
Tous les utilisateurs sont encouragés à signaler les erreurs qu'ils rencontrent,
|
|
||||||
afin qu'elles soient rapidement corrigées.
|
|
||||||
|
|
||||||
Pour cela, il existe un canal dédié sur le Discord: [🐞 bugs](https://discord.gg/BvAFnZU6UA)
|
|
||||||
|
|
||||||
Pour signaler un bug, il faut donner le maximum d'informations pour que nous
|
|
||||||
puissions le reproduire. Le mieux est d'envoyer les données d'assistance (lien
|
|
||||||
en bas de la page d'accueil du département) et d'indiquer quelle page ou
|
|
||||||
étudiant ou opération pose problème. Les données d'assistance ne contiennent pas
|
|
||||||
les noms, adresses et autres données personnelles: il faut donc indiquer
|
|
||||||
l'adresse de la page et jamais le nom d'un étudiant. Par exemple
|
|
||||||
`QLIO/Scolarite/Notes/formsemestre_bulletinetud?formsemestre_id=123&etudid=123456`
|
|
||||||
permet d'indiquer le semestre et l'étudiant à regarder.
|
|
||||||
|
|
||||||
![Envoi des données d'assistance](fig/envoi-assistance.png)
|
|
||||||
|
|
||||||
## Développeurs
|
|
||||||
|
|
||||||
Vous trouverez les sources du projet, les tickets (*issues*) et autres outils sur
|
|
||||||
|
|
||||||
* [gitea](https://scodoc.org/git/)
|
|
||||||
|
|
||||||
Vous pouvez demander un compte sur cette plate-forme pour ajouter des tickets,
|
|
||||||
proposer votre code (*pull requests*).
|
|
||||||
|
|
||||||
(Nous avons choisi le logiciel libre [Gitea](https://gitea.io) et non GitHub
|
|
||||||
afin de ne pas dépendre d'une plate-forme commerciale et de garder un contrôle
|
|
||||||
complet sur nos travaux).
|
|
||||||
|
|
||||||
## Anciennes listes de diffusion
|
|
||||||
|
|
||||||
Ces listes ne sont plus utilisées, remplacées par le Discord.
|
|
||||||
|
|
||||||
* [Notes](https://listes.univ-paris13.fr/mailman/listinfo/notes) discussions ou questions liées à l'utilisation du logiciel, entraide entre utilisateurs: vous pouvez y intervenir librement (les messages sont modérés pour éviter le spam).
|
|
||||||
|
|
||||||
* [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel) échanges entre développeurs. Abonnez-vous si vous êtes intéressés par le développement du logiciel, souhaitez participer ou poser des questions techniques.
|
|
@ -1,37 +1,30 @@
|
|||||||
# Contribuer à ScoDoc
|
# Contribuer à ScoDoc
|
||||||
|
|
||||||
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun
|
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun
|
||||||
peut aider, en améliorant la documentation (page, vidéos), en rejoignant le
|
peut aider, en améliorant la documentation (page, vidéos), en s'abonnant à la
|
||||||
serveur Discord (voir [contacts](Contact.md)) pour y aider les
|
liste Notes (voir [listes de diffusion](ListesDeDiffusion.md)) pour y aider les
|
||||||
collègues, ou en développant ou testant le logiciel.
|
collègues, ou en développant ou testant le logiciel.
|
||||||
|
|
||||||
Les canaux de communication entre développeurs sont
|
Les canaux de communication entre développeurs sont d'une part la liste de
|
||||||
[indiqués sur cette page](Contact.md). Vous pouvez demander un compte sur le [git du
|
diffusion mail [scodoc-devel](ListesDeDiffusion.md), d'autre part un serveur
|
||||||
projet](https://scodoc.org/git), consulter/ajouter des tickets, proposer votre
|
Discord (accès sur invitation, demander par mail). Vous pourrez demander un
|
||||||
code (*pull requests*).
|
compte sur le [git du projet](https://scodoc.org/git), consulter/ajouter des
|
||||||
|
tickets, proposer votre code (*pull requests*).
|
||||||
|
|
||||||
## Contribuer à la documentation
|
## Contribuer à la documentation
|
||||||
|
|
||||||
La documentation est constituée de deux parties:
|
La documentation est constituée de deux parties:
|
||||||
|
|
||||||
- les vidéos postées sur [la chaîne
|
- les vidéos postées sur [la chaîne
|
||||||
YouTube](https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1).
|
YouTube](https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1).
|
||||||
Proposez de nouvelles vidéos, c'est très facile à faire !
|
Proposez de nouvelles vidéos, c'est très facile à faire !
|
||||||
|
|
||||||
- Les pages Web comme celle que vous lisez actuellement. La documentation est
|
- 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
|
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
|
[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://scodoc.org/git/viennet/DocScoDoc).
|
||||||
|
|
||||||
## Contribuer au logiciel
|
## Contribuer au logiciel
|
||||||
|
|
||||||
Le [dépôt principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs
|
Le [dépot principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs
|
||||||
branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).
|
branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide développeurs](GuideDeveloppeurs.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,130 +0,0 @@
|
|||||||
# Contrôle d'accès des fonctions de l'API
|
|
||||||
|
|
||||||
## Rappels
|
|
||||||
|
|
||||||
Dans ScoDoc, les permissions sont liées à des rôles. Un utilisateur a un ou plusieurs
|
|
||||||
rôles, dans un ou tous les départements (si le département est null, on
|
|
||||||
considère que le rôle est donnés dans tous les départements).
|
|
||||||
|
|
||||||
Dans ScoDoc Web, toutes les routes sont liées à des départements
|
|
||||||
|
|
||||||
```txt
|
|
||||||
/ScoDoc/<str:dept_acronym>/Scolarite/
|
|
||||||
```
|
|
||||||
|
|
||||||
sauf la page d'accueil (`/ScoDoc/index`), les pages de configuration générale
|
|
||||||
(`ScoDoc/configuration`) et les pages "entreprises" (`ScoDoc/entreprises/`).
|
|
||||||
|
|
||||||
L'API manipule des objets (formsemestres, modules, notes...) identifiés par leur
|
|
||||||
`id` qui est unique dans la base (note: les code INE et NIP ne sont pas des id,
|
|
||||||
et peuvent se retrouver dans plusieurs départements, notamment en cas de
|
|
||||||
transfert d'un étudiant d'un département à un autre).
|
|
||||||
|
|
||||||
## Contrôle des permissions par l'API et départements
|
|
||||||
|
|
||||||
Ainsi, une route API comme `/partition/<int:partition_id>` n'est pas ambigüe.
|
|
||||||
Toutefois, ScoDoc doit déterminer si l'utilisateur a le droit d'accéder (ou de
|
|
||||||
modifier) cet objet. Pour cela, ScoDoc a besoin de connaitre le département.
|
|
||||||
C'est généralement assez simple: dans cet exemple, l'objet `partition` a une
|
|
||||||
relation avec `formsemestre`, lui même lié à son département: on écrit
|
|
||||||
`p.formsemestre.departement.acronym`.
|
|
||||||
|
|
||||||
Cependant, le contrôle de l'accès est plus facile à exprimer (donc plus sûr,
|
|
||||||
moins de risque d'erreurs) avec un décorateur: on écrit typiquement les vues:
|
|
||||||
|
|
||||||
```py
|
|
||||||
@permission_required(Permission.ScoView)
|
|
||||||
def ma_vue( arg ):
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
Comme nous l'avons dit, pour les vues Web (voir sources dans `app/view/*.py`),
|
|
||||||
le département est dans la route (URL): ainsi le tableau de bord d'un
|
|
||||||
formsemestre est
|
|
||||||
|
|
||||||
```txt
|
|
||||||
ScoDoc/<str:dept_acronym>/Scolarite/Notes/formsemestre_status
|
|
||||||
```
|
|
||||||
|
|
||||||
La vue s'écrit
|
|
||||||
```py
|
|
||||||
@bp.route("/formsemestre_status")
|
|
||||||
@scodoc
|
|
||||||
@permission_required(Permission.ScoView)
|
|
||||||
def formsemestre_status(formsemestre_id:int):
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
Le décorateur `scodoc` (défini dans `app/scodoc/decorators.py`) récupère le
|
|
||||||
département présent dans la route et affecte deux attributs dans la requête
|
|
||||||
|
|
||||||
```py
|
|
||||||
g.scodoc_dept = "RT" # l'acronyme du dept
|
|
||||||
g.scodoc_dept_id = 5 # l'id du dept
|
|
||||||
```
|
|
||||||
|
|
||||||
Le décorateur suivant, `permission_required` peut ainsi vérifier que la
|
|
||||||
permission est bien accordée dans ce département.
|
|
||||||
|
|
||||||
Pour l'API, on a deux routes:
|
|
||||||
|
|
||||||
```py
|
|
||||||
/ScoDoc/api/partition/<int:partition_id>
|
|
||||||
```
|
|
||||||
|
|
||||||
Dans ce cas, le décorateur `scodoc` ne récupère pas de département
|
|
||||||
(`g.scodoc_dept`est mis à `None`), et `permission_required`exige alors que la
|
|
||||||
permission soit accordé dans *tous les départements* (`dept`à `None`).
|
|
||||||
|
|
||||||
Lorsque l'API est utilisée depuis une vue web de ScoDoc, donc par un utilisateur
|
|
||||||
ordinaire n'ayant de rôles que dans son (ou ses) départements, ce mécanisme
|
|
||||||
échoue. On propose donc une autre route, de la forme
|
|
||||||
|
|
||||||
```txt
|
|
||||||
/ScoDoc/<str:dept_acronym>/api/partition/<int:partition_id>
|
|
||||||
```
|
|
||||||
|
|
||||||
Les décorateurs fonctionnent alors bien.
|
|
||||||
|
|
||||||
## Écriture d'une vue API
|
|
||||||
|
|
||||||
Il reste à la charge des fonctions de l'API d'effectuer la vérification que les
|
|
||||||
objets demandés sont bien dans le département donné par la route (point de
|
|
||||||
vigilance: risque de fuite de données si mal codé). Dans la plupart des cas, il
|
|
||||||
faut pour cela ajouter une jointure. par exemple, pour demander une partition,
|
|
||||||
on écrira non pas
|
|
||||||
|
|
||||||
```py
|
|
||||||
p = Partition.query.get(partition_id)
|
|
||||||
```
|
|
||||||
|
|
||||||
mais plutôt
|
|
||||||
|
|
||||||
```py
|
|
||||||
p = Partition.query.filter_by(id=partition_id).join(FormSemestre).filter_by(dept_id=g.scodoc_dept_id)
|
|
||||||
```
|
|
||||||
|
|
||||||
Écriture d'une vue de l'API accessible en mode web et API:
|
|
||||||
|
|
||||||
```py
|
|
||||||
@api_bp.route("/api_function/<int:arg>")
|
|
||||||
@api_web_bp.route("/api_function/<int:arg>")
|
|
||||||
@login_required
|
|
||||||
@scodoc
|
|
||||||
@permission_required(Permission.ScoView)
|
|
||||||
def api_function(arg: int):
|
|
||||||
"""Une fonction quelconque de l'API"""
|
|
||||||
return jsonify({"current_user": current_user.to_dict(), "dept": g.scodoc_dept})
|
|
||||||
```
|
|
||||||
|
|
||||||
## Fonctionnement interne du contrôle d'accès ScoDoc
|
|
||||||
|
|
||||||
Les accès ScoDoc sont gérés avec `flask-login`. L'authentification est faite
|
|
||||||
soit par un cookie de session (web), soit par un jeton `jwt` (API).
|
|
||||||
|
|
||||||
Ce décodage/contrôle est fait par la fonction
|
|
||||||
`app.auth.logic.load_user_from_request()`.
|
|
||||||
|
|
||||||
En cas de refus (jeton ou cookie absent ou invalide), on a une redirection vers
|
|
||||||
la page de login (en mode web), ou un message d'erreur JSON 401 pour l'API
|
|
||||||
(voir `app.auth.logic.unauthorized_handler`).
|
|
@ -1,107 +0,0 @@
|
|||||||
# Absences et emplois du temps (développeurs)
|
|
||||||
|
|
||||||
Notes/idées pour les développeurs. WIP, en vrac.
|
|
||||||
|
|
||||||
## Calendriers et évènements
|
|
||||||
|
|
||||||
Un calendrier est ici une liste d'évènements, chaque cours étant un évènement. L'évènement
|
|
||||||
comporte:
|
|
||||||
|
|
||||||
- dates début et fin;
|
|
||||||
- identifiant du groupe d'étudiants concerné (dans la formation, par ex. groupe
|
|
||||||
de TD);
|
|
||||||
- identifiant du module (enseignement): par exemple, l'élément Apogée.
|
|
||||||
- identifiant de l'enseignant concerné.
|
|
||||||
|
|
||||||
On suppose qu'on a un calendrier par "formation" (`FormSemestre` ScoDoc),
|
|
||||||
identifié par un code (par exemple, code étape Apogée) que l'on appellera `edt_id`.
|
|
||||||
|
|
||||||
### Exemple: cas de l'USPN
|
|
||||||
|
|
||||||
Cet établissement utilise HyperPlanning. Les calendrier sont exportés
|
|
||||||
régulièrement, on a un fichier ics par formation (code Apogée).
|
|
||||||
|
|
||||||
```ics
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CATEGORIES:HYPERPLANNING
|
|
||||||
DTSTAMP:20231101T140300Z
|
|
||||||
LAST-MODIFIED:20230905T094241Z
|
|
||||||
UID:Cours-423101-5-BUT2_RT_pa._CYBER-Index-Education
|
|
||||||
DTSTART:20230920T060000Z
|
|
||||||
DTEND:20230920T083000Z
|
|
||||||
SUMMARY;LANGUAGE=fr:TP2 GPR1 - VCYR303 - Services reseaux ava (VCYR303) - 1234 - M. VIENNET EMMANUEL - V2ROM - BUT2 RT pa. ROM - Groupe 1
|
|
||||||
LOCATION;LANGUAGE=fr:P202 CRIT - P202 CRIT.RESEAUX
|
|
||||||
DESCRIPTION;LANGUAGE=fr:Matière : VCYR303 - Services reseaux ava (VCYR303)\nEnseignant : 1234 - M. VIENNET EMMANUEL\nPromotion : V2ROM - BUT2 RT pa. ROM\nTD : Groupe 1\nSalle : P202 CRIT - P202 CRIT.RESEAUX\nMémo : TP2 GPR1\n
|
|
||||||
X-ALT-DESC;FMTTYPE=text/html:Matière : VCYR303 - Services reseaux ava (VCYR303)<br/>Enseignant : 1234 - M. VIENNET EMMANUEL<br/>Promotion : V2ROM - BUT2 RT pa. ROM<br/>TD : Groupe 1<br/>Salle : P202 CRIT - P202 CRIT.RESEAUX<br/>Mémo : TP2 GPR1<br/>
|
|
||||||
END:VEVENT
|
|
||||||
```
|
|
||||||
|
|
||||||
On a ici:
|
|
||||||
|
|
||||||
- identifiant de la formation: dans le nom du fichier calendrier (ici `V2CYB.ics`);
|
|
||||||
- identifiant du groupe: dans `SUMMARY`, `* - <groupe>`
|
|
||||||
- identifiant du module: on a le code `VCYR303` à trois endroits: `SUMMARY`,
|
|
||||||
`DESCRIPTION`, `X-ALT-DESC`.
|
|
||||||
- identifiant de l'enseignant: `SUMMARY`, `DESCRIPTION`, `X-ALT-DESC`.
|
|
||||||
|
|
||||||
## Transcodage des identifiants
|
|
||||||
|
|
||||||
ScoDoc n'utilise évidemment pas les mêmes identifiants que ceux trouvés dans les
|
|
||||||
calendriers.
|
|
||||||
|
|
||||||
### "Formation"
|
|
||||||
|
|
||||||
Il s'agit du `FormSemestre`. On a déjà les codes étapes Apogée. On
|
|
||||||
proposera un champs "identifiant emploi du temps" (`edt_id`), et à défaut on
|
|
||||||
utilisera le premier code étape Apogée.
|
|
||||||
|
|
||||||
### Groupes
|
|
||||||
|
|
||||||
Chaque groupe ScoDoc peut indiquer son ou ses identifiants edt (`edt_id`). A défaut, on
|
|
||||||
utilisera son nom (il sera donc conseillé aux utilisateurs d'adopter les mêmes
|
|
||||||
noms de groupes dans ScoDoc et dans leur logiciel d'emploi du temps).
|
|
||||||
|
|
||||||
### Module
|
|
||||||
|
|
||||||
Ajouter `etd_id` dans `Module`, avec utilisation de `code_apogee` si absent.
|
|
||||||
|
|
||||||
### Enseignant
|
|
||||||
|
|
||||||
`edt_id` (dans l'exemple précédent `"1234"`), doit être renseigné dans ScoDoc. A
|
|
||||||
l'USPN, on peut récupérer cette information dans le CAS (dans `supannEmpId` et
|
|
||||||
`employeeNumber`).
|
|
||||||
|
|
||||||
Champ `edt_id` dans `User`. Affecté par l'authentification CAS, qui peut
|
|
||||||
récupérer une information dans la réponse XML du serveur CAS, grâce à
|
|
||||||
l'expression `cas_edt_id_from_xml_regexp` de la config générale. SuperAdmin peut
|
|
||||||
aussi forcer manuellement l'`edt_id` des comptes utilisateurs.
|
|
||||||
|
|
||||||
## Architecture technique
|
|
||||||
|
|
||||||
### Principes généraux
|
|
||||||
|
|
||||||
- ScoDoc consomme la donnée "emploi du temps" mais n'a pas vocation à la
|
|
||||||
republier (on ne proposera aucune API pour ce faire, les clients intéressés
|
|
||||||
devant s'adresser à l'API (ou équivalent) du logiciel d'emplois du temps).
|
|
||||||
|
|
||||||
- ScoDoc est agnostique sur le logiciel d'emploi du temps et n'effectue aucune
|
|
||||||
requête API vers celui-ci. Il se contente de consommer des calendriers (ics) copiés
|
|
||||||
(par exemple chaque heure) dans un répertoire accessible au serveur ScoDoc.
|
|
||||||
|
|
||||||
- Chaque `FormSemestre` va chercher à s'associer à un (et un seul ?) calendrier.
|
|
||||||
|
|
||||||
## Fonctions proposées aux utilisateurs
|
|
||||||
|
|
||||||
L'objectif est de simplifier la saisie des absences: afficher l'emploi du temps
|
|
||||||
par semaine, et permettre la saisie des absences d'un cours donné en ayant
|
|
||||||
automatiquement pré-rempli le module, la date, l'heure de début et l'heure de
|
|
||||||
fin.
|
|
||||||
|
|
||||||
En option, restreindre la saisie des absences par les enseignants aux seules
|
|
||||||
plages/groupes qui les concernent.
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- Emplois du temps: [doc utilisateur](EmploisDuTemps.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
|||||||
# Conventions de codage pour ScoDoc
|
|
||||||
|
|
||||||
Le projet étant très ancien, le code est passé par différentes conventions et
|
|
||||||
frameworks. Le style de python et celui du *frontend* web ont considérablement
|
|
||||||
évolués ces dernières décennies.
|
|
||||||
|
|
||||||
Pour les nouveaux codes, respecter les principes suivants:
|
|
||||||
|
|
||||||
- ScoDoc est avant tout une application serveur écrite en Python, qui offre des
|
|
||||||
services via une interface Web, une API, et accessoirement la ligne de
|
|
||||||
commande unix.
|
|
||||||
|
|
||||||
- Les pages Web générées doivent l'être en Python côté serveur. On peut utiliser
|
|
||||||
du JS pour les pages dynamiques complexes (eg éditeur de partition) mais
|
|
||||||
éviter d'utiliser du JS pour générer des éléments statiques: l'abus de JS
|
|
||||||
conduit à dupliquer du code (qui existe en général dans le serveur) et
|
|
||||||
augmente les coûts de maintenance.
|
|
||||||
|
|
||||||
## Formatage du code
|
|
||||||
|
|
||||||
- l'usage de **[black](https://black.readthedocs.io/en/stable/)** est obligatoire
|
|
||||||
- l'usage de pylint et mypy est fortement recommandé
|
|
||||||
- Pour le code JS, indentation avec 2 espaces (sous VS Code, utiliser *Prettier*).
|
|
||||||
|
|
||||||
## Conventions standard Python
|
|
||||||
|
|
||||||
On se tient à la PEP8, c'est à dire en résumé:
|
|
||||||
`UneClasse`, `une_fonction`, `_une_fonction_privee`, `une_variable`, `UNE_CONSTANTE_GLOBALE`.
|
|
||||||
|
|
||||||
Les noms de fichiers sont en minuscules sans accents ni espaces, `comme_ceci.py`.
|
|
||||||
|
|
||||||
## Annotations de type
|
|
||||||
|
|
||||||
On annote les paramètres et résultats des fonctions.
|
|
||||||
|
|
||||||
```py
|
|
||||||
def _upload_justificatif_files(
|
|
||||||
just: Justificatif, form: AjoutJustificatifEtudForm
|
|
||||||
) -> bool:
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
## Vues et templates
|
|
||||||
|
|
||||||
Les vues utilisent un template *Jinja*, fichier avec extension j2.
|
|
||||||
|
|
||||||
On s'astreint, sauf cas particulier, à un nommage identique de la route, la vue et du template.
|
|
||||||
|
|
||||||
```py
|
|
||||||
@bp.route("/un_exemple")
|
|
||||||
def un_exemple(...):
|
|
||||||
...
|
|
||||||
return render_template(".../un_exemple.j2")
|
|
||||||
```
|
|
||||||
|
|
||||||
## Accès à la base de donnée
|
|
||||||
|
|
||||||
Sauf exception (requêtes exotiques, problèmes de performance) à discuter, les
|
|
||||||
accès à la base se font à travers l'ORM *SQLAlchemy*. Mes modèles sont définis
|
|
||||||
dans `app/models`, sauf les comptes utilisateurs qui sont dans
|
|
||||||
`/app/auth/models.py`.
|
|
||||||
|
|
||||||
Au moment de la définition de nouveaux modèles, éviter si possible les champs
|
|
||||||
*nullables*, penser à créer là où ce sera utile des index.
|
|
||||||
|
|
||||||
## Tableaux
|
|
||||||
|
|
||||||
ScoDoc génère beaucoup de tableaux, sauf exception destinés à l'affichage Web et à l'export xlsx.
|
|
||||||
|
|
||||||
On utilise la super-classe `Table` de `app/tables/table_builder.py`.
|
|
||||||
|
|
||||||
Le rendu HTML utilise *DataTables*.
|
|
||||||
|
|
||||||
## Dates et heures
|
|
||||||
|
|
||||||
ScoDoc, contrairement à de nombreuses applications, est centré sur les
|
|
||||||
*étudiants* et les enseignements, qui sont censés opérer dans le fuseau horaire
|
|
||||||
du serveur. Cela signifie que, quelle que soit l'emplacement de l'utilisateur,
|
|
||||||
les heures affichées et saisies par ScoDoc seront données dans le fuseau horaire
|
|
||||||
du serveur.
|
|
||||||
|
|
||||||
L'API publie et reçoit des heures au format ISO avec fuseau horaire (*timezone*) et n'est pas
|
|
||||||
concernée par cette remarque.
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Introduction au développement ScoDoc](DevInternals.md)
|
|
||||||
- [Guide développeurs](GuideDeveloppeurs.md)
|
|
||||||
- [API ScoDoc 9](ScoDoc9API.md)
|
|
||||||
- [Modélisation du BUT](ModelisationParcoursBUT.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,48 +0,0 @@
|
|||||||
# Cursus ScoDoc
|
|
||||||
|
|
||||||
Les cursus pédagogiques sont définis dans ScoDoc par des classes de "cursus" qui
|
|
||||||
définissent les paramètres: nombre de semestres, modalités de validation des UE,
|
|
||||||
etc.
|
|
||||||
|
|
||||||
Plusieurs cursus sont définis dans ScoDoc, l'utilisateur choisi l'un d'entre eux
|
|
||||||
pour chacun des programmes pédagogique (menu **Type de parcours**). Les cursus
|
|
||||||
existants incluent les suivants:
|
|
||||||
|
|
||||||
* BUT (*Bachelor Universitaire de Technologie*, usuellement en 6 semestres)
|
|
||||||
* DUT (*Diplôme Universitaire de Technologie*, en quatre semestres)
|
|
||||||
* Licence Professionnelle
|
|
||||||
* Licence
|
|
||||||
* Master (différents types)
|
|
||||||
* etc.
|
|
||||||
|
|
||||||
Il est possible d'ajouter des cursus adaptés en ajoutant du code Python.
|
|
||||||
Toutefois, afin de ne pas perturber les mises à jours et de garantir la
|
|
||||||
pérennité des modifications, il est très recommandé de partager les
|
|
||||||
modifications pour inclusion dans le code ScoDoc. Contacter pour cela les
|
|
||||||
développeurs ([Contacts](Contact.md)).
|
|
||||||
|
|
||||||
## Quelques indications pour les programmeurs
|
|
||||||
|
|
||||||
Les parcours sont définis dans le module `codes_cursus.py`. Chaque parcours
|
|
||||||
correspond à une sous-classe de `TypeCursus`, définissant des paramètres et
|
|
||||||
quelques méthodes.
|
|
||||||
|
|
||||||
Les paramètres (déclarés comme des variables de classe) sont les suivants:
|
|
||||||
|
|
||||||
Nom | Type |
|
|
||||||
--- | ---- | ---
|
|
||||||
TYPE_PARCOURS| `int` | id du parcours (un entier unique, à demander sur scodoc-devel)
|
|
||||||
NAME| `string` | nom du parcours présenté à l'utilisateur (requis)
|
|
||||||
NB_SEM| `int` | durée en semestres (1)
|
|
||||||
BARRE_MOY | `float` | seuil validation semestre (10/20)
|
|
||||||
BARRE_UE_DEFAULT | `float` | seuil moy UE pour valider semestre (8/20)
|
|
||||||
BARRE_UE | `dict { ue : seuil }`| seuil par UE (`{}`)
|
|
||||||
NOTES_BARRE_VALID_UE_TH | `float` | seuil validation UE (10./20)
|
|
||||||
ALLOW_SEM_SKIP| `bool` | passage: autorise-t-on les sauts de semestres ? (`False`)
|
|
||||||
SESSION_NAME| `string` | nom des sessions (`'semestre'`)
|
|
||||||
SESSION_ABBRV | `string` | `'S' -> S1, S2, ...`
|
|
||||||
UNUSED_CODES | `set` | ensemble des codes jury non autorisés dans ce parcours (`set()`)
|
|
||||||
UE_IS_MODULE| `bool` | un seul module par UE (si plusieurs modules, étudiants censéments inscrits à un seul d'entre eux) (`False`)
|
|
||||||
ECTS_ONLY| `bool` | parcours avec progression basée uniquement sur les ECTS (`False`)
|
|
||||||
ALLOWED_UE_TYPES | `set` | types d'UE autorisés dans ce parcours
|
|
||||||
|
|
396
docs/DevGit.md
@ -1,396 +0,0 @@
|
|||||||
# Utilisation de git pour ScoDoc
|
|
||||||
|
|
||||||
Le dépôt est <https://scodoc.org/git/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
|
|
||||||
(`api`, `dev92`, `entreprises`, ...) avant d'être intégrés après tests. La
|
|
||||||
branche `Scodoc7` était l'ancienne (jusqu'à septembre 2021) version de ScoDoc.
|
|
||||||
|
|
||||||
Ci-dessous quelques pense-bête qui peuvent servir.
|
|
||||||
|
|
||||||
## Hot fixes (internes)
|
|
||||||
|
|
||||||
Pour les développeurs internes (écriture sur le dépôt master), un exemple
|
|
||||||
basique illustrant le cycle de développement:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Créer une branche
|
|
||||||
# si besoin (travail en cours), utiliser git stash avant
|
|
||||||
git checkout master
|
|
||||||
git branch hotfix
|
|
||||||
git checkout hotfix
|
|
||||||
... dev, test ...
|
|
||||||
git add ...
|
|
||||||
git commit -m "fixed ..."
|
|
||||||
git checkout master
|
|
||||||
git merge hotfix
|
|
||||||
git branch -d hotfix
|
|
||||||
# publication
|
|
||||||
|
|
||||||
# éventuellement: git stash pop
|
|
||||||
```
|
|
||||||
|
|
||||||
Dans la plupart des cas, on travaillera sur son propre dépôt (clone du dépôt
|
|
||||||
origine), et on proposera une *pull request* (PR, *demande d'ajout* en français).
|
|
||||||
|
|
||||||
## Mettre à jour votre branche
|
|
||||||
|
|
||||||
Quand vous travaillez dans votre branche `ma_branche`, pour lui appliquer les
|
|
||||||
mises à jour de `master` (remote), faire:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git pull origin master
|
|
||||||
```
|
|
||||||
|
|
||||||
## Autre exemple
|
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
remplacer par l'URL de votre dépôt sur gitea au besoin. Si vous avez votre
|
|
||||||
propre dépôt sur gitea, utilisez deux "remote": l'un pour votre dépôt gitea (ici
|
|
||||||
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 -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)
|
|
||||||
```
|
|
||||||
|
|
||||||
Ensuite, tout est prêt, vous créez votre branche:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git checkout -b ma_branche
|
|
||||||
```
|
|
||||||
|
|
||||||
et la poussez sur votre dépôt: (remplacer `mon_origin`au besoin)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git push -u mon_origin ma_branche
|
|
||||||
```
|
|
||||||
|
|
||||||
Ajoutez au fur et à mesure vos commits comme d'habitude. Mais régulièrement
|
|
||||||
(chaque jour), mettez à jour pour éviter de diverger de la branche `master` (ou
|
|
||||||
autre suivant les cas) de ScoDoc:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git pull origin master
|
|
||||||
```
|
|
||||||
|
|
||||||
Vous pouvez alors à tout moment soumettre une PR propre.
|
|
||||||
|
|
||||||
## Commandes utiles, en vrac
|
|
||||||
|
|
||||||
- `git log -L:fonction_python:fichier.py`
|
|
||||||
- Commits locaux: `git log @{u}..`
|
|
||||||
|
|
||||||
### Refactoring
|
|
||||||
|
|
||||||
Lint tous les fichiers modifiés:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E
|
|
||||||
```
|
|
||||||
|
|
||||||
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 \'
|
|
||||||
```
|
|
||||||
|
|
||||||
Prépare un sed pour renommer les variables non définies:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
for f in *.py
|
|
||||||
do
|
|
||||||
pylint --disable=all -e E "$f" | grep undefined-variable | awk '{print "sed -i .bak s/"$4"/scu."$4"/ '$f'";}' | sort | uniq | tr -d \'
|
|
||||||
done
|
|
||||||
```
|
|
||||||
|
|
||||||
Restore les modes au besoin (SAMBA les changent parfois):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
|
|
||||||
```
|
|
||||||
|
|
||||||
Note pour travailler sur VirtualBox:
|
|
||||||
|
|
||||||
```text
|
|
||||||
addgroup scodoc vboxsf
|
|
||||||
```
|
|
||||||
|
|
||||||
## Préparation d'une PR (Pull Request) (niveau avancé)
|
|
||||||
|
|
||||||
### Principes généraux
|
|
||||||
|
|
||||||
Les remarques de cette section visent à obtenir une relecture facile de votre
|
|
||||||
demande d'ajout (*pull request*, dite "PR"):
|
|
||||||
|
|
||||||
- Éviter les modifications de forme qui ne changent pas le sens du code. L'utilisation de
|
|
||||||
[`black`](https://black.readthedocs.io/) est obligatoire : elle permet de normaliser la présentation
|
|
||||||
du code. Cela évite de générer des différences ne représentant que des
|
|
||||||
changements de mise en forme (indentation, passages à la ligne). Cela évite
|
|
||||||
aussi au développeur d'avoir à y réfléchir, autant de temps gagné !
|
|
||||||
|
|
||||||
- Avoir un nombre d'étapes de validation faible (idéalement un seul commit pour
|
|
||||||
les PR courantes - peu volumineuses).
|
|
||||||
|
|
||||||
- La PR doit toujours être énoncée par rapport au dernier commit de la branche
|
|
||||||
que vous visez (en général `master` du dépôt original).
|
|
||||||
|
|
||||||
### Manipulations
|
|
||||||
|
|
||||||
Les manipulations sont décrites selon quatre phases du développement : l'installation,
|
|
||||||
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`).
|
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
Par la suite vous aurez donc une référence vers votre dépôt personnel (`perso`)
|
|
||||||
et une référence vers le dépôt officiel (`officiel`). Si vous avez initialement
|
|
||||||
cloné l'un des deux dépôts, la référence vers le dépôt d'origine existe et a pour nom
|
|
||||||
`origin`.
|
|
||||||
|
|
||||||
La commande vous exposant tous les dépôts connus est :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git remote -v
|
|
||||||
```
|
|
||||||
|
|
||||||
### Mise en place
|
|
||||||
|
|
||||||
L'objectif de ce paragraphe est de créer une branche locale basée sur le master
|
|
||||||
du dépôt officiel et bien sur de lui donner un nom.
|
|
||||||
|
|
||||||
pour cela (**attention cela va écraser les éventuels fichiers modifiés**. Si
|
|
||||||
vous souhaitez conserver les modifications en cours, encadrez les lignes
|
|
||||||
suivantes par `git stash` (avant) et `git stash apply` (après) :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git reset --hard officiel/master
|
|
||||||
git checkout -b ma_modif
|
|
||||||
```
|
|
||||||
|
|
||||||
À partir de là, vous pouvez modifier, tester, développer et commit votre travail.
|
|
||||||
|
|
||||||
### Suivi
|
|
||||||
|
|
||||||
Si votre développement prend plusieurs jours, il est probable que la branche
|
|
||||||
principale évolue pendant ce temps.
|
|
||||||
|
|
||||||
Pour garder la cohérence, il est nécessaire de réintégrer en local les
|
|
||||||
modifications de la branche principale. Ceci peut se faire de deux façons.
|
|
||||||
|
|
||||||
- Une fusion (`merge`) applique toutes les modifications en un seul commit).
|
|
||||||
C'est la méthode couramment utilisée.
|
|
||||||
|
|
||||||
- Un `rebase` rejoue tous les commits de la nouvelle branche par dessus l'état
|
|
||||||
le plus à jour de la branche principale (il en résulte un historique plus
|
|
||||||
linéaire).
|
|
||||||
|
|
||||||
Les commandes git correspondantes :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git pull officiel master
|
|
||||||
```
|
|
||||||
|
|
||||||
ou encore
|
|
||||||
```bash
|
|
||||||
git fetch officiel
|
|
||||||
git merge officiel/master
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour un rebase (à éviter en temps normal):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git fetch officiel
|
|
||||||
git rebase officiel/merge
|
|
||||||
```
|
|
||||||
|
|
||||||
### La livraison
|
|
||||||
|
|
||||||
Ça y est. Vous avez terminé le développement. IL n'y a plus qu'à demander
|
|
||||||
l'intégration. Ceci se fait en plusieurs étapes (vous êtes bien sûr toujours sur
|
|
||||||
la branche locale `ma_modif` et toutes vos modifications ont été commitées).
|
|
||||||
|
|
||||||
#### Étape 1 : faire l'inventaire des fichiers impliqués
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git fetch officiel/master
|
|
||||||
git diff --name-only officiel/master
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Étape 2 : passer black sur les fichiers modifiés
|
|
||||||
|
|
||||||
Cette étape est automatique avec les bons réglages sous VSCode (pas trouvé
|
|
||||||
l'équivalent sous *pyCharm*).
|
|
||||||
|
|
||||||
À défaut les lignes suivantes réalisent le même travail :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
for fn in $(git diff --name-only officiel/master)
|
|
||||||
do
|
|
||||||
python3 -m black $fn
|
|
||||||
done
|
|
||||||
```
|
|
||||||
|
|
||||||
Faire une première lecture rapide pour vérifier qu'il ne reste pas de fichiers
|
|
||||||
modifiés accidentellement.
|
|
||||||
|
|
||||||
Pour obtenir la modification sur un fichier spécifique (`app/fichier.py` par
|
|
||||||
exemple):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git diff officiel/master app/fichier.py
|
|
||||||
```
|
|
||||||
|
|
||||||
Utilisateurs Windows : Vérifiez bien que les réglages de fin de ligne suivent
|
|
||||||
bien les règles Linux: pas de retour chariot (noté CR ou `\r`) en fin de ligne
|
|
||||||
mais un seul caractère line feed (noté LF ou `\n`). Le cas échéant, réglez
|
|
||||||
votre IDE pour cela.
|
|
||||||
|
|
||||||
À ce niveau là de la procédure, vous n'avez plus dans votre branche locale que
|
|
||||||
les différences strictement nécessaires à votre correctif.
|
|
||||||
|
|
||||||
#### Étape 3 : résumez tous les commits depuis le point de divergence en un seul commit
|
|
||||||
|
|
||||||
**Rarement nécessaire, uniquement si vous avez de nombreux petits commits.**
|
|
||||||
|
|
||||||
Repérez le point de divergence de votre branche locale avec officiel/master
|
|
||||||
(normalement `git merge-base HEAD officiel/master`)
|
|
||||||
|
|
||||||
Demander un `rebase` interactif depuis ce point :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git rebase -i $(git merge-base HEAD officiel/master)
|
|
||||||
```
|
|
||||||
|
|
||||||
*Explications*: Le rebase interactif permet d'enregistrer un suite de
|
|
||||||
manipulation de commit dans un seul fichier texte. Le fichier texte qui reprend
|
|
||||||
tels quels tous les commits concernés (et donc qui ne fait rien) est préparé par
|
|
||||||
la commande `-i` de la commande_ `git rebase`.
|
|
||||||
|
|
||||||
Vous pouvez ensuite modifier ce fichier dans votre éditeur favori (ou pas) (à
|
|
||||||
régler par `git config`) pour décrire_ _votre intention (réordonner, changer le
|
|
||||||
message, fusionner, ...) sur l'ensemble des commits.
|
|
||||||
|
|
||||||
Quand votre édition est terminée, git reprend la main est exécute chacune de vos
|
|
||||||
opérations. Il est possible (bien que très rare) que des conflits apparaissent
|
|
||||||
à ce moment-là. Les commandes habituelles de correction accompagnées des
|
|
||||||
commandes :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git rebase --continue # pour poursuivre le processus
|
|
||||||
git rebase --abort # pour tout abandonner
|
|
||||||
```
|
|
||||||
|
|
||||||
*vous permettront de résoudre ces problèmes exceptionnels*.
|
|
||||||
|
|
||||||
Application:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git rebase -i $(git merge-base HEAD officiel/master)
|
|
||||||
```
|
|
||||||
|
|
||||||
Vous devez obtenir dans un éditeur de texte la liste des commits opéré depuis le
|
|
||||||
début du développement sous cette forme (c'est un exemple : le nombre de lignes
|
|
||||||
peut varier) :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pick eb8cbec modif 1
|
|
||||||
pick 83eb79e modif 2
|
|
||||||
|
|
||||||
# Rebase 5ffd074..83eb79e onto 5ffd074 (2 commands)
|
|
||||||
#
|
|
||||||
# Commands:
|
|
||||||
# p, pick <commit> = use commit
|
|
||||||
# r, reword <commit> = use commit, but edit the commit message
|
|
||||||
# e, edit <commit> = use commit, but stop for amending
|
|
||||||
# s, squash <commit> = use commit, but meld into previous commit
|
|
||||||
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
|
|
||||||
# commit's log message, unless -C is used, in which case
|
|
||||||
# keep only this commit's message; -c is same as -C but
|
|
||||||
# opens the editor
|
|
||||||
# x, exec <command> = run command (the rest of the line) using shell
|
|
||||||
# b, break = stop here (continue rebase later with 'git rebase --continue')
|
|
||||||
# d, drop <commit> = remove commit
|
|
||||||
# l, label <label> = label current HEAD with a name
|
|
||||||
# t, reset <label> = reset HEAD to a label
|
|
||||||
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
|
|
||||||
# . create a merge commit using the original merge commit's
|
|
||||||
# . message (or the oneline, if no original merge commit was
|
|
||||||
# . specified); use -c <commit> to reword the commit message
|
|
||||||
#
|
|
||||||
# These lines can be re-ordered; they are executed from top to bottom.
|
|
||||||
#
|
|
||||||
# If you remove a line here THAT COMMIT WILL BE LOST.
|
|
||||||
#
|
|
||||||
# However, if you remove everything, the rebase will be aborted.
|
|
||||||
#
|
|
||||||
```
|
|
||||||
|
|
||||||
Vous pouvez réorganiser tous les commits (changer l'ordre, fusionner) en
|
|
||||||
changeant la commande pick au début de chaque ligne. L'idée ici est de fusionner
|
|
||||||
toutes les lignes avec la première en remplaçant le 'pick' à partir de la ligne
|
|
||||||
2 par `fixup`. Au besoin, vous pouvez reformuler le message de commit
|
|
||||||
(commande `reword` sur la première ligne).
|
|
||||||
|
|
||||||
Vous construirez par exemple :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
reword eb8cbec Correctif: Api - gestion des formation
|
|
||||||
fixup 83eb79e modif 2
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
Quand vous sortez de l'éditeur, git effectue toutes les opérations demandées.
|
|
||||||
|
|
||||||
À ce niveau-là de la procédure :
|
|
||||||
|
|
||||||
- vous avez un seul commit pour l'ensemble du correctif proposé ;
|
|
||||||
|
|
||||||
- toutes les différences entre officiel/master et votre branche locale sont
|
|
||||||
signifiantes.
|
|
||||||
|
|
||||||
#### Étape 4
|
|
||||||
|
|
||||||
Vous pouvez maintenant pousser votre branche locale sur votre dépôt personnel
|
|
||||||
(vers une branche de même nom):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git push --set-upstream perso ma_branche
|
|
||||||
```
|
|
||||||
|
|
||||||
Si vous avez déjà fait cette opération auparavant il est possible que le push
|
|
||||||
soit refusé (car le rebase a modifié des commits qui avaient déjà été poussés).
|
|
||||||
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/)
|
|
||||||
|
|
||||||
- Identifiez-vous
|
|
||||||
|
|
||||||
- Placez-vous sur la branche nouvellement créée
|
|
||||||
|
|
||||||
- À l'aide de l'interface du serveur, vous pouvez comparer l'état de votre
|
|
||||||
branche par rapport au master officiel, et si cela vous convient, il vous
|
|
||||||
reste à formuler une demande d'intégration (*pull request*). En remplissant
|
|
||||||
les informations demandées.
|
|
@ -1,184 +0,0 @@
|
|||||||
# Développement ScoDoc: Introduction
|
|
||||||
|
|
||||||
## Composants logiciels
|
|
||||||
|
|
||||||
- le code est écrit en Python 3.11.
|
|
||||||
- le code doit être formatté par [black](https://pypi.org/project/black/) qui
|
|
||||||
est normalement intégré à votre éditeur (VSCode et PyCharm sont deux choix
|
|
||||||
judicieux).
|
|
||||||
- outre Python, les principaux composants logiciels sont:
|
|
||||||
- [Flask](https://flask-sqlalchemy.palletsprojects.com/en/2.x/): le
|
|
||||||
framework Web, dont on utilise notamment:
|
|
||||||
- l'ORM [SQLAlchemy](https://www.sqlalchemy.org/)
|
|
||||||
- les templates [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/)
|
|
||||||
- [Postgresql](https://www.postgresql.org/)
|
|
||||||
- [Redis](https://redis.io/) cache persistant
|
|
||||||
- [NGINX](https://www.nginx.com/) serveur Web frontal
|
|
||||||
- [gunicorn](https://gunicorn.org/) WSGI HTTP server
|
|
||||||
- et bien sûr Linux (Debian 12 en 2023-2024) et systemd.
|
|
||||||
|
|
||||||
## Principaux objets
|
|
||||||
|
|
||||||
Les objets manipulés par ScoDoc sont pour la plupart stockés en base postgres et
|
|
||||||
accédé soit directement en SQL (anciennes parties de ScoDoc), soit à travers
|
|
||||||
l'ORM SQLAlchemy (recommandé pour tout nouveau code).
|
|
||||||
|
|
||||||
Les modèles correspondant sont déclarés dans `/opt/scodoc/app/models/`.
|
|
||||||
|
|
||||||
Principales classes (les noms des classes Python sont en `CamelCase`).
|
|
||||||
|
|
||||||
- Étudiants (classe `Identite`): nom, codes INE/NIP, etc
|
|
||||||
- Formations: programmes pédagogiques, contenant
|
|
||||||
- Unités d'Enseignement (`UniteEns`);
|
|
||||||
- Matières et Modules (`Module`, avec son type standard, bonus, ressources
|
|
||||||
ou SAÉ).
|
|
||||||
- FormSemestre: instanciation d'une session de formation, avec un programme
|
|
||||||
pédagogique donné (Formation), les dates de début et fin, des étudiants
|
|
||||||
inscrits, des responsables, divers codes, et les ModuleImpl mis en œuvre.
|
|
||||||
- ModuleImpl: la mise en place d'un module pédagogique (le ModuleImpl est au
|
|
||||||
Module ce que le FormSemestre est à la Formation): lié à un module, avec un
|
|
||||||
enseignant responsable et des étudiants inscrits.
|
|
||||||
- Inscriptions: tables d'association avec codes et/ou état (démission,
|
|
||||||
défaillant): FormsemestreInscription ModuleImplInscription.
|
|
||||||
|
|
||||||
## Vues et décorateurs
|
|
||||||
|
|
||||||
Une vue ordinaire (Web) pourrait ressembler à cela. Noter la présence de
|
|
||||||
décorateurs:
|
|
||||||
|
|
||||||
- `@scodoc` récupère le département (présent dans l'URL) et initialise quelques
|
|
||||||
trucs, notamment `g.scodoc_dept` (l'acronyme du département courant) et
|
|
||||||
`g.scodoc_dept_id` (l'id du dépt. courant).
|
|
||||||
- `@permission_required`: permet de contrôler l'accès, en se basant sur les
|
|
||||||
permissions définies dans la classe `Permission`.
|
|
||||||
|
|
||||||
```py
|
|
||||||
@bp.route("/un_exemple")
|
|
||||||
@scodoc
|
|
||||||
@permission_required(Permission.EditFormation)
|
|
||||||
def un_exemple():
|
|
||||||
# Récupérer le ou les arguments: exemple avec formation_id
|
|
||||||
formation_id = int(request.args["formation_id"])
|
|
||||||
# Charger le ou les objets utilies:
|
|
||||||
formation = models.Formation.query.get(
|
|
||||||
formation_id=formation_id
|
|
||||||
).first_or_404()
|
|
||||||
# Effectuer au besoin un traitement
|
|
||||||
resultat = ...
|
|
||||||
# Afficher le résultat
|
|
||||||
return render_template(
|
|
||||||
"exemple_template.html",
|
|
||||||
resultat=resultat, # par exemple
|
|
||||||
formation=formation,
|
|
||||||
... # etc
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Vues de l'API et permissions
|
|
||||||
|
|
||||||
L'API REST est documentée ici : [ScoDoc9API](ScoDoc9API.md).
|
|
||||||
|
|
||||||
Les fonctions de l'API sont donc accessibles via les routes de la forme
|
|
||||||
`https://scodoc.monsite.tld/ScoDoc/api/fonction`
|
|
||||||
et aussi `https://scodoc.monsite.tld/ScoDoc/api/<dept_acronyme>/fonction`.
|
|
||||||
La seconde forme précise un département.
|
|
||||||
|
|
||||||
La seconde forme est notamment utilisée par les pages web de ScoDoc. Elle permet
|
|
||||||
un calcul des permissions liées à un département: l'idée est de donner accès à
|
|
||||||
l'API à un utilisateur qui n'ait pas la permission (par ex. `ScoView`) dans tous les
|
|
||||||
départements, ce qui est en général le cas des utilisateurs Web, mais est aussi
|
|
||||||
utile pour sécuriser certains usages de l'API.
|
|
||||||
|
|
||||||
Une vue API (avec accès via token API et/ou cookie Web) se déclare donc ainsi:
|
|
||||||
|
|
||||||
```py
|
|
||||||
@bp.route("/formsemestres/query")
|
|
||||||
@api_web_bp.route("/formsemestres/query")
|
|
||||||
@login_required
|
|
||||||
@scodoc
|
|
||||||
@permission_required(Permission.ScoView)
|
|
||||||
def formsemestres_query():
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
Son usage par un utilisateur n'ayant accès qu'à un seul département passera par
|
|
||||||
la route départementale
|
|
||||||
`http://scodoc.monsite.tld:5000/ScoDoc/<dept_acronyme>/api/formsemestres/query`.
|
|
||||||
|
|
||||||
### Exemple complet d'usage
|
|
||||||
|
|
||||||
Création du rôle, de l'utilisateur, association à un département, requêtage.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
flask create-role LecteurAPI2 # 2 car LecteurAPi était déjà pris sur mon serveur de test
|
|
||||||
flask edit-role -a ScoView LecteurAPI2
|
|
||||||
flask user-create lecteur_rt LecteurAPI2 RT # Seulement dans dept RT
|
|
||||||
flask user-password lecteur_rt
|
|
||||||
```
|
|
||||||
|
|
||||||
puis
|
|
||||||
|
|
||||||
```bash
|
|
||||||
http -a lecteur_rt:mot_de_passe POST 'http://localhost:5000/ScoDoc/api/tokens'
|
|
||||||
# récupérer le token...
|
|
||||||
|
|
||||||
http GET http://localhost:5000/ScoDoc/api/RT/formsemestres/query "Authorization:Bearer xxxxxxxxxxx"
|
|
||||||
# -> réponse ok
|
|
||||||
|
|
||||||
http GET http://localhost:5000/ScoDoc/api/formsemestres/query "Authorization:Bearer xxxxxxxxxxx"
|
|
||||||
# -> 401, "Non autorise (logic)"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 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>):
|
|
||||||
|
|
||||||
```py
|
|
||||||
@bp.route("/formsemestres/query")
|
|
||||||
@api_web_bp.route("/formsemestres/query")
|
|
||||||
@login_required
|
|
||||||
@scodoc
|
|
||||||
@permission_required(Permission.ScoView)
|
|
||||||
def formsemestres_query():
|
|
||||||
...
|
|
||||||
formsemestres = FormSemestre.query
|
|
||||||
if g.scodoc_dept:
|
|
||||||
formsemestres = formsemestres.filter_by(dept_id=g.scodoc_dept_id)
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
En effet, `g.scodoc_dept` et `g.scodoc_dept_id` sont positionnés par le
|
|
||||||
décorateur si on a un appel via la route départementale.
|
|
||||||
|
|
||||||
Il est donc important, pour toutes les vues API, de prendre soin de ne pas
|
|
||||||
divulguer d'informations hors du département spécifié, en filtrant la ou les
|
|
||||||
requêtes si `g.scodoc_dept` est non `None`.
|
|
||||||
|
|
||||||
## Caches
|
|
||||||
|
|
||||||
Il est bon de savoir que les requêtes SQL de SQLAlchemy ne sont pas cachées: ni
|
|
||||||
la requête elle même (construction du SQL à partir des appels à l'ORM), ni son
|
|
||||||
résultat.
|
|
||||||
|
|
||||||
Le module `sco_cache.py` offre la possibilité de cacher des objets python
|
|
||||||
identifiés par un id unique dans le cache Redis. Ce cache est persistant, il
|
|
||||||
faut donc invalider les objets quand on écrit des données susceptibles de les
|
|
||||||
modifier, et penser à le vider quand on modifie le code.
|
|
||||||
Par exemple:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git pull
|
|
||||||
flask clear-cache
|
|
||||||
```
|
|
||||||
|
|
||||||
La commande `redis-cli FLUSHALL` permet aussi de vider le cache sans avoir à
|
|
||||||
lancer flask (plus rapide).
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Conventions de codage](DevConventions.md)
|
|
||||||
- [Guide développeurs](GuideDeveloppeurs.md)
|
|
||||||
- [API ScoDoc 9](ScoDoc9API.md)
|
|
||||||
- [Modélisation du BUT](ModelisationParcoursBUT.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,183 +0,0 @@
|
|||||||
# Implémentation jurys BUT
|
|
||||||
|
|
||||||
*Quelques notes informelles sur la gestion des jurys BUT.*
|
|
||||||
|
|
||||||
Fichiers sources:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
app/but/jury_but.py
|
|
||||||
app/but/cursus_but.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## Validations enregistrées
|
|
||||||
|
|
||||||
- UEs : comme pour les formations classiques
|
|
||||||
|
|
||||||
- RCUE: `ApcValidationRCUE(etudid, formsemestre, ue1, ue2)`
|
|
||||||
- Le formsemestre est optionnel: c'est celui d'où a été émise la validation.
|
|
||||||
- Pour retrouver le niveau, passer par l'UE: `ue1.niveau_competence`
|
|
||||||
|
|
||||||
- Années BUT: `ApcValidationAnnee`
|
|
||||||
- liée au référentiel de compétence.
|
|
||||||
|
|
||||||
## La page saisie jury BUT (annuelle)
|
|
||||||
|
|
||||||
Partir de la liste des niveaux à valider pour cet étudiant dans sa scolarité,
|
|
||||||
selon le parcours de l'étudiant. Le parcours est donné par son inscription dans
|
|
||||||
le semestre courant (celui duquel on lance la saisie).
|
|
||||||
Chaque compétence forme une ligne, comme sur la fiche étudiant.
|
|
||||||
Le semestre courant donne l'année scolaire (2022, ...) et l'année BUT courante (1, 2, 3)
|
|
||||||
On affiche les colonnes suivantes (exemple d'un jury de BUT2 S4):
|
|
||||||
|
|
||||||
| BUT1 | BUT2 S2 | BUT2 S3 | BUT2 RCUE | autorisation | BUT3 |
|
|
||||||
|---------------|---------|---------|-----------|--------------|-------------|
|
|
||||||
| Compétence 1 | rcue | UE1.3 | UE1.4 | code | feu vert S5 |
|
|
||||||
| Compétence 2 | ... | ... | ... | ... | ... |
|
|
||||||
|
|
||||||
sur chaque code un popup explicatif (date de validation)
|
|
||||||
|
|
||||||
Actuellement (9.4), l'état du BUT1 (et BUT2 quand on sera en BUT3) n'est pas
|
|
||||||
rappelé sur cet affichage.
|
|
||||||
|
|
||||||
### Rappel sur les validations de jury
|
|
||||||
|
|
||||||
En BUT, on va utiliser 3 types de décisions de jury: sur les UEs, les RCUEs et
|
|
||||||
les années de BUT. Une décision sur une UE concerne l'UE d'un semestre, d'une
|
|
||||||
année scolaire donnée: on peut enregistre une décision AJ sur l'UE12 en 2022,
|
|
||||||
puis ADM sur l'UE12 d'an nouveau formsemestre en 2023. Ce n'est pas le cas pour
|
|
||||||
les décisions concernant le cursus BUT: on valide (ou non) l'année BUT1, puis
|
|
||||||
BUT2 puis BUT3. Un redoublant pour avoir son BUT1 en AJ, puis il passera en ADM
|
|
||||||
l'année suivante. Pareil pour les RCUEs. Autrement dit, le code d'une année BUT
|
|
||||||
ou d'un RCUE, pour un étudiant donné, est unique.
|
|
||||||
|
|
||||||
### Validations d'UE antérieures
|
|
||||||
|
|
||||||
Les validations d'UEs externes existaient avant ScoDoc 9.
|
|
||||||
Elles sont utilisées quand un étudiant arrive en transfert avec une UE validée
|
|
||||||
mais pas un semestre complet (ne pas confondre avec les "semestres extérieurs"
|
|
||||||
qui sont gérés comme des formsemestres ordinaires).
|
|
||||||
|
|
||||||
Les UE antérieures sont présentes dans les bulletins BUT.
|
|
||||||
|
|
||||||
### Tenue du jury
|
|
||||||
|
|
||||||
Le jury part d'un formsemestre (dit origine).
|
|
||||||
Dans ce formsemestre, `etud` est inscrit à un parcours (ou au tronc commun): on
|
|
||||||
sait quels niveaux il doit valider durant année.
|
|
||||||
|
|
||||||
Le jury (pour un niveau) peut éditer:
|
|
||||||
|
|
||||||
- l'UE du formsemestre origine (qui peut être déjà validée en cas de
|
|
||||||
modification)
|
|
||||||
- l'UE du formsemestre précédent si l'origine est impaire et que ce formsemestre
|
|
||||||
impair n'est pas verrouillé (sinon, affichée mais en lecture seule)
|
|
||||||
- le RCUE
|
|
||||||
|
|
||||||
#### Édition décision d'UE
|
|
||||||
|
|
||||||
Le menu jury (activé par défaut) pour une UE affichera:
|
|
||||||
|
|
||||||
- Si en cours: la moyenne courante, la décision recommandée basée sur cette note
|
|
||||||
- Si validée ailleurs que dans le semestre en cours: le code et la moyenne
|
|
||||||
enregistrés.
|
|
||||||
- Si pas en cours, menu désactivé, pas d'édition de la décision d'UE.
|
|
||||||
|
|
||||||
#### Édition décision de RCUE
|
|
||||||
|
|
||||||
Le menu RCUE est désactivé par défaut: calcul automatique en fonction des
|
|
||||||
décisions d'UE.
|
|
||||||
|
|
||||||
Le code enregistré (rappel: chaque RCUE n'a qu'un code enregistré, contrairement
|
|
||||||
aux UEs) est affiché (code couleur s'ile st différent d ecelui calculé).
|
|
||||||
|
|
||||||
La modification du code RCUE peut entrainer la modification des codes des UEs
|
|
||||||
qui le constituent: code RCUE `ADJ` => UEs non validante passées en `ADJR`
|
|
||||||
(géré par `DecisionRCUE.record` et en js dans `jury_but.js`). )
|
|
||||||
|
|
||||||
La modification de codes d'UE devrait ou pourrait modifier le code RCUE proposé,
|
|
||||||
mais ce n'est pas implémenté en 9.4.92.
|
|
||||||
|
|
||||||
### Classes
|
|
||||||
|
|
||||||
Ordre de construction:
|
|
||||||
- `DecisionsProposeesAnnee`
|
|
||||||
- `RegroupementCoherentUE`
|
|
||||||
- `DecisionsProposeesRCUE(rcue)`
|
|
||||||
- `DecisionsProposeesUE`
|
|
||||||
|
|
||||||
#### `RegroupementCoherentUE(etud, ApcNiveau, ues_pair, ues_impair)`
|
|
||||||
|
|
||||||
Modélise un couple d'UEs associées au même niveau de compétence du référentiel.
|
|
||||||
|
|
||||||
L'ancienne classe `RegroupementCoherentUE` (définie dans
|
|
||||||
`models/but_validation.py`) ne répondait pas au besoin car elle était construite sur
|
|
||||||
la base de deux formsemestres.
|
|
||||||
|
|
||||||
- On part de toutes les UEs de nos formations associées à ce niveau. On peut
|
|
||||||
avoir un nombre quelconque d'UEs paires et impaires associées à ce niveau.
|
|
||||||
|
|
||||||
- Les UEs associées à ce niveau peuvent être:
|
|
||||||
- validées (externes, ou dans un formsemestre connu), avec une moyenne enregistrée
|
|
||||||
- ou en cours: dans un formsemestre suivi par l'étudiant, avec une moyenne
|
|
||||||
d'UE calculable.
|
|
||||||
|
|
||||||
Notons qu'il peut arriver qu'aucune des UEs n'appartiennent au semestre origine
|
|
||||||
(capitalisations, validations antérieures). Dans ce cas, leurs décisions ne sont
|
|
||||||
pas toujours éditables, mais le RCUE l'est.
|
|
||||||
|
|
||||||
Pour chaque côté (impair, pair), on va chercher:
|
|
||||||
|
|
||||||
- l'UE en cours pendant l'année scolaire du formsemestre origine s'il y en a
|
|
||||||
une (ie cherche dans les formations des formsemestres de même année scolaire
|
|
||||||
que l'origine)
|
|
||||||
- la validation de jury enregistrée pour cette UE en cours
|
|
||||||
- la validation d'UE validante enregistrée (capitalisation ou antérieure, peu
|
|
||||||
importe)
|
|
||||||
|
|
||||||
NB: s'il y a plusieurs UEs en cours (double inscription, erreur): prend celle du
|
|
||||||
formsemestre commencé le plus récemment.
|
|
||||||
|
|
||||||
État d'un `RegroupementCoherentUE`:
|
|
||||||
|
|
||||||
- **complete** : False si on n'a pas les deux UEs
|
|
||||||
|
|
||||||
#### Opérations sur `RegroupementCoherentUE`
|
|
||||||
|
|
||||||
- init:
|
|
||||||
- Chercher l'UE en cours pour pair, impair: `ue_cur_pair`, `ue_cur_impair`, et
|
|
||||||
leurs validations `validation_ue_cur_pair`, `validation_ue_cur_impair`.
|
|
||||||
- Chercher pour pair, impair la meilleure validation d'UE enregistrée dans un
|
|
||||||
autre formsemestre. `validation_ue_best_pair`
|
|
||||||
- complete = les deux UEs validées ou en cours cette année
|
|
||||||
- moy_rcue: moyenne des moyennes d'UE
|
|
||||||
|
|
||||||
#### DecisionsProposeesAnnee
|
|
||||||
|
|
||||||
- `decisions_ues` : considérer les UEs associées aux niveaux et non celles des
|
|
||||||
semestres. Notez que même si l'étudiant n'est pas inscrit ("dispensé") à une UE
|
|
||||||
dans le formsemestre origine, elle doit apparaitre sur la page jury.
|
|
||||||
- `rcues_annee`: liste des `RegroupementCoherentUE`
|
|
||||||
- `decisions_rcue_by_niveau`
|
|
||||||
|
|
||||||
#### DecisionsProposeesRCUE
|
|
||||||
|
|
||||||
- `record`: modifie les codes d'UE en fonction du RCUE: *si le RCUE est `ADJ`,
|
|
||||||
les UEs non validées sont passées à `ADJR`.
|
|
||||||
- Les validations d'UEs antérieures ou capitalisées ne sont pas concernées car
|
|
||||||
déjà valides.
|
|
||||||
- Si le formsemestre contenant l'UE à modifier est verrouillé, on
|
|
||||||
modifie quand même et on émet un warning.
|
|
||||||
- Les RCUE/UE du niveau inférieur peuvent aussi être modifiées (c'est déjà le
|
|
||||||
cas, `ADSUP`).
|
|
||||||
|
|
||||||
#### DecisionsProposeesUE
|
|
||||||
|
|
||||||
L'objet peut représenter une validation capitalisée ou antérieure: il est alors
|
|
||||||
en lecture seule.
|
|
||||||
|
|
||||||
Pour chaque RCUE, on a les deux UEs à considérer dans `ue_1`, `ue_2`.
|
|
||||||
|
|
||||||
- Modifier affichage UE "en lecture seule"
|
|
||||||
- Ne pas restreindre la recherche aux UEs du formsemestre.
|
|
||||||
- Le calcul de la moyenne en utilisant `ResultatsSemestreBUT` n'est évidemment
|
|
||||||
utilisé que pour l'UE en cours.
|
|
@ -1,67 +0,0 @@
|
|||||||
# Données personnelles pour l'étudiant
|
|
||||||
|
|
||||||
## Description d'un étudiant
|
|
||||||
|
|
||||||
La désignation d'un étudiant (classiquement civilité-nom-prénom) peut prendre
|
|
||||||
différentes formes en fonctions des circonstances et des souhaits de l'étudiant.
|
|
||||||
On distingue les éléments suivants:
|
|
||||||
|
|
||||||
* `nom`: (obligatoire): le nom de l'étudiant (en usage dans l'établissement).
|
|
||||||
Généralement (mais pas toujours) le nom d'état-civil de l'étudiant.
|
|
||||||
* `prenom`: (obligatoire): le prénom de l'étudiant
|
|
||||||
* `civilité`: (obligatoire): la civilité utilisée parmi les valeurs:
|
|
||||||
* `MR` (ou aussi `H` ou `M`)
|
|
||||||
* `MME` (ou aussi `F`)
|
|
||||||
* `X` décrit plus loin
|
|
||||||
* `nom_usuel`: si présent s'affiche à la place du `nom`.
|
|
||||||
* `prenom_etat_civil`: Si présent, indique le prénom qui doit être utilisé dans
|
|
||||||
les documents officiels (PV et bulletin).
|
|
||||||
* `civilite_etat_civil` est associé au prénom d'état-civil (donc jamais utilisé
|
|
||||||
si `prenom_etat_civil` n'est pas renseigné).
|
|
||||||
|
|
||||||
## Personnalisations
|
|
||||||
|
|
||||||
L'étudiant peut:
|
|
||||||
|
|
||||||
* déclarer un nom d'usage qui remplacera le nom initial dans tous les documents
|
|
||||||
(par exemple par l'adoption d'un nom marital pour remplacer le patronyme)
|
|
||||||
Il faut dans ce cas remplir la donnée `nom_usuel` avec le nouveau nom souhaité.
|
|
||||||
* Demander à ce que sa civilité (`M.` ou `Mme`) ne soit pas affichée. La valeur
|
|
||||||
`X` doit être utilisée dans ce cas.
|
|
||||||
* demander l'utilisation d'un prénom d'usage ([1] et [2]).
|
|
||||||
|
|
||||||
Ce prénom, qui ne demande pas d'acte officiel (hormis une demande formelle à
|
|
||||||
l'université d'appartenance) remplace le prénom initial dans tous les
|
|
||||||
documents internes sauf dans les documents officiels (procès-verbal et
|
|
||||||
bulletin de notes). Ce changement peut être accompagné d'un changement de
|
|
||||||
civilité. Il faut dans ce cas:
|
|
||||||
* Reporter le prénom et la civilité initiaux dans les champs
|
|
||||||
`prenom_etat_civil` et `civilite_etat_civil`
|
|
||||||
* Remplacer les champs `civilite` et `prenom` avec les valeurs souhaitées par
|
|
||||||
l'étudiant.
|
|
||||||
|
|
||||||
## Dans le logiciel
|
|
||||||
|
|
||||||
Les données personnelles sont modifiables:
|
|
||||||
|
|
||||||
* Dans l'écran `Changer les données identité/admission` du menu `Étudiant` dans
|
|
||||||
la fiche étudiant.
|
|
||||||
* Par la procédure d'importation par tableur (`Import/export des données
|
|
||||||
d'admission` du menu `INSCRIPTIONS`)
|
|
||||||
|
|
||||||
Les civilités et prénom d'état-civil sont prises en compte:
|
|
||||||
|
|
||||||
* Automatiquement lors de la production du procès-verbal
|
|
||||||
* Dans l'édition du bulletin au format pdf (pas sur la passerelle étudiant) à
|
|
||||||
condition que les descriptions spécifiées dans le paramétrage du département
|
|
||||||
et/ou les réglages bulletin des semestres concernés mentionne la balise
|
|
||||||
`etat_civil` plutôt que la balise `nomprenom` (voir
|
|
||||||
[Paramétrage des bulletins / Valeurs remplacées](https://scodoc.org/ParametrageBulletins/#valeurs-remplacees)).
|
|
||||||
|
|
||||||
Les données personnalisées figurent toutes dans les données livrées par l'API.
|
|
||||||
|
|
||||||
## Références
|
|
||||||
|
|
||||||
[1] [Lettre ministre aux chefs d'établissement de l'enseignement supérieur](https://cache.media.enseignementsup-recherche.gouv.fr/file/Lutte_contre_les_discriminations/84/4/lettre_ministre_1117844.pdf)
|
|
||||||
|
|
||||||
[2] [Avis du conseil d'état](https://www.conseil-etat.fr/fr/arianeweb/CE/decision/2022-09-28/458403)
|
|
@ -1,170 +0,0 @@
|
|||||||
<!-- markdownlint-disable MD024 -->
|
|
||||||
# Document expérimental sur les données du module Assiduité de ScoDoc
|
|
||||||
|
|
||||||
Dans ce document je (Matthias Hartmann) détaillerais plusieurs méthodes pour enregistrer les données du module Assiduité et les utiliser. Je mettrai à jour ce document et je l'utiliserai lors de l'implémentation du cahier des charges.
|
|
||||||
|
|
||||||
> Pour la suite du document je nomme `plage` l'objet représentant une absence/présence sur une période donnée.
|
|
||||||
|
|
||||||
Dans les diagrammes:
|
|
||||||
|
|
||||||
> - les noms précédés par `?` sont des valeurs optionnelles.
|
|
||||||
> - les noms précédés par `#` sont des clés externes.
|
|
||||||
> - les noms précédés par `$` sont des clés primaires.
|
|
||||||
|
|
||||||
___
|
|
||||||
|
|
||||||
> dev note *(11/10/22)*: Les types des données ne sont pas forcément les bons, je n'ai pas encore regardé comment était organisée la BDD de ScoDoc
|
|
||||||
|
|
||||||
## Représentation d'une assiduité et d'un justificatif
|
|
||||||
|
|
||||||
> voir l'API ScoDoc -> [ScoDoc9 API](ScoDoc9API.md#api-assiduite)
|
|
||||||
|
|
||||||
## Représentation des données (Version 4)
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
|
|
||||||
class assiduites{
|
|
||||||
$assiduiteid : Integer
|
|
||||||
#etuid : Integer
|
|
||||||
date_debut : DateTime
|
|
||||||
date_fin : DateTime,
|
|
||||||
etat : String
|
|
||||||
#module?: Integer
|
|
||||||
|
|
||||||
}
|
|
||||||
class justificatifs{
|
|
||||||
$justifid : Integer
|
|
||||||
#etuid : Integer
|
|
||||||
date_debut : DateTime
|
|
||||||
date_fin : DateTime
|
|
||||||
fichier? : Integer
|
|
||||||
raison? : String
|
|
||||||
#etat : Integer DEFAULT=0
|
|
||||||
}
|
|
||||||
class etat_justificatif{
|
|
||||||
$etat_id : Integer
|
|
||||||
desc : String
|
|
||||||
}
|
|
||||||
justificatifs --> etat_justificatif
|
|
||||||
```
|
|
||||||
|
|
||||||
### Explications de la représentation
|
|
||||||
|
|
||||||
> - Dans cette version, les objets en base de données suivent la représentation fait en json (dans l'API)
|
|
||||||
> - Le fichier justificatif est toujours stocker sur le serveur et en base il est stocker sous la forme d'un identifiant unique.
|
|
||||||
> - le champs `etat` de la table `justificatif` est une clé étrangère vers la table `etat_justificatif` qui contient les différents états (attente, validé, modifié, en cours . . . ), Cette table permettra aux utilisateurs d'ajouter eux même des états en fonction de leurs besoins. (deux états seront obligatoires : 0[Non Validé] 1[Validé] mais leurs noms pourront être changés.)
|
|
||||||
|
|
||||||
## Représentation des données (Version 3)
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
|
|
||||||
class plage{
|
|
||||||
plage_id : Integer
|
|
||||||
date_debut : DateTime
|
|
||||||
date_fin : DateTime
|
|
||||||
#etuid : Integer
|
|
||||||
type : String
|
|
||||||
? #module_id : Integer
|
|
||||||
? #enseignant_id : Integer
|
|
||||||
}
|
|
||||||
class justificatif{
|
|
||||||
$#etuid : Integer
|
|
||||||
$date_debut : DateTime
|
|
||||||
$date_fin : DateTime
|
|
||||||
attachement : String
|
|
||||||
#etat : Integer DEFAULT=0
|
|
||||||
}
|
|
||||||
class etat_justificatif{
|
|
||||||
$etat_id : Integer
|
|
||||||
desc : String
|
|
||||||
}
|
|
||||||
justificatif --> etat_justificatif
|
|
||||||
```
|
|
||||||
|
|
||||||
### Explications de la représentation
|
|
||||||
|
|
||||||
> - Dans cette représentation, une plage est complètement dissociée d'une formation / département. Elle repose uniquement sur un étudiant en particulier. On peut néanmoins spécifier l'enseignant et le module concerné par l'absence dans le but de produire des statistiques.
|
|
||||||
> - Du coté des justificatifs, on a désormais un attribut `etat` plutôt qu'un booléen. Cet attribut est une clé étrangère lié à la table `etat_justificatif`. Cela permet alors d'avoir plusieurs états (Validé, Refusé, En Attente, Incomplet...) l'état `0` étant `Pas encore étudié` par exemple.
|
|
||||||
|
|
||||||
### Problèmes de la représentation
|
|
||||||
|
|
||||||
> - On utilise une nouvelle table pour stocker les différents états. A moins que cette table ne puisse être modifiée par les administrateurs de ScoDoc (ajouter des états pour des cas précis par IUT), on créer une table pour enregistrer des données statiques.
|
|
||||||
|
|
||||||
### Améliorations potentielles
|
|
||||||
|
|
||||||
> - A la place d'une table dans la BDD, on pourrait directement hard coder les états de justificatifs. Les états seront plus simple à accéder mais on perd l'aspect modification au cas par cas.
|
|
||||||
|
|
||||||
## Représentation des données (Version 2)
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
class plage{
|
|
||||||
id_plage : Integer
|
|
||||||
date_debut : DateTime
|
|
||||||
date_fin : DateTime
|
|
||||||
#id_dept : Integer
|
|
||||||
#formsemestre_id : Integer
|
|
||||||
#etuid : Integer
|
|
||||||
type : String
|
|
||||||
? #id_module : Integer
|
|
||||||
? #id_enseignant : Integer
|
|
||||||
}
|
|
||||||
class justificatif{
|
|
||||||
$#etuid : Integer
|
|
||||||
$date_debut : DateTime
|
|
||||||
$date_fin : DateTime
|
|
||||||
attachement : String
|
|
||||||
valide : bool DEFAULT=False
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Problèmes liés à la représentation
|
|
||||||
|
|
||||||
> - L'export de la base de donnée avec les justificatif devient plus complexe (car on doit aller chercher les fichiers du dossier justificatifs)
|
|
||||||
> - Même problème que la version 1 pour les requêtes
|
|
||||||
|
|
||||||
## Représentation des données ( Version 1)
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
class plage{
|
|
||||||
id_plage : Integer
|
|
||||||
date_debut : DateTime
|
|
||||||
date_fin : DateTime
|
|
||||||
#id_dept : Integer
|
|
||||||
#formsemestre_id : Integer
|
|
||||||
#etuid : Integer
|
|
||||||
type : String
|
|
||||||
? #id_module : Integer
|
|
||||||
? #id_enseignant : Integer
|
|
||||||
}
|
|
||||||
class justificatif{
|
|
||||||
#$id_plage : Integer
|
|
||||||
attachement : Blob
|
|
||||||
valide : bool DEFAULT=False
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### Problèmes liés à la représentation
|
|
||||||
|
|
||||||
> - Quasiment l'ensemble des données sont stockées dans un même tuple\
|
|
||||||
> __Conséquence__ : chaque requête utilisant les données sera longue et lourde pour le gestionnaire de BDD
|
|
||||||
> - Le stockage sour la forme de blob est très lourd pour la bdd ( cf : [Benchmark des différentes méthode de stockage de fichier binaire sur progresql](https://www.cybertec-postgresql.com/en/binary-data-performance-in-postgresql/) )
|
|
||||||
> - Un justificatif doit être donné pour chaque absence (par exemple un arrêt maladie de plusieurs jours est présent dans la base autant de fois que l'étudiant a été absence à un cours )
|
|
||||||
|
|
||||||
### Avantages liés à la représentation
|
|
||||||
|
|
||||||
> - Peu ou pas de jointure à faire
|
|
||||||
> - Ensemble des données facilement accessibles
|
|
||||||
> - Une absence (`plage: type=absence`) est justifiée si un justificatif (`justificatifs : idPlage={idAbsence}`) est présent dans la base. Une absence peut être justifiée(par un étudiant par exemple) mais pas forcément validé par le corps enseignant / administratif. (`justificatifs : valide=Faux`)
|
|
||||||
> - l'objet justificatif permet de stocker un fichier / un texte servant de justification (`justificatifs : attachement={Blob}`). L'utilisation d'un __Blob__ permet de stocker virtuellement n'import quel type de fichier dans la bdd.
|
|
||||||
|
|
||||||
### Améliorations potentielles
|
|
||||||
|
|
||||||
> - Stocker les fichiers justificatifs dans un dossier sur le serveur plutôt que dans la base de donnée. On aurait alors une sauvegarde uniquement d'une chaîne de caractères (le chemin du fichier / la justification textuelle) au lieu de __Blob__ prenant beaucoup de place et étant lourds à traiter.\
|
|
||||||
> __Le problème est qu'on perd la facilité d'accès et les vérifications opérées automatiquement par le gestionnaire de base de donnée.__
|
|
||||||
> - Définir une durée de validité pour chaque justificatif au lieu de lier le justificatif à une plage. (et donc lier un justificatif à un étudiant)\
|
|
||||||
> __Le problème est qu'on perd de la simplicité de selection (utilisation de l'id de la plage dans un cas et utilisation de 2 *datetime* dans un autre) Mais au moins on a pas besoin d'entrer plusieurs fois un même justificatif.__
|
|
@ -1,198 +0,0 @@
|
|||||||
# Utilisation des emplois du temps
|
|
||||||
|
|
||||||
ScoDoc peut être interfacé avec un logiciel de gestion des emplois du temps (EDT).
|
|
||||||
Le paramétrage peut-être assez complexe, mais une fois mis en place cela permet
|
|
||||||
à ScoDoc d'afficher l'emploi du temps des étudiants d'un semestre et facilite
|
|
||||||
grandement la saisie des absences.
|
|
||||||
|
|
||||||
## Principes généraux
|
|
||||||
|
|
||||||
Les emplois du temps sont gérés par un autre logiciel, comme:
|
|
||||||
|
|
||||||
- Hyperplanning
|
|
||||||
- Celcat
|
|
||||||
- GPU
|
|
||||||
- VT [Visual Timetabling](http://visual.timetabling.free.fr)
|
|
||||||
- ...
|
|
||||||
|
|
||||||
Ces logiciels peuvent exporter les calendriers au format ICS (iCalendar,
|
|
||||||
[RFC 5545](https://datatracker.ietf.org/doc/html/rfc5545)).
|
|
||||||
|
|
||||||
ScoDoc va lire ces calendriers (fichiers ics). Il doit y avoir un fichier
|
|
||||||
calendrier par semestre ScoDoc, contenant tous les évènements (cours, TD, TP...)
|
|
||||||
du semestre.
|
|
||||||
|
|
||||||
### Fichiers calendrier ics
|
|
||||||
|
|
||||||
Un calendrier est ici une liste d'évènements, chaque cours étant un évènement.
|
|
||||||
L'évènement comporte:
|
|
||||||
|
|
||||||
- dates début et fin;
|
|
||||||
- identifiant du groupe d'étudiants concerné (dans la formation, par ex. groupe
|
|
||||||
de TD);
|
|
||||||
- identifiant du module (enseignement): par exemple, l'élément Apogée.
|
|
||||||
- identifiant de l'enseignant concerné.
|
|
||||||
|
|
||||||
On suppose qu'on a un calendrier par "semestre" (`FormSemestre` ScoDoc),
|
|
||||||
identifié par un code (par défaut, le premier code étape Apogée) que l'on
|
|
||||||
appellera `edt_id`. Lors de la configuration, on indiquera à ScoDoc où sont
|
|
||||||
placés ces fichiers.
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Note: fuseau horaire"
|
|
||||||
|
|
||||||
Les calendriers sont exportés avec des dates comportant l'indication du fuseau
|
|
||||||
horaire. ScoDoc affiche en principe toutes les heures en *heure locale du
|
|
||||||
serveur*, c'est à dire à la montre des étudiants (et non dans l'heure locale de
|
|
||||||
l'utilisateur qui peut être en déplacement dans un autre pays).
|
|
||||||
|
|
||||||
## Paramétrage global (administrateur)
|
|
||||||
|
|
||||||
Le super-administrateur a accès à la page de configuration via le lien
|
|
||||||
"**Configuration du suivi de l'assiduité et accès aux emplois du temps**".
|
|
||||||
|
|
||||||
La première chose à faire est d'indiquer où sont placés les fichiers calendrier.
|
|
||||||
L'emploi du temps étant variable, ces fichiers vont en général être exportés à
|
|
||||||
intervalles réguliers (par exemple chaque heure) et écrits dans un répertoire
|
|
||||||
donné du serveur ScoDoc. ScoDoc ne se charge pas de cette tâche:
|
|
||||||
l'administrateur système doit mettre en place un mécanisme d'export et de
|
|
||||||
recopie ou partage des calendriers.
|
|
||||||
|
|
||||||
Le chemin se configure ici:
|
|
||||||
|
|
||||||
![Configuration chemin vers le calendrier](screens/edt-config-chemin.png)
|
|
||||||
|
|
||||||
### Exemple d'évènement ics
|
|
||||||
|
|
||||||
Exemple venant d'un établissement utilisant HyperPlanning. Les calendrier sont exportés
|
|
||||||
régulièrement, on a un fichier ics par formation (code Apogée).
|
|
||||||
|
|
||||||
```ics
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CATEGORIES:HYPERPLANNING
|
|
||||||
DTSTAMP:20231101T140300Z
|
|
||||||
LAST-MODIFIED:20230905T094241Z
|
|
||||||
UID:Cours-423101-5-BUT2_RT_pa._CYBER-Index-Education
|
|
||||||
DTSTART:20230920T060000Z
|
|
||||||
DTEND:20230920T083000Z
|
|
||||||
SUMMARY;LANGUAGE=fr:TP2 GPR1 - VCYR303 - Services reseaux ava (VCYR303) - 1234 - M. VIENNET EMMANUEL - V2ROM - BUT2 RT pa. ROM - Groupe 1
|
|
||||||
LOCATION;LANGUAGE=fr:P202 CRIT - P202 CRIT.RESEAUX
|
|
||||||
DESCRIPTION;LANGUAGE=fr:Matière : VCYR303 - Services reseaux ava (VCYR303)\nEnseignant : 1234 - M. VIENNET EMMANUEL\nPromotion : V2ROM - BUT2 RT pa. ROM\nTD : Groupe 1\nSalle : P202 CRIT - P202 CRIT.RESEAUX\nMémo : TP2 GPR1\n
|
|
||||||
X-ALT-DESC;FMTTYPE=text/html:Matière : VCYR303 - Services reseaux ava (VCYR303)<br/>Enseignant : 1234 - M. VIENNET EMMANUEL<br/>Promotion : V2ROM - BUT2 RT pa. ROM<br/>TD : Groupe 1<br/>Salle : P202 CRIT - P202 CRIT.RESEAUX<br/>Mémo : TP2 GPR1<br/>
|
|
||||||
END:VEVENT
|
|
||||||
```
|
|
||||||
|
|
||||||
On a ici:
|
|
||||||
|
|
||||||
- identifiant de la formation: dans le nom du fichier calendrier (ici `V2CYB.ics`);
|
|
||||||
- identifiant du groupe: dans `SUMMARY`, `* - <groupe>`
|
|
||||||
- identifiant du module: on a le code `VCYR303` à trois endroits: `SUMMARY`,
|
|
||||||
`DESCRIPTION`, `X-ALT-DESC`.
|
|
||||||
- identifiant de l'enseignant: ici `1234`, présent dans `SUMMARY`, `DESCRIPTION` et `X-ALT-DESC`.
|
|
||||||
|
|
||||||
## Extraction des identifiants: semestres, groupes, modules, enseignants
|
|
||||||
|
|
||||||
La page de configuration globale, accessible uniquement au super-admin, permet
|
|
||||||
d'indiquer comment ScoDoc doit extraire les identifiants du calendrier:
|
|
||||||
|
|
||||||
![Configuration des expressions régulières d'extraction](screens/edt-config-regexps.png)
|
|
||||||
|
|
||||||
|
|
||||||
## Configuration des identifiants EDT dans ScoDoc
|
|
||||||
|
|
||||||
On a vu plus haut comment ScoDoc extrayait les identifiants de groupes, modules
|
|
||||||
et enseignants des évènements calendrier. Mais ces identifiants ne sont pas
|
|
||||||
toujours les mêmes que ceux utilisés dans ScoDoc, par exemple parce que les deux
|
|
||||||
logiciels n'ont pas été configurés par le même service ou à des moments
|
|
||||||
différents. Ainsi, il arrive qu'un groupe soit nommé "TD A" dans l'emploi du
|
|
||||||
temps et "TDA" dans ScoDoc.
|
|
||||||
|
|
||||||
Chaque objet ScoDoc a donc un champs spécial "identifiant EDT" (pour *emploi du
|
|
||||||
temps) que l'on peut renseigner.
|
|
||||||
|
|
||||||
### Semestres
|
|
||||||
|
|
||||||
L'identifiant `edt_id` (utilisé pour trouver le fichier calendrier) du semestre
|
|
||||||
devra être renseigné pour chaque semestre sur la page `Semestre/Modifier le
|
|
||||||
semestre`. À défaut, ScoDoc utilisera le premier code étape Apogée.
|
|
||||||
|
|
||||||
![Configuration de l'edt_id](screens/edt-config-edt_id.png)
|
|
||||||
|
|
||||||
### Groupes d'étudiants
|
|
||||||
|
|
||||||
Les identifiants de groupe sont édités sur la page **Groupes / Modifier groupes
|
|
||||||
et partitions**.
|
|
||||||
|
|
||||||
Pour faciliter la mise en correspondance, la page d'aide à la configuration de
|
|
||||||
l'emploi du temps (lien accessible sous le calendrier) permet de lister les
|
|
||||||
identifiants de groupes utilisés de part et d'autre.
|
|
||||||
|
|
||||||
Dans l'exemple ci-dessous, on voit que de nombreux évènements du calendrier ne sont
|
|
||||||
pas associés à un groupe reconnu ("STAGE", "START CAMPUS", etc.). ScoDoc les
|
|
||||||
attribuera automatiquement à l'ensemble de la promotion (groupe "tous").
|
|
||||||
|
|
||||||
On voit aussi que les groupes ne sont pas reconnus car ils ne sont pas nommés de
|
|
||||||
la même façon dans l'emploi du temps (ici généré par HyperPlanning) et dans
|
|
||||||
ScoDoc: ainsi, le "TD A" de l'emploi du temps est nommé "TDA" dans ScoDoc.
|
|
||||||
Nous indiquons ci-dessous comment corriger cela.
|
|
||||||
|
|
||||||
![Exemple configuration groupes EDT](screens/edt-config-groupes-1.png)
|
|
||||||
|
|
||||||
Pour modifier les identifiants EDT de groupe, on peut renommer les groupes
|
|
||||||
ScoDoc ou, si on souhaite conserver les noms, indiquer le nom de l'emploi du
|
|
||||||
temps. Passer par la page **Groupes / Modifier groupes et partitions**:
|
|
||||||
|
|
||||||
![Modification des noms de groupes](screens/edt-edit-partitions-1.png)
|
|
||||||
|
|
||||||
et cliquer sur le "crayon" d'édition du groupe, par exemple pour indiquer que le
|
|
||||||
"TDA" de ScoDoc est appelé "TD A" dans l'emploi du temps:
|
|
||||||
|
|
||||||
![Modification des noms de groupes](screens/edt-edit-partitions-2.png)
|
|
||||||
|
|
||||||
|
|
||||||
### Modules
|
|
||||||
|
|
||||||
ScoDoc peut utiliser plusieurs codes, dans cet ordre:
|
|
||||||
|
|
||||||
1. identifiant EDT du module du semestre;
|
|
||||||
2. code Apogée du module du semestre (renseigné si ce code est différent de
|
|
||||||
celui indiqué dans la formation, ce qui est rare);
|
|
||||||
3. code Apogée du module dans la formation.
|
|
||||||
|
|
||||||
Dans la plupart des cas, l'emploi du temps utilise le code Apogée et il n'y a
|
|
||||||
aucune configuration à faire (si vous avez déjà renseigné les codes Apogée dans
|
|
||||||
ScoDoc).
|
|
||||||
|
|
||||||
Pour éditer les identifiants et codes Apogée du semestre, passer par la page
|
|
||||||
**Modifier les codes Apogée et emploi du temps des modules**, lien placé sur la
|
|
||||||
page **Semestre / Modifier le semestre**:
|
|
||||||
|
|
||||||
![Configuration des codes modules](screens/edt-config-codes-modules.png)
|
|
||||||
|
|
||||||
### Enseignants
|
|
||||||
|
|
||||||
Les évènements de calendrier peuvent indiquer des enseignants (le chargé de
|
|
||||||
cours, ...), ce qui permettra à ScoDoc de proposer à l'utilisateur les plages le
|
|
||||||
concernant. L'identifiant est là aussi variable selon les logiciels et les
|
|
||||||
établissements (il peut s'agir de l'adresse mail, d'un numéro, etc.).
|
|
||||||
|
|
||||||
L'utilisateur ScoDoc a un identifiant EDT, que l'on peut spécifier sur la page
|
|
||||||
d'édition du compte (avec les droits super-admin):
|
|
||||||
![Config compte utilisateur](screens/edt-config-user.png)
|
|
||||||
|
|
||||||
Cet identifiant peut aussi être extrait automatiquement des informations
|
|
||||||
renvoyées par le CAS quand il est utilisé. Pour cela, indiquer l'expression
|
|
||||||
d'extraction sur la page de configuration du service CAS.
|
|
||||||
|
|
||||||
![Configuration extraction uid](screens/edt-config-cas-userid.png)
|
|
||||||
|
|
||||||
## Problèmes fréquents (FAQ)
|
|
||||||
|
|
||||||
- Les évènements sont tous attribués à a promotion et non à leur groupe de TD
|
|
||||||
(ou TP, etc): vérifier le paramétrage de l'extraction du groupe et la
|
|
||||||
correspondance entre groupes emplois du temps et groupes ScoDoc.
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- Emplois du temps: [doc développeurs](DevAbsencesCalendrier.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,75 +1,61 @@
|
|||||||
|
|
||||||
# Échanges de programmes pédagogiques entre établissements
|
# Echanges de programmes pédagogiques entre établissements
|
||||||
|
ScoDoc permet d'exporter et d'importer des programmes pédagogiques, échangés sous forme de fichiers XML.
|
||||||
|
|
||||||
ScoDoc permet d'exporter et d'importer des programmes pédagogiques, échangés
|
Pour importer un programme, suivre le lien "Importer une formation" sur la page "Programmes".
|
||||||
sous forme de fichiers XML.
|
|
||||||
|
|
||||||
Pour importer un programme, suivre le lien "Importer une formation" sur la page
|
A titre d'exemple, quelques programmes de DUT, donnés sans aucune garantie d'exactitude ! Ces programmes peuvent être importés dans ScoDoc puis modifiés pour s'adapter à vos besoins.
|
||||||
"Programmes".
|
|
||||||
|
|
||||||
A titre d'exemple, quelques programmes de DUT, donnés sans aucune garantie
|
|
||||||
d'exactitude ! Ces programmes peuvent être importés dans ScoDoc puis modifiés
|
|
||||||
pour s'adapter à vos besoins.
|
|
||||||
|
|
||||||
🚸 *S'il est possible, et nécessaire, de modifier localement les programmes de
|
|
||||||
formation, il est interdit de modifier les référentiels de compétences BUT, qui
|
|
||||||
sont publiés par le ministère et non adaptables.*
|
|
||||||
|
|
||||||
## Diplôme Universitaire des Technologie (PPN DUT) (par ordre alphabétique)
|
## Diplôme Universitaire des Technologie (PPN DUT) (par ordre alphabétique)
|
||||||
|
|
||||||
* DUT Carrières Sociales option AS (IUT du Havre, juillet 2013) : <a
|
* DUT Carrières Sociales option AS (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_CS_OptionAS.xml" download>formation_CS_OptionAS.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportCS_AS_LeHavre.xml" download>formation_exportCS_AS_LeHavre.xml</a> (voir mise à jour plus bas)
|
||||||
class="attachment" href="/attachments/formation_CS_OptionAS.xml"
|
|
||||||
download>formation_CS_OptionAS.xml</a> + version 2014: <a class="attachment"
|
|
||||||
href="/attachments/formation_exportCS_AS_LeHavre.xml"
|
|
||||||
download>formation_exportCS_AS_LeHavre.xml</a> (voir mise à jour plus bas)
|
|
||||||
|
|
||||||
* DUT Carrières Sociales option ASSC (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_CS_OptionASSC.xml" download>formation_CS_OptionASSC.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportCS_ASSC_LeHavre.xml" download>formation_exportCS_ASSC_LeHavre.xml</a> (voir mise à jour plus bas)
|
* DUT Carrières Sociales option ASSC (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_CS_OptionASSC.xml" download>formation_CS_OptionASSC.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportCS_ASSC_LeHavre.xml" download>formation_exportCS_ASSC_LeHavre.xml</a> (voir mise à jour plus bas)
|
||||||
|
|
||||||
* DUT GEA (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GEA.xml" download>formation_GEA.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGEA_LeHavre.xml" download>formation_exportGEA_LeHavre.xml</a> (voir mise à jour plus bas)
|
* DUT GEA (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GEA.xml" download>formation_GEA.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGEA_LeHavre.xml" download>formation_exportGEA_LeHavre.xml</a> (voir mise à jour plus bas)
|
||||||
|
|
||||||
* DUT GEA (IUT Villetaneuse, 2010) : <a class="attachment" href="/attachments/gea_iutv_v6.xml" download>gea_iutv_v6.xml</a>
|
* DUT GEA (IUT Villetaneuse, 2010) : <a class="attachment" href="/attachments/gea_iutv_v6.xml" download>gea_iutv_v6.xml</a>
|
||||||
|
|
||||||
* DUT GEII (PPN été 2013). Version contribuée par J. Billoué, IUT de Tours: <a class="attachment" href="/attachments/dut_geii_tours_2013.xml" download>dut_geii_tours_2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportGEII_LeHavre.xml" download>formation_exportGEII_LeHavre.xml</a>
|
* DUT GEII (PPN été 2013). Version contribuée par J. Billoué, IUT de Tours: <a class="attachment" href="/attachments/dut_geii_tours_2013.xml" download>dut_geii_tours_2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportGEII_LeHavre.xml" download>formation_exportGEII_LeHavre.xml</a>
|
||||||
|
|
||||||
* DUT GEII (PPN juillet 2008). Version utilisée par l'IUT de Lyon 1 (contribuée par Anthony Chaussat) : <a class="attachment" href="/attachments/dut_geii_lyon_2010.xml" download>dut_geii_lyon_2010.xml</a>
|
* DUT GEII (PPN juillet 2008). Version utilisée par l'IUT de Lyon 1 (contribuée par Anthony Chaussat) : <a class="attachment" href="/attachments/dut_geii_lyon_2010.xml" download>dut_geii_lyon_2010.xml</a>
|
||||||
|
|
||||||
* DUT Génie Chimique - Génie des Procédés (ppn 2013, IUT de Saint-Nazaire) : <a class="attachment" href="/attachments/DUT GCGP S1S2 2013.xml" download>DUT GCGP S1S2 2013.xml</a>
|
* DUT Génie Chimique - Génie des Procédés (ppn 2013, IUT de Saint-Nazaire) : <a class="attachment" href="/attachments/DUT GCGP S1S2 2013.xml" download>DUT GCGP S1S2 2013.xml</a>
|
||||||
|
|
||||||
* DUT Génie Civil (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GC2013.xml" download>formation_GC2013.xml</a>
|
* DUT Génie Civil (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GC2013.xml" download>formation_GC2013.xml</a>
|
||||||
|
|
||||||
* DUT Génie Industriel et Maintenance (GIM) (IUT de Tremblay-en-France, sept. 2013): <a class="attachment" href="/attachments/PPN_GIM-2013.xml" download>PPN_GIM-2013.xml</a> Autre version contribuée par Roanne et Saint-Nazaire: <a class="attachment" href="/attachments/formation_gim.xml" download>formation_gim.xml</a>
|
* DUT Génie Industriel et Maintenance (GIM) (IUT de Tremblay-en-France, sept. 2013): <a class="attachment" href="/attachments/PPN_GIM-2013.xml" download>PPN_GIM-2013.xml</a> Autre version contribuée par Roanne et Saint-Nazaire: <a class="attachment" href="/attachments/formation_gim.xml" download>formation_gim.xml</a>
|
||||||
|
|
||||||
* DUT Génie Mécanique et Productique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GMP2013.xml" download>formation_GMP2013.xml</a> + version 2014 <a class="attachment" href="/attachments/formation_exportGMP_LeHavre.xml" download>formation_exportGMP_LeHavre.xml</a>
|
* DUT Génie Mécanique et Productique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GMP2013.xml" download>formation_GMP2013.xml</a> + version 2014 <a class="attachment" href="/attachments/formation_exportGMP_LeHavre.xml" download>formation_exportGMP_LeHavre.xml</a>
|
||||||
|
|
||||||
* DUT Gestion Logistique des Transports (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_glt.xml" download>formation_glt.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGLT_LeHavre.xml" download>formation_exportGLT_LeHavre.xml</a> (voir mise à jour plus bas)
|
* DUT Gestion Logistique des Transports (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_glt.xml" download>formation_glt.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGLT_LeHavre.xml" download>formation_exportGLT_LeHavre.xml</a> (voir mise à jour plus bas)
|
||||||
|
|
||||||
* DUT Hygiène Sécurité Environnement (HSE) (IUT du Havre, sept 2013) : <a class="attachment" href="/attachments/maquette_HSE2013.xml" download>maquette_HSE2013.xml</a> (voir mise à jour plus bas)
|
* DUT Hygiène Sécurité Environnement (HSE) (IUT du Havre, sept 2013) : <a class="attachment" href="/attachments/maquette_HSE2013.xml" download>maquette_HSE2013.xml</a> (voir mise à jour plus bas)
|
||||||
|
|
||||||
* DUT InfoCom, option GIDO : <a class="attachment" href="/attachments/maquette_Infocom2013_INFO.xml" download>maquette_Infocom2013_INFO.xml</a>
|
* DUT InfoCom, option GIDO : <a class="attachment" href="/attachments/maquette_Infocom2013_INFO.xml" download>maquette_Infocom2013_INFO.xml</a>
|
||||||
|
|
||||||
* DUT InfoCom, option Métiers du Livre et du Patrimoine (MLP) : <a class="attachment" href="/attachments/maquette_Infocom2013_MLP.xml" download>maquette_Infocom2013_MLP.xml</a>
|
* DUT InfoCom, option Métiers du Livre et du Patrimoine (MLP) : <a class="attachment" href="/attachments/maquette_Infocom2013_MLP.xml" download>maquette_Infocom2013_MLP.xml</a>
|
||||||
|
|
||||||
* DUT InfoCom, option Publicité (PUB) : <a class="attachment" href="/attachments/maquette_Infocom2013_PUB.xml" download>maquette_Infocom2013_PUB.xml</a>
|
* DUT InfoCom, option Publicité (PUB) : <a class="attachment" href="/attachments/maquette_Infocom2013_PUB.xml" download>maquette_Infocom2013_PUB.xml</a>
|
||||||
|
|
||||||
* DUT InfoCom, Le Havre, 2014: <a class="attachment" href="/attachments/formation_exportINFOCOM_LeHavre.xml" download>formation_exportINFOCOM_LeHavre.xml</a> (voir mise à jour plus bas)
|
* DUT InfoCom, Le Havre, 2014: <a class="attachment" href="/attachments/formation_exportINFOCOM_LeHavre.xml" download>formation_exportINFOCOM_LeHavre.xml</a> (voir mise à jour plus bas)
|
||||||
|
|
||||||
* DUT Informatique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_INFO2013.xml" download>formation_INFO2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportINFO_LeHavre.xml" download>formation_exportINFO_LeHavre.xml</a>
|
* DUT Informatique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_INFO2013.xml" download>formation_INFO2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportINFO_LeHavre.xml" download>formation_exportINFO_LeHavre.xml</a>
|
||||||
|
|
||||||
* DUT Informatique (version complétée par Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-info-2013.xml" download>ppn-info-2013.xml</a>
|
* DUT Informatique (version complétée par Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-info-2013.xml" download>ppn-info-2013.xml</a>
|
||||||
|
|
||||||
* DUT Métiers du Multimédia et de l'Internet (IUT de Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-dut-mim-2013.xml" download>ppn-dut-mim-2013.xml</a>
|
* DUT Métiers du Multimédia et de l'Internet (IUT de Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-dut-mim-2013.xml" download>ppn-dut-mim-2013.xml</a>
|
||||||
|
|
||||||
* DUT QLIO (IUT Evry, 2015) : <a class="attachment" href="/attachments/ppn_qlio_evry.xml" download>ppn_qlio_evry.xml</a>
|
* DUT QLIO (IUT Evry, 2015) : <a class="attachment" href="/attachments/ppn_qlio_evry.xml" download>ppn_qlio_evry.xml</a>
|
||||||
|
|
||||||
* DUT Réseaux et Télécommunications (PPN juillet 2013) : <a class="attachment" href="/attachments/dut_rt_ppn2013_v1.xml" download>dut_rt_ppn2013_v1.xml</a>
|
* DUT Réseaux et Télécommunications (PPN juillet 2013) : <a class="attachment" href="/attachments/dut_rt_ppn2013_v1.xml" download>dut_rt_ppn2013_v1.xml</a>
|
||||||
|
|
||||||
* DUT Réseaux et Télécommunications (PPN juillet 2013, version tagguée pour avis de poursuite d'études, IUT de Grenoble) : <a class="attachment" href="/attachments/formation_RT_PPN2013_tagguee.xml" download>formation_RT_PPN2013_tagguee.xml</a>
|
* DUT Réseaux et Télécommunications (PPN juillet 2013, version tagguée pour avis de poursuite d'études, IUT de Grenoble) : <a class="attachment" href="/attachments/formation_RT_PPN2013_tagguee.xml" download>formation_RT_PPN2013_tagguee.xml</a>
|
||||||
|
|
||||||
* DUT Réseaux et Télécommunications (PPN juillet 2008): <a class="attachment" href="/attachments/DUT_RT_PPN2008_v4.xml" download>DUT_RT_PPN2008_v4.xml</a>
|
* DUT Réseaux et Télécommunications (PPN juillet 2008): <a class="attachment" href="/attachments/DUT_RT_PPN2008_v4.xml" download>DUT_RT_PPN2008_v4.xml</a>
|
||||||
|
|
||||||
* DUT Techniques de commercialisation (TC) (IUT du Havre, sept 2013) : <a
|
* DUT Techniques de commercialisation (TC) (IUT du Havre, sept 2013) : <a class="attachment" href="/attachments/maquetteS1_S2_TC2013.xml" download>maquetteS1_S2_TC2013.xml</a>
|
||||||
class="attachment" href="/attachments/maquetteS1_S2_TC2013.xml"
|
|
||||||
download>maquetteS1_S2_TC2013.xml</a>
|
|
||||||
|
|
||||||
Et aussi: 11 programmes pédagogiques utilisés à l'IUT du Havre, à jour en mars 2015: HSE, TC, InfoCom, GEA, CS_AS, GC, GLT, GMP, INFO, GEII: <a class="attachment" href="/attachments/PPN-LeHavre2015.zip" download>PPN-LeHavre2015.zip</a> (contribution Dominique Soudière)
|
Et aussi: 11 programmes pédagogiques utilisés à l'IUT du Havre, à jour en mars 2015: HSE, TC, InfoCom, GEA, CS_AS, GC, GLT, GMP, INFO, GEII: <a class="attachment" href="/attachments/PPN-LeHavre2015.zip" download>PPN-LeHavre2015.zip</a> (contribution Dominique Soudière)
|
||||||
|
|
||||||
@ -85,3 +71,6 @@ Et aussi: 11 programmes pédagogiques utilisés à l'IUT du Havre, à jour en ma
|
|||||||
* Licence professionnelle Réseaux et Télécommunications, option Administration et Sécurité des Réseaux (ASUR) : <a class="attachment" href="/attachments/lp_assur.xml" download>lp_assur.xml</a>:
|
* Licence professionnelle Réseaux et Télécommunications, option Administration et Sécurité des Réseaux (ASUR) : <a class="attachment" href="/attachments/lp_assur.xml" download>lp_assur.xml</a>:
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
Dominique Soudiere (IUT du Havre) a développé une macro Excel pour faciliter la saisie des programmes pédagogiques: <a class="attachment" href="/attachments/MaquetteVersion2017.xlsm" download>MaquetteVersion2017.xlsm</a>
|
||||||
|
|
||||||
|
91
docs/FAQ.md
@ -1,7 +1,7 @@
|
|||||||
# FAQ / Questions fréquemment posées
|
|
||||||
|
## FAQ / Questions fréquemment posées
|
||||||
|
|
||||||
## Le projet ScoDoc
|
## Le projet ScoDoc
|
||||||
|
|
||||||
### Qui sont les développeurs ? Le projet est-il pérenne ?
|
### Qui sont les développeurs ? Le projet est-il pérenne ?
|
||||||
|
|
||||||
ScoDoc a été conçu et développé par Emmanuel Viennet, puis complété par
|
ScoDoc a été conçu et développé par Emmanuel Viennet, puis complété par
|
||||||
@ -16,14 +16,12 @@ L'avenir du logiciel dépend donc de vous: adhérez, ou incitez votre institutio
|
|||||||
(département IUT, Institut, École) à le faire.
|
(département IUT, Institut, École) à le faire.
|
||||||
|
|
||||||
## Utilisation de ScoDoc
|
## Utilisation de ScoDoc
|
||||||
|
### Comment prendre en compte les notes de sport ou autres bonus ?
|
||||||
### Comment prendre en compte les notes de sport ou autres bonus/malus ?
|
Voir [CalculNotes](CalculNotes.md), ou bien
|
||||||
|
|
||||||
Voir [la page dédiée](BonusMalus.md), ou bien pour les bonus sport
|
|
||||||
[le tutoriel vidéo par Cédric C.](https://www.youtube.com/watch?v=SVbjuDpq-lI&list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1&index=13).
|
[le tutoriel vidéo par Cédric C.](https://www.youtube.com/watch?v=SVbjuDpq-lI&list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1&index=13).
|
||||||
|
|
||||||
### Qui peut voir les notes, et quand ?
|
|
||||||
|
|
||||||
|
### Qui peut voir les notes, et quand ?
|
||||||
Tous les collègues (enseignants et administratifs) pouvant accéder au
|
Tous les collègues (enseignants et administratifs) pouvant accéder au
|
||||||
département peuvent voir les notes, en passant par la page du module concerné.
|
département peuvent voir les notes, en passant par la page du module concerné.
|
||||||
|
|
||||||
@ -38,8 +36,8 @@ affichage sur leur ENT en général, cet affichage pouvant être désactivé dep
|
|||||||
ScoDoc pour un semestre particulier). A défaut, il faut leur envoyer leurs
|
ScoDoc pour un semestre particulier). A défaut, il faut leur envoyer leurs
|
||||||
bulletins par mail.
|
bulletins par mail.
|
||||||
|
|
||||||
### Comment supprimer une évaluation ?
|
|
||||||
|
|
||||||
|
### Comment supprimer une évaluation ?
|
||||||
1. Supprimer toutes les notes saisies dans cette évaluation, s'il y en a: passer
|
1. Supprimer toutes les notes saisies dans cette évaluation, s'il y en a: passer
|
||||||
par la page "Saisie des notes" et suivre le lien "Effacer toutes les notes de
|
par la page "Saisie des notes" et suivre le lien "Effacer toutes les notes de
|
||||||
cette évaluation".
|
cette évaluation".
|
||||||
@ -49,51 +47,41 @@ bulletins par mail.
|
|||||||
|
|
||||||
|
|
||||||
### En IUT, comment gérer les licences professionnelles ?
|
### En IUT, comment gérer les licences professionnelles ?
|
||||||
|
* On peut créer un département regroupant les licences, ou bien rattacher
|
||||||
|
chaque licence à un département existant. Cette dernière solution est
|
||||||
|
préférable si des étudiants de DUT poursuivent en licence (ainsi, on a
|
||||||
|
automatiquement accès à leur parcours complet).
|
||||||
|
|
||||||
* On peut créer un département regroupant les licences, ou bien rattacher
|
* La plupart des licences pro durent un an, mais sont gérées comme un seul
|
||||||
chaque licence à un département existant. Cette dernière solution est
|
semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans
|
||||||
préférable si des étudiants de DUT poursuivent en licence (ainsi, on a
|
l'option "*Semestre dans la formation*" (page "*modification du semestre*").
|
||||||
automatiquement accès à leur parcours complet).
|
|
||||||
|
|
||||||
* La plupart des licences pro durent un an, mais sont gérées comme un seul
|
|
||||||
semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans
|
|
||||||
l'option "*Semestre dans la formation*" (page "*modification du semestre*").
|
|
||||||
|
|
||||||
### Comment gérer les étudiants les démissionnaires ?
|
### Comment gérer les étudiants les démissionnaires ?
|
||||||
|
* Sur la fiche d'un étudiant, on peut choisir plusieurs options:
|
||||||
|
|
||||||
Sur la fiche d'un étudiant, on peut choisir plusieurs options:
|
* *Supprimer cet étudiant* : il sera totalement supprimé de la base, sans
|
||||||
|
|
||||||
* *Supprimer cet étudiant* : il sera totalement supprimé de la base, sans
|
|
||||||
remède. Cette option n'est en principe jamais utile, sauf pour corriger
|
remède. Cette option n'est en principe jamais utile, sauf pour corriger
|
||||||
une fausse manœuvre au moment des inscriptions.
|
une fausse manœuvre au moment des inscriptions.
|
||||||
|
|
||||||
Ou bien au niveau de son inscription dans un semestre, via le menu *Scolarité*:
|
Ou bien au niveau de son inscription dans un semestre, via le menu *Scolarité*:
|
||||||
|
|
||||||
* *Démission* : l'étudiant restera dans le semestre, mais sera indiqué comme
|
* *Démission* : l'étudiant restera dans le semestre, mais sera indiqué comme
|
||||||
démissionnaire. C'est ce qu'il faut faire quand un étudiant signale son
|
démissionnaire. C'est ce qu'il faut faire quand un étudiant signale son
|
||||||
abandon en cours d'année, passé le délai légal ou il peut se désengager
|
abandon en cours d'année, passé le délai légal ou il peut se désengager
|
||||||
(typiquement, après le 15 octobre).
|
(typiquement, après le 15 octobre).
|
||||||
|
|
||||||
* *Désinscrire (en cas d'erreur)* : l'étudiant reste dans ScoDoc, ses
|
* *Désinscrire (en cas d'erreur)* : l'étudiant reste dans ScoDoc, ses
|
||||||
données (et ses notes) sont conservées, mais il n'est plus inscrit au
|
données (et ses notes) sont conservées, mais il n'est plus inscrit au
|
||||||
semestre et n'apparait plus dans les listes. C'est ce qu'il faut choisir
|
semestre et n'apparait plus dans les listes. C'est ce qu'il faut choisir
|
||||||
en début d'année, soit en cas d'erreur de manipulation, soit si l'étudiant
|
en début d'année, soit en cas d'erreur de manipulation, soit si l'étudiant
|
||||||
abandonne en tout début d'année (il ne sera alors pas compté dans les
|
abandonne en tout début d'année (il ne sera alors pas compté dans les
|
||||||
inscrits).
|
inscrits).
|
||||||
|
|
||||||
### Les ECTS ne s'affichent pas
|
|
||||||
|
|
||||||
Les ECTS sont attribués (ou pas) au moment de la saisie de la décision de jury
|
|
||||||
sur les UEs. Avant le jury, l'étudiant n'a jamais d'ECTS, quelles que soient ses
|
|
||||||
notes.
|
|
||||||
|
|
||||||
### Mes données sont erronées, que faire ?
|
### Mes données sont erronées, que faire ?
|
||||||
|
|
||||||
En cas de problème (bug, erreur de manipulation, suspicion de piratage),
|
En cas de problème (bug, erreur de manipulation, suspicion de piratage),
|
||||||
différents journaux peuvent être consultés.
|
différents journaux peuvent être consultés.
|
||||||
|
|
||||||
Les utilisateurs autorisés peuvent facilement voir:
|
Les utilisateurs autorisés peuvent facilement voir:
|
||||||
|
|
||||||
* les opérations effectuées sur un étudiant (inscriptions, saisies d'absences,
|
* les opérations effectuées sur un étudiant (inscriptions, saisies d'absences,
|
||||||
...), accessibles via le menu "Etudiant" / "Voir le journal..." en haut de sa
|
...), accessibles via le menu "Etudiant" / "Voir le journal..." en haut de sa
|
||||||
fiche individuelle.
|
fiche individuelle.
|
||||||
@ -103,35 +91,33 @@ Les utilisateurs autorisés peuvent facilement voir:
|
|||||||
l'identité de l'utilisateur ayant effectué la saisie).
|
l'identité de l'utilisateur ayant effectué la saisie).
|
||||||
|
|
||||||
Les administrateurs (informaticiens) peuvent aussi consulter les journaux (logs)
|
Les administrateurs (informaticiens) peuvent aussi consulter les journaux (logs)
|
||||||
du serveur, voir ["où sont les journaux"](#ou-sont-les-journaux-logs).
|
du serveur, voir plus loin.s
|
||||||
|
|
||||||
### Comment signaler un problème ?
|
### Comment signaler un problème ?
|
||||||
|
|
||||||
Nous vous remercions de nous signaler tous les problèmes que vous rencontrez:
|
Nous vous remercions de nous signaler tous les problèmes que vous rencontrez:
|
||||||
erreurs, comportement bizarre ou malcommode. Nous ne promettons pas de les
|
erreurs, comportement bizarre ou malcommode. Nous ne promettons pas de les
|
||||||
régler rapidement, ni même plus tard: le logiciel est fourni sans aucune
|
régler rapidement, ni même plus tard: le logiciel est fourni sans aucune
|
||||||
garantie. Mais nous faisons de notre mieux:
|
garantie. Mais nous faisons de notre mieux:
|
||||||
|
|
||||||
* si vous êtes utilisateurs, écrire à
|
- si vous êtes utilisateurs, écrire à
|
||||||
[notes@listes.univ-paris13.fr](mailto:notes@listes.univ-paris13.fr).
|
[notes@listes.univ-paris13.fr](mailto:notes@listes.univ-paris13.fr).
|
||||||
ou joindre le canal Discord Assistance.
|
ou joindre le canal Discord Assistance.
|
||||||
|
|
||||||
* si vous êtes informaticien et voulez évoquer un problème technique
|
- si vous êtes informaticien et voulez évoquer un problème technique
|
||||||
(développement, installation), écrire à
|
(développement, installation), écrire à
|
||||||
[scodoc-devel@listes.univ-paris13.fr](mailto:scodoc-devel@listes.univ-paris13.fr).
|
[scodoc-devel@listes.univ-paris13.fr](mailto:scodoc-devel@listes.univ-paris13.fr).
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
|
## Configuration
|
||||||
### Comment changer les logos sur les documents PDF (PV...)
|
### Comment changer les logos sur les documents PDF (PV...)
|
||||||
|
|
||||||
Il faut avoir un compte (web) administrateur sur ScoDoc, et passer
|
Il faut avoir un compte (web) administrateur sur ScoDoc, et passer
|
||||||
par l'onglet "configuration" accessible sur la page d'accueil.
|
par l'onglet "configuration" accessible sur la page d'accueil.
|
||||||
Voir [la page sur la gestion des logos et images](GestionLogos.md).
|
Voir [la page sur la gestion des logos et images ](GestionLogos.md).
|
||||||
|
|
||||||
### Administration
|
### Administration
|
||||||
|
|
||||||
### Quel système d'exploitation ?
|
### Quel système d'exploitation ?
|
||||||
|
|
||||||
ScoDoc est accessible depuis n'importe quel navigateur Web (Firefox, Chrome, ...).
|
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 serveur ScoDoc fonctionne sous Linux. Il n'est testé qu'avec Debian (stable).
|
||||||
@ -139,8 +125,8 @@ Le script d'installation ([GuideInstallDebian11](GuideInstallDebian11.md))
|
|||||||
assure l'installation de tout les éléments nécessaires au bon fonctionnement de
|
assure l'installation de tout les éléments nécessaires au bon fonctionnement de
|
||||||
ScoDoc.
|
ScoDoc.
|
||||||
|
|
||||||
### Quand et comment mettre à jour le logiciel ?
|
|
||||||
|
|
||||||
|
### Quand et comment mettre à jour le logiciel ?
|
||||||
Les mises à jour sont normalement automatiquement appliquées chaque nuit,
|
Les mises à jour sont normalement automatiquement appliquées chaque nuit,
|
||||||
assurant la sécurité et l'actualisation de ScoDoc.
|
assurant la sécurité et l'actualisation de ScoDoc.
|
||||||
|
|
||||||
@ -150,25 +136,25 @@ importantes sont annoncées sur la liste de diffusion
|
|||||||
|
|
||||||
Voir aussi la page [MisesAJour](MisesAJour.md).
|
Voir aussi la page [MisesAJour](MisesAJour.md).
|
||||||
|
|
||||||
### Quelles sauvegardes des données ?
|
|
||||||
|
|
||||||
|
|
||||||
|
### Quelles sauvegardes des données ?
|
||||||
Voir [SauvegardesBases](SauvegardesBases.md).
|
Voir [SauvegardesBases](SauvegardesBases.md).
|
||||||
|
|
||||||
|
|
||||||
### Où sont les journaux (logs) ?
|
### Où sont les journaux (logs) ?
|
||||||
|
|
||||||
Les administrateurs du serveur peuvent consulter:
|
Les administrateurs du serveur peuvent consulter:
|
||||||
|
* Le journal du serveur Web (nginx)
|
||||||
* Le journal du serveur Web (nginx)
|
```
|
||||||
|
|
||||||
```text
|
|
||||||
/var/log/nginx/scodoc*.log
|
/var/log/nginx/scodoc*.log
|
||||||
```
|
```
|
||||||
|
|
||||||
* le fichier `/opt/scodoc-data/log/scodoc.log` reçoit des messages de déboggage
|
* le fichier `/opt/scodoc-data/log/scodoc.log` reçoit des messages de déboggage
|
||||||
de ScoDoc.
|
de ScoDoc.
|
||||||
|
|
||||||
### J'ai installé ScoDoc mais je n'ai pas de certificat SSL !
|
|
||||||
|
|
||||||
|
### J'ai installé ScoDoc mais je n'ai pas de certificat SSL !
|
||||||
Il est de plus en plus important d'installer un certificat SSL; les navigateurs
|
Il est de plus en plus important d'installer un certificat SSL; les navigateurs
|
||||||
Web sont de plus en plus méfiants et vos utilisateurs seront très gênés si votre
|
Web sont de plus en plus méfiants et vos utilisateurs seront très gênés si votre
|
||||||
ScoDoc n'a pas de certificat valide. Si votre établissement (par exemple via
|
ScoDoc n'a pas de certificat valide. Si votre établissement (par exemple via
|
||||||
@ -180,18 +166,11 @@ Pour vos tests en local, avec Chrome, modifier le paramétrage en réglant:
|
|||||||
`chrome://flags/#allow-insecure-localhost` (et/ou taper "thisisunsafe" sur la
|
`chrome://flags/#allow-insecure-localhost` (et/ou taper "thisisunsafe" sur la
|
||||||
page bloquée).
|
page bloquée).
|
||||||
|
|
||||||
### Comment supprimer un département ?
|
|
||||||
|
|
||||||
|
|
||||||
|
### Comment supprimer un département ?
|
||||||
Voir les commandes d'administration dans [GuideConfig](GuideConfig.md)
|
Voir les commandes d'administration dans [GuideConfig](GuideConfig.md)
|
||||||
|
|
||||||
|
|
||||||
### Comment contribuer au projet ?
|
### Comment contribuer au projet ?
|
||||||
|
[Voir la page](Contribuer.md).
|
||||||
[Voir la page "contribuer"](Contribuer.md).
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [Guide du responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
- <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Tutoriels sur YouTube <img src="/img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
|
|
||||||
|
@ -1,119 +0,0 @@
|
|||||||
<!-- markdownlint-disable MD024 -->
|
|
||||||
# Gestions des fichiers justificatifs pour le module Assiduité
|
|
||||||
|
|
||||||
Le fonctionnement de l'importation / lecture des fichiers justificatifs est légèrement plus complexe que l'utilisation de l'API seule. Voici les différentes informations à savoir pour correctement utiliser les fichiers justificatifs.
|
|
||||||
|
|
||||||
Afin de bien comprendre les différentes informations, merci de lire d'abord la documentation de l'API Assiduité : [Documentation Assiduité](ScoDoc9API.md#api-assiduite)
|
|
||||||
|
|
||||||
## Importer un fichier
|
|
||||||
|
|
||||||
L'importation d'un fichier pour un justificatif se fait en deux temps :
|
|
||||||
|
|
||||||
* Créer un nouvel objet justificatif à l'aide de l'API
|
|
||||||
* Envoyer le fichier sur le serveur ScoDoc
|
|
||||||
|
|
||||||
### Envoyer le fichier sur le serveur ScoDoc
|
|
||||||
|
|
||||||
Dans un premier temps il faut créer un objet justificatif à l'aide de l'API.
|
|
||||||
|
|
||||||
Dans un second temps il faut envoyer le fichier sur le serveur à l'aide d'une requête `POST`.
|
|
||||||
|
|
||||||
#### Exemple en Python
|
|
||||||
|
|
||||||
##### Script d'envoi du justificatif
|
|
||||||
|
|
||||||
> `token` est le même token que pour le reste de l'API
|
|
||||||
|
|
||||||
```py
|
|
||||||
data = {
|
|
||||||
"etat": "attente",
|
|
||||||
"date_debut": "2022-10-27T08:00",
|
|
||||||
"date_fin": "2022-10-27T12:00",
|
|
||||||
}
|
|
||||||
# la route de l'api est : /justificatif/<etudid:int>/create
|
|
||||||
r = requests.post(API_URL + "/justificatif/123/create", json=data, headers=token)
|
|
||||||
print(r.json)
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Réponse
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"justif_id" : 424242
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Script d'envoi du fichier
|
|
||||||
|
|
||||||
> `token` est le même token que pour le reste de l'API
|
|
||||||
|
|
||||||
```py
|
|
||||||
with open('exemple.txt', 'rb') as f:
|
|
||||||
# la route pour importer est : api/justificatif/<justif_id:int>/import
|
|
||||||
r = requests.post(API_URL + "/justificatif/424242/import", files={"exemple.txt": f}, headers=token)
|
|
||||||
print(r.json)
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Réponse
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"filename" : "exemple.txt"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Veillez à bien noter le nom de fichier renvoyé car c'est le nom coté "server", il sera à utiliser lors que vous souhaitez récupérer le fichier
|
|
||||||
ou lorsque vous voudrez le supprimer
|
|
||||||
|
|
||||||
## Télécharger un fichier
|
|
||||||
|
|
||||||
Pour télécharger un fichier de justificatif rien de plus simple
|
|
||||||
|
|
||||||
### Une simple requête POST
|
|
||||||
|
|
||||||
* **Méthode:** POST
|
|
||||||
* **Permission: `ScoView`**
|
|
||||||
* **Paramètres:**
|
|
||||||
* `justif_id`
|
|
||||||
* `filename`
|
|
||||||
* **Routes:** `/justificatif/<justif_id:int>/export/<filename>`
|
|
||||||
* **Exemple d'utilisation:** `/api/justificatif/424242/export/exemple.txt`
|
|
||||||
* **Résultat:** télécharge directement le fichier
|
|
||||||
|
|
||||||
## Supprimer un fichier
|
|
||||||
|
|
||||||
Pour supprimer un fichier il suffit d'envoyer une requête post sur le justificatif, avec un json correct
|
|
||||||
|
|
||||||
### Script de suppression du fichier
|
|
||||||
|
|
||||||
> `token` est le même token que pour le reste de l'API
|
|
||||||
|
|
||||||
```py
|
|
||||||
# la route pour supprimer est : api/justificatif/<justif_id:int>/remove
|
|
||||||
|
|
||||||
d = {
|
|
||||||
|
|
||||||
"remove": "list",
|
|
||||||
"filenames": [
|
|
||||||
"exemple.txt"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
# ou
|
|
||||||
|
|
||||||
d = {
|
|
||||||
|
|
||||||
"remove": "al",
|
|
||||||
}
|
|
||||||
|
|
||||||
r = requests.post(API_URL + "/justificatif/424242/remove", data=d, headers=token)
|
|
||||||
print(r.json)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Réponse
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"response" : "removed"
|
|
||||||
}
|
|
||||||
```
|
|
@ -1,221 +0,0 @@
|
|||||||
# Programmes pédagogiques et versions
|
|
||||||
|
|
||||||
Le programme pédagogique, appelé *formation* dans ScoDoc, défini les unités
|
|
||||||
d'enseignement; il est destiné à être utilisé par plusieurs sessions de
|
|
||||||
formation (semestres). On doit apporter un soin particulier à la définition du
|
|
||||||
programme, et éviter de le modifier une fois que des semestres sont créés (il
|
|
||||||
est toutefois possible d'en créer de nouvelles *versions* pour permettre des
|
|
||||||
modifications ultérieures sans affecter les semestres achevés: voir plus bas.
|
|
||||||
|
|
||||||
Le programme pédagogique définit notamment les coefficients des modules qui le
|
|
||||||
composent. Les semestres qui se réfèrent à ce programme utilisent ces
|
|
||||||
coefficients pour calculer leurs notes. De même, les noms de UE et modules qui
|
|
||||||
apparaissent sur les bulletins viennent du programme. Il faut être
|
|
||||||
particulièrement vigilant lors des modifications du programme pédagogique.
|
|
||||||
|
|
||||||
Dans la configuration par défaut, seul le chef de département (rôle Admin) peut
|
|
||||||
modifier les programmes pédagogiques.
|
|
||||||
|
|
||||||
(voir aussi des exemples de programmes en bas de la page
|
|
||||||
[GuideAdminFormation](GuideAdminFormation.md)).
|
|
||||||
|
|
||||||
## Structure d'un programme pédagogique
|
|
||||||
|
|
||||||
On définira en général dans le programme l'ensemble des enseignements d'un
|
|
||||||
diplôme (les 4 semestres d'un DUT par exemple). C'est dans une phase ultérieure
|
|
||||||
que l'on mettra en place les différents semestres.
|
|
||||||
|
|
||||||
Les programmes pédagogiques ScoDoc sont structurés en Unités d'Enseignements
|
|
||||||
(UE), Matières et Modules. Un module appartient forcément à une matière, qui
|
|
||||||
appartient elle même à une UE. Les modules (déclinés en *ressources*, *SAÉs* en
|
|
||||||
BUT) représentent les cours ("mathématique", "anglais", ...) et sont associés à
|
|
||||||
un volume horaire (cours/TD/TP) et à un coefficient: chaque module produit une
|
|
||||||
note moyenne (en général obtenue à travers plusieurs *évaluations* ou
|
|
||||||
contrôles). La note moyenne d'une UE est obtenue en calculant une moyenne
|
|
||||||
pondérée par les coefficients des notes moyennes de modules.
|
|
||||||
|
|
||||||
🚸 En BUT, c'est un peu différent, puisque les modules ont une note *pour chaque
|
|
||||||
UE*: la moyenne d'un module n'est pas définie. Voir [BUT](BUT.md)
|
|
||||||
|
|
||||||
### Unités d'Enseignement (UE)
|
|
||||||
|
|
||||||
Les UE jouent un rôle particulier dans l'évaluation. En effet, selon les règles
|
|
||||||
du LMD, les UE sont *capitalisables* (voir
|
|
||||||
[CapitalisationUE](CapitalisationUE.md)). De plus, l'obtention de droit des
|
|
||||||
semestres d'un DUT est soumise à une moyenne supérieure à 8/20 dans chacune des
|
|
||||||
UE.
|
|
||||||
|
|
||||||
Notons qu'une UE ne possède pas de coefficient. Le coefficient d'une UE n'est
|
|
||||||
autre que la somme des coefficient des modules qui composent cette UE. Par
|
|
||||||
conséquent, le coefficient d'UE est potentiellement variable d'un étudiant à
|
|
||||||
l'autre, si les étudiants ne sont pas inscrits aux mêmes modules (options ou
|
|
||||||
parcours).
|
|
||||||
|
|
||||||
Note: une formation en plusieurs semestres devrait normalement avoir des UEs
|
|
||||||
différentes dans chaque semestre.
|
|
||||||
|
|
||||||
* Il est parfois désirable de capitaliser au sein d'un parcours des UE
|
|
||||||
appartenant à deux programmes ScoDoc différents (par exemple, on peut avoir
|
|
||||||
changé de version du programme entre deux semestres, comme expliqué plus
|
|
||||||
loin). Dans ce cas, il faut attribuer aux programmes le même code de formation
|
|
||||||
(via le lien "modifier" sur la page d'accueil des programmes), et aussi
|
|
||||||
attribuer les mêmes codes aux UE (via le lien "modifier l'UE" sur la page
|
|
||||||
"programme détaillé et semestres").
|
|
||||||
|
|
||||||
* Les UE peuvent être de type "normal" ou "Sport&Culture". Ces dernières ne sont
|
|
||||||
utilisées que pour les notes optionnelles (activités culturelles et sportives)
|
|
||||||
utilisée dans certains établissements. Elles se voient attribuer une règle de
|
|
||||||
calcul spécifique qui dépend généralement de l'établissement (il n'y à pas de
|
|
||||||
règle nationale pour la prise en compte des notes de sport et culture).
|
|
||||||
Typiquement, la note des UE de ce type spécial agit directement sur la moyenne
|
|
||||||
générale de l'étudiant.
|
|
||||||
|
|
||||||
### Matières
|
|
||||||
|
|
||||||
Les matières n'ont pas d'autre utilité que d'aider à structurer le programme.
|
|
||||||
Par exemple, on pourrait définir dans un programme une matière "Sciences"
|
|
||||||
réunissant les modules de "mathématiques" et de "physique". Les matières n'ont
|
|
||||||
pas de coefficient. Si l'on ne souhaite pas utiliser de matière, il suffit d'en
|
|
||||||
créer une pour chaque module avec le même nom, ou au contraire (plus simplement)
|
|
||||||
de créer une matière par UE et d'y placer tous les modules.
|
|
||||||
|
|
||||||
Note: les matières ne sont pas utilisées en BUT.
|
|
||||||
|
|
||||||
### Modules
|
|
||||||
|
|
||||||
* Le *code* du module va apparaitre sur les bulletins et certains tableaux
|
|
||||||
récapitulatifs. Il comporte habituellement quelques caractères (comme "MATH",
|
|
||||||
ou "SPO"). Si la version officielle de votre programme pédagogique n'utilise
|
|
||||||
pas de codes de ce genre, inventez des codes à la fois courts (pas plus de 4
|
|
||||||
ou 5 caractères) et évocateurs du nom du module.
|
|
||||||
|
|
||||||
* Le *titre* du module apparaitra sur le tableau de bord du semestre et sur les
|
|
||||||
bulletins.
|
|
||||||
|
|
||||||
* L' *abréviation* est une version courte du titre. Si le titre n'est pas trop
|
|
||||||
long (3 ou 4 mots), copier le. Sinon, inventer une abréviation en quelques
|
|
||||||
mots qui soit lisible.
|
|
||||||
|
|
||||||
* Les volumes horaires ne sont présents que pour information et ne sont
|
|
||||||
actuellement pas du tout utilisés par ScoDoc: il est donc facultatif de les
|
|
||||||
indiquer.
|
|
||||||
|
|
||||||
* Le coefficient est utilisé pour le calcul de la moyenne d'UE et de la moyenne
|
|
||||||
générale. Il s'agit d'un nombre réel positif ou nul.
|
|
||||||
|
|
||||||
* Choisir dans le menu la *matière* à laquelle appartient le module.
|
|
||||||
|
|
||||||
* Le semestre est un nombre indiquant dans quel semestre de la formation se
|
|
||||||
place habituellement ce module. Il arrive que l'on décline la même formation
|
|
||||||
selon différentes modalités (formation initiale, continue) avec des placements
|
|
||||||
différents: dans ce cas, indiquer le semestre dans la modalité "habituelle";
|
|
||||||
lors de la mise en place d'un semestre, on peut choisir manuellement des
|
|
||||||
modules de tous les semestres.
|
|
||||||
|
|
||||||
### Ordre d'affichage des UE, matières et modules
|
|
||||||
|
|
||||||
Chaque élément (UE, matières et modules) possède un attribut *numéro* qui est un
|
|
||||||
nombre entier utilisé pour le classement des éléments de même niveau dans la
|
|
||||||
hiérarchie dans les tableaux et bulletins.
|
|
||||||
|
|
||||||
Il est conseillé d'attribuer les numéros de 10 en 10 afin de pouvoir plus
|
|
||||||
facilement insérer un nouvel élément entre deux éléments existants. Par exemple,
|
|
||||||
si l'on a dans une matière trois modules MA, MB, MC, on va leur attribuer les
|
|
||||||
numéros 10, 20 et 30.
|
|
||||||
|
|
||||||
## Verrouillage d'une formation
|
|
||||||
|
|
||||||
Lorsque au moins l'un des semestres qui se réfèrent à ce programme est
|
|
||||||
*verrouillé*, il devient impossible de modifier le programme (la page de
|
|
||||||
présentation du programme ne comporte alors aucun lien). Deux cas peuvent se
|
|
||||||
présenter:
|
|
||||||
|
|
||||||
* il s'agit d'une modification mineure (intitulé d'un module, ...) ne risquant
|
|
||||||
pas affecter les notes existantes, et il y a peu de semestres verrouillés:
|
|
||||||
dans ce cas, il est possible d'aller déverrouiller un à un les semestres
|
|
||||||
concernés, puis d'effectuer la modification du programme avant de
|
|
||||||
re-verrouiller les semestres.
|
|
||||||
|
|
||||||
* il s'agit d'une modification conséquente, on ne ne veut pas affecter les
|
|
||||||
semestres existants: on crée alors une nouvelle *version* du programme. La
|
|
||||||
version crée est une copie à l'identique du programme existant, que l'on peut
|
|
||||||
modifier à sa guise.
|
|
||||||
|
|
||||||
## Versions de formation
|
|
||||||
|
|
||||||
Chaque semestre ("FormSemestre" dans le jargon ScoDoc) se réfère à un programme
|
|
||||||
pédagogique, appelé sa *formation*. cette formation définit l'ensemble des UE et
|
|
||||||
modules, leurs intitulés, et leurs coefficients et ECTS.
|
|
||||||
|
|
||||||
Les programmes sont le plus souvent adaptés localement, et peuvent varier d'une
|
|
||||||
année sur l'autre. Lorsqu'une formation est modifié (par exemple, un changement
|
|
||||||
de coefficient), ScoDoc doit recalculer l'ensemble des notes de tous les
|
|
||||||
semestres utilisant cette formation. De même, si un intitulé change, il faut
|
|
||||||
re-générer les bulletins et procès-verbaux. On conçoit donc que la modification
|
|
||||||
d'une formation ne s'aborde pas à la légère. ScoDoc empêche d'ailleurs toute
|
|
||||||
modification d'une formation (ou partie de, selon les cas) lorsqu'un semestre a
|
|
||||||
été verrouillé (ce qui indique en général qu'il est achevé et que l'on souhaite
|
|
||||||
conserver ses données et résultats inchangés pour utilisation future dans des
|
|
||||||
jurys ou avis).
|
|
||||||
|
|
||||||
Si vous devez modifier une formation pour la nouvelle année scolaire, vous
|
|
||||||
pouvez créer une nouvelle version d'une formation existante afin d'éviter
|
|
||||||
d'avoir à saisir de nouveau l'ensemble des éléments. Il arrive même que, l'année
|
|
||||||
scolaire déjà commencée, on se rende compte que l'on doit modifier la formation
|
|
||||||
d'un semestre en cours (bien sûr, cela ne devrait pas arriver, les modalités
|
|
||||||
d'évaluation étant souvent votées par des instances officielles avant le début
|
|
||||||
de l'année, mais le monde n'est pas parfait et de petites corrections sont
|
|
||||||
parfois nécessaires). Dans ce cas, ScoDoc vous permet d'associer un ou plusieurs
|
|
||||||
semestres existants dans une formation à une nouvelle version de celle-ci, créée
|
|
||||||
par copie.
|
|
||||||
|
|
||||||
<img src="/screens/menu-formsemestre-assoc.png" alt="menu formsemestre" width="33%">
|
|
||||||
|
|
||||||
La figure suivante montre la distinction entre formations et semestres, et les opérations possibles:
|
|
||||||
|
|
||||||
![menu formsemestre](fig/formations_versions_association.jpg)
|
|
||||||
|
|
||||||
![association nouvelle version](fig/sem-assoc-formation.png)
|
|
||||||
|
|
||||||
## Évolution du programme d'une année sur l'autre
|
|
||||||
|
|
||||||
Imaginons que nous ayons les semestres S1, S2, S3, S4 dans un programme V1, et
|
|
||||||
que l'année suivante une nouvelle version du programme entre en vigueur
|
|
||||||
(adaptation locale, corrections diverses...).
|
|
||||||
|
|
||||||
Voici comment mettre en place les semestres de l'année suivante tout en
|
|
||||||
conservant le maximum d'éléments (évaluation, choix des ressources et SAE).
|
|
||||||
|
|
||||||
1. Cloner (menu **Semestre / Cloner**)les semestres concernés (S1 à S4 ici)
|
|
||||||
2. Prendre l'un des semestres copiés (peu importe laquelle), et suivre
|
|
||||||
**Semestre / Associer à une nouvelle version**. Il est alors possible d'associer
|
|
||||||
à cette nouvelle version (V2) les semestres: cochez les semestres créés à
|
|
||||||
l'étape précédente.
|
|
||||||
|
|
||||||
Cette façon de procéder permet de limiter le nombre de nouvelles versions de
|
|
||||||
formations créée.
|
|
||||||
|
|
||||||
<img src="/screens/formsemestre_associate_new_version.png" width="100%">
|
|
||||||
|
|
||||||
## Changement de la formation d'un semestre
|
|
||||||
|
|
||||||
Il peut arriver que l'on ai créé deux versions de formations, qui sont encore
|
|
||||||
identique, et que l'on souhaite rattacher un formsemestre de l'une à l'autre.
|
|
||||||
C'est possible, à condition que les deux formations soient vraiment identiques
|
|
||||||
(mêmes UEs, titres, coefficients, etc). Le lien est accessible en bas de la page
|
|
||||||
"Associer à une nouvelle version du programme" mentionnée ci-dessus.
|
|
||||||
|
|
||||||
![change formation](fig/sem-change-formation.png)
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide du responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- Pour le BUT: [le référentiel de compétence](BUTReferentielCompetences.md)
|
|
||||||
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
|
|
||||||
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
|
|
||||||
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
|
|
||||||
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
|
|
||||||
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,4 +1,4 @@
|
|||||||
# Obsolète, non disponible en ScoDoc 9
|
# Obsolète, non disponible en ScoDoc 9.
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
||||||
alt="/!\" /> **Les formules utilisateurs, disponibles à titre expérimental en
|
alt="/!\" /> **Les formules utilisateurs, disponibles à titre expérimental en
|
||||||
@ -7,110 +7,87 @@ posaient maints problèmes de performance et de maintenance, et ne sont plus
|
|||||||
utilisées en ScoDoc 9.** <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" />
|
utilisées en ScoDoc 9.** <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" />
|
||||||
|
|
||||||
## Formules utilisateurs pour le calcul des moyennes
|
## Formules utilisateurs pour le calcul des moyennes
|
||||||
|
Dans certains cas (assez rares), on veut calculer la note d'un module autrement qu'avec une simple moyenne des notes pondérée par les
|
||||||
Dans certains cas (assez rares), on veut calculer la note d'un module autrement
|
coefficients des évaluations. Par exemple, on veut parfois prendre la meilleure note de deux évaluations. On peut alors définir une formule ad-hoc pour le calcul de la moyenne du module.
|
||||||
qu'avec une simple moyenne des notes pondérée par les coefficients des
|
|
||||||
évaluations. Par exemple, on veut parfois prendre la meilleure note de deux
|
|
||||||
évaluations. On peut alors définir une formule ad-hoc pour le calcul de la
|
|
||||||
moyenne du module.
|
|
||||||
|
|
||||||
Les formules sont aussi utilisable pour calculer la moyenne d'une Unité d'Enseignement (UE).
|
Les formules sont aussi utilisable pour calculer la moyenne d'une Unité d'Enseignement (UE).
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention: l'utilisation de formules ralenti considérablement les traitements, et devrait être réservé à des cas exceptionnels.
|
||||||
alt="/!\" /> Attention: l'utilisation de formules ralenti considérablement les
|
|
||||||
traitements, et devrait être réservé à des cas exceptionnels.
|
|
||||||
|
|
||||||
### Détails
|
### Détails
|
||||||
|
Le problème est compliqué par le fait que les notes à traitées ne sont pas toujours des nombres: absences, notes en attentes ou manquantes...
|
||||||
Le problème est compliqué par le fait que les notes à traitées ne sont pas
|
|
||||||
toujours des nombres: absences, notes en attentes ou manquantes...
|
|
||||||
|
|
||||||
La formule reçoit donc:
|
La formule reçoit donc:
|
||||||
|
|
||||||
* Un tableau (vecteur) de notes (noté "notes"), de taille fixe et égale au
|
* Un tableau (vecteur) de notes (noté "notes"), de taille fixe et égale au nombre d'évaluations définies. Dans ce tableau, les notes "manquantes" ou "neutralisée" sont remplacées par des zéros. Les valeurs sont toujours entre 0 et 20. Toutes les évaluations sont présentes, même celle des évaluation incomplètes (mais leurs notes sont mises à zéro, même celles des étudiants qui ont une note note).
|
||||||
nombre d'évaluations définies. Dans ce tableau, les notes "manquantes" ou
|
|
||||||
"neutralisée" sont remplacées par des zéros. Les valeurs sont toujours entre 0
|
|
||||||
et 20. Toutes les évaluations sont présentes, même celle des évaluation
|
|
||||||
incomplètes (mais leurs notes sont mises à zéro, même celles des étudiants qui
|
|
||||||
ont une note note).
|
|
||||||
|
|
||||||
* Un tableau des coefficients de chaque évaluation, dans lequel les valeurs
|
* Un tableau des coefficients de chaque évaluation, dans lequel les valeurs correspondants aux notes "manquantes" sont nulles.
|
||||||
correspondants aux notes "manquantes" sont nulles.
|
|
||||||
|
|
||||||
Dans ces tableaux, les évaluations sont ordonnées en fonction de leur place sur
|
Dans ces tableaux, les évaluations sont ordonnées en fonction de leur place sur le tableau de bord du module: l'ordre des évaluation (par défaut par date) peut être modifié par l'utilisateur en utilisant les flèches.
|
||||||
le tableau de bord du module: l'ordre des évaluation (par défaut par date) peut
|
|
||||||
être modifié par l'utilisateur en utilisant les flèches.
|
|
||||||
|
|
||||||
Ainsi, si on a pour un étudiant deux évaluations de coefficients 2 et 3 avec les
|
Ainsi, si on a pour un étudiant deux évaluations de coefficients 2 et
|
||||||
notes (12/20 et 16/20), on aura:
|
3 avec les notes (12/20 et 16/20), on aura:
|
||||||
|
```
|
||||||
```py
|
|
||||||
notes = [ 12., 20. ]
|
notes = [ 12., 20. ]
|
||||||
coefs = [ 2., 3. ]
|
coefs = [ 2., 3. ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Quelques fonctions sont définies:
|
Quelques fonctions sont définies: `abs, cmp, dot, len, map, max, min, pow, reduce, round, sum, ifelse`.
|
||||||
`abs, cmp, dot, len, map, max, min, pow, reduce, round, sum, ifelse`.
|
|
||||||
|
|
||||||
Exemples:
|
Exemples:
|
||||||
|
|
||||||
* Le max de deux évaluations: `max( notes[0], notes[1] )` (*voir une meilleure approche plus bas*)
|
* Le max de deux évaluations: `max( notes[0], notes[1] )` (*voir une meilleure approche plus bas*)
|
||||||
* La moyenne classique: `dot( notes, coefs ) / sum(coefs)` (la fonction dot est le produit scalaire habituel)
|
* La moyenne classique: `dot( notes, coefs ) / sum(coefs)` (la fonction dot est le produit scalaire habituel)
|
||||||
* Ajouter 1 à la moyenne: `ifelse(moy_is_valid, min(moy_val + 1, 20), moy)`
|
* Ajouter 1 à la moyenne: `ifelse(moy_is_valid, min(moy_val + 1, 20), moy)`
|
||||||
* `ifelse(condition, valeur_si_vrai, valeur_si_faux)`
|
* `ifelse(condition, valeur_si_vrai, valeur_si_faux)`
|
||||||
* on utilise `min` car le résultat ne doit en aucun cas dépasser 20
|
* on utilise `min` car le résultat ne doit en aucun cas dépasser 20
|
||||||
* pour le calcul, on utilise la variable `moy_val` (un nombre)
|
* pour le calcul, on utilise la variable `moy_val` (un nombre)
|
||||||
* si la moyenne n'est pas valide, on renvoie la valeur `moy` (ce qui permet de garder le bon code)
|
* si la moyenne n'est pas valide, on renvoie la valeur `moy` (ce qui permet de garder le bon code)
|
||||||
* Le max de deux évaluations, en résistant aux notes manquantes: `ifelse(moy_is_valid, max(notes[0], notes[1]), moy)`
|
* Le max de deux évaluations, en résistant aux notes manquantes: `ifelse(moy_is_valid, max(notes[0], notes[1]), moy)`
|
||||||
|
|
||||||
|
|
||||||
Autres variables définies dans les formules:
|
Autres variables définies dans les formules:
|
||||||
|
|
||||||
* moy : la valeur de la moyenne calculée classiquement (somme pondérée) <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> *attention, ce n'est pas forcément un nombre !*
|
* moy : la valeur de la moyenne calculée classiquement (somme pondérée) <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> *attention, ce n'est pas forcément un nombre !*
|
||||||
* moy_val: la valeur de la moyenne (moy) (toujours un nombre, valant 0 si moyenne invalide)
|
* moy_val: la valeur de la moyenne (moy) (toujours un nombre, valant 0 si moyenne invalide)
|
||||||
* moy_is_valid: vrai si la moyenne (moy) est valide (numérique). Par exemple, si absence EXCusée, la moyenne n'est pas valide.
|
* moy_is_valid: vrai si la moyenne (moy) est valide (numérique). Par exemple, si absence EXCusée, la moyenne n'est pas valide.
|
||||||
* cmask : un vecteur de 0/1, 0 si l'évaluation correspondante n'a pas de note, 1 sinon.
|
* cmask : un vecteur de 0/1, 0 si l'évaluation correspondante n'a pas de note, 1 sinon.
|
||||||
* nbabs : nombre d'absences de l'étudiant dans le semestre (en demi-journées)
|
* nbabs : nombre d'absences de l'étudiant dans le semestre (en demi-journées)
|
||||||
* nbabs_just: nombre d'absences *justifiées* de l'étudiant dans le semestre (en demi-journées)
|
* nbabs_just: nombre d'absences *justifiées* de l'étudiant dans le semestre (en demi-journées)
|
||||||
* nbabs_nojust : nombre d'absences *non justifiées* de l'étudiant dans le semestre (en demi-journées)
|
* nbabs_nojust : nombre d'absences *non justifiées* de l'étudiant dans le semestre (en demi-journées)
|
||||||
|
|
||||||
|
|
||||||
|
Attention: pour les conditions, on utilisera la fonction `ifelse`: comme pour tout appel de fonction python, les arguments cette dernière sont évalués avant l'appel, ce qui implique que les deux branches (vraie et faux) sont toujours évaluées. Ce détail est important si l'une d'entre elle déclenche une exception !
|
||||||
|
|
||||||
|
|
||||||
Attention: pour les conditions, on utilisera la fonction `ifelse`: comme pour
|
|
||||||
tout appel de fonction python, les arguments cette dernière sont évalués avant
|
|
||||||
l'appel, ce qui implique que les deux branches (vraie et faux) sont toujours
|
|
||||||
évaluées. Ce détail est important si l'une d'entre elle déclenche une exception!
|
|
||||||
|
|
||||||
### Calcul des moyennes d'UE
|
### Calcul des moyennes d'UE
|
||||||
|
Dans les formules de calcul des moyennes d'UE, on peut utiliser soit le vecteur de notes soit avec des indices numériques (comme ci-dessus, les moyennes de modules étant accessibles dans l'ordre sous lequel elle apparaissent dans les bulletins de notes), soit en utilisant le code du module.
|
||||||
Dans les formules de calcul des moyennes d'UE, on peut utiliser soit le vecteur
|
|
||||||
de notes soit avec des indices numériques (comme ci-dessus, les moyennes de
|
|
||||||
modules étant accessibles dans l'ordre sous lequel elle apparaissent dans les
|
|
||||||
bulletins de notes), soit en utilisant le code du module.
|
|
||||||
|
|
||||||
Ainsi, la moyenne du module `BD1` serait aussi accessible comme la variable `notes['BD1']`.
|
Ainsi, la moyenne du module `BD1` serait aussi accessible comme la variable `notes['BD1']`.
|
||||||
|
|
||||||
Exemple: dans une UE, on veut ajouter la note du module SPORT (qui aurait été
|
Exemple: dans une UE, on veut ajouter la note du module SPORT (qui aurait été défini avec un coefficient nul dans le programme), on écrira:
|
||||||
défini avec un coefficient nul dans le programme), on écrira:
|
```
|
||||||
|
|
||||||
```py
|
|
||||||
ifelse(moy_is_valid, min(moy_val+notes['SPORT'], 20), moy)
|
ifelse(moy_is_valid, min(moy_val+notes['SPORT'], 20), moy)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Traitement des erreurs
|
|
||||||
|
|
||||||
La formule doit ramener une valeur numérique entre 0 et 20, sans quoi ScoDoc
|
### Traitement des erreurs
|
||||||
considère la note erronée et la remplace par le code 'ERR' (qui se voit dans le
|
La formule doit ramener une valeur numérique entre 0 et 20, sans quoi
|
||||||
tableau récapitulatif des notes et sur les bulletins). Idem pour tout autre
|
ScoDoc considère la note erronée et la remplace par le code 'ERR' (qui
|
||||||
erreur de calcul pouvant se produire. Si vous voyez des 'ERR', corrigez votre
|
se voit dans le tableau récapitulatif des notes et sur les bulletins).
|
||||||
formule ! (message d'erreur affiché sur le tableau de bord du semestre)
|
Idem pour tout autre erreur de calcul pouvant se produire.
|
||||||
|
Si vous voyez des 'ERR', corrigez votre formule ! (message d'erreur affiché sur le tableau de bord du semestre)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Exemples de formules de calcul utiles
|
## Exemples de formules de calcul utiles
|
||||||
|
|
||||||
### Exemple (contribué par Cédric C., IUT de Bordeaux)
|
### Exemple (contribué par Cédric C., IUT de Bordeaux)
|
||||||
|
|
||||||
*J'ai réussi à faire mon calcul de moyenne pour une évaluation ayant pour calcul :* `moyenne(DS5, TD4, moyenne(TP1,TP2,TP3))`
|
*J'ai réussi à faire mon calcul de moyenne pour une évaluation ayant pour calcul :* `moyenne(DS5, TD4, moyenne(TP1,TP2,TP3))`
|
||||||
|
|
||||||
*Si cela vous intéresse, voici le détail :*
|
*Si cela vous intéresse, voici le détail : *
|
||||||
|
|
||||||
```
|
```
|
||||||
Moyenne des [TPs](TPs.md)
|
Moyenne des [TPs](TPs.md)
|
||||||
(notes[1]*coefs[1]+notes[2]*coefs[2]+notes[3]*coefs[3])/(coefs[1]+coefs[2]+coefs[3])
|
(notes[1]*coefs[1]+notes[2]*coefs[2]+notes[3]*coefs[3])/(coefs[1]+coefs[2]+coefs[3])
|
||||||
@ -134,3 +111,8 @@ Soit la formule finale de moyenne de production
|
|||||||
ifelse(max(max(max(max(cmask[1], cmask[2]), cmask[3]), cmask[4]), cmask[5]), ((notes[5]*coefs[5]+notes[4]*coefs[4]+ (notes[1]*coefs[1]+notes[2]*coefs[2]+notes[3]*coefs[3])/( ifelse(max(max(cmask[1],cmask[2]),cmask[3]), coefs[1]+coefs[2]+coefs[3],1)
|
ifelse(max(max(max(max(cmask[1], cmask[2]), cmask[3]), cmask[4]), cmask[5]), ((notes[5]*coefs[5]+notes[4]*coefs[4]+ (notes[1]*coefs[1]+notes[2]*coefs[2]+notes[3]*coefs[3])/( ifelse(max(max(cmask[1],cmask[2]),cmask[3]), coefs[1]+coefs[2]+coefs[3],1)
|
||||||
)))/max(coefs[5]+coefs[4]+max(max(cmask[1],cmask[2]),cmask[3]),1) ,moy)
|
)))/max(coefs[5]+coefs[4]+max(max(cmask[1],cmask[2]),cmask[3]),1) ,moy)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Autres exemples
|
||||||
|
*à compléter, n'hésitez pas à envoyer vos exemples !*
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
# Suivi des absences (version <= 9.4)
|
|
||||||
|
|
||||||
**Cette page se réfère l'ancien système de gestion des absences, remplacé en
|
## Suivi des absences
|
||||||
juillet 2023 (ScoDoc 9.5) par le nouveau module Assiduité.**
|
|
||||||
|
|
||||||
ScoDoc permet d'enregistrer les absences des étudiants.
|
ScoDoc permet d'enregistrer les absences des étudiants.
|
||||||
|
|
||||||
@ -9,78 +7,60 @@ Les absences sont notées par demi-journées (matin ou après midi).
|
|||||||
|
|
||||||
Elles peuvent être "justifiées" ou non.
|
Elles peuvent être "justifiées" ou non.
|
||||||
|
|
||||||
Dans les pages concernant un étudiant, un cadre en bas à gauche permet de
|
Dans les pages concernant un étudiant, un cadre en bas à gauche permet de visualiser le compte d'absences (comptées en demi-journées) et de les visualiser sur un calendrier de l'année scolaire. On peut simplement ajouter, justifier ou supprimer une absence pour un étudiant.
|
||||||
visualiser le compte d'absences (comptées en demi-journées) et de les visualiser
|
|
||||||
sur un calendrier de l'année scolaire. On peut simplement ajouter, justifier ou
|
|
||||||
supprimer une absence pour un étudiant.
|
|
||||||
|
|
||||||
Une absence:
|
Une absence:
|
||||||
|
|
||||||
* correspond à une demi-journée durant laquelle l'étudiant a été noté absent;
|
* correspond à une demi-journée durant laquelle l'étudiant a été noté absent;
|
||||||
* peut être signalée plusieurs fois (ScoDoc ne la comptera qu'une fois).
|
* peut être signalée plusieurs fois (ScoDoc ne la comptera qu'une fois).
|
||||||
|
|
||||||
Un justificatif:
|
Un justificatif:
|
||||||
|
|
||||||
* permet de signaler que l'absence est "excusée" (certificat médical...);
|
* permet de signaler que l'absence est "excusée" (certificat médical...);
|
||||||
* peut être saisi à n'importe quel moment, avant ou après le signalement de l'absence.
|
* peut être saisi à n'importe quel moment, avant ou après le signalement de l'absence.
|
||||||
|
|
||||||
Les absences peuvent aussi être saisies pour tout un groupe d'étudiants via un
|
Les absences peuvent aussi être saisies pour tout un groupe d'étudiants via un formulaire adapté (voir le menu "Saisir absences" sur le tableau de bord du semestre).
|
||||||
formulaire adapté (voir le menu "Saisir absences" sur le tableau de bord du
|
|
||||||
semestre).
|
|
||||||
|
|
||||||
Le compte des absences peut ou non figurer sur les bulletins de notes, suivant
|
Le compte des absences peut ou non figurer sur les bulletins de notes, suivant les réglages choisis (voir le menu "Préférences du semestre").
|
||||||
les réglages choisis (voir le menu "Préférences du semestre").
|
|
||||||
|
|
||||||
## Notification par mail des absences
|
|
||||||
|
### Notification par mail des absences
|
||||||
|
|
||||||
ScoDoc peut prévenir par email lorsqu'un étudiant a "trop d'absences".
|
ScoDoc peut prévenir par email lorsqu'un étudiant a "trop d'absences".
|
||||||
Peuvent être prévenus:
|
Peuvent être prévenus:
|
||||||
|
|
||||||
* le chef du département;
|
* le chef du département;
|
||||||
* le responsable du semestre concerné (direction des études en IUT);
|
* le responsable du semestre concerné (direction des études en IUT);
|
||||||
* une autre adresse indiquée dans les paramètres (cela peut être une liste de diffusion, par exemple);
|
* une autre adresse indiquée dans les paramètres (cela peut être une liste de diffusion, par exemple);
|
||||||
* le responsable du module concerné par une évaluation dans laquelle un étudiant est signalé absent (voir plus bas).
|
* le responsable du module concerné par une évaluation dans laquelle un étudiant est signalé absent (voir plus bas).
|
||||||
|
|
||||||
Pour éviter d'inonder les utilisateurs de messages, plusieurs paramètres sont réglables:
|
Pour éviter d'inonder les utilisateurs de messages, plusieurs paramètres sont réglables:
|
||||||
|
|
||||||
* notifier les absences au chef (oui/non);
|
* notifier les absences au chef (oui/non);
|
||||||
* notifier les absences au dir. des études (oui/non);
|
* notifier les absences au dir. des études (oui/non);
|
||||||
* notifier les absences aux resp. de modules (oui/non);
|
* notifier les absences aux resp. de modules (oui/non);
|
||||||
* notifier les absences aux étudiants (individuellement);
|
* notifier les absences aux étudiants (individuellement);
|
||||||
* autre adresse vers laquelle notifier;
|
* autre adresse vers laquelle notifier;
|
||||||
* fréquence maximale de notification N (un utilisateur ne recevra pas plus de 1
|
* fréquence maximale de notification N (un utilisateur ne recevra pas plus de 1 message tous les N jours, *par étudiant*);
|
||||||
message tous les N jours, *par étudiant*);
|
* seuil de première notification: nombre d'absences tolérées avant premier envoi de notification (comptées en demi-journées);
|
||||||
* seuil de première notification: nombre d'absences tolérées avant premier envoi
|
* seuil notifications suivantes: une notifications toutes les *N* absences, après le premier seuil;
|
||||||
de notification (comptées en demi-journées);
|
* message notification e-mail (template modifiable).
|
||||||
* seuil notifications suivantes: une notifications toutes les *N* absences,
|
|
||||||
après le premier seuil;
|
|
||||||
* message notification e-mail (template modifiable).
|
|
||||||
|
|
||||||
Ces paramètres peuvent être spécifiés globalement ou par semestre (comme pour la
|
Ces paramètres peuvent être spécifiés globalement ou par semestre (comme pour la plupart des paramètres ScoDoc, voir [PreferencesScoDoc](PreferencesScoDoc.md)).
|
||||||
plupart des paramètres ScoDoc, voir [PreferencesScoDoc](PreferencesScoDoc.md)).
|
|
||||||
|
|
||||||
|
*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 plus courte; il appartient à l'enseignant de vérifier si l'étudiant était réellement absent lors de son évaluation (ou si la justification d'absence produite couvre bien sa plage horaire). Notons que ScoDoc se fonde sur la date de l'évaluation déclarée, pas sur l'emploi du temps (qui n'est pas géré par ScoDoc).
|
||||||
|
|
||||||
*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
|
|
||||||
plus courte; il appartient à l'enseignant de vérifier si l'étudiant était
|
|
||||||
réellement absent lors de son évaluation (ou si la justification d'absence
|
|
||||||
produite couvre bien sa plage horaire). Notons que ScoDoc se fonde sur la date
|
|
||||||
de l'évaluation déclarée, pas sur l'emploi du temps (qui n'est pas géré par
|
|
||||||
ScoDoc).
|
|
||||||
|
|
||||||
### Billets d'absences
|
### Billets d'absences
|
||||||
|
Les "billets d'absences" sont issus d'une demande du département Informatique de l'IUT de Villetaneuse en 2009, et sont implémentés à titre expérimental.
|
||||||
Les "billets d'absences" sont issus d'une demande du département Informatique de
|
|
||||||
l'IUT de Villetaneuse en 2009, et sont implémentés à titre expérimental.
|
|
||||||
|
|
||||||
Le scénario d'utilisation est le suivant :
|
Le scénario d'utilisation est le suivant :
|
||||||
|
|
||||||
* l'étudiant absent remplit un formulaire web (sur le portail étudiant, donc
|
* l'étudiant absent remplit un formulaire web (sur le portail étudiant, donc hors ScoDoc) indiquant les dates (début et fin) de son absence et sa raison;
|
||||||
hors ScoDoc) indiquant les dates (début et fin) de son absence et sa raison;
|
* ce billet rempli est alors envoyé à ScoDoc et doté d'un numéro unique ;
|
||||||
* ce billet rempli est alors envoyé à ScoDoc et doté d'un numéro unique;
|
* il l'imprime et va au secrétariat porter cette impression du formulaire (faisant apparaitre le numéro) et le justificatif correspondant;
|
||||||
* il l'imprime et va au secrétariat porter cette impression du formulaire
|
* le secrétariat, quand il en a le temps, rentre le numéro de la fiche d'absence et a juste une case à cocher : justifié/non justifié.
|
||||||
(faisant apparaitre le numéro) et le justificatif correspondant;
|
|
||||||
* le secrétariat, quand il en a le temps, rentre le numéro de la fiche d'absence
|
|
||||||
et a juste une case à cocher : justifié/non justifié.
|
|
||||||
|
|
||||||
Voir détails techniques sur [ServicesXml](ServicesXml.md).
|
Voir détails techniques sur [ServicesXml](ServicesXml.md).
|
||||||
|
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
Images (logos ou autre) à afficher sur des documents PDF générés par ScoDoc:
|
Images (logos ou autre) à afficher sur des documents PDF générés par ScoDoc:
|
||||||
|
|
||||||
* Sur les PV, `logo_header.jpg` est affiché en haut, et `logo_header.jpg` en bas de la page.
|
* Sur les PV, `logo_header.jpg` est affiché en haut, et `logo_header.jpg` en bas de la page.
|
||||||
* Sur les bulletins de notes, c'est configurable (et on peut utiliser d'autres
|
* Sur les bulletins de notes, c'est configurable (et on peut utiliser d'autres
|
||||||
logos), voir [ParametrageBulletins](ParametrageBulletins.md)
|
logos), voir [ParametrageBulletins](ParametrageBulletins.md)
|
||||||
* Fonds de page: charger une image nommée `pvjury_background` pour les PV de
|
* Fonds de page: charger une image nommée `pvjury_background` pour les PV de
|
||||||
jury (en format paysage) ou `letter_background`pour les bulletins et lettres
|
jury (en format paysage) ou `letter_background`pour les bulletins et lettres
|
||||||
de jury (en format portrait). Voir [paramétrage des PV](ParametragePV.md).
|
de jury (en format portrait). Voir [paramétrage des PV](ParametragePV.md).
|
||||||
|
|
||||||
@ -25,15 +25,13 @@ réalisées par le menu de configuration des logos.
|
|||||||
|
|
||||||
### Fichiers et répertoires associés aux logos
|
### Fichiers et répertoires associés aux logos
|
||||||
|
|
||||||
Les images (logos et fonds de document) sont enregistrées dans le répertoire
|
Les images (logos et fonds de document) sont enregistrées dans le répertoire `/opt/scodoc-data/config/logos` et ses sous-répertoires.
|
||||||
`/opt/scodoc-data/config/logos` et ses sous-répertoires.
|
|
||||||
|
|
||||||
Les images ajoutées par les utilisateurs ont toutes un nom de la forme
|
Les images ajoutées par les utilisateurs ont toutes un nom de la forme `logo_<nom>.png` ou `logo_<nom>.jpg`
|
||||||
`logo_<nom>.png` ou `logo_<nom>.jpg` (`<nom>` représente le nom d'usage du logo:
|
(`<nom>` représente le nom d'usage du logo : *header*, *footer*, signature, ... au choix de l'utilisateur)
|
||||||
*header*, *footer*, signature, ... au choix de l'utilisateur) Les
|
Les sous-répertoires ont des noms de la forme `logos_<dept>` où `<dept>` est
|
||||||
sous-répertoires ont des noms de la forme `logos_<dept>` où `<dept>` est
|
l'identifiant numérique du département
|
||||||
l'identifiant numérique du département (la commande `flask list-depts` donne la
|
(la commande `flask list-depts` donne la correspondance cf. [Administration en ligne de commande](GuideConfig.md)).
|
||||||
correspondance cf. [Administration en ligne de commande](GuideConfig.md)).
|
|
||||||
|
|
||||||
Les **fonds de page** se distinguent uniquement des logos par leur nom (`<ext>` peut être soit `jpg`ou `png`) :
|
Les **fonds de page** se distinguent uniquement des logos par leur nom (`<ext>` peut être soit `jpg`ou `png`) :
|
||||||
|
|
||||||
@ -53,8 +51,3 @@ exceptionnellement prise en compte. Bien évidemment, si un fichier scodoc9 (don
|
|||||||
avec le préfixe `logo_`) est présent, il est prioritaire sur le fond de page
|
avec le préfixe `logo_`) est présent, il est prioritaire sur le fond de page
|
||||||
"historique".
|
"historique".
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,41 +1,30 @@
|
|||||||
# Gestion des photos des étudiants
|
|
||||||
|
|
||||||
Une photo de chaque étudiant peut être stockée par ScoDoc.
|
## Gestion des photos des étudiants
|
||||||
|
Une photo de chaque étudiant peut être stockée par ScoDoc. On peut aussi utiliser des photos externes (portail).
|
||||||
|
|
||||||
## Associer une photo à l'étudiant
|
|
||||||
|
|
||||||
### Individuellement
|
### Associer une photo à l'étudiant
|
||||||
|
#### Individuellement
|
||||||
|
Passer par la fiche individuelle de l'étudiant: menu "*Etudiant / Changer la photo*" et télécharger un fichier image (jpeg, gif, png...).
|
||||||
|
|
||||||
Passer par la fiche individuelle de l'étudiant: menu "*Etudiant / Changer la
|
ScoDoc réduit automatiquement la taille de la photo (actuellement pour obtenir une taille verticale de 90 pixels).
|
||||||
photo*" et télécharger un fichier image (jpeg, gif, png...).
|
|
||||||
|
|
||||||
ScoDoc réduit automatiquement la taille de la photo (actuellement pour obtenir
|
|
||||||
une taille verticale de 90 pixels).
|
|
||||||
|
|
||||||
### Import de plusieurs photos
|
#### Import de plusieurs photos
|
||||||
|
Si vous n'avez pas la possibilité d'interfacer ScoDoc à un service fournissant les photos (via le service de la Scolarité de votre Université, par exemple), vous pouvez importer les photos via un fichier Zip et un fichier Excel permettant d'associer à chaque étudiant le bon fichier image.
|
||||||
|
|
||||||
Si vous n'avez pas la possibilité d'interfacer ScoDoc à un service fournissant
|
|
||||||
les photos (via le service de la Scolarité de votre Université, par exemple),
|
|
||||||
vous pouvez importer les photos via un fichier Zip et un fichier Excel
|
|
||||||
permettant d'associer à chaque étudiant le bon fichier image.
|
|
||||||
|
|
||||||
Le menu "Photo" de la page "Trombinoscope" offre pour cela une fonction "Charger
|
Le menu "Photo" de la page "Trombinoscope" offre pour cela une fonction "Charger des photos...": suivre les indications données sur la page.
|
||||||
des photos...": suivre les indications données sur la page.
|
|
||||||
|
|
||||||
### Afficher un trombinoscope
|
### Afficher un trombinoscope
|
||||||
|
|
||||||
Suivre le lien "*Photos*" du groupe qui vous intéresse.
|
Suivre le lien "*Photos*" du groupe qui vous intéresse.
|
||||||
|
|
||||||
Le menu en haut à droite de la page permet d'obtenir une version PDF du
|
Le menu en haut à droite de la page permet d'obtenir une version PDF du trombinoscope (pour impression ou distribution) et une archive zip avec tous les fichiers images.
|
||||||
trombinoscope (pour impression ou distribution) et une archive zip avec tous les
|
|
||||||
fichiers images.
|
La fonction "*Copier les photos du portail*" permet de copier dans ScoDoc les photos externes publiées sur le portail.
|
||||||
|
|
||||||
La fonction "*Copier les photos du portail*" permet de copier dans ScoDoc les
|
|
||||||
photos externes publiées sur le portail.
|
|
||||||
|
|
||||||
### Photos externes
|
### Photos externes
|
||||||
|
Lorsque ScoDoc ne possède pas de copie de la photo d'un étudiant et qu'il est configuré avec un portail, il place dans les pages un lien vers ```portal_url + '/getPhoto.php?nip=CODE_NIP```. Voir [InterrogationPortail](InterrogationPortail.md).
|
||||||
|
|
||||||
Lorsque ScoDoc ne possède pas de copie de la photo d'un étudiant et qu'il est
|
|
||||||
configuré avec un portail, il peut places dans les pages un lien vers
|
|
||||||
```portal_url + '/getPhoto.php?nip=CODE_NIP```. Voir
|
|
||||||
[InterrogationPortail](InterrogationPortail.md).
|
|
||||||
|
@ -1,67 +1,65 @@
|
|||||||
|
|
||||||
# Guide ScoDoc pour le ou la responsable de formation
|
# Guide ScoDoc pour le ou la responsable de formation
|
||||||
|
|
||||||
Cette partie s'adresse plutôt aux responsables de formation (cheffes ou chefs de
|
Cette partie s'adresse plutôt aux responsables de formation (cheffes ou chefs de
|
||||||
département IUT, responsable de filières, ...). Nous allons apprendre à:
|
département IUT, responsable de filières, ...). Nous allons apprendre à:
|
||||||
|
|
||||||
* définir une formation (saisie du programme pédagogique définissant les modules)
|
* définir une formation (saisie du programme pédagogique définissant les modules)
|
||||||
|
|
||||||
* mettre en place un semestre (ou session) de formation
|
* mettre en place un semestre (ou session) de formation
|
||||||
|
|
||||||
|
* inscrire des étudiants à un semestre de formation
|
||||||
|
|
||||||
* inscrire des étudiants à un semestre de formation
|
|
||||||
|
|
||||||
## Définir un programme pédagogique
|
## Définir un programme pédagogique
|
||||||
|
Le programme pédagogique d'une formation défini les unités d'enseignement; il est destiné à être utilisé par plusieurs sessions de formation (semestres). On doit apporter un soin particulier à la définition du programme, et éviter de le modifier une fois que des semestres sont créés (il est toutefois possible d'en créer de nouvelles *versions* pour permettre des modifications ultérieures sans affecter les semestres achevés: voir [VersionProgrammes](VersionProgrammes.md)).
|
||||||
|
|
||||||
|
On définira en général dans le programme l'ensemble des enseignements d'un diplôme (les 4 semestres d'un DUT par exemple). C'est dans une phase ultérieure que l'on mettra en place les différents semestres.
|
||||||
|
|
||||||
|
Les programmes pédagogiques ScoDoc sont structurés en Unités d'Enseignements (UE), Matières et Modules.
|
||||||
|
Un module appartient forcément à une matière, qui appartient elle même à une UE. Les modules représentent les cours ("mathématique", "anglais", ...) et sont associées à un volume horaire (cours/TD/TP) et à un coefficient: chaque module produit une note moyenne (en général obtenue à travers plusieurs *évaluations* ou contrôles). La note moyenne d'une UE est obtenue en calculant une moyenne pondérée par les coefficients des notes moyennes de modules.
|
||||||
|
|
||||||
|
Les matières n'ont pas d'autre utilité que d'aider à structurer le programme. Par exemple, on pourrait définir dans un programme une matière "Sciences" réunissant les modules de "mathématiques" et de "physique". Les matières n'ont pas de coefficient. Si l'on ne souhaite pas utiliser de matière, il suffit d'en créer une pour chaque module avec le même nom, ou au contraire (plus simplement) de créer une matière par UE et d'y placer tous les modules.
|
||||||
|
|
||||||
|
Les UE jouent un rôle particulier dans l'évaluation. En effet, selon les règles du LMD, les UE sont *capitalisables* (voir [CapitalisationUE](CapitalisationUE.md)). De plus, l'obtention de droit des semestres d'un DUT est soumise à une moyenne supérieure à 8/20 dans chacune des UE.
|
||||||
|
|
||||||
|
Notons qu'une UE ne possède pas de coefficient. Le coefficient d'une UE n'est autre que la somme des coefficient des modules qui composent cette UE. Par conséquent, le coefficient d'UE est potentiellement variable d'un étudiant à l'autre, si les étudiants ne sont pas inscrits aux mêmes modules (options ou parcours).
|
||||||
|
|
||||||
|
Vous trouverez plus d'informations sur la définition des programmes sur la page [VersionProgrammes](VersionProgrammes.md).
|
||||||
|
|
||||||
Voir [Programmes pédagogiques et versions](Formations.md).
|
|
||||||
|
|
||||||
## Créer un semestre de formation
|
## Créer un semestre de formation
|
||||||
|
Pour créer un semestre de formation, on va partir d'un programme pédagogique donné et y choisir un (sous)ensemble de modules. Le semestre sera associé à une date de début, une date de fin, et un responsable (*directeur des études* dans le langage IUT).
|
||||||
|
|
||||||
|
* Options de paramétrage d'un semestre: [ParametrageSemestre](ParametrageSemestre.md)
|
||||||
|
|
||||||
Pour créer un semestre de formation, on va partir d'un programme pédagogique
|
|
||||||
donné et y choisir un (sous)ensemble de modules. Le semestre sera associé à une
|
|
||||||
date de début, une date de fin, et un responsable (*directeur des études* dans
|
|
||||||
le langage IUT).
|
|
||||||
|
|
||||||
* Options de paramétrage d'un semestre: [Paramétrage Semestre](ParametrageSemestre.md)
|
|
||||||
|
|
||||||
## Inscrire des étudiants
|
## Inscrire des étudiants
|
||||||
|
* [ Importer des listes d'étudiants](ImportationEtuds.md) (en début d'année ou de semestre)
|
||||||
|
|
||||||
* [Importer des listes d'étudiants](ImportationEtuds.md) (en début d'année ou de semestre)
|
* [ Synchroniser avec une étape Apogée](SynchroApogee.md)
|
||||||
|
|
||||||
* [Synchroniser avec une étape Apogée](SynchroApogee.md)
|
* [ Vérifier les codes NIP](VerifCodeNIP.md)
|
||||||
|
|
||||||
* [Vérifier les codes NIP](VerifCodeNIP.md)
|
* [ Associer des photos aux étudiants](GestionPhotos.md)
|
||||||
|
|
||||||
* [Associer des photos aux étudiants](GestionPhotos.md)
|
* [ Données sur scolarité antérieure et admission](DonneesAdmissions.md)
|
||||||
|
|
||||||
* [Données sur scolarité antérieure et admission](DonneesAdmissions.md)
|
|
||||||
|
|
||||||
## Jurys
|
|
||||||
|
|
||||||
* [Saisie des décisions](SaisieDecisionsJury.md)
|
|
||||||
* [Gestion des commissions et jurys, édition des PV](GestionJury.md)
|
|
||||||
|
|
||||||
## Suivi de la Scolarité
|
## Suivi de la Scolarité
|
||||||
|
* [ Récapitulatif des opérations en fin de semestre et début du suivant](TransitionSemestre.md)
|
||||||
|
|
||||||
* [Récapitulatif des opérations en fin de semestre et début du suivant](TransitionSemestre.md)
|
* [ Note sur la capitalisation des UE](CapitalisationUE.md)
|
||||||
|
|
||||||
* [Note sur la capitalisation des UE](CapitalisationUE.md)
|
* [ Note sur la compensation des semestres](CompensationSemestre.md) (DUT)
|
||||||
|
|
||||||
* [Note sur la compensation des semestres](CompensationSemestre.md) (DUT)
|
|
||||||
|
|
||||||
## Échanges de programmes pédagogiques entre établissements
|
## Echanges de programmes pédagogiques entre établissements
|
||||||
|
ScoDoc permet d'exporter et d'importer des programmes pédagogiques: voir des fichiers sur la page [ExemplesProgrammesPedagogiques](ExemplesProgrammesPedagogiques.md)
|
||||||
|
|
||||||
ScoDoc permet d'exporter et d'importer des programmes pédagogiques: voir des
|
<br>
|
||||||
fichiers sur la page
|
|
||||||
[Exemples Programmes Pédagogiques](ExemplesProgrammesPedagogiques.md)
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
---
|
||||||
|
- [Retour au guide utilisateur](GuideUtilisateur.md)
|
||||||
- [Programmes de formation](Formations.md)
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- [Modélisation BUT: exemple complet](BUTExempleInfo.md)
|
|
||||||
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
|
|
||||||
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
|
|
||||||
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
|
|
||||||
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
|
|
||||||
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -6,37 +6,36 @@ Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de mac
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
* Installation de ScoDoc: [GuideInstallDebian11](GuideInstallDebian11.md)
|
* Installation de ScoDoc: [GuideInstallDebian11](GuideInstallDebian11.md)
|
||||||
|
|
||||||
|
* Migration d'un serveur ScoDoc 7 vers la nouvelle version Scodoc 9: [MigrationScoDoc7a9](MigrationScoDoc7a9.md)
|
||||||
|
|
||||||
* Migration d'un serveur ScoDoc 7 vers la nouvelle version Scodoc 9: [MigrationScoDoc7a9](MigrationScoDoc7a9.md)
|
|
||||||
|
|
||||||
## Mises à jour et sauvegardes
|
## Mises à jour et sauvegardes
|
||||||
|
|
||||||
* [Mettre à jour du logiciel (nouvelles versions)](MisesAJour.md)
|
* [Mettre à jour du logiciel (nouvelles versions)](MisesAJour.md)
|
||||||
* [Mise en place de sauvegardes des bases de données](SauvegardesBases.md)
|
* [Mise en place de sauvegardes des bases de données](SauvegardesBases.md)
|
||||||
|
|
||||||
|
|
||||||
## Configuration et préférences
|
## Configuration et préférences
|
||||||
|
|
||||||
* [Gestion des comptes utilisateurs](AdminUsers.md)
|
* [Administration en ligne de commande](GuideConfig.md)
|
||||||
* [Administration en ligne de commande](GuideConfig.md)
|
* [ConfigPermissions](ConfigPermissions.md) : description des permissions et rôles utilisés par le système.
|
||||||
* [ConfigPermissions](ConfigPermissions.md) : description des permissions et rôles utilisés par le système.
|
* [Paramétrage](PreferencesScoDoc.md): réglage des préférences
|
||||||
* [Paramétrage](PreferencesScoDoc.md): réglage des préférences
|
|
||||||
|
|
||||||
## Autres problèmes
|
## Autres problèmes
|
||||||
|
|
||||||
* [Problèmes configuration des envois mail](ProblemesMail.md)
|
* [Problèmes configuration des envois mail](ProblemesMail.md)
|
||||||
* [Gestion des logos et fonds de documents](GestionLogos.md)
|
* [Gestion des logos et fonds de documents](GestionLogos.md)
|
||||||
* [ProblemesEtBugs](ProblemesEtBugs.md) en cas d'ennuis.
|
* [ProblemesEtBugs](ProblemesEtBugs.md) en cas d'ennuis.
|
||||||
|
|
||||||
## Utilisation avancée
|
## Utilisation avancée
|
||||||
|
|
||||||
* [Interfaçage avec Apogée](ScoDocApogee.md)
|
* [Interfaçage avec Apogée](ScoDocApogee.md)
|
||||||
* [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
|
* [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications
|
||||||
* [InterrogationPortail](InterrogationPortail.md) : liaison avec portail
|
* [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
|
||||||
|
|
||||||
|
Voir aussi le [guide pour les développeurs](GuideDeveloppeurs.md) et la [FAQ](FAQ.md).
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide pour les développeurs](GuideDeveloppeurs.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
# Prise en main et paramétrage de ScoDoc 9
|
|
||||||
|
## Prise en main et paramétrage de ScoDoc 9
|
||||||
|
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Cette
|
||||||
|
page concerne la version ScoDoc 9, distribuée à partir de septembre 2021.
|
||||||
|
|
||||||
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans
|
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans
|
||||||
[GuideInstallDebian11](GuideInstallDebian11.md).
|
[GuideInstallDebian11](GuideInstallDebian11.md).
|
||||||
|
|
||||||
|
|
||||||
## Administration en ligne de commande
|
## Administration en ligne de commande
|
||||||
|
|
||||||
Les opérations d'administration se résument à la création de départements, et la
|
Les opérations d'administration se résument à la création de départements, et l'installation
|
||||||
création d'utilisateurs "super admin", c'est à dire admin pour tous les
|
des logos, et la 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,
|
départements. Le reste des paramétrages (création de comptes, de formations, import
|
||||||
import d'étudiants, etc) se fait à partir du logiciel (web).
|
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`).
|
ssh), en tant qu'utilisateur `scodoc` (*et non* `root`).
|
||||||
@ -22,9 +27,9 @@ Se connecter et initialiser la session ainsi:
|
|||||||
cd /opt/scodoc
|
cd /opt/scodoc
|
||||||
source venv/bin/activate
|
source venv/bin/activate
|
||||||
|
|
||||||
Après quoi, vous pouvez utiliser les commandes décrites ci-dessous. *Attention:
|
Après quoi, vous pouvez utiliser les commandes décrites ci-dessous.
|
||||||
le lancement de chaque commande peut être assez long (quelques secondes) car
|
*Attention: le lancement de chaque commande est assez long (quelques secondes)
|
||||||
toute l'application scodoc est initialisée à chaque fois.*
|
car toute l'application scodoc est initialisée à chaque fois.*
|
||||||
|
|
||||||
### Création d'un département
|
### Création d'un département
|
||||||
|
|
||||||
@ -36,14 +41,11 @@ apparait immédiatement sur la page d'accueil.
|
|||||||
### Suppression d'un département
|
### Suppression d'un département
|
||||||
|
|
||||||
Opération très rarement nécessaire, proposée pour corriger une erreur
|
Opération très rarement nécessaire, proposée pour corriger une erreur
|
||||||
immédiatement après la création, et pour les tests.
|
immédiatement après la création.
|
||||||
|
|
||||||
flask delete-dept [-f] [--yes] DEPT
|
flask delete-dept DEPT
|
||||||
-f, --force: ignore département non existant
|
|
||||||
--yes : ne demande pas confirmation
|
|
||||||
|
|
||||||
### Création d'un utilisateur
|
### Création d'un utilisateur
|
||||||
|
|
||||||
Cette opération s'effectue en général depuis le logiciel, via un formulaire
|
Cette opération s'effectue en général depuis le logiciel, via un formulaire
|
||||||
ou un import Excel. Pour créer un utilisateur depuis le terminal, lancer:
|
ou un import Excel. Pour créer un utilisateur depuis le terminal, lancer:
|
||||||
|
|
||||||
@ -62,7 +64,6 @@ Il s'agit d'un utilisateur ayant tous les droits, comme s'il était
|
|||||||
où `admin2` est ici le pseudo du nouvel admin.
|
où `admin2` est ici le pseudo du nouvel admin.
|
||||||
|
|
||||||
### Changement du mot de passe d'un utilisateur
|
### Changement du mot de passe d'un utilisateur
|
||||||
|
|
||||||
Cette opération peut s'effectuer via la page de gestion web des
|
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:
|
console:
|
||||||
@ -110,7 +111,6 @@ départements (utile pour certains compte administrateurs ou utilisés en lectur
|
|||||||
par des clients de l'API).
|
par des clients de l'API).
|
||||||
|
|
||||||
### Migration des données de ScoDoc 7
|
### Migration des données de ScoDoc 7
|
||||||
|
|
||||||
Les données dans ScoDoc 9 ayant un format et une organisation très différents
|
Les données dans ScoDoc 9 ayant un format et une organisation très différents
|
||||||
de ScoDoc 7, une étape de conversion (migration) est nécessaire. Elle est automatique
|
de ScoDoc 7, une étape de conversion (migration) est nécessaire. Elle est automatique
|
||||||
mais prend du temps.
|
mais prend du temps.
|
||||||
@ -128,7 +128,6 @@ départements.
|
|||||||
flask import-scodoc7-users
|
flask import-scodoc7-users
|
||||||
|
|
||||||
#### Départements
|
#### Départements
|
||||||
|
|
||||||
Pour migrer un seul département:
|
Pour migrer un seul département:
|
||||||
|
|
||||||
flask import-scodoc7-dept DEPT DBNAME
|
flask import-scodoc7-dept DEPT DBNAME
|
||||||
@ -138,9 +137,6 @@ Exemple:
|
|||||||
flask import-scodoc7-dept InfoComm DBINFOCOMM
|
flask import-scodoc7-dept InfoComm DBINFOCOMM
|
||||||
|
|
||||||
### Liste des commandes Flask/ScoDoc
|
### Liste des commandes Flask/ScoDoc
|
||||||
|
|
||||||
Dans l'encart ci-dessous, `app` désigne `flask`, comme dans les exemple donnés plus haut.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
Usage: app [OPTIONS] COMMAND [ARGS]...
|
Usage: app [OPTIONS] COMMAND [ARGS]...
|
||||||
|
|
||||||
@ -163,7 +159,7 @@ Commands:
|
|||||||
migrate-scodoc7-dept-archives Post-migration: renomme les archives en...
|
migrate-scodoc7-dept-archives Post-migration: renomme les archives en...
|
||||||
migrate-scodoc7-dept-logos Post-migration: renomme les logos en...
|
migrate-scodoc7-dept-logos Post-migration: renomme les logos en...
|
||||||
photos-import-files
|
photos-import-files
|
||||||
profile Start the application under the profiler...
|
profile Start the application under the code...
|
||||||
sco-db-init Initialize the database.
|
sco-db-init Initialize the database.
|
||||||
scodoc-database print the database connexion string
|
scodoc-database print the database connexion string
|
||||||
user-create Create a new user
|
user-create Create a new user
|
||||||
@ -332,32 +328,33 @@ Options:
|
|||||||
|
|
||||||
*Note: après migration, vos logos de ScoDoc 7 sont installés dans ScoDoc 9*.
|
*Note: après migration, vos logos de ScoDoc 7 sont installés dans ScoDoc 9*.
|
||||||
|
|
||||||
Les documents PDF (PV de jurys...) incluent les logos de l'établissement. Par
|
Les documents PDF (PV de jurys...) incluent les logos de l'établissement.
|
||||||
défaut, ceux de l'IUT de Villetaneuse et de l'Université Paris 13 sont
|
Par défaut, ceux de l'IUT de Villetaneuse et de l'Université Paris 13 sont
|
||||||
distribués. Pour les changer, passer par la page d'administration (lien
|
distribués. [Pour les changer, voir la FAQ](/FAQ/#comment-changer-les-logos-sur-les-documents-pdf-pv)
|
||||||
**Configuration** sur la page d'accueil, en tant que super-admin),
|
|
||||||
[voir la FAQ](/FAQ/#comment-changer-les-logos-sur-les-documents-pdf-pv).
|
Si vous êtes administrateur système, vous pouvez aussi placer vos images (fichiers JPEG ou PNG)
|
||||||
|
dans le répertoire
|
||||||
|
|
||||||
|
/opt/scodoc-data/config/logos
|
||||||
|
|
||||||
|
On peut fournir des images (logos, fond de pages) par département en créant des sous-répertoires
|
||||||
|
|
||||||
|
/opt/scodoc-data/config/logos/logo_<dept>/
|
||||||
|
|
||||||
|
Après quoi, redémarrez ScoDoc après avoir vidé les caches:
|
||||||
|
|
||||||
|
flask clear-cache
|
||||||
|
sudo systemctl restart scodoc9
|
||||||
|
|
||||||
|
|
||||||
## Utilisation via le Web
|
## Utilisation via le Web
|
||||||
|
|
||||||
* Connectez-vous au site: `https://votre.site.fr/`
|
* Connectez-vous au site: `https://votre.site.fr/`
|
||||||
|
|
||||||
Vous allez voir la page d'accueil de ScoDoc, vous permettant de choisir le
|
|
||||||
département où travailler.
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
|
||||||
alt="/!\" /> Surtout, évitez de travailler comme "admin" (super admin): prenez
|
|
||||||
le temps de créer un utilisateur "chef de département !" dans chaque
|
|
||||||
département, qui à son tour peut déléguer des droits.
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
Vous allez voir la page d'accueil de ScoDoc, vous permettant de choisir le département
|
||||||
|
où travailler.
|
||||||
|
|
||||||
- [Guide installation](GuideInstallDebian11.md)
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Surtout,
|
||||||
- [Gestion des utilisateurs](AdminUsers.md)
|
évitez de travailler comme "admin" (super admin): prenez le temps de créer un utilisateur
|
||||||
- [Rôles et permissions](ConfigPermissionsDept.md)
|
"chef de département !" dans chaque département, qui à son tour pour déléguer des droits.
|
||||||
- [Configuration des envois d'emails](ConfigEmail.md)
|
|
||||||
- [Configuration des logos et fonds de documents](GestionLogos.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,50 +1,38 @@
|
|||||||
# Documentation pour les développeurs ScoDoc
|
# Documentation pour les développeurs ScoDoc
|
||||||
|
|
||||||
|
|
||||||
Informations pour les développeurs souhaitant étendre ou modifier ScoDoc.
|
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).
|
|
||||||
|
|
||||||
## Informations générales
|
## Informations générales
|
||||||
|
|
||||||
Les échanges se font sur Discord, voir [contacts](Contact.md). Il y a un serveur
|
* S'abonner aux [listes de diffusion](ListesDeDiffusion.md). Il y a aussi
|
||||||
Discord ouvert sur invitation aux développeur actifs. Contacter Emmanuel Viennet
|
un serveur Discord ouvert sur invitation aux développeur actifs. Contacter Emmanuel.
|
||||||
(`@emm`).
|
* [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md)
|
||||||
|
* [Créer de nouveaux types de "parcours"](ApiCreationParcours.md)
|
||||||
|
* [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)
|
||||||
|
|
||||||
- [Développement ScoDoc: Introduction](DevInternals.md)
|
|
||||||
- [Utilisation de git](DevGit.md)
|
|
||||||
- [Définition des cursus](DevCursus.md)
|
|
||||||
- [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md)
|
|
||||||
- [Gestion des jurys BUT](DevJuryBUT.md)
|
|
||||||
- [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
|
|
||||||
- Notes diverses (caduques, pour mémoire)
|
|
||||||
- [Très anciennes discussions pour la future gestion des absences](IdeesGestionAbsences.md)
|
|
||||||
- [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md)
|
|
||||||
|
|
||||||
## Développer sur ScoDoc
|
## Développer sur ScoDoc
|
||||||
|
|
||||||
Quelques conseils, indications et mémos pour les développeurs sur ScoDoc version 9.
|
Quelques conseils, indications et mémos pour les développeurs sur ScoDoc version 9.
|
||||||
|
|
||||||
### Installation d'un serveur de développement
|
### Installation d'un serveur de développement
|
||||||
|
|
||||||
[Quelques conseils pour configurer votre serveur de développement](ConseilServeurDev.md)
|
[Quelques conseils pour configurer votre serveur de développement](ConseilServeurDev.md)
|
||||||
|
|
||||||
### Style et formatage du code
|
### Style et formatage du code
|
||||||
|
|
||||||
L'ancienneté de la base de code a rendu le style un peu incohérent, mais cela
|
L'ancienneté de la base de code a rendu le style un peu incohérent, mais cela
|
||||||
s'est nettement amélioré avec ScoDoc 9 (respect PEP 8).
|
s'est nettement amélioré avec ScoDoc 9 (respect PEP 8).
|
||||||
|
|
||||||
Le code DOIT être formaté avec [`black`](https://black.readthedocs.io/) avant
|
Le code DOIT être formatté avec [`black`](https://black.readthedocs.io/) avant
|
||||||
tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement).
|
tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement).
|
||||||
|
|
||||||
#### Documentation
|
#### Documentation
|
||||||
|
|
||||||
On pourra adopter le style "Google": <https://google.github.io/styleguide/pyguide.html#383-functions-and-methods>
|
On pourra adopter le style "Google": <https://google.github.io/styleguide/pyguide.html#383-functions-and-methods>
|
||||||
|
|
||||||
Exemple:
|
Exemple:
|
||||||
|
|
||||||
```py
|
|
||||||
"""Description résumée de la fonction
|
"""Description résumée de la fonction
|
||||||
|
|
||||||
blah blah sur la fonction
|
blah blah sur la fonction
|
||||||
@ -65,11 +53,323 @@ Exemple:
|
|||||||
b'Zim': ('Irk', 'Invader'),
|
b'Zim': ('Irk', 'Invader'),
|
||||||
b'Lrrr': ('Omicron Persei 8', 'Emperor')}
|
b'Lrrr': ('Omicron Persei 8', 'Emperor')}
|
||||||
"""
|
"""
|
||||||
```
|
|
||||||
|
|
||||||
### Git
|
### Git
|
||||||
|
|
||||||
Voir [la page sur git et ScoDoc](DevGit.md)
|
Le dépôt est <https://scodoc.org/git/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
|
||||||
|
(`api`, `dev92`, `entreprises`, ...) avant d'être intégrés après tests.
|
||||||
|
La branche `Scodoc7` était l'ancienne (jusqu'à septembre 2021) version de ScoDoc.
|
||||||
|
|
||||||
|
Ci-dessous quelques pense-bête qui peuvent servir.
|
||||||
|
#### Hot fixes (internes)
|
||||||
|
|
||||||
|
Pour les développeurs internes (écriture sur le dépôt master), un exemple
|
||||||
|
basique illustrant le cycle de développement:
|
||||||
|
|
||||||
|
# Créer une branche
|
||||||
|
# si besoin (travail en cours), utiliser git stash avant
|
||||||
|
git checkout master
|
||||||
|
git branch hotfix
|
||||||
|
git checkout hotfix
|
||||||
|
... dev, test ...
|
||||||
|
git add ...
|
||||||
|
git commit -m "fixed ..."
|
||||||
|
git checkout master
|
||||||
|
git merge hotfix
|
||||||
|
git branch -d hotfix
|
||||||
|
# publication
|
||||||
|
|
||||||
|
# éventuellement: git stash pop
|
||||||
|
|
||||||
|
Dans la plupart des cas, on travaillera sur son propre dépot (clone du dépt
|
||||||
|
origine), et on proposera une *pull request* (PR, *demande d'ajout* en français).
|
||||||
|
|
||||||
|
#### Mettre à jour votre branche
|
||||||
|
|
||||||
|
Quand vous travaillez dans votre branche `ma_branche`, pour lui appliquer les
|
||||||
|
mises à jour de `master` (remote), faire:
|
||||||
|
```bash
|
||||||
|
git pull origin master
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Commandes utiles, en vrac
|
||||||
|
|
||||||
|
* `git log -L:fonction_python:fichier.py`
|
||||||
|
* Commits locaux: `git log @{u}..`
|
||||||
|
|
||||||
|
#### Refactoring
|
||||||
|
|
||||||
|
Lint tous les fichiers modifiés:
|
||||||
|
```bash
|
||||||
|
git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E
|
||||||
|
```
|
||||||
|
Restore les modes au besoin (SAMBA les changent parfois):
|
||||||
|
```bash
|
||||||
|
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
|
||||||
|
```
|
||||||
|
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 \'
|
||||||
|
```
|
||||||
|
Prépare un sed pour renommer les variables non définies:
|
||||||
|
```bash
|
||||||
|
for f in *.py
|
||||||
|
do
|
||||||
|
pylint --disable=all -e E "$f" | grep undefined-variable | awk '{print "sed -i .bak s/"$4"/scu."$4"/ '$f'";}' | sort | uniq | tr -d \'
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
Note pour travailler sur VirtualBox:
|
||||||
|
|
||||||
|
addgroup scodoc vboxsf
|
||||||
|
|
||||||
|
### Préparation d'une PR (Pull Request)
|
||||||
|
|
||||||
|
#### Principes généraux
|
||||||
|
|
||||||
|
Les remarques de cette section visent à obtenir une relecture facile de votre
|
||||||
|
demande d'ajout (*pull request*, dite "PR"):
|
||||||
|
|
||||||
|
* Éviter les modifications de forme qui ne changent pas le sens du code. L'utilisation de
|
||||||
|
[`black`](https://black.readthedocs.io/) est obligatoire : elle permet de normaliser la présentation
|
||||||
|
du code. cela évite de générer des différences ne représentant que des
|
||||||
|
changements de mise en forme (indentation, passages à la ligne). Cela évite
|
||||||
|
aussi au développeur d'avoir à y réfléchir, autant de temps gagné !
|
||||||
|
|
||||||
|
* Avoir un nombre d'étapes de validation faible (idéalement un seul commit pour
|
||||||
|
les PR courantes - peu volumineuses).
|
||||||
|
|
||||||
|
* La PR doit toujours être énoncée par rapport au dernier commit de la branche
|
||||||
|
que vous visez (en général `master` du dépôt original).
|
||||||
|
|
||||||
|
#### Manipulations
|
||||||
|
|
||||||
|
Les manipulations sont décrites selon quatre phases du développement : l'installation,
|
||||||
|
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`).
|
||||||
|
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Par la suite vous aurez donc une référence vers votre dépôt personnel (`perso`)
|
||||||
|
et une référence vers le dépôt officiel (`officiel`). Si vous avez initialement
|
||||||
|
cloné l'un des deux dépôts, la référence vers le dépot d'origine existe et a pour nom
|
||||||
|
`origin`.
|
||||||
|
|
||||||
|
La commande vous exposant tous les dépôts connus est :
|
||||||
|
```bash
|
||||||
|
git remote -v
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Mise en place
|
||||||
|
|
||||||
|
L'objectif de ce paragraphe est de créer une branche locale basée sur le master
|
||||||
|
du dépôt officiel et bien sur de lui donner un nom.
|
||||||
|
|
||||||
|
pour cela (**attention cela va écraser les éventuels fichiers modifiés**. Si vous souhaitez conserver les
|
||||||
|
modifications en cours, encadrez les lignes suivantes par `git stash` (avant) et `git stash apply` (après) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git reset --hard officiel/master
|
||||||
|
git checkout -b ma_modif
|
||||||
|
```
|
||||||
|
À partir de là, vous pouvez modifier, tester, développer et commit votre travail.
|
||||||
|
|
||||||
|
#### Suivi
|
||||||
|
|
||||||
|
Si votre développement prend plusieurs jours, il est probable que la branche
|
||||||
|
principale évolue pendant ce temps.
|
||||||
|
|
||||||
|
Pour garder la cohérence, il est nécessaire de réintégrer en local les
|
||||||
|
modifications de la branche principale. Ceci peut se faire de deux façons.
|
||||||
|
|
||||||
|
- Une fusion (`merge`) applique toutes les modifications en un seul commit).
|
||||||
|
C'est la méthode couramment utilisée.
|
||||||
|
|
||||||
|
- Un `rebase` rejoue tous les commits de la nouvelle branche par dessus l'état
|
||||||
|
le plus à jour de la branche principale (il en résulte un historique plus
|
||||||
|
linéaire).
|
||||||
|
|
||||||
|
Les commandes git correspondantes :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git fetch officiel
|
||||||
|
git merge officiel/master
|
||||||
|
```
|
||||||
|
ou
|
||||||
|
```bash
|
||||||
|
git fetch officiel
|
||||||
|
git rebase officiel/merge
|
||||||
|
```
|
||||||
|
|
||||||
|
#### La livraison
|
||||||
|
|
||||||
|
Ça y est. Vous avez terminé le développement. IL n'y a plus qu'à demander
|
||||||
|
l'intégration. Ceci se fait en plusieurs étapes (vous êtes bien sûr toujours sur
|
||||||
|
la branche locale `ma_modif` et toutes vos modifications ont été commitées).
|
||||||
|
|
||||||
|
##### Étape 1 : faire l'inventaire des fichiers impliqués
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git fetch officiel/master
|
||||||
|
git diff --name-only officiel/master
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Étape 2 : passer black sur les fichiers modifiés
|
||||||
|
|
||||||
|
Cette étape est automatique avec les bons réglages sous VSCode (pas trouvé
|
||||||
|
l'équivalent sous *pyCharm*).
|
||||||
|
|
||||||
|
À défaut les lignes suivantes réalisent le même travail :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
for fn in $(git diff --name-only officiel/master)
|
||||||
|
do
|
||||||
|
python3 -m black $fn
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
Faire une première lecture rapide pour vérifier qu'il ne reste pas de fichiers
|
||||||
|
modifiés accidentellement.
|
||||||
|
|
||||||
|
Pour obtenir la modification sur un fichier spécifique (`app/fichier.py` par exemple)
|
||||||
|
```bash
|
||||||
|
git diff officiel/master app/fichier.py
|
||||||
|
```
|
||||||
|
|
||||||
|
Utilisateurs Windows : Vérifiez bien que les réglages de fin de ligne suivent
|
||||||
|
bien les règles Linux (pas de retour chariot (noté CR ou `\r`) en fin de ligne mais un seul caractère line feed
|
||||||
|
(noté LF ou `\n`).
|
||||||
|
Le cas échéant, réglez votre IDE pour cela.
|
||||||
|
|
||||||
|
À ce niveau là de la procèdure, vous n'avez plus dans votre branche locale que les différences strictement
|
||||||
|
nécessaires à votre correctif.
|
||||||
|
|
||||||
|
##### Étape 3 : résumez tous les commits depuis le point de divergence en un seul commit
|
||||||
|
|
||||||
|
Repérez le point de divergence de votre branche locale avec officiel/master
|
||||||
|
(normalement `git merge-base HEAD officiel/master`)
|
||||||
|
|
||||||
|
Demander un `rebase` interactif depuis ce point :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git rebase -i $(git merge-base HEAD officiel/master)
|
||||||
|
```
|
||||||
|
|
||||||
|
*Explications*:
|
||||||
|
_Le rebase interactif permet d'enregistrer un suite de manipulation de commit dans un seul fichier texte._
|
||||||
|
_Le fichier texte qui reprend tels quels tous les commits concernés (et donc qui ne fait rien)_
|
||||||
|
_est préparé par la commande `-i` de la commande_ `git rebase`
|
||||||
|
|
||||||
|
_Vous pouvez ensuite modifier ce fichier dans votre editeur favori (ou pas) (à régler par `git config`) pour décrire_
|
||||||
|
_votre intention (réordonner, changer le message, fusionner, ...) sur l'ensemble des commits_
|
||||||
|
|
||||||
|
_Quand votre édition est terminée, git reprend la main est exécute chacune de vos opérations. Il est possible_
|
||||||
|
_(bien que très rare) que des conflits apparaissent à ce moment-là. Les_
|
||||||
|
_commandes habituelles de correction accompagnées des commandes :_
|
||||||
|
```bash
|
||||||
|
git rebase --continue # pour poursuivre le processus
|
||||||
|
git rebase --abort # pour tout abandonner
|
||||||
|
```
|
||||||
|
_vous permettront de résoudre ces problèmes exceptionnels_.
|
||||||
|
|
||||||
|
Application:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git rebase -i $(git merge-base HEAD officiel/master)
|
||||||
|
```
|
||||||
|
Vous devez obtenir dans un éditeur de texte la liste des commits opéré depuis le
|
||||||
|
début du développement sous cette forme (c'est un exemple : le nombre de lignes
|
||||||
|
peut varier) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pick eb8cbec modif 1
|
||||||
|
pick 83eb79e modif 2
|
||||||
|
|
||||||
|
# Rebase 5ffd074..83eb79e onto 5ffd074 (2 commands)
|
||||||
|
#
|
||||||
|
# Commands:
|
||||||
|
# p, pick <commit> = use commit
|
||||||
|
# r, reword <commit> = use commit, but edit the commit message
|
||||||
|
# e, edit <commit> = use commit, but stop for amending
|
||||||
|
# s, squash <commit> = use commit, but meld into previous commit
|
||||||
|
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
|
||||||
|
# commit's log message, unless -C is used, in which case
|
||||||
|
# keep only this commit's message; -c is same as -C but
|
||||||
|
# opens the editor
|
||||||
|
# x, exec <command> = run command (the rest of the line) using shell
|
||||||
|
# b, break = stop here (continue rebase later with 'git rebase --continue')
|
||||||
|
# d, drop <commit> = remove commit
|
||||||
|
# l, label <label> = label current HEAD with a name
|
||||||
|
# t, reset <label> = reset HEAD to a label
|
||||||
|
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
|
||||||
|
# . create a merge commit using the original merge commit's
|
||||||
|
# . message (or the oneline, if no original merge commit was
|
||||||
|
# . specified); use -c <commit> to reword the commit message
|
||||||
|
#
|
||||||
|
# These lines can be re-ordered; they are executed from top to bottom.
|
||||||
|
#
|
||||||
|
# If you remove a line here THAT COMMIT WILL BE LOST.
|
||||||
|
#
|
||||||
|
# However, if you remove everything, the rebase will be aborted.
|
||||||
|
#
|
||||||
|
```
|
||||||
|
|
||||||
|
Vous pouvez réorganiser tous les commits (changer l'ordre, fusionner) en
|
||||||
|
changeant la commande pick au début de chaque ligne. L'idée ici est de fusionner
|
||||||
|
toutes les lignes avec la première en remplaçant le 'pick' à partir de la ligne
|
||||||
|
2 par `fixup`. Optionnellement, vous pouvez reformuler le message de commit
|
||||||
|
(commande `reword` sur la première ligne).
|
||||||
|
|
||||||
|
Vous construirez par exemple :
|
||||||
|
```bash
|
||||||
|
reword eb8cbec Correctif: Api - gestion des formation
|
||||||
|
fixup 83eb79e modif 2
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Quand vous sortez de l'éditeur, git effectue toutes les opérations demandées.
|
||||||
|
|
||||||
|
À ce niveau-là de la procédure :
|
||||||
|
|
||||||
|
* vous avez un seul commit pour l'ensemble du correctif proposé ;
|
||||||
|
|
||||||
|
* toutes les différences entre officiel/master et votre branche locale sont
|
||||||
|
signifiantes.
|
||||||
|
|
||||||
|
##### Étape 4 :
|
||||||
|
Vous pouvez maintenant pousser votre branche locale sur votre dépôt personnel
|
||||||
|
(vers une branche de même nom):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push --set-upstream perso ma_branche
|
||||||
|
```
|
||||||
|
|
||||||
|
Si vous avez déjà fait cette opération auparavant il est possible que le push
|
||||||
|
soit refusé (car le rebase a modifié des commits qui avaient déjà été poussés).
|
||||||
|
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/)
|
||||||
|
|
||||||
|
* Identifiez-vous
|
||||||
|
|
||||||
|
* Placez-vous sur la branche nouvellement créée
|
||||||
|
|
||||||
|
* À l'aide de l'interface du serveur, vous pouvez comparer l'état de votre
|
||||||
|
branche par rapport au master officiel, et si cela vous convient, il vous reste à formuler
|
||||||
|
une demande d'intégration (*pull request*). En remplissant les informations demandées.
|
||||||
|
|
||||||
## Tests et tests unitaires
|
## Tests et tests unitaires
|
||||||
|
|
||||||
@ -82,24 +382,23 @@ Redis, via `flask-caching`.
|
|||||||
|
|
||||||
Au besoin, mémo:
|
Au besoin, mémo:
|
||||||
|
|
||||||
- client ligne de commande: `https://redis.io/topics/rediscli`
|
- client ligne de commande: `https://redis.io/topics/rediscli`
|
||||||
|
|
||||||
- afficher les clés: `redis-cli KEYS '*'`
|
- afficher les clés: `redis-cli KEYS '*'`
|
||||||
|
|
||||||
- `redis-cli TTL key` affiche le TTL d'une clé, -1 si infini.
|
- `redis-cli TTL key` affiche le TTL d'un clé, -1 si infini.
|
||||||
|
|
||||||
- `redis-cli -r -1 -i 3 KEYS '*_NT_*'` surveille certaines clés (ici _NT_),
|
- `redis-cli -r -1 -i 3 KEYS '*_NT_*'` surveille certaines clés (ici _NT_),
|
||||||
affiche toutes les 3 secondes.
|
affiche toutes les 3 secondes.
|
||||||
|
|
||||||
- `flask clear-cache` efface le cache Redis.
|
- `flask clear-cache` efface le cache Redis.
|
||||||
|
|
||||||
## Re-création du virtualenv
|
## Re-création du virtualenv
|
||||||
|
|
||||||
ScoDoc est livré avec un "virtualenv", qui contient tous les modules python
|
ScoDoc est livré avec un "virtualenv", qui contient tous les modules python
|
||||||
nécessaires. Il se trouve sous `/opt/scodoc/venv`.
|
nécessaires. Il se trouve sous `/opt:scodoc/venv`.
|
||||||
Si vous souhaitez repartir de zéro, tester de nouvelles versions de certaines
|
Si vous souhaitez repartir de zéro, tester de nouvelles versions de certaines
|
||||||
bibliothèques, ou autres expériences de ce genre, vous pouvez le récréer ainsi:
|
bibliothèques, ou autres expériences de ce genre, vous pouvez le récréer ainsi:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# en tant qu'utilisateur scodoc
|
# en tant qu'utilisateur scodoc
|
||||||
cd /opt/scodoc
|
cd /opt/scodoc
|
||||||
@ -108,53 +407,32 @@ bibliothèques, ou autres expériences de ce genre, vous pouvez le récréer ain
|
|||||||
source venv/bin/activate
|
source venv/bin/activate
|
||||||
pip install wheel
|
pip install wheel
|
||||||
```
|
```
|
||||||
|
|
||||||
Puis soit vous installez les versions "officielles" (testées)
|
Puis soit vous installez les versions "officielles" (testées)
|
||||||
|
```
|
||||||
```bash
|
|
||||||
pip install -r requirements-3.9.txt
|
pip install -r requirements-3.9.txt
|
||||||
```
|
```
|
||||||
|
Soit vous prenez les version les plus à jour disponibles. Une façon rapide de
|
||||||
Soit vous prenez les versions les plus à jour disponibles. Une façon rapide de
|
|
||||||
faire ceci est:
|
faire ceci est:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cut -d= -f 1 requirements-3.11.txt | xargs pip install
|
cut -d= -f 1 requirements-3.9.txt | xargs pip install
|
||||||
```
|
```
|
||||||
|
|
||||||
à adapter selon vos objectifs.
|
à adapter selon vos objectifs.
|
||||||
|
|
||||||
Pour régénérer le fichier indiquant la liste des paquets:
|
Pour régénérer le fichier indiquant la liste des paquets:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip freeze > requirements-3.11.txt
|
pip freeze > requirements-3.9.txt
|
||||||
```
|
|
||||||
|
|
||||||
Enfin, pour mettre à jour les paquets pip, il faut dégeler les versions (unpin)
|
|
||||||
puis upgrader et re-générer le fichier, comme suit:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cp requirements-3.11.txt requirements.text
|
|
||||||
sed -i 's/[~=]=/>=/' requirements.txt
|
|
||||||
pip install -U -r requirements.txt
|
|
||||||
pip freeze > requirements-new.txt
|
|
||||||
# et si tout va bien
|
|
||||||
mv requirements-new.txt requirements-3.11.txt
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
|
Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
Sujets **prioritaires** en 2021:
|
||||||
|
|
||||||
* [voir les tickets](https://scodoc.org/git/viennet/ScoDoc/issues)
|
- Modernisation du code: Flask, Python 3: achevé août 2021.
|
||||||
|
|
||||||
|
- Prise en compte du Bachelor (BUT): SAÉ, suivi compétences, validations des
|
||||||
|
blocs, UE, semestres selon la cadrage et l'arrêté Licence Pro 2020.
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
- Redéfinition API et interface mobile simplifiée.
|
||||||
|
|
||||||
- [Conventions de codage](DevConventions.md)
|
Autres sujets:
|
||||||
- [API ScoDoc 9](ScoDoc9API.md)
|
- [voir les tickets](https://scodoc.org/git/viennet/ScoDoc/issues)
|
||||||
- [Guide installation](GuideInstallDebian11.md)
|
|
||||||
- [Gestion des utilisateurs](AdminUsers.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
# Installation de ScoDoc 9 sur Debian 11 (Bullseye)
|
# Installation de ScoDoc 9 sur Debian 11 (Bullseye)
|
||||||
|
|
||||||
Ce document décrit la procédure d'installation et de configuration de ScoDoc 9.
|
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
|
Cette procédure doit être effectué sur la machine serveur avec un accès
|
||||||
administrateur (root).
|
administrateur (root).
|
||||||
@ -11,79 +10,78 @@ donc installer et configurer ScoDoc avec des connaissances réduites sur le
|
|||||||
système Linux.
|
système Linux.
|
||||||
|
|
||||||
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
|
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
|
||||||
[Debian](http://www.debian.org) 11 (Bullseye, oldstable) s'exécutant sur une
|
[Debian](http://www.debian.org) 11 (Bullseye, stable) s'exécutant sur une
|
||||||
machine intel-like **64bits** (architecture **AMD64** sur Intel/AMD, ou
|
machine intel-like **64bits** (architecture **AMD64**). Debian s'installe
|
||||||
**aarch64** sur Apple ARM). Debian s'installe facilement en cinq minutes, sur
|
facilement en cinq minutes, sur une machine normale ou un serveur
|
||||||
une machine normale ou un serveur virtualisé. Il est **vivement déconseillé** de
|
virtualisé. Il est **vivement déconseillé** de tenter l'installation sur une
|
||||||
tenter l'installation sur une autre version.
|
autre version.
|
||||||
|
|
||||||
Si vous mettez à jour un serveur existant (ScoDoc 7 sur Debian 10), voir [la page
|
Si vous mettez à jour un serveur existant (ScoDoc 7 sur Debian 10), voir [la page
|
||||||
sur les migrations](https://scodoc.org/MigrationScoDoc7a9/#2-upgrade-debian).
|
sur les migrations](https://scodoc.org/MigrationScoDoc7a9/#2-upgrade-debian).
|
||||||
|
|
||||||
Merci de signaler tout problème [sur le Discord](https://discord.gg/ybw6ugtFsZ)
|
Merci de signaler tout problème (emmanuel.viennet@gmail.com
|
||||||
ou éventuellement la liste [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel).
|
ou [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel) ).
|
||||||
|
|
||||||
- Note: l'image du CD d'installation de Debian (amd64) peut se trouver ici:
|
|
||||||
|
- Note 1: l'image du CD d'installation de Debian (amd64) peut se trouver ici:
|
||||||
[https://www.debian.org/distrib/netinst](https://www.debian.org/distrib/netinst.md),
|
[https://www.debian.org/distrib/netinst](https://www.debian.org/distrib/netinst.md),
|
||||||
choisir la version "petits CD" pour **amd64**
|
choisir la version "petits CD" pour **amd64** (*Il est indispensable
|
||||||
(*Il est indispensable d'utiliser une version 64 bits !*)
|
d'utiliser une version 64 bits ! *)
|
||||||
|
|
||||||
🚸 **Important:**
|
- Note 2: une version Docker serait utile: avis aux volontaires.
|
||||||
|
|
||||||
|
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Important:
|
||||||
La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter
|
La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter
|
||||||
sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme
|
sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme
|
||||||
VirtualBox ou VMWare, ou UTM sur Mac). L'installation ci-dessous va en effet
|
VirtualBox ou VMWare). L'installation ci-dessous va en effet modifier de
|
||||||
modifier de nombreux paramètres de votre système Linux (serveur web, firewall,
|
nombreux paramètres de votre système Linux (serveur web, firewall, serveur SQL,
|
||||||
serveur SQL, messagerie, ...).
|
messagerie, ...).
|
||||||
|
|
||||||
|
|
||||||
## 1) Préalable: configurer un serveur linux
|
## 1) Préalable: configurer un serveur linux
|
||||||
|
|
||||||
Le serveur devrait être accessible depuis Internet.
|
Le serveur devrait être accessible depuis Internet.
|
||||||
|
|
||||||
### Configuration matérielle
|
### Configuration matérielle
|
||||||
|
|
||||||
- taille disque: prévoir au moins 20Go sur la partition où sera scodoc (en
|
- taille disque: prévoir au moins 20Go sur la partition où sera scodoc (en
|
||||||
général `/`).
|
général `/`).
|
||||||
|
|
||||||
- mémoire: prévoir au moins 8Go de RAM, et plutôt 12 ou 16.
|
- mémoire: prévoir au moins 8Go de RAM, et plutôt 12 ou 16.
|
||||||
|
|
||||||
### Informations sur les flux réseau
|
### Informations sur les flux réseau
|
||||||
|
|
||||||
Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.
|
Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.
|
||||||
|
|
||||||
- le trafic entrant est sur le port 443 (le trafic http/80 est redirigé
|
- le trafic entrant est sur le port 443 (le trafic http/80 est redirigé
|
||||||
vers le https).
|
vers le https).
|
||||||
|
|
||||||
- le serveur doit pouvoir envoyer du mail (serveur Postfix en local, à
|
- le serveur doit pouvoir envoyer du mail (serveur postfix en local, à
|
||||||
configurer pour utiliser un relais smtp ou envoyer directement, selon
|
configurer pour utiliser un relais smtp ou envoyer directement, selon
|
||||||
votre politique. Au besoin, pour le reconfigurer, lancer `dpkg-reconfigure postfix`);
|
votre politique. Au besoin, pour le reconfigurer, lancer `dpkg-reconfigure postfix`);
|
||||||
|
|
||||||
- Les serveurs de mise à jour de Debian doivent être accessibles (en http,
|
- Les serveurs de mise à jour de Debian doivent être accessibles (en http,
|
||||||
voir `/etc/apt/sources.list`);
|
voir `/etc/apt/sources.list`);
|
||||||
|
|
||||||
- Les serveurs `scodoc.org` et `scodoc.iutv.univ-paris13.fr` **doivent**
|
- Les serveurs `scodoc.org` et `scodoc.iutv.univ-paris13.fr` doivent
|
||||||
être accessibles (80 et 443).
|
être accessibles (80 et 443).
|
||||||
|
|
||||||
### Installation Linux Debian
|
### Installation Linux Debian
|
||||||
|
|
||||||
Nous recommandons d'effectuer une installation standard de Debian par le réseau (netinst),
|
Nous recommandons d'effectuer une installation standard de Debian par le réseau (netinst),
|
||||||
et d'utiliser l'installation en mode texte, très simple et rapide.
|
et d'utiliser l'install en mode texte, très simple et rapide.
|
||||||
Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout décocher
|
Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout décocher
|
||||||
sauf "Serveur SSH" et "Utilitaires standard du système". Le script d'installation de ScoDoc
|
sauf "Serveur SSH" et "Utilitaires standard du système". Le script d'installation de ScoDoc
|
||||||
se chargera ensuite d'installer tous les éléments nécessaires (serveur web, messagerie, etc.).
|
se chargera ensuite d'installer tous les éléments nécessaires (serveur web, messagerie, etc.).
|
||||||
|
|
||||||
🚸 *Veiller à sélectionner une locale `UTF-8` par défaut.*
|
*Veiller à sélectionner une locale `UTF-8` par défaut.*
|
||||||
|
|
||||||
![InstallDebian6-1.png](screens/InstallDebian6-1.png)
|
![InstallDebian6-1.png](screens/InstallDebian6-1.png)
|
||||||
|
|
||||||
### Points à vérifier avant d'installer ScoDoc
|
### Points à vérifier avant d'installer ScoDoc
|
||||||
|
|
||||||
Checklist minimale de votre système Linux Debian:
|
Checklist minimale de votre système Linux Debian:
|
||||||
|
|
||||||
1. Connexion à Internet: le réseau doit être accessible. En effet, le script d'installation va installer des paquetages du système Debian puis télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur Subversion).
|
1. Connexion à Internet: le réseau doit être accessible. En effet, le script d'installation va installer des paquetages du système Debian puis télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur Subversion).
|
||||||
1. Vérifiez la connectivité, par exemple:
|
1. Vérifiez la connectivité, par exemple:
|
||||||
|
```
|
||||||
```bash
|
|
||||||
ping www.univ-paris13.fr
|
ping www.univ-paris13.fr
|
||||||
(quitter avec ctrl-c)
|
(quitter avec ctrl-c)
|
||||||
cd /tmp
|
cd /tmp
|
||||||
@ -92,16 +90,15 @@ Checklist minimale de votre système Linux Debian:
|
|||||||
```
|
```
|
||||||
3. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le
|
3. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le
|
||||||
DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais
|
DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais
|
||||||
dans ce cas le nom de votre serveur sera son adresse IP (eg `192.168.0.10`) et
|
dans ce cas le nom de votre serveur sera son adresse IP (eg 192.168.0.10) et
|
||||||
il ne sera peut être pas accessible de l'extérieur.
|
il ne sera peut être pas accessible de l'extérieur.
|
||||||
4. Mail: vérifiez que le serveur peut envoyer des e-mail: `mail
|
4. Mail: vérifiez que le serveur peut envoyer des e-mail:
|
||||||
votre@adresse.fr`, puis entrer un message terminé par `ctrl-d`: si vous ne
|
`mail votre@adresse.fr`, puis entrer un message terminé par `ctrl-d`: si vous ne
|
||||||
recevez pas le message après quelques minutes, vérifiez votre configuration
|
recevez pas le message après quelques minutes, vérifiez votre configuration
|
||||||
(et le log `/var/log/mail.log`). Un serveur ScoDoc qui n'envoie pas de mail
|
(et le log `/var/log/mail.log`). Un serveur ScoDoc qui n'envoie pas de mail
|
||||||
ne peut pas vérifier ceux des utilisateurs, qui à leur tour ne pourront pas
|
ne peut pas vérifier ceux des utilisateurs, qui à leur tour ne pourront pas
|
||||||
changer leurs mots de passe (bien d'autres fonctions dépendent des mails).
|
changer leurs mots de passe (bien d'autres fonctions dépendent des mails).
|
||||||
Au besoin, revoir la configuration avec `dpkg-reconfigure postfix` (voir
|
Au besoin, revoir la configuration avec `dpkg-reconfigure postfix`.
|
||||||
aussi [envoi des courriers électroniques](ProblemesMail.md)).
|
|
||||||
|
|
||||||
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre
|
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`.
|
réseau (voire d'Internet): par exemple `ping serveur.exemple.fr`.
|
||||||
@ -109,43 +106,29 @@ Checklist minimale de votre système Linux Debian:
|
|||||||
reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (
|
reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (
|
||||||
`apt-get install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
|
`apt-get install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
|
||||||
1. Si vous avez installé à partir d'un support (DVD, clé USB...), pensez à le
|
1. Si vous avez installé à partir d'un support (DVD, clé USB...), pensez à le
|
||||||
retirer des sources Debian afin de ne pas bloquer les mises à jour (commenter
|
retirer des sources Debian afin de ne pas bloquer les mise à jour (commenter
|
||||||
la ligne `deb cdrom:` dans le fichier `/etc/apt/sources.list`)
|
la ligne `deb cdrom:` dans le fichier `/etc/apt/sources.list`)
|
||||||
1. Cette liste est incomplète... et n'oubliez pas: avant de passer en
|
1. Cette liste est incomplète... et n'oubliez pas: avant de passer en
|
||||||
production, mettez en place des sauvegardes sérieuses !
|
production, mettez en place des sauvegardes sérieuses !
|
||||||
|
|
||||||
#### Configuration si utilisation d'un proxy
|
#### Configuration si utilisation d'un proxy
|
||||||
|
|
||||||
Si votre accès à Internet passe par un proxy, l'indiquer au moment de
|
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
|
Ensuite, dans ScoDoc, indiquer votre proxy: pour cela, éditer le fichier
|
||||||
```/opt/scodoc/.env```
|
```/opt/scodoc/.env```
|
||||||
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
|
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
|
||||||
|
```
|
||||||
```bash
|
|
||||||
HTTP_PROXY=http://proxy.univ-xxx.fr:1234
|
HTTP_PROXY=http://proxy.univ-xxx.fr:1234
|
||||||
HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
|
HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
|
||||||
```
|
```
|
||||||
|
Vérifiez aussi que ces variables sont bien définies dans `/etc/environment`
|
||||||
|
(si l'installeur Linux Debian ne les a pas déjà indiquées là, les ajouter ou créer ce fichier).
|
||||||
|
|
||||||
Vérifiez aussi que ces variables sont bien définies dans `/etc/environment` (si
|
Après modification de ce fichier (qui _doit_ être lisible par l'utilisateur `scodoc`),
|
||||||
l'installeur Linux Debian ne les a pas déjà indiquées là, les ajouter ou créer
|
|
||||||
ce fichier):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# /etc/environment
|
|
||||||
export HTTP_PROXY=http://proxy.univ-xxx.fr:1234
|
|
||||||
export HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
|
|
||||||
# Versions en minuscules utilisées par wget
|
|
||||||
export http_proxy="${HTTP_PROXY}"
|
|
||||||
export https_proxy="${HTTPS_PROXY}"
|
|
||||||
```
|
|
||||||
|
|
||||||
Après modification de ce fichier (qui *doit* être lisible par l'utilisateur `scodoc`),
|
|
||||||
redémarrer le service:
|
redémarrer le service:
|
||||||
|
```
|
||||||
```bash
|
sudo systemctl restart scodoc
|
||||||
sudo systemctl restart scodoc9
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Dans les cas compliqués, il est possible qu'il vous faille configurer d'autres
|
Dans les cas compliqués, il est possible qu'il vous faille configurer d'autres
|
||||||
@ -153,6 +136,7 @@ redémarrer le service:
|
|||||||
[ce post sur Stack Overflow](
|
[ce post sur Stack Overflow](
|
||||||
https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy).
|
https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy).
|
||||||
|
|
||||||
|
|
||||||
#### Note sur l'install dans un container LXC
|
#### Note sur l'install dans un container LXC
|
||||||
|
|
||||||
Il y a deux possibilités :
|
Il y a deux possibilités :
|
||||||
@ -162,14 +146,11 @@ root et/ou sudo, attention: la config par défaut de Redis (un gestionnaire de
|
|||||||
cache utilisé par ScoDoc) n'est pas compatible, en raison d'un problème de
|
cache utilisé par ScoDoc) n'est pas compatible, en raison d'un problème de
|
||||||
système de fichier en lecture seule. Installer redis avant ScoDoc, comme suit:
|
système de fichier en lecture seule. Installer redis avant ScoDoc, comme suit:
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get install redis
|
apt-get install redis
|
||||||
```
|
|
||||||
|
|
||||||
Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichier
|
Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichier
|
||||||
`redis.conf` avec les lignes suivantes :
|
`redis.conf` avec les lignes suivantes :
|
||||||
|
|
||||||
```text
|
|
||||||
[Service]
|
[Service]
|
||||||
PrivateTmp=no
|
PrivateTmp=no
|
||||||
ProtectSystem=false
|
ProtectSystem=false
|
||||||
@ -180,14 +161,11 @@ Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichie
|
|||||||
ProtectKernelModules=no
|
ProtectKernelModules=no
|
||||||
ReadWritePaths=
|
ReadWritePaths=
|
||||||
ReadOnlyDirectories=
|
ReadOnlyDirectories=
|
||||||
```
|
|
||||||
|
|
||||||
Ensuite
|
Ensuite
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl start redis
|
systemctl start redis
|
||||||
```
|
|
||||||
|
|
||||||
... et poursuivez l'installation comme ci-dessous.
|
... et poursuivez l'installation comme ci-dessous.
|
||||||
|
|
||||||
@ -195,24 +173,20 @@ Ensuite
|
|||||||
compte utilisateur normal, vous pouvez activer l'option « nesting »
|
compte utilisateur normal, vous pouvez activer l'option « nesting »
|
||||||
(imbriqué) de LXC pour permettre à Redis de fonctionner normalement.
|
(imbriqué) de LXC pour permettre à Redis de fonctionner normalement.
|
||||||
|
|
||||||
🚸 Attention ! N'activez pas le *nesting* sur un conteneur privilégié. Cela
|
⚠️ Attention ! N'activez pas le *nesting* sur un conteneur privilégié. Cela
|
||||||
provoquerait une faille de sécurité.
|
provoquerait une faille de sécurité.
|
||||||
|
|
||||||
Si vous avez construit votre conteneur manuellement avec `lxc-create`, modifiez
|
Si vous avez construit votre conteneur manuellement avec lxc-create, modifiez
|
||||||
le fichier `/var/lib/lxc/${nomDuConteneur}/config` et ajoutez les lignes
|
le fichier `/var/lib/lxc/${nomDuConteneur}/config` et ajoutez les lignes
|
||||||
ci-dessous :
|
ci-dessous :
|
||||||
|
|
||||||
```text
|
|
||||||
lxc.apparmor.allow_nesting = 1
|
lxc.apparmor.allow_nesting = 1
|
||||||
lxc.apparmor.profile = generated
|
lxc.apparmor.profile = generated
|
||||||
```
|
|
||||||
|
|
||||||
Si vous utilisez un conteneur LXC sur l'hyperviseur Proxmox, modifiez le
|
Si vous utilisez un conteneur LXC sur l'hyperviseur Proxmox, modifiez le
|
||||||
fichier `/etc/pve/lxc/${CTID}.conf` et ajoutez la ligne suivante :
|
fichier `/etc/pve/lxc/${CTID}.conf` et ajoutez la ligne suivante :
|
||||||
|
|
||||||
```text
|
|
||||||
features: nesting=1
|
features: nesting=1
|
||||||
```
|
|
||||||
|
|
||||||
... et poursuivez l'installation comme ci-dessous.
|
... et poursuivez l'installation comme ci-dessous.
|
||||||
|
|
||||||
@ -220,74 +194,67 @@ fichier `/etc/pve/lxc/${CTID}.conf` et ajoutez la ligne suivante :
|
|||||||
|
|
||||||
### 2.1) Charger le logiciel
|
### 2.1) Charger le logiciel
|
||||||
|
|
||||||
🚸 Les commandes ci-dessous sont à exécuter dans un terminal ouvert en tant que
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
||||||
**root** sur le serveur. Vous pouvez utiliser `su` (ou `sudo su`) pour devenir
|
alt="/!\" /> Les commandes ci-dessous sont à exécuter dans un terminal ouvert
|
||||||
**root**).
|
en tant que **root** sur le serveur. Vous pouvez utiliser `su` (ou `sudo su`)
|
||||||
|
pour devenir **root**).
|
||||||
|
|
||||||
Remarque: *Si ce n'est pas déjà le cas, vous avez intérêt à ouvrir une session
|
Remarque: *Si ce n'est pas déjà le cas, vous avez intérêt à ouvrir une session
|
||||||
`ssh` (ou `putty`) depuis une machine normale, afin de pouvoir copier/coller
|
`ssh` (ou `putty`) depuis une machine normale, afin de pouvoir copier/coller
|
||||||
facilement les commandes et éditer les fichiers de configuration.*
|
facilement les commandes et éditer les fichiers de configuration.*
|
||||||
|
|
||||||
- Ajouter le dépôt scodoc: copier ce fichier <a href="/attachments/scodoc.list"
|
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
|
||||||
download>scodoc-bullseye.list</a> dans `/etc/apt/sources.list.d/`
|
download>scodoc.list</a> dans `/etc/apt/sources.list.d/`
|
||||||
ou le créer contenant juste cette ligne:
|
ou le créer contenant juste cette ligne:
|
||||||
|
|
||||||
```text
|
|
||||||
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
|
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
|
||||||
deb http://scodoc.org/repo bullseye main
|
deb http://scodoc.org/repo bullseye main
|
||||||
```
|
|
||||||
- Installer la clé: en `root` sur le serveur, lancer
|
|
||||||
|
|
||||||
```bash
|
- Installer la clé: en `root` sur le serveur, lancer
|
||||||
|
|
||||||
apt-get -y install gnupg
|
apt-get -y install gnupg
|
||||||
wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
|
wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
|
||||||
```
|
|
||||||
|
|
||||||
- Installer le logiciel:
|
- Installer le logiciel:
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install nginx
|
apt-get install nginx
|
||||||
```
|
|
||||||
S'assurer que le logiciel `nginx` s'est bien installé. En cas de problème se
|
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
|
[votre serveur ne supporte pas
|
||||||
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
|
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
|
||||||
|
|
||||||
Ensuite:
|
Ensuite:
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get install scodoc9
|
apt-get install scodoc9
|
||||||
```
|
|
||||||
Notez que l'installation du paquet `scodoc9` va créer automatiquement un
|
Notez que l'installation du paquet `scodoc9` va créer automatiquement un
|
||||||
utilisateur `scodoc` qui sera utilisé par le serveur.
|
utilisateur `scodoc` qui sera utilisé par le serveur.
|
||||||
|
|
||||||
- Attribuer un mot de passe à l'utilisateur `scodoc`:
|
- Attribuer un mot de passe à l'utilisateur `scodoc`:
|
||||||
|
|
||||||
```bash
|
|
||||||
passwd scodoc
|
passwd scodoc
|
||||||
```
|
|
||||||
|
|
||||||
### 2.2) Configuration des logiciels et des données
|
### 2.2) Configuration des logiciels et des données
|
||||||
|
|
||||||
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
|
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
|
||||||
|
|
||||||
```bash
|
|
||||||
/opt/scodoc/tools/configure-scodoc9.sh
|
/opt/scodoc/tools/configure-scodoc9.sh
|
||||||
```
|
|
||||||
Vous devrez répondre à quelques questions et saisir le mot de passe que vous
|
Vous devrez répondre à quelques questions et saisir le mot de passe que vous
|
||||||
attribuerez à l'utilisateur `admin`.
|
attribuerez à l'utilisateur `admin`.
|
||||||
|
|
||||||
(note: pour en savoir plus sur ce script, [voir l'explication](GuideInstallDebian11Advanced.md))
|
(note: pour en savoir plus sur ce script, [voir l'explication](GuideInstallDebian11Advanced.md))
|
||||||
|
|
||||||
### 3) **Lancer ScoDoc**
|
### 3) **Lancer ScoDoc**:
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo su # se connecter en root
|
sudo su # se connecter en root
|
||||||
systemctl restart nginx
|
systemctl restart nginx
|
||||||
systemctl restart scodoc9
|
systemctl restart scodoc9
|
||||||
```
|
|
||||||
✨ et voila !
|
et voila !
|
||||||
|
|
||||||
Visiter `https://monscodoc.mondomaine.fr/` pour achever la configuration et
|
Visiter `https://monscodoc.mondomaine.fr/` pour achever la configuration et
|
||||||
utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md).
|
utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md).
|
||||||
@ -301,29 +268,18 @@ installation ScoDoc 7, ou même en place.
|
|||||||
Voir [la procédure de migration](MigrationScoDoc7a9.md).
|
Voir [la procédure de migration](MigrationScoDoc7a9.md).
|
||||||
|
|
||||||
## En cas de problème
|
## En cas de problème
|
||||||
|
Ne pas hésiter à me contacter ou à écrire sur la liste notes (voir [Listes de
|
||||||
|
diffusion](ListesDeDiffusion.md)).
|
||||||
|
|
||||||
Ne pas hésiter à nous contacter (voir [contacts](Contact.md)).
|
* Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.md)
|
||||||
|
|
||||||
- Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.md)
|
|
||||||
|
|
||||||
Nota: sur certains réseaux, l'autoconfiguration IPv6 pose problème (par exemple:
|
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
|
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...
|
## Ensuite...
|
||||||
|
|
||||||
- Mettez en place des [sauvegardes](SauvegardesBases.md)
|
* Mettez en place des [sauvegardes](SauvegardesBases.md)
|
||||||
|
|
||||||
- Si vous le souhaitez, vous pouvez mettre en place un anti-virus pour
|
* Abonnez-vous au moins à la liste d'annonces: voir [Listes de diffusion](ListesDeDiffusion.md)
|
||||||
surveiller les fichiers uploadés par les utilisateurs. Les fichiers sont
|
|
||||||
conservés dans `/opt/scodoc-data`: le plus simple est de faire surveiller tout
|
|
||||||
ce répertoire sauf `/opt/scodoc-data/logs`.
|
|
||||||
|
|
||||||
- Abonnez-vous au moins à la liste d'annonces: voir [contacts](Contact.md)
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide configuration](GuideConfig.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -50,7 +50,6 @@ Il est utile de vérifier que le serveur Web a bien démarré, avec
|
|||||||
systemctl status nginx
|
systemctl status nginx
|
||||||
|
|
||||||
## Création des bases de données
|
## Création des bases de données
|
||||||
|
|
||||||
ScoDoc 9 utilise une base de données unique, regroupant tous les
|
ScoDoc 9 utilise une base de données unique, regroupant tous les
|
||||||
départements et les utilisateurs. Elle est nommée `SCODOC` (et `SCODOC_DEV`
|
départements et les utilisateurs. Elle est nommée `SCODOC` (et `SCODOC_DEV`
|
||||||
en mode développement, ou `SCODOC_TEST`pour les tests unitaires).
|
en mode développement, ou `SCODOC_TEST`pour les tests unitaires).
|
||||||
@ -64,11 +63,11 @@ Pour créer la base de données, lancer le script:
|
|||||||
./tools/create_database.sh SCODOC_DEV # pour la base "developement"
|
./tools/create_database.sh SCODOC_DEV # pour la base "developement"
|
||||||
./tools/create_database.sh SCODOC_TEST # pour les tests unitaires
|
./tools/create_database.sh SCODOC_TEST # pour les tests unitaires
|
||||||
|
|
||||||
|
|
||||||
Les bases créées appartiennent à l'utilisateur (rôle) postgres `scodoc`
|
Les bases créées appartiennent à l'utilisateur (rôle) postgres `scodoc`
|
||||||
(qui a été créé par le script d'installation précédent).
|
(qui a été créé par le script d'installation précédent).
|
||||||
|
|
||||||
## Variables d'environnement
|
## Variables d'environnement
|
||||||
|
|
||||||
Le serveur utilise des variables d'environnement donnant la
|
Le serveur utilise des variables d'environnement donnant la
|
||||||
configuration de base.
|
configuration de base.
|
||||||
Le plus simple est de les grouper dans un fichier `.env` (dans
|
Le plus simple est de les grouper dans un fichier `.env` (dans
|
||||||
|
@ -1,342 +0,0 @@
|
|||||||
|
|
||||||
# Installation de ScoDoc 9.6+ sur Debian 12 (Bookworm)
|
|
||||||
|
|
||||||
Ce document décrit la procédure d'installation et de configuration de ScoDoc
|
|
||||||
version 9.6 et suivantes.
|
|
||||||
|
|
||||||
Si vous mettez à jour une installation ScoDoc 9 existante (9.5 sous Debian 11
|
|
||||||
Bullseye), suivez la
|
|
||||||
[procédure de migration décrite sur cette page](UpgradeToDeb12Sco96.md).
|
|
||||||
|
|
||||||
La procédure décrite ici doit être effectué sur la machine serveur fraiche avec
|
|
||||||
un accès administrateur (root). **Ne pas l'utiliser pour migrer une installation existante**.
|
|
||||||
|
|
||||||
ScoDoc est livré avec des scripts d'installation qui configurer presque
|
|
||||||
automatiquement votre serveur (serveur web, base de données, etc): vous pouvez
|
|
||||||
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
|
|
||||||
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
|
|
||||||
tenter l'installation sur une autre version de Linux.
|
|
||||||
|
|
||||||
Merci de signaler tout problème [sur le Discord](https://discord.gg/ybw6ugtFsZ).
|
|
||||||
|
|
||||||
- Note: l'image du CD d'installation de Debian (amd64) peut se trouver ici:
|
|
||||||
[https://www.debian.org/CD/netinst/](https://www.debian.org/CD/netinst/),
|
|
||||||
choisir la version "petits CD" pour **amd64**
|
|
||||||
(*Il est indispensable d'utiliser une version 64 bits !*)
|
|
||||||
|
|
||||||
🚸 **Important:**
|
|
||||||
|
|
||||||
La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter
|
|
||||||
sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme
|
|
||||||
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
|
|
||||||
|
|
||||||
Le serveur devrait être accessible depuis Internet.
|
|
||||||
|
|
||||||
### Configuration matérielle
|
|
||||||
|
|
||||||
- taille disque: prévoir au moins 24Go sur la partition où sera scodoc (en
|
|
||||||
général `/`).
|
|
||||||
|
|
||||||
- mémoire: prévoir au moins 8Go de RAM, et plutôt 12 ou 16.
|
|
||||||
|
|
||||||
### Informations sur les flux réseau
|
|
||||||
|
|
||||||
Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.
|
|
||||||
|
|
||||||
- le trafic entrant est sur le port 443 (le trafic http/80 est redirigé
|
|
||||||
vers le https).
|
|
||||||
|
|
||||||
- le serveur doit pouvoir envoyer du mail (serveur Postfix en local, à
|
|
||||||
configurer pour utiliser un relais smtp ou envoyer directement, selon votre
|
|
||||||
politique. Au besoin, pour le reconfigurer, lancer `dpkg-reconfigure postfix`);
|
|
||||||
|
|
||||||
- Les serveurs de mise à jour de Debian doivent être accessibles (en http,
|
|
||||||
voir `/etc/apt/sources.list`);
|
|
||||||
|
|
||||||
- Les serveurs `scodoc.org` et `scodoc.iutv.univ-paris13.fr` **doivent**
|
|
||||||
être accessibles (80 et 443).
|
|
||||||
|
|
||||||
### Installation Linux Debian
|
|
||||||
|
|
||||||
Nous recommandons d'effectuer une installation standard de Debian par le réseau
|
|
||||||
(netinst), et d'utiliser l'installation en mode texte, très simple et rapide.
|
|
||||||
Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout
|
|
||||||
décocher sauf "Serveur SSH" et "Utilitaires standard du système". Le script
|
|
||||||
d'installation de ScoDoc se chargera ensuite d'installer tous les éléments
|
|
||||||
nécessaires (serveur web, messagerie, etc.).
|
|
||||||
|
|
||||||
🚸 *Veiller à sélectionner une locale `UTF-8` par défaut.*
|
|
||||||
|
|
||||||
![InstallDebian6-1.png](screens/InstallDebian6-1.png)
|
|
||||||
|
|
||||||
### Points à vérifier avant d'installer ScoDoc
|
|
||||||
|
|
||||||
Checklist minimale de votre système Linux Debian:
|
|
||||||
|
|
||||||
1. Connexion à Internet: le réseau doit être accessible. En effet, le script
|
|
||||||
d'installation va installer des paquetages du système Debian puis
|
|
||||||
télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur
|
|
||||||
scodoc.org).
|
|
||||||
1. Vérifiez la connectivité, par exemple:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ping www.univ-paris13.fr
|
|
||||||
(quitter avec ctrl-c)
|
|
||||||
cd /tmp
|
|
||||||
wget --no-check-certificate https://scodoc.org
|
|
||||||
# doit créer un fichier index.html contenant du code HTML...
|
|
||||||
```
|
|
||||||
3. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le
|
|
||||||
DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais
|
|
||||||
dans ce cas le nom de votre serveur sera son adresse IP (eg `192.168.0.10`) et
|
|
||||||
il ne sera peut être pas accessible de l'extérieur.
|
|
||||||
4. Mail: vérifiez que le serveur peut envoyer des e-mail: `mail
|
|
||||||
votre@adresse.fr`, puis entrer un message terminé par `ctrl-d`: si vous ne
|
|
||||||
recevez pas le message après quelques minutes, vérifiez votre configuration
|
|
||||||
(et le log `/var/log/mail.log`). Un serveur ScoDoc qui n'envoie pas de mail
|
|
||||||
ne peut pas vérifier ceux des utilisateurs, qui à leur tour ne pourront pas
|
|
||||||
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
|
|
||||||
reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (
|
|
||||||
`apt-get install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
|
|
||||||
1. Si vous avez installé à partir d'un support (DVD, clé USB...), pensez à le
|
|
||||||
retirer des sources Debian afin de ne pas bloquer les mises à jour (commenter
|
|
||||||
la ligne `deb cdrom:` dans le fichier `/etc/apt/sources.list`)
|
|
||||||
1. Cette liste est incomplète... et n'oubliez pas: avant de passer en
|
|
||||||
production, mettez en place des sauvegardes sérieuses !
|
|
||||||
|
|
||||||
#### Configuration si utilisation d'un proxy
|
|
||||||
|
|
||||||
Si votre accès à Internet passe par un proxy, l'indiquer au moment de
|
|
||||||
l'installation Debian.
|
|
||||||
|
|
||||||
Vérifiez aussi que ces variables sont bien définies dans `/etc/environment` (si
|
|
||||||
l'installeur Linux Debian ne les a pas déjà indiquées là, les ajouter ou créer
|
|
||||||
ce fichier):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# /etc/environment
|
|
||||||
export HTTP_PROXY=http://proxy.univ-xxx.fr:1234
|
|
||||||
export HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
|
|
||||||
# Versions en minuscules utilisées par wget
|
|
||||||
export http_proxy="${HTTP_PROXY}"
|
|
||||||
export https_proxy="${HTTPS_PROXY}"
|
|
||||||
```
|
|
||||||
|
|
||||||
Ensuite, après installation du paquet scodoc9 (voir plus bas), il faudra
|
|
||||||
indiquer votre proxy: pour cela, éditer le fichier
|
|
||||||
|
|
||||||
```
|
|
||||||
/opt/scodoc/.env
|
|
||||||
```
|
|
||||||
|
|
||||||
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
HTTP_PROXY=http://proxy.univ-xxx.fr:1234
|
|
||||||
HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
|
|
||||||
```
|
|
||||||
|
|
||||||
Après modification de ces fichiers (qui *doivent* être lisible par l'utilisateur `scodoc`),
|
|
||||||
redémarrer le service:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl restart scodoc9
|
|
||||||
```
|
|
||||||
|
|
||||||
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 :
|
|
||||||
|
|
||||||
**Option 1**, si vous installez dans un container LXC privilégié via le compte
|
|
||||||
root et/ou sudo, attention: la config par défaut de Redis (un gestionnaire de
|
|
||||||
cache utilisé par ScoDoc) n'est pas compatible, en raison d'un problème de
|
|
||||||
système de fichier en lecture seule. Installer redis avant ScoDoc, comme suit:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get install redis
|
|
||||||
```
|
|
||||||
|
|
||||||
Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichier
|
|
||||||
`redis.conf` avec les lignes suivantes :
|
|
||||||
|
|
||||||
```text
|
|
||||||
[Service]
|
|
||||||
PrivateTmp=no
|
|
||||||
ProtectSystem=false
|
|
||||||
PrivateDevices=false
|
|
||||||
ProtectHome=no
|
|
||||||
ProtectControlGroups=no
|
|
||||||
ProtectKernelTunables=no
|
|
||||||
ProtectKernelModules=no
|
|
||||||
ReadWritePaths=
|
|
||||||
ReadOnlyDirectories=
|
|
||||||
```
|
|
||||||
|
|
||||||
Ensuite
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl start redis
|
|
||||||
```
|
|
||||||
|
|
||||||
... et poursuivez l'installation comme ci-dessous.
|
|
||||||
|
|
||||||
**Option 2**, si vous installez dans un container LXC non-privilégié via un
|
|
||||||
compte utilisateur normal, vous pouvez activer l'option « nesting »
|
|
||||||
(imbriqué) de LXC pour permettre à Redis de fonctionner normalement.
|
|
||||||
|
|
||||||
🚸 Attention ! N'activez pas le *nesting* sur un conteneur privilégié. Cela
|
|
||||||
provoquerait une faille de sécurité.
|
|
||||||
|
|
||||||
Si vous avez construit votre conteneur manuellement avec `lxc-create`, modifiez
|
|
||||||
le fichier `/var/lib/lxc/${nomDuConteneur}/config` et ajoutez les lignes
|
|
||||||
ci-dessous :
|
|
||||||
|
|
||||||
```text
|
|
||||||
lxc.apparmor.allow_nesting = 1
|
|
||||||
lxc.apparmor.profile = generated
|
|
||||||
```
|
|
||||||
|
|
||||||
Si vous utilisez un conteneur LXC sur l'hyperviseur Proxmox, modifiez le
|
|
||||||
fichier `/etc/pve/lxc/${CTID}.conf` et ajoutez la ligne suivante :
|
|
||||||
|
|
||||||
```text
|
|
||||||
features: nesting=1
|
|
||||||
```
|
|
||||||
|
|
||||||
... et poursuivez l'installation comme ci-dessous.
|
|
||||||
|
|
||||||
## 2) Installation de ScoDoc sur Debian
|
|
||||||
|
|
||||||
### 2.1) Charger le logiciel
|
|
||||||
|
|
||||||
🚸 Les commandes ci-dessous sont à exécuter dans un terminal ouvert en tant que
|
|
||||||
**root** sur le serveur. Vous pouvez utiliser `su` (ou `sudo su`) pour devenir
|
|
||||||
**root**).
|
|
||||||
|
|
||||||
Remarque: *Si ce n'est pas déjà le cas, vous avez intérêt à ouvrir une session
|
|
||||||
`ssh` (ou `putty`) depuis une machine normale, afin de pouvoir copier/coller
|
|
||||||
facilement les commandes et éditer les fichiers de configuration.*
|
|
||||||
|
|
||||||
|
|
||||||
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
|
|
||||||
download>scodoc.list</a> dans `/etc/apt/sources.list.d/`
|
|
||||||
ou bien le créer afin qu'il contienne juste cette ligne:
|
|
||||||
|
|
||||||
```text
|
|
||||||
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
|
|
||||||
deb http://scodoc.org/deb/bookworm bookworm main
|
|
||||||
```
|
|
||||||
|
|
||||||
- Installer la clé: en `root` sur le serveur, lancer
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get -y install gnupg
|
|
||||||
wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
|
|
||||||
```
|
|
||||||
|
|
||||||
- Installer le logiciel:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get update
|
|
||||||
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
|
|
||||||
[votre serveur ne supporte pas
|
|
||||||
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
|
|
||||||
|
|
||||||
Ensuite:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get install scodoc9
|
|
||||||
```
|
|
||||||
|
|
||||||
Notez que l'installation du paquet `scodoc9` va créer automatiquement un
|
|
||||||
utilisateur `scodoc` qui sera utilisé par le serveur.
|
|
||||||
|
|
||||||
- Attribuer un mot de passe à l'utilisateur `scodoc`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
passwd scodoc
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2.2) Configuration des logiciels et des données
|
|
||||||
|
|
||||||
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
/opt/scodoc/tools/configure-scodoc9.sh
|
|
||||||
```
|
|
||||||
Vous devrez répondre à quelques questions et saisir le mot de passe que vous
|
|
||||||
attribuerez à l'utilisateur `admin`.
|
|
||||||
|
|
||||||
(note: pour en savoir plus sur ce script, [voir l'explication](GuideInstallDebian11Advanced.md))
|
|
||||||
|
|
||||||
### 3) **Lancer ScoDoc**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo su # se connecter en root
|
|
||||||
systemctl restart nginx
|
|
||||||
systemctl restart scodoc9
|
|
||||||
```
|
|
||||||
✨ et voila !
|
|
||||||
|
|
||||||
Visiter `https://monscodoc.mondomaine.fr/` pour achever la configuration et
|
|
||||||
utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md).
|
|
||||||
|
|
||||||
## Importation des données ScoDoc 7
|
|
||||||
|
|
||||||
Si vous aviez une installation très ancienne avec ScoDoc 7, vous pouvez migrer
|
|
||||||
toutes vos données (comptes utilisateurs, étudiants, formations, notes, photos
|
|
||||||
et fichiers divers) depuis une l'ancien serveur ScoDoc 7, ou même en place.
|
|
||||||
|
|
||||||
Voir [la procédure de migration](MigrationScoDoc7a9.md).
|
|
||||||
|
|
||||||
## En cas de problème
|
|
||||||
|
|
||||||
Ne pas hésiter à nous contacter (voir [contacts](Contact.md)).
|
|
||||||
|
|
||||||
- Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.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)).
|
|
||||||
|
|
||||||
## Ensuite...
|
|
||||||
|
|
||||||
- Mettez en place des [sauvegardes](SauvegardesBases.md)
|
|
||||||
|
|
||||||
- Si vous le souhaitez, vous pouvez mettre en place un anti-virus pour
|
|
||||||
surveiller les fichiers uploadés par les utilisateurs. Les fichiers sont
|
|
||||||
conservés dans `/opt/scodoc-data`: le plus simple est de faire surveiller tout
|
|
||||||
ce répertoire sauf `/opt/scodoc-data/logs`.
|
|
||||||
|
|
||||||
- Abonnez-vous au moins à la liste d'annonces ou rejoignez le Discord: voir [contacts](Contact.md)
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide configuration](GuideConfig.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,66 +1,46 @@
|
|||||||
# Utilisation de ScoDoc
|
# Utilisation de ScoDoc
|
||||||
|
|
||||||
ScoDoc contrôle les opérations via un mécanisme de permissions facile à mettre
|
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.
|
||||||
en œuvre et permettant de bien répartir les rôles entre les utilisateurs:
|
|
||||||
responsables, enseignants, secrétariats.
|
|
||||||
|
|
||||||
## Pour le responsable de formation
|
## Pour le responsable de formation
|
||||||
|
La définition des programmes, l'inscription des étudiants et certains paramétrages ne sont accessibles qu'au responsable de formation, ou chef de département.
|
||||||
|
|
||||||
La définition des programmes, l'inscription des étudiants et certains
|
- [Guide pour le responsable de formation](GuideAdminFormation.md)
|
||||||
paramétrages ne sont accessibles qu'au responsable de formation, ou chef de
|
* [Modification d'un programme pédagogique et versions](VersionProgrammes.md)
|
||||||
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)
|
* [Exemples et partages de programmes pédagogiques entre établissements](ExemplesProgrammesPedagogiques.md)
|
||||||
|
* [Importation des étudiants](ImportationEtuds.md)
|
||||||
* [Importation des étudiants](ImportationEtuds.md)
|
|
||||||
|
|
||||||
* [Synchronisation des inscrits avec Apogée](SynchroApogee.md)
|
* [Synchronisation des inscrits avec Apogée](SynchroApogee.md)
|
||||||
* [Procédure d'inscription des étudiants via Apogée](InscriptionsEtudApogee.md)
|
* [Procédure d'inscription des étudiants via Apogée](InscriptionsEtudApogee.md)
|
||||||
* [Données sur l'origine des étudiants](DonneesAdmissions.md)
|
* [Données sur l'origine des étudiants](DonneesAdmissions.md)
|
||||||
* [Gestion des photos des étudiants](GestionPhotos.md)
|
* [Gestion des photos des étudiants](GestionPhotos.md)
|
||||||
* [Coordonnées des étudiants](GestionAdresses.md)
|
* [Coordonnées des étudiants](GestionAdresses.md)
|
||||||
|
* [Opérations en fin de semestre (jury, ré-inscriptions, ...)](TransitionSemestre.md)
|
||||||
|
* [Export des résultats et décisions de jury vers Apogée](ScoDocApogee.md)
|
||||||
|
* [Utilisation des rôles et permissions](ConfigPermissionsDept.md)
|
||||||
|
|
||||||
* [Opérations en fin de semestre (jury, ré-inscriptions, ...)](TransitionSemestre.md)
|
## Pour les enseignants et administratifs:
|
||||||
* [Export des résultats et décisions de jury vers Apogée](ScoDocApogee.md)
|
|
||||||
* [Utilisation des rôles et permissions](ConfigPermissionsDept.md)
|
|
||||||
|
|
||||||
## Pour les enseignants et administratifs
|
* [Édition des bulletins de notes](BulletinsNotes.md)
|
||||||
|
|
||||||
* [Édition des bulletins de notes](BulletinsNotes.md)
|
|
||||||
* [paramétrage des bulletins pdf](ParametrageBulletins.md)
|
* [paramétrage des bulletins pdf](ParametrageBulletins.md)
|
||||||
|
* [Édition des PV de jury](ParametragePV.md)
|
||||||
* [Édition des PV de jury](ParametragePV.md)
|
* Comment sont calculées les moyennes : [Calcul des notes](CalculNotes.md)
|
||||||
* Comment sont calculées les moyennes : [Calcul des notes](CalculNotes.md)
|
|
||||||
|
|
||||||
## Opérations diverses
|
## Opérations diverses
|
||||||
|
#### Tenue des jurys et commissions
|
||||||
|
|
||||||
### Tenue des jurys et commissions
|
* [Saisie des décisions](SaisieDecisionsJury.md)
|
||||||
|
* [Gestion des commissions et jurys, édition des PV](GestionJury.md)
|
||||||
|
* [Capitalisation des UE](CapitalisationUE.md)
|
||||||
|
* [Compensation automatique des semestres](CompensationSemestre.md)
|
||||||
|
|
||||||
* [Saisie des décisions](SaisieDecisionsJury.md)
|
#### Suivi de l'assiduité
|
||||||
* [Gestion des commissions et jurys, édition des PV](GestionJury.md)
|
|
||||||
* [Capitalisation des UEs](CapitalisationUE.md)
|
|
||||||
|
|
||||||
### Spécificités du BUT
|
* [Suivi de l'assiduité des étudiants](GestionAbsences.md)
|
||||||
|
|
||||||
* Voir [la page dédiée au BUT](BUT.md).
|
#### Rapports, avis et tableaux de bords
|
||||||
|
|
||||||
### Spécificités du DUT
|
* [Rapports, suivi de cohortes, parcours](RapportsStatistiques.md)
|
||||||
|
* [Génération des avis de poursuite d'études](AvisPoursuiteEtudes.md)
|
||||||
|
|
||||||
* [Compensation automatique des semestres](CompensationSemestre.md)
|
## Questions fréquentes
|
||||||
|
Voir la [FAQ](FAQ.md)
|
||||||
### Suivi de l'assiduité
|
|
||||||
|
|
||||||
* [Suivi de l'assiduité des étudiants](GestionAbsences.md)
|
|
||||||
|
|
||||||
### Rapports, avis et tableaux de bords
|
|
||||||
|
|
||||||
* [Rapports, suivi de cohortes, parcours](RapportsStatistiques.md)
|
|
||||||
* [Génération des avis de poursuite d'études](AvisPoursuiteEtudes.md)
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide du responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md).
|
|
||||||
|
@ -1,52 +1,34 @@
|
|||||||
# Importation d'étudiants (cas où l'on a pas de connexion directe à Apogée)
|
|
||||||
|
|
||||||
Les étudiants ne doivent être créés dans le système qu'une seule fois (lors de
|
## Importation d'étudiants (cas où l'on a pas de connexion directe à Apogée)
|
||||||
leur première inscription). Il sont ensuite suivi grâce à leur identifiant
|
Les étudiants ne doivent être créés dans le système qu'une seule fois (lors de leur première inscription). Il sont ensuite suivi grâce à leur identifiant Apogée (ou à défaut leur code interne ScoDoc) qui ne varie pas. Insistons: les étudiants ne doivent être créés dans ScoDoc que lors de leur arrivée (premier semestre), ils sont ensuite suivis d'un semestre à l'autre.
|
||||||
Apogée (ou à défaut leur code interne ScoDoc) qui ne varie pas. Insistons: les
|
|
||||||
étudiants ne doivent être créés dans ScoDoc que lors de leur arrivée (premier
|
|
||||||
semestre), ils sont ensuite suivis d'un semestre à l'autre.
|
|
||||||
|
|
||||||
Il est possible de créer les étudiants un par un (voir
|
Il est possible de créer les étudiants un par un (voir [CreationEtudIndividuel](CreationEtudIndividuel.md)) mais cela
|
||||||
[CreationEtudIndividuel](CreationEtudIndividuel.md)) mais cela est rapidement
|
est rapidement fastidieux si l'on a plus d'une dizaine d'étudiants à inscrire. De plus, ce mode de fonctionnement tend à produire des erreurs de saisie et des doublons (le même étudiant créé deux fois dans des semestres différents, ce qui empêche le suivi de sa scolarité). Ces doublons posent de grandes difficultés et empêchent la gestion automatique des jurys: soyez vigilants lors des inscriptions.
|
||||||
fastidieux si l'on a plus d'une dizaine d'étudiants à inscrire. De plus, ce mode
|
|
||||||
de fonctionnement tend à produire des erreurs de saisie et des doublons (le même
|
|
||||||
étudiant créé deux fois dans des semestres différents, ce qui empêche le suivi
|
|
||||||
de sa scolarité). Ces doublons posent de grandes difficultés et empêchent la
|
|
||||||
gestion automatique des jurys: soyez vigilants lors des inscriptions.
|
|
||||||
|
|
||||||
***On privilégiera donc l'import des étudiants depuis le portail (Apogée) à
|
***On privilégiera donc l'import des étudiants depuis le portail (Apogée) à chaque fois que c'est possible. Voir [SynchroApogee](SynchroApogee.md).***
|
||||||
chaque fois que c'est possible. Voir [SynchroApogee](SynchroApogee.md).***
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Le texte ci-dessous ne s'applique qu'aux établissement sans liaison ScoDoc-Apogée, et donc ***ne concerne pas l'IUT de Villetaneuse ! ***
|
||||||
alt="/!\" /> Le texte ci-dessous ne s'applique qu'aux établissement sans liaison
|
|
||||||
ScoDoc-Apogée, et donc ***ne concerne pas l'IUT de Villetaneuse !***
|
|
||||||
|
|
||||||
Si vous souhaitez importer une liste de nouveaux étudiants (inconnus de ScoDoc,
|
Si vous souhaitez importer une liste de nouveaux étudiants (inconnus de ScoDoc, même dans d'autres semestres) sans utiliser un portail Apogée, il suffit de créer un fichier tableur comportant
|
||||||
même dans d'autres semestres) sans utiliser un portail Apogée, il suffit de
|
toutes les informations requises. Le lien "importer de nouveaux étudiants"
|
||||||
créer un fichier tableur comportant toutes les informations requises. Le lien
|
vous permet de télécharger une feuille Excel avec les colonnes. Une fois cette feuille remplie
|
||||||
"*importer de nouveaux étudiants*" vous permet de télécharger une feuille Excel
|
(une ligne par étudiant), cette feuille doit être renvoyée vers le
|
||||||
avec les colonnes. Une fois cette feuille remplie (une ligne par étudiant),
|
logiciel (indiquer le nom du fichier et cliquer sur le bouton "Télécharger").
|
||||||
cette feuille doit être renvoyée vers le logiciel (indiquer le nom du fichier et
|
|
||||||
cliquer sur le bouton "Télécharger").
|
|
||||||
|
|
||||||
![imprtetud1.png](screens/imprtetud1.png).
|
![imprtetud1.png](screens/imprtetud1.png).
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Vous devez *impérativement* utiliser la feuille excel proposée par le site pour
|
||||||
alt="/!\" /> Vous devez *impérativement* utiliser la feuille excel proposée par
|
importer vos étudiants. Utiliser copier/coller pour remplir ses différentes colonnes.
|
||||||
le site pour importer vos étudiants. Utiliser copier/coller pour remplir ses
|
Seules les colonnes dont le titre est en rouge sont obligatoires, les autres peuvent
|
||||||
différentes colonnes. Seules les colonnes dont le titre est en rouge sont
|
être laissées vides, ou partiellement remplies.
|
||||||
obligatoires, les autres peuvent être laissées vides, ou partiellement remplies.
|
|
||||||
|
|
||||||
Les étudiants importés vont être automatiquement inscrits dans le semestre
|
|
||||||
choisi (et inscrits à tous les modules de ce semestre, sauf ceux de sport et
|
|
||||||
culture). Il est donc nécessaire de créer le semestre *avant d'importer les
|
|
||||||
étudiants*.
|
|
||||||
|
|
||||||
Le plus simple est de passer par le lien "importer des étudiants" présent en bas
|
Les étudiants importés vont être automatiquement inscrits dans le semestre choisi (et inscrits à tous les modules de ce semestre, sauf ceux de sport et culture).
|
||||||
du **tableau de bord semestre**.
|
Il est donc nécessaire de créer le semestre *avant d'importer les étudiants*.
|
||||||
|
|
||||||
|
Le plus simple est de passer par le lien "importer des étudiants" présent en bas du **tableau de bord semestre**.
|
||||||
|
|
||||||
|
|
||||||
Autres remarques:
|
Autres remarques:
|
||||||
|
|
||||||
- le champ 'SEXE' doit contenir ```MR``` (masculin) ou ```MME``` (féminin).
|
* le champ 'SEXE' doit contenir ```MR``` (masculin) ou ```MLLE``` (féminin).
|
||||||
- l'identité d'un étudiant (nom, prénom, civilité) peut quelquefois subir
|
|
||||||
quelques variantes (voir [DonneesEtudiant](DonneesEtudiant.md))
|
|
||||||
|
@ -1,56 +1,50 @@
|
|||||||
# Inscription des étudiants via Apogée
|
|
||||||
|
|
||||||
Les informations données ici ne concernent que les établissement qui ont mis en
|
# Inscription des étudiants via Apogée
|
||||||
place une interface entre ScoDoc et le logiciel d'administration Apogée, comme à
|
Les informations données ici ne concernent que les établissement qui ont mis en place une interface entre ScoDoc et le logiciel d'administration Apogée, comme à l'IUT de Villetaneuse.
|
||||||
l'IUT de Villetaneuse. Cette interface repose sur l'utilisation d'un "portail"
|
Cette interface repose sur l'utilisation d'un "portail" offrant les services décrits sur la page [InterrogationPortail](InterrogationPortail.md).
|
||||||
offrant les services décrits sur la page
|
|
||||||
[InterrogationPortail](InterrogationPortail.md).
|
|
||||||
|
|
||||||
## Généralités
|
## Généralités
|
||||||
|
On conserve la possibilité de créer les étudiants individuellement, ou
|
||||||
|
de les importer d'un tableau Excel. Cependant, il est plus rationnel d'importer directement les étudiants depuis Apogée (le logiciel utilisé par la scolarité centrale).
|
||||||
|
|
||||||
On conserve la possibilité de créer les étudiants individuellement, ou de les
|
Apogée identifie les sessions de formation (semestres) par un "code étape". Nous associons donc un code étape à chaque semestre ScoDoc. Lors de la création ou modification
|
||||||
importer d'un tableau Excel. Cependant, il est plus rationnel d'importer
|
d'un semestre, ScoDoc présente la liste d'étapes disponible (cette liste
|
||||||
directement les étudiants depuis Apogée (le logiciel utilisé par la scolarité
|
peut être paramétrée dans ScoDoc via le fichier de configuration `config/default-etapes.txt` et/ou est fournie par le service `getEtapes` du portail.
|
||||||
centrale).
|
|
||||||
|
|
||||||
Apogée identifie les sessions de formation (semestres) par un "code étape". Nous
|
Note: Apogée réutilise les mêmes codes étapes pour les sessions d'années différentes, ces codes changent donc
|
||||||
associons donc un code étape à chaque semestre ScoDoc. Lors de la création ou
|
rarement.
|
||||||
modification d'un semestre, ScoDoc présente la liste d'étapes disponible (cette
|
|
||||||
liste peut être paramétrée dans ScoDoc via le fichier de configuration
|
|
||||||
`config/default-etapes.txt` et/ou est fournie par le service `getEtapes` du
|
|
||||||
portail, voir [détail techniques](InterrogationPortail.md)).
|
|
||||||
|
|
||||||
Note: Apogée réutilise les mêmes codes étapes pour les sessions d'années
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> certaines formations utilisent encore des codes Apogée *annuels* alors qu'elles sont semestrialisées.
|
||||||
différentes, ces codes changent donc rarement.
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
Une fois le code étape défini, ScoDoc peut interroger Apogée pour obtenir la liste des étudiants inscrits dans cette
|
||||||
alt="/!\" /> certaines formations utilisent encore des codes Apogée *annuels*
|
étape. Les informations récupérées sont:
|
||||||
alors qu'elles sont semestrialisées.
|
|
||||||
|
|
||||||
Une fois le code étape défini, ScoDoc peut interroger Apogée pour obtenir la
|
* identité (nom, prénom, civilité);
|
||||||
liste des étudiants inscrits dans cette étape. Les informations récupérées sont:
|
|
||||||
|
|
||||||
- identité (nom, prénom, civilité);
|
* adresse (et téléphone).
|
||||||
- adresse (et téléphone).
|
|
||||||
|
Apogée ne conserve pas (en général) les informations de type "admission" (lycée d'origine, notes et type du bac, ...),
|
||||||
|
il faudra donc les importer séparément si on le souhaite (via le menu "Importer données admission").
|
||||||
|
|
||||||
Apogée ne conserve pas (en général) les informations de type "admission" (lycée
|
|
||||||
d'origine, notes et type du bac, ...), il faudra donc les importer séparément si
|
|
||||||
on le souhaite (via le menu "Importer données admission").
|
|
||||||
|
|
||||||
## Procédure à suivre pour le premier semestre (S1)
|
## Procédure à suivre pour le premier semestre (S1)
|
||||||
|
Listes Apogée presques complètes, faire l'import depuis le portail fin juillet, puis synchros courant septembre. Voir [SynchroApogee](SynchroApogee.md)
|
||||||
|
|
||||||
Listes Apogée presque complètes, faire l'import depuis le portail fin juillet,
|
* nouveaux etudiants, modifs données personnelles
|
||||||
puis re-synchroniser fréquemment courant septembre. Voir
|
|
||||||
[SynchroApogee](SynchroApogee.md)
|
|
||||||
|
|
||||||
- nouveaux étudiants, modification données personnelles
|
* import données admission (depuis fichier Excel)
|
||||||
|
|
||||||
- import données admission (depuis fichier Excel)
|
|
||||||
|
|
||||||
## Réinscriptions
|
## Réinscriptions
|
||||||
|
Les étudiants ont jusqu'à fin octobre pour se réinscrire, il est probable que les listes
|
||||||
|
Apogée ne soient pas à jour la semaine de la rentrée. On va donc utiliser le mécanisme de passage interne à ScoDoc,
|
||||||
|
et faire une synchro fin octobre. Voir [TransitionSemestre](TransitionSemestre.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Les étudiants ont jusqu'à fin octobre pour se réinscrire, il est probable que
|
|
||||||
les listes Apogée ne soient pas à jour la semaine de la rentrée. On va donc
|
|
||||||
utiliser le mécanisme de passage interne à ScoDoc, et faire une synchro fin
|
|
||||||
octobre. Voir [TransitionSemestre](TransitionSemestre.md).
|
|
||||||
|
|
||||||
|
93
docs/Internals.md
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
# Code de ScoDoc 9
|
||||||
|
|
||||||
|
Quelques informations pour les développeurs.
|
||||||
|
|
||||||
|
- le code est écrit en Python 3.9 (passage à 3.10 prévu en 2022).
|
||||||
|
- le code doit être formatté par [black](https://pypi.org/project/black/) qui
|
||||||
|
est normalement intégré à votre éditeur (VSCode et PyCharm sont deux choix
|
||||||
|
judicieux).
|
||||||
|
- outre Python, les principaux composants logiciels sont:
|
||||||
|
- [Flask](https://flask-sqlalchemy.palletsprojects.com/en/2.x/): le
|
||||||
|
framework Web, dont on utilise notamment:
|
||||||
|
- l'ORM [SQLAlchemy](https://www.sqlalchemy.org/)
|
||||||
|
- les templates [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/)
|
||||||
|
- [Postgresql](https://www.postgresql.org/)
|
||||||
|
- [Redis](https://redis.io/) cache persistant
|
||||||
|
- [NGINX](https://www.nginx.com/) serveur Web frontal
|
||||||
|
- [gunicorn](https://gunicorn.org/) WSGI HTTP server
|
||||||
|
- et bien sûr Linux (Debian) et systemd.
|
||||||
|
|
||||||
|
# Principaux objets
|
||||||
|
|
||||||
|
Les objets manipulés par ScoDoc sont pour la plupart stockés en base postgres et
|
||||||
|
accédé soit directement en SQL (anciennes parties de ScoDoc), soit à travers
|
||||||
|
l'ORM SQLAlchemy (recommandé pour tout nouveau code).
|
||||||
|
|
||||||
|
Les modèles correspondant sont déclarés dans `/opt/scodoc/app/models/`.
|
||||||
|
|
||||||
|
Principales classes (les noms des classes Python sont en `CamelCase`).
|
||||||
|
|
||||||
|
- Étudiants (classe `Identite`): nom, codes INE/NIP, etc
|
||||||
|
- Formations: programmes pédagogiques, contenant
|
||||||
|
- Unités d'Enseignement (`UniteEns`);
|
||||||
|
- Matières et Modules (`Module`, avec son type standard, bonus, ressources
|
||||||
|
ou SAÉ).
|
||||||
|
- FormSemestre: instanciation d'une session de formation, avec un programme
|
||||||
|
pédagogique donné (Formation), les dates de début et fin, des étudiants
|
||||||
|
inscrits, des responsables, divers codes, et les ModuleImpl mis en œuvre.
|
||||||
|
- ModuleImpl: la mise en place d'un module pédagogique (le ModuleImpl est au
|
||||||
|
Module ce que le FormSemestre est à la Formation): lié à un module, avec un
|
||||||
|
enseignant responsable et des étudiants inscrits.
|
||||||
|
- Inscriptions: tables d'association avec codes et/ou état (démission,
|
||||||
|
défaillant): FormsemestreInscription ModuleImplInscription.
|
||||||
|
|
||||||
|
# Vues et décorateurs
|
||||||
|
|
||||||
|
Une vue ordinaire (Web) pourrait ressembler à cela. Noter la présence de
|
||||||
|
décorateurs:
|
||||||
|
|
||||||
|
- `@scodoc` récupère le département (présent dans l'URL) et initialise quelques
|
||||||
|
trucs;
|
||||||
|
- `@permission_required`: permet de contrôler l'accès, en se basant sur les
|
||||||
|
permissions définies dans la classe `Permission`.
|
||||||
|
|
||||||
|
```
|
||||||
|
@bp.route("/un_exemple")
|
||||||
|
@scodoc
|
||||||
|
@permission_required(Permission.ScoChangeFormation)
|
||||||
|
def un_exemple():
|
||||||
|
# Récupérer le ou les arguments: exemple avec formation_id
|
||||||
|
formation_id = int(request.args["formation_id"])
|
||||||
|
# Charger le ou les objets utilies:
|
||||||
|
formation = models.Formation.query.get(
|
||||||
|
formation_id=formation_id
|
||||||
|
).first_or_404()
|
||||||
|
# Effectuer au besoin un traitement
|
||||||
|
resultat = ...
|
||||||
|
# Afficher le résultat
|
||||||
|
return render_template(
|
||||||
|
"exemple_template.html",
|
||||||
|
resultat=resultat, # par exemple
|
||||||
|
formation=formation,
|
||||||
|
... # etc
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
# Caches
|
||||||
|
|
||||||
|
Il est bon de savoir que les requêtes SQL de SQLAlchemy ne sont pas cachées: ni
|
||||||
|
la requête elle même (construction du SQL à partir des appels à l'ORM), ni son
|
||||||
|
résultat.
|
||||||
|
|
||||||
|
Le module `sco_cache.py` offre la possibilité de cacher des objets python
|
||||||
|
identifiés par un id unique dans le cache Redis. Ce cache est persistant, il
|
||||||
|
faut donc invalider les objets quand on écrit des données susceptibles de les
|
||||||
|
modifier, et penser à le vider quand on modifie le code.
|
||||||
|
Par exemple:
|
||||||
|
```
|
||||||
|
git pull
|
||||||
|
flask clear-cache
|
||||||
|
```
|
||||||
|
|
||||||
|
La commande `redis-cli FLUSHALL` permet aussi de vider le cache sans avoir à
|
||||||
|
lancer flask (plus rapide).
|
@ -45,18 +45,14 @@ correspondant aux critères indiqués, et renvoie du code XML:
|
|||||||
```
|
```
|
||||||
<etudiants>
|
<etudiants>
|
||||||
<etudiant>
|
<etudiant>
|
||||||
|
<fullname>Melanie BOURTON</fullname>
|
||||||
<nip>20600577</nip>
|
<nip>20600577</nip>
|
||||||
<etape>V2TR</etape>
|
<etape>V2TR</etape>
|
||||||
<inscription>2008</inscription>
|
<inscription>2008</inscription>
|
||||||
<nom>BOURTON</nom>
|
<nom>BOURTON</nom>
|
||||||
<prenom>MELANIE</prenom>
|
<prenom>MELANIE</prenom>
|
||||||
<gender>F</gender>
|
<gender>F</gender>
|
||||||
|
|
||||||
<naissance>08/01/1990</naissance>
|
<naissance>08/01/1990</naissance>
|
||||||
<ville_naissance>Brest</ville_naissance>
|
|
||||||
<code_dep_naissance>29</code_dep_naissance>
|
|
||||||
<libelle_dep_naissance>Finisterre</libelle_dep_naissance>
|
|
||||||
|
|
||||||
<mail>melanie.bourton@xxx.univ-yyy.fr</mail>
|
<mail>melanie.bourton@xxx.univ-yyy.fr</mail>
|
||||||
<address>11 Pierre Dupont</address>
|
<address>11 Pierre Dupont</address>
|
||||||
<postalcode>93400</postalcode>
|
<postalcode>93400</postalcode>
|
||||||
@ -69,12 +65,7 @@ correspondant aux critères indiqués, et renvoie du code XML:
|
|||||||
<mention></mention>
|
<mention></mention>
|
||||||
<anneebac>2007</anneebac>
|
<anneebac>2007</anneebac>
|
||||||
|
|
||||||
<nom_lycee>nom du lycée</nom_lycee>
|
|
||||||
<ville_lycee>ville lycée</ville_lycee>
|
|
||||||
<codepostal_lycee>code postal lycée</codepostal_lycee>
|
|
||||||
|
|
||||||
<paiementinscription>true</paiementinscription>
|
<paiementinscription>true</paiementinscription>
|
||||||
<bourse>N</bourse>
|
|
||||||
|
|
||||||
</etudiant>
|
</etudiant>
|
||||||
<etudiant>
|
<etudiant>
|
||||||
|
11
docs/ListesDeDiffusion.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Listes de diffusion mail pour ScoDoc
|
||||||
|
|
||||||
|
|
||||||
|
Les listes de diffusion mail sont le principal canal de communication entre les utilisateurs et entre les développeurs.
|
||||||
|
|
||||||
|
* [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces) liste à très fable trafic, en lecture seule, seules des annonces importantes sont postées (quelques messages par an), tous les utilisateurs sont encouragés à s'y abonner. Indispensable aux administrateurs du logiciel.
|
||||||
|
|
||||||
|
* [Notes](https://listes.univ-paris13.fr/mailman/listinfo/notes) discussions ou questions liées à l'utilisation du logiciel, entraide entre utilisateurs: vous pouvez y intervenir librement (les messages sont modérés pour éviter le spam).
|
||||||
|
|
||||||
|
* [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel) échanges entre développeurs. Abonnez-vous si vous êtes intéressés par le développement du logiciel, souhaitez participer ou poser des questions techniques.
|
||||||
|
|
@ -1,14 +1,11 @@
|
|||||||
|
|
||||||
# Mise à jour de ScoDoc 9
|
|
||||||
|
|
||||||
Il est nécessaire de mettre à jour très fréquemment votre installation ScoDoc.
|
Il est nécessaire de mettre à jour très fréquemment votre installation ScoDoc.
|
||||||
|
|
||||||
|
|
||||||
|
# Mise à jour de ScoDoc 9
|
||||||
|
|
||||||
À partir de ScoDoc 9, les mises à jour sont automatiques. Au besoin, on peut en
|
À partir de ScoDoc 9, les mises à jour sont automatiques. Au besoin, on peut en
|
||||||
lancer une à tout moment avec la commande
|
lancer une à tout moment avec la commande
|
||||||
|
|
||||||
apt update && apt-get upgrade
|
apt update && apt-get upgrade
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -1,104 +1,50 @@
|
|||||||
# Implémentation des parcours du BUT dans ScoDoc
|
# Implémentation des parcours du BUT dans ScoDoc
|
||||||
|
|
||||||
Cette page est *destinée aux développeurs* et à tous ceux qui souhaitent
|
Cette page est *destinée aux développeurs* et à tous ceux qui souhaitent
|
||||||
comprendre le fonctionnement du logiciel. Elle ne concerne que les formations
|
comprendre le fonctionnement du logiciel: ce sont des notes un peu désordonnées
|
||||||
BUT, dites dans ScoDoc "APC" (pour *approches par compétences*).
|
prises au moment de la conception.
|
||||||
|
|
||||||
ScoDoc est livré avec les référentiels de compétences de tous les parcours de
|
ScoDoc est livré avec les référentiels de compétences de tous les parcours de toutes
|
||||||
toutes les spécialités de BUT. En effet, ces référentiels sont nationaux,
|
les spécialités de BUT. En effet, ces référentiels sont nationaux, publiés par
|
||||||
publiés par le ministère (voir
|
le ministère (voir
|
||||||
[https://www.enseignementsup-recherche.gouv.fr/fr/bo/22/Special4/ESRS2211617A.htm](https://www.enseignementsup-recherche.gouv.fr/fr/bo/22/Special4/ESRS2211617A.htm))
|
[https://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/32/3/_Annexe_1_PN_BUT_version_post_CNESER_20210511_18-05-2021-1_1411323.pdf](https://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/32/3/_Annexe_1_PN_BUT_version_post_CNESER_20210511_18-05-2021-1_1411323.pdf))
|
||||||
et ne sont pas susceptibles d'adaptations locales.
|
et ne sont pas susceptibles d'adaptations locales.
|
||||||
|
|
||||||
Nous nous sommes basés sur les versions exportées du logiciel Orébut.
|
Nous nous sommes basés sur les versions exportées du logiciel Orébut.
|
||||||
|
|
||||||
!!! note
|
## Rappel général sur le BUT et ScoDoc
|
||||||
Les objets notés `CommeCeci` sont des modèles (classes SQLAlchemy)
|
Rappel simplifié, se concentrant sur les points utiles pour l'évaluation
|
||||||
implémentés par des tables SQL.
|
et les liens avec le cursus de formation:
|
||||||
|
|
||||||
## Structure des formations
|
- Chaque parcours de BUT est défini par un ensemble de compétences.
|
||||||
|
- Une compétence est décomposée en deux ou trois *niveaux*, chacun constitué de
|
||||||
|
deux UE consécutives (sur semestres pair et impair de la même année
|
||||||
|
scolaire).
|
||||||
|
- Les UE sont des UE "LMD" habituelles; associées à des crédits ECTS,
|
||||||
|
capitalisables. Chaque UE est associée à une note (moyenne d'UE) et une
|
||||||
|
décision de jury (validée, ajournée, ...).
|
||||||
|
|
||||||
Pour les formation en APC, on a d'une part le *programme de formation*, et de
|
Dans le BUT, le référentiel de formation n'est pas fixé nationalement. Une part
|
||||||
l'autre le *référentiel de compétences*.
|
|
||||||
|
|
||||||
Pour le BUT, le référentiel de formation n'est pas fixé nationalement. Une part
|
|
||||||
est publiée (2/3) par le ministère, le reste est défini localement par les
|
est publiée (2/3) par le ministère, le reste est défini localement par les
|
||||||
universités (*adaptation locale*).
|
universités (*adaptation locale*).
|
||||||
|
|
||||||
Les formations ScoDoc (`Formation`) sont constituées de
|
|
||||||
|
|
||||||
- UE : `UniteEns`
|
|
||||||
- Modules (ressources, SAÉ, autres): `Module`
|
|
||||||
|
|
||||||
La formation définit les UE et modules pour l'ensemble
|
|
||||||
des semestres d'un ou plusieurs parcours. De cette façon, on peut utiliser les
|
|
||||||
mêmes éléments dans plusieurs parcours, et grouper les étudiants de plusieurs
|
|
||||||
parcours dans le même semestre si on le souhaite.
|
|
||||||
|
|
||||||
|
|
||||||
## Unités d'enseignement
|
|
||||||
|
|
||||||
Les UE sont des UE "LMD" habituelles; associées à des crédits ECTS,
|
|
||||||
capitalisables. Pour chaque UE on calcule une note (moyenne d'UE) et on attribue
|
|
||||||
une décision de jury (validée, ajournée, ...).
|
|
||||||
|
|
||||||
### ECTS et parcours
|
|
||||||
|
|
||||||
Les ECTS sont toujours associés aux UEs, et non au semestre ou aux modules.
|
|
||||||
|
|
||||||
Dans ScoDoc, il est obligatoire de spécifier le nombre d'ECTS des de chaque UE
|
|
||||||
(sauf les UE bonus qui n'ont jamais d'ECTS).
|
|
||||||
|
|
||||||
Le nombre d'ECTS est généralement fixe, mais il peut varier selon le parcours
|
|
||||||
|
|
||||||
!!! note "ECTS variable selon le parcours"
|
|
||||||
Ce cas a été soulevé à propos du BUT MMI, qui préconiserait par exemple, au S4,
|
|
||||||
une compétence "développer" avec 10 ECTS dans le parcours "Web", et 5 ECTS dans le
|
|
||||||
parcours "Crea".
|
|
||||||
Cette possibilité est prévue pour ScoDoc version 9.4.72
|
|
||||||
Chaque UE a un attribut ECTS qui donne la valeur par défaut. On a aussi une
|
|
||||||
valeur ECTS dans la table d'association `UEParcours`qui lie `UniteEns` et
|
|
||||||
`ApcParcours`.
|
|
||||||
Si cette valeur est présente, l'attribut ECTS de l'UE est ignoré.
|
|
||||||
|
|
||||||
## Modules et parcours
|
|
||||||
|
|
||||||
Les modules: on appelle ici "module" tout dispositif pédagogique évalué, dans le
|
Les modules: on appelle ici "module" tout dispositif pédagogique évalué, dans le
|
||||||
BUT ce sont les *ressources* et les *SAÉ*.
|
BUT ce sont les *ressources* et les *SAÉ*.
|
||||||
|
|
||||||
Chaque module peut être associé à un ou plusieurs parcours, via la table
|
Dans ScoDoc, le programme pédagogique définit les UE et modules pour l'ensemble
|
||||||
d'association `ApcParcours` <-> `Module` (`parcours_modules`, many-to-many).
|
des semestres d'un ou plusieurs parcours. De cette façon, on pourra utiliser les
|
||||||
|
mêmes éléments dans plusieurs parcours, et grouper les étudiants de plusieurs
|
||||||
|
parcours dans le même semestre si on le souhaite.
|
||||||
|
|
||||||
Via *Formation*/*Modification du module*:<br>
|
## Modélisation ScoDoc
|
||||||
<img src="/screens/module_choix_parcours.png" width="50%">
|
|
||||||
|
|
||||||
On peut ainsi vérifier que les parcours couvrent les AC, et faciliter les
|
On a d'une part le *programme de formation*, et de l'autre le *référentiel de
|
||||||
inscriptions des étudiants aux modules (par ex. page présentant les modules
|
compétences*.
|
||||||
auxquels inscrire un groupe).
|
|
||||||
|
|
||||||
### Cas des modules présents dans plusieurs parcours
|
|
||||||
|
|
||||||
Il est fréquent qu'un module peut être utilisé dans plusieurs parcours de la
|
|
||||||
même formation BUT. Il peut contribuer à une UE de tronc commun, ou un
|
|
||||||
sous-ensemble d'UEs. Dans certains spécialités, le coefficient d'un module vers
|
|
||||||
une UE varie selon le parcours: dans ce cas, il faudra créer plusieurs UEs
|
|
||||||
associées au même niveau de compétence, et renseigner les coefficients
|
|
||||||
correspondants. les étudiants seront inscrits à l'une ou l'autre des UEs suivant
|
|
||||||
leur parcours.
|
|
||||||
|
|
||||||
## Coefficients modules / UEs
|
|
||||||
|
|
||||||
Les coefficients sont des réels (non nullables), `ModuleUECoef`.
|
|
||||||
|
|
||||||
Édition via *Formation*/*Édition des coefficients des modules vers les UEs*:<br>
|
|
||||||
<img src="/fig/formation_edit_coefs.png" width="30%">
|
|
||||||
|
|
||||||
## Formation
|
|
||||||
|
|
||||||
|
### Programme de formation
|
||||||
Le programme de formation est constitué des classes suivantes (en BUT et dans
|
Le programme de formation est constitué des classes suivantes (en BUT et dans
|
||||||
tous les types de formation. La notion de "matière" n'est pas utilisée en BUT).
|
tous les types de formation. La notion de "matière" n'est pas utilisée en BUT).
|
||||||
|
|
||||||
- `Formation` (ex: "BUT R&T")
|
- `Formation` (ex: "BUT R&T")
|
||||||
- `UniteEns` (UE, ex: "Administrer les réseaux")
|
- `UniteEns` (UE, ex: "Administrer les réseaux")
|
||||||
- `Modules` (ressources, SAÉs) *<-> `ApcAppCritique`*, *<-> `ApcAnneeParcours`*
|
- `Modules` (ressources, SAÉs) *<-> `ApcAppCritique`*, *<-> `ApcAnneeParcours`*
|
||||||
|
|
||||||
@ -106,17 +52,23 @@ On voit que les modules ont toujours une UE de rattachement. Cependant, en BUT,
|
|||||||
un module peut intervenir dans le calcul des notes de plusieurs UE, via une
|
un module peut intervenir dans le calcul des notes de plusieurs UE, via une
|
||||||
matrice de coefficients.
|
matrice de coefficients.
|
||||||
|
|
||||||
!!! example "Méthodes de Formation"
|
On va aussi rattacher les Modules à un ou plusieurs ApcParcours, de façon à
|
||||||
- `Formation.query_ues_parcour(parcour: ApcParcours)`->(query) les UEs d'un
|
pouvoir vérifier que les parcours couvrent les AC, et à faciliter les
|
||||||
parcours de la formation.
|
inscriptions des étudiants aux modules (par ex. page présentant les modules
|
||||||
|
auxquels inscrire un groupe).
|
||||||
|
|
||||||
## Référentiel de compétences
|
#### Cas des modules présents dans plusieurs parcours
|
||||||
|
|
||||||
Le référentiel de compétences (`ApcReferentielCompetences`) défini les
|
Si un module est utilisé dans plusieurs parcours de la même formation BUT, cela
|
||||||
compétences à valider (décomposées en niveaux) et les parcours BUT
|
ne pose aucun problème, _sauf_ si ce module doit avoir des coefficients (vers
|
||||||
(`ApcParcours`). Il est structuré ainsi:
|
les UEs) différents selon le parcours dans lequel il intervient. Dans ce cas,
|
||||||
|
*il sera conseillé de créer plusieurs versions du module*, que l'on associera
|
||||||
|
aux divers parcours.
|
||||||
|
|
||||||
- `ApcReferentielCompetences`
|
### Référentiel de compétences
|
||||||
|
Le référentiel de compétences est structuré par les classes suivantes:
|
||||||
|
|
||||||
|
- `ApcReferentielCompetences`
|
||||||
- `ApcCompetence`
|
- `ApcCompetence`
|
||||||
- `ApcSituationPro`
|
- `ApcSituationPro`
|
||||||
- `ApcComposanteEssentielle`
|
- `ApcComposanteEssentielle`
|
||||||
@ -128,98 +80,36 @@ compétences à valider (décomposées en niveaux) et les parcours BUT
|
|||||||
|
|
||||||
Notons:
|
Notons:
|
||||||
|
|
||||||
- Le lien (*one-to-one*) entre `UniteEns`(UE) et Niveau de compétence (`ApcNiveau`).
|
- Le lien entre UE et Niveau de compétence (`ApcNiveau`).
|
||||||
|
|
||||||
- Le lien entre Compétence et Année de Parcours à travers la table
|
- Le lien à entre Compétence et Année de Parcours à travers la table
|
||||||
(*many-to-many*) `ApcParcoursNiveauCompetence` qui indique le niveau ce
|
(*many-to-many*) `ApcParcoursNiveauCompetence` qui indique le niveau ce
|
||||||
compétence concerné.
|
compétence concerné.
|
||||||
|
|
||||||
- Le lien *many-to-many* UE et `Parcours`, qui permet de spécifier les ECTS de
|
- Le lien entre les apprentissages critiques (`ApcAppCritique`) et les
|
||||||
l'UE dans un parcours donné et est utilisé pour vérifier la formation
|
|
||||||
(couverture de tous les niveau en suivant un parcours donné, somme des ECTS).
|
|
||||||
|
|
||||||
- Le lien entre les apprentissages critiques (`ApcAppCritique`) et les
|
|
||||||
modules, qui permet d'établir les critères d'évaluation de chaque module.
|
modules, qui permet d'établir les critères d'évaluation de chaque module.
|
||||||
|
|
||||||
### Niveaux de compétences et UEs
|
### FormSemestres
|
||||||
|
|
||||||
Une compétence est constituée de plusieurs niveaux (`ApcNiveau`), typiquement 2
|
|
||||||
ou 3. En BUT, chaque niveau correspond à deux UEs sur deux semestres de la même
|
|
||||||
année d'un parcours.
|
|
||||||
|
|
||||||
- Chaque parcours de BUT est défini par un ensemble de compétences.
|
|
||||||
|
|
||||||
- Une compétence est décomposée en deux ou trois *niveaux*, chacun constitué de
|
|
||||||
deux UE consécutives (sur semestres pair et impair de la même année
|
|
||||||
scolaire).
|
|
||||||
|
|
||||||
Lors des jurys, on enregistre les validations d'UE. Les UE sont liées à des
|
|
||||||
niveaux de compétences. Lorsque les deux UEs sont validées, le niveau est
|
|
||||||
validé: c'est le RCUE (*regroupement cohérents d'UEs*).
|
|
||||||
|
|
||||||
Pour valider un diplôme de BUT, il faut avoir validé tous les niveaux de toutes
|
|
||||||
les compétences du parcours choisi.
|
|
||||||
|
|
||||||
Une UE est associée à un et un seul niveau de compétence. Elle peut être
|
|
||||||
associée à un nombre quelconque de parcours.
|
|
||||||
|
|
||||||
Remarques:
|
|
||||||
|
|
||||||
- Certains niveaux (et donc UEs) sont présents dans tous les parcours: ce sont
|
|
||||||
les niveaux de *tronc commun*.
|
|
||||||
- Une UE associée à un niveau peut avoir des ECTS différents selon le parcours
|
|
||||||
(voir [note ci-dessus](#ects-et-parcours))
|
|
||||||
- Dans certaines spécialités, les coefficients des modules vers la même UE
|
|
||||||
peuvent varier selon le parcours. Dans ce cas, on créera une UE par parcours
|
|
||||||
(UE associée au même niveau), afin de pouvoir spécifier des coefficients
|
|
||||||
distincts.
|
|
||||||
|
|
||||||
#### Vérifications effectués par ScoDoc
|
|
||||||
|
|
||||||
En plus des contraintes strictes liées aux relations modélisées,
|
|
||||||
ScoDoc vérifiera que
|
|
||||||
|
|
||||||
- Dans une formation, chaque niveau d'un parcours soit associé à deux et
|
|
||||||
seulement deux UEs de ce parcours de la même année scolaires (BUT1, BUT2 ou
|
|
||||||
BUT3).
|
|
||||||
- Le nombre total d'ECTS de chaque parcours soit bien 180 (3 années de 60 ECTS).
|
|
||||||
- Toutes les UEs sont bien associée à un niveau.
|
|
||||||
|
|
||||||
|
|
||||||
## FormSemestres
|
|
||||||
|
|
||||||
La formation est mise en œuvre dans des `FormSemestre` (date début, fin,
|
La formation est mise en œuvre dans des `FormSemestre` (date début, fin,
|
||||||
enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant,
|
enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant,
|
||||||
évaluations, ...).
|
évaluations, ...).
|
||||||
|
|
||||||
- `FormSemestre`
|
- `FormSemestre`
|
||||||
- `ModuleImpl`
|
- `ModuleImpl`
|
||||||
- `Evaluation`
|
- `Evaluation`
|
||||||
|
|
||||||
On a vu que la formation pouvait comporter plusieurs parcours. Un `FormSemestre`
|
### Inscriptions des étudiants
|
||||||
peut implémenter un ou plusieurs parcours. On a en effet une table d'association
|
|
||||||
Parcours <-> FormSemestre (`parcours_formsemestre`, many-to-many).
|
|
||||||
|
|
||||||
Via *Semestre*/*Modifier le semestre*:<br>
|
|
||||||
<img src="/fig/formsemestre_choix_parcours.png" width="50%">
|
|
||||||
|
|
||||||
!!! example "Méthodes de FormSemestre"
|
|
||||||
- `FormSemestre.query_ues(with_sport=False) ->` liste des UEs de ce semestres
|
|
||||||
(tous parcours confondus).
|
|
||||||
- `FormSemestre.query_ues_parcours_etud(etudid: int) -> `(query) UEs que suit
|
|
||||||
l'étudiant dans ce semestre BUT en fonction du parcours dans lequel il est
|
|
||||||
inscrit.
|
|
||||||
|
|
||||||
## Inscriptions des étudiants
|
|
||||||
|
|
||||||
Les étudiants sont inscrits:
|
Les étudiants sont inscrits:
|
||||||
|
|
||||||
- à des `FormSemestre` (`FormSemestreInscription`, avec:
|
- dans un `FormSemestre` (`FormSemestreInscription`, avec état (`I`, `D`,
|
||||||
- un état, "inscrit", "démission" ou "défaillant";
|
`DEF`) et étape Apogée)
|
||||||
- un `ApcParcours`;
|
- dans un ModuleImpl (`ModuleImplInscription`)
|
||||||
- un code étape Apogée.
|
- et, pour le BUT, dans un `ApcParcours`: l'inscription au formsemestre
|
||||||
|
`FormSemestreInscription` comporte:
|
||||||
|
|
||||||
- dans un ModuleImpl (`ModuleImplInscription`)
|
- l'état (`I`, `D`, `DEF`);
|
||||||
|
- l'étape Apogée;
|
||||||
|
- un `ApcParcours`.
|
||||||
|
|
||||||
Un formsemestre est associé à un ensemble de parcours. L'étudiant peut être
|
Un formsemestre est associé à un ensemble de parcours. L'étudiant peut être
|
||||||
inscrit à l'un d'entre eux. Certaines formations commencent par une année de
|
inscrit à l'un d'entre eux. Certaines formations commencent par une année de
|
||||||
@ -227,77 +117,43 @@ tronc commun, durant laquelle l'étudiant n'a pas encore choisi son parcours. On
|
|||||||
considérera que si l'étudiant n'est pas inscrit à un parcours, il est
|
considérera que si l'étudiant n'est pas inscrit à un parcours, il est
|
||||||
implicitement inscrit à tous les parcours du semestre.
|
implicitement inscrit à tous les parcours du semestre.
|
||||||
|
|
||||||
## Associations (nouvelles pour le BUT)
|
### Associations (nouvelles pour le BUT):
|
||||||
|
|
||||||
Pour la gestion des parcours BUT, on a introduit les associations suivantes,
|
Pour la gestion des parcours BUT, il faut introduire les associations suivantes,
|
||||||
qui n'existaient pas dans ScoDoc 9.2:
|
qui n'existent pas dans ScoDoc 9.2:
|
||||||
|
|
||||||
- `UniteEns` }o--o{ ensemble de `ApcParcours` : choix sur la page `ue_edit`
|
- UE <-> `ApcNiveau` : choix sur la page `ue_edit`
|
||||||
- `UniteEns` }o--|| `ApcNiveau` : choix sur la page `ue_edit`
|
- `Module` ||--o{ ensemble de `ApcParcours`
|
||||||
- `Module` ||--o{ ensemble de `ApcParcours`
|
- `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit`
|
||||||
- `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit`
|
- `FormSemestre` ||--o{ `ApcParcours` : choix sur la page
|
||||||
- `FormSemestre` ||--o{ `ApcParcours` : choix sur la page
|
|
||||||
`formsemestre_editwithmodules`
|
`formsemestre_editwithmodules`
|
||||||
- `FormSemestreInscription` ||--|| `ApcParcours` : inscription au parcours, géré
|
- `FormSemestreInscription` ||--|| `ApcParcours` : inscription au parcours, page à créer.
|
||||||
via la partition `Parcours`.
|
|
||||||
|
|
||||||
```mermaid
|
### Cas d'usage
|
||||||
erDiagram
|
|
||||||
UniteEns }o--o{ ApcParcours : UEParcours
|
|
||||||
UniteEns }o--|| ApcNiveau : ""
|
|
||||||
Formation ||--o{ UniteEns : ""
|
|
||||||
FormSemestre }o--|| Formation : ""
|
|
||||||
UniteEns }o--|{ Module : ModuleUECoef
|
|
||||||
```
|
|
||||||
|
|
||||||
## Cas d'usage
|
#### Niveau de compétence d'un formsemestre
|
||||||
|
|
||||||
### UEs à afficher sur les bulletins individuels
|
|
||||||
|
|
||||||
#### En ScoDoc 9.3.55 (ssi ref. comp. associé)
|
|
||||||
|
|
||||||
On part de `ResultatsSemestreBUT.ues`, qui est la version cachée de
|
|
||||||
`formsemestre.query_ues()` (toutes les UE du semestre) que l'on filtre
|
|
||||||
avec `ResultatsSemestreBUT.etud_ues_ids(etudid)`: liste des id d'UE auxquelles
|
|
||||||
l'étudiant est inscrit (sans bonus).
|
|
||||||
|
|
||||||
`etud_ues_ids()` accède à `ResultatsSemestreBUT.ues_inscr_parcours_df`, la
|
|
||||||
matrice d'inscriptions `(etuds, ue)`.
|
|
||||||
|
|
||||||
### UEs à afficher sur les tableaux récap. de semestre
|
|
||||||
|
|
||||||
TODO
|
|
||||||
|
|
||||||
### UEs à valider en jury BUT
|
|
||||||
|
|
||||||
TODO
|
|
||||||
|
|
||||||
### Niveau de compétence d'un formsemestre
|
|
||||||
|
|
||||||
Le formsemestre est lié à un ensemble d'`ApcParcours`.
|
Le formsemestre est lié à un ensemble d'`ApcParcours`.
|
||||||
|
|
||||||
La liste des niveaux (`ApcNiveau`) associés aux UEs:
|
La liste des niveaux (`ApcNiveau`) associés aux UEs:
|
||||||
|
```
|
||||||
```py
|
|
||||||
[ ue.niveau_competence
|
[ ue.niveau_competence
|
||||||
for ue in formsemestre.query_ues() if ue.niveau_competence ]
|
for ue in formsemestre.query_ues() if ue.niveau_competence ]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Inscription d'un étudiant aux ModuleImpls
|
#### Inscription d'un étudiant aux ModuleImpls
|
||||||
|
|
||||||
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
|
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
|
||||||
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
|
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
|
||||||
|
|
||||||
- Créer des groupes de parcours (via `edit_partition_form`)
|
- Créer des groupes de parcours (via `edit_partition_form`)
|
||||||
|
|
||||||
- Inscrire les étudiants d'un groupe à tous les modimpls du parcours:
|
- Inscrire les étudiants d'un groupe à tous les modimpls du parcours:
|
||||||
Les modimpls d'un parcours sont donnés par la méthode `modimpls_parcours` de
|
Les modimpls d'un parcours sont donnés par la méthode `modimpls_parcours` de
|
||||||
`FormSemestre`.
|
`FormSemestre`.
|
||||||
|
|
||||||
### Comment ScoDoc détermine-t-il les modules d'un parcours ?
|
|
||||||
|
|
||||||
|
#### Comment ScoDoc détermine-t-il les modules d'un parcours ?
|
||||||
Un parcours étant associé à des compétences, et les niveaux compétences à des
|
Un parcours étant associé à des compétences, et les niveaux compétences à des
|
||||||
UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UEs
|
UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UE
|
||||||
associées à un parcours.
|
associées à un parcours.
|
||||||
|
|
||||||
Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC
|
Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC
|
||||||
@ -308,31 +164,30 @@ de ce semestre ayant des AC communs avec ceux des niveaux de compétences
|
|||||||
associés aux UE du semestre (sic). Notons que les niveaux de compétences sont
|
associés aux UE du semestre (sic). Notons que les niveaux de compétences sont
|
||||||
annuels, mais que les `ModuleImpl` sont semestriels.
|
annuels, mais que les `ModuleImpl` sont semestriels.
|
||||||
|
|
||||||
### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs
|
#### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs
|
||||||
|
|
||||||
Vérification utile en fin de formation.
|
Vérification utile en fin de formation.
|
||||||
|
|
||||||
#### En fin de formation, pour un étudiant
|
##### En fin de formation, pour un étudiant
|
||||||
|
|
||||||
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
|
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
|
||||||
facilement vérifier que les AC ont été couverts:
|
facilement vérifier que les AC ont été couverts:
|
||||||
|
|
||||||
- Lister les `ModuleImpl` auxquels l'étudiant a été inscrit dans ses semestres
|
- Lister les `ModuleImpl` auxquels l'étudiant a été inscrit dans ses semestres
|
||||||
(S1 à S6);
|
(S1 à S6);
|
||||||
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
|
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
|
||||||
réussite);
|
réussite);
|
||||||
- Comparer aux AC du parcours tels que décrits dans le référentiel de compétence.
|
- Comparer aux AC du parcours tels que décrits dans le référentiel de compétence.
|
||||||
|
|
||||||
#### Au moment de la définition d'une formation
|
##### Au moment de la définition d'une formation
|
||||||
|
|
||||||
Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau
|
Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau
|
||||||
(année). On pourra vérifier que les `Module`s de chaque année suffisent à
|
(année). On pourra vérifier que les `Module`s de chaque année suffisent à
|
||||||
couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
|
couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
|
||||||
on ne peut pas aller plus loin.
|
on ne peut pas aller plus loin.
|
||||||
|
|
||||||
### Lister les UEs d'un parcours d'une formation
|
#### Lister les UEs d'un parcours d'une formation
|
||||||
|
```
|
||||||
```py
|
|
||||||
# Soit un parcours:
|
# Soit un parcours:
|
||||||
parcour = formation.referentiel_competence.parcours.filter_by(code="ROM").first()
|
parcour = formation.referentiel_competence.parcours.filter_by(code="ROM").first()
|
||||||
# Listes UEs de ce parcours:
|
# Listes UEs de ce parcours:
|
||||||
@ -341,7 +196,7 @@ formation.query_ues_parcour(parcour)
|
|||||||
formation.query_ues_parcour(parcour).filter_by(semestre_idx=2)
|
formation.query_ues_parcour(parcour).filter_by(semestre_idx=2)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Lister les regroupements d'UE d'un étudiant (RCUE)
|
#### Lister les regroupements d'UE d'un étudiant (RCUE)
|
||||||
|
|
||||||
Pour une année donnée: l'étudiant est inscrit dans ScoDoc soit dans le semestre
|
Pour une année donnée: l'étudiant est inscrit dans ScoDoc soit dans le semestre
|
||||||
impair, soit pair, soit les deux (il est rare mais pas impossible d'avoir une
|
impair, soit pair, soit les deux (il est rare mais pas impossible d'avoir une
|
||||||
@ -358,16 +213,16 @@ arrêt temporaire du cursus).
|
|||||||
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
|
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
|
||||||
cursus (BUT1, BUT2 ou BUT3).
|
cursus (BUT1, BUT2 ou BUT3).
|
||||||
|
|
||||||
### Déterminer si un étudiant peut passer dans l'année suivante
|
#### Déterminer si un étudiant peut passer dans l'année suivante
|
||||||
|
|
||||||
Note: on peut bien sûr toujours forcer le passage, pour traiter les cas
|
Note: on peut bien sûr toujours forcer le passage, pour traiter les cas
|
||||||
particuliers (décision de jury manuelle).
|
particuliers (décision de jury manuelle).
|
||||||
|
|
||||||
**Rappel:** le passage est de droit si
|
**Rappel:** le passage est de droit si
|
||||||
|
|
||||||
- [x] plus de la moitié des niveaux de compétences de l'année sont validés
|
- [x] plus de la moitié des niveaux de compétences de l'année sont validés
|
||||||
- [x] aucun regroupement d'UE (niveau de compétence) de l'année < 8 /20
|
- [x] aucun regroupement d'UE (niveau de compétence) de l'année < 8 /20
|
||||||
- [x] pour le passage en S5, avoir validé toutes les UE du BUT 1 (S1 et S2).
|
- [x] pour le passage en S5, avoir validé toutes les UE du BUT 1 (S1 et S2).
|
||||||
|
|
||||||
Il faut donc:
|
Il faut donc:
|
||||||
|
|
||||||
@ -380,22 +235,35 @@ Il faut donc:
|
|||||||
relevant du même référentiel de compétences dans lesquels a été inscrit
|
relevant du même référentiel de compétences dans lesquels a été inscrit
|
||||||
l'étudiant, et vérifier que les UE de S1 et S2 sont validées.
|
l'étudiant, et vérifier que les UE de S1 et S2 sont validées.
|
||||||
|
|
||||||
|
|
||||||
|
#### Cas particulier: formations dont le nombre d'ECTS varie selon le parcours
|
||||||
|
|
||||||
|
Ce cas a été soulevé à propos du BUT MMI, qui préconiserait par exemple, au S4,
|
||||||
|
une compétence développer avec 10 ECTS dans le parcours "web", et 5 ECTS dans le
|
||||||
|
parcours "crea".
|
||||||
|
|
||||||
|
Si on veut pouvoir utiliser la même formation, et éventuellement mélanger les
|
||||||
|
étudiants des différents parcours dans le même `FormSemestre` (ce qui
|
||||||
|
simplifierait la gestion des modules communs), il faut modifier la modélisation:
|
||||||
|
Les ECTS sont actuellement des attributs de UEs.
|
||||||
|
Il faudrait avoir une association `UniteEns` }o..o{ `ApcParcours` qui contienne
|
||||||
|
les valeurs des ECTS.
|
||||||
|
|
||||||
## Enregistrement des validations de compétences
|
## Enregistrement des validations de compétences
|
||||||
|
|
||||||
### Rappel: validations en formations classiques
|
### Rappel: validations en formations classiques
|
||||||
|
|
||||||
Pour toutes les formations, ScoDoc enregistre les validations de semestres et
|
Pour toutes les formations, ScoDoc enregistre les validations de semestres et
|
||||||
d'UE, via la classe `ScolarFormSemestreValidation`, dont les instances stockent:
|
d'UE, via la classe `ScolarFormSemestreValidation`, dont les instances stockent:
|
||||||
|
|
||||||
- `etudid, formsemestre_id, code, event_date`
|
- `etudid, formsemestre_id, code, event_date`
|
||||||
|
|
||||||
et pour les validations de semestres:
|
et pour les validations de semestres:
|
||||||
|
|
||||||
- `assidu, compense_formsemestre_id`
|
- `assidu, compense_formsemestre_id`
|
||||||
|
|
||||||
ou pour les validations d'UE
|
ou pour les validations d'UE
|
||||||
|
|
||||||
- `ue_id, is_external`
|
- `ue_id, is_external`
|
||||||
|
|
||||||
Les codes sont définis dans `sco_codes_parcours.py`, avec les valeurs: `ADC,
|
Les codes sont définis dans `sco_codes_parcours.py`, avec les valeurs: `ADC,
|
||||||
ADJ, ADM, AJ, ATB, ATJ, ATT, CMP, DEF, NAR, RAT` (voir [Gestion des Jurys
|
ADJ, ADM, AJ, ATB, ATJ, ATT, CMP, DEF, NAR, RAT` (voir [Gestion des Jurys
|
||||||
@ -409,34 +277,33 @@ même année de parcours associées à la même compétence.
|
|||||||
|
|
||||||
On va stocker les validation des RCUE dans `ApcValidationRCUE`:
|
On va stocker les validation des RCUE dans `ApcValidationRCUE`:
|
||||||
|
|
||||||
- `etudid`
|
- `etudid`
|
||||||
- `formsemestre_id` (dernier déclenchant cette validation).
|
- `formsemestre_id` (dernier déclenchant cette validation).
|
||||||
- `ue_1`, `ue_2` : les deux UE associées à ce niveau.
|
- `ue_1`, `ue_2` : les deux UE associées à ce niveau.
|
||||||
- `ApcParcours` : optionnel, le parcours dans lequel se trouve la compétence.
|
- `ApcParcours` : optionnel, le parcours dans lequel se trouve la compétence.
|
||||||
- `datetime` de la validation.
|
- `datetime` de la validation.
|
||||||
- `code` de validation: `ADM`, `CMP`, `AJ`.
|
- `code` de validation: `ADM`, `CMP`, `AJ`.
|
||||||
|
|
||||||
Rappel: chaque UE est associé à un niveau de compétence
|
Rappel: chaque UE est associé à un niveau de compétence
|
||||||
(`ue.niveau_competence`), qui doit ici être le même.
|
(`ue.niveau_competence`), qui doit ici être le même.
|
||||||
|
|
||||||
### Validation des années du BUT
|
### Validation des années du BUT
|
||||||
|
|
||||||
Pour le BUT, ScoDoc enregistre les validations d'années `ApcValidationAnnee`
|
Pour le BUT, ScoDoc enregistre les validations d'années `ApcValidationAnnee`
|
||||||
|
|
||||||
- `etudid`
|
- `etudid`
|
||||||
- `ordre`: 1, 2, 3 pour BUT1, BUT2, BUT3.
|
- `ordre`: 1, 2, 3 pour BUT1, BUT2, BUT3.
|
||||||
- `formsemestre_id` (dernier déclenchant cette validation, None si extérieure)
|
- `formsemestre_id` (dernier déclenchant cette validation, None si extérieure)
|
||||||
- `annee_scolaire` (int, année de début, eg 2021 pour "2021-2022")
|
- `annee_scolaire` (int, année de début, eg 2021 pour "2021-2022")
|
||||||
- `datetime` de la validation.
|
- `datetime` de la validation.
|
||||||
- `code` de validation: `PASD`, `PAS1NCI`, `RED`, `REO`, `DEM`, `EXC`, `ABAN`, `ABL`.
|
- `code` de validation: `PASD`, `PAS1NCI`, `RED`, `REO`, `DEM`, `EXC`, `ABAN`, `ABL`.
|
||||||
|
|
||||||
|
|
||||||
### Codes préconisés par l'AMUE pour le BUT
|
### Codes préconisés par l'AMUE pour le BUT
|
||||||
|
|
||||||
On associe lors du jury un code de décision:
|
On associe lors du jury un code de décision:
|
||||||
|
|
||||||
- À chaque UE: `VAL`, `COMP`, `AJ`, `UESBL`.
|
- À chaque UE: `VAL`, `COMP`, `AJ`, `UESBL`.
|
||||||
- À chaque niveau de compétence (RCUE): `VAL`, `AJ`, `CODJ`.
|
- À chaque niveau de compétence (RCUE): `VAL`, `AJ`, `CODJ`.
|
||||||
- À chaque année:
|
- À chaque année:
|
||||||
|
|
||||||
- `PASD`: Passage en Année Supérieure de Droit (+ de 50% des UE VAL et RCUE Ajourné(s) >=8)
|
- `PASD`: Passage en Année Supérieure de Droit (+ de 50% des UE VAL et RCUE Ajourné(s) >=8)
|
||||||
- `PAS1NCI`: Passage en Année Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE<8)
|
- `PAS1NCI`: Passage en Année Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE<8)
|
||||||
@ -446,27 +313,28 @@ On associe lors du jury un code de décision:
|
|||||||
- `EXC`: EXClusion, décision réservée à des décisions disciplinaires
|
- `EXC`: EXClusion, décision réservée à des décisions disciplinaires
|
||||||
- `ABAN`: ABANdon constaté (sans lettre de démission)
|
- `ABAN`: ABANdon constaté (sans lettre de démission)
|
||||||
- `ABL`: Année BLanchie
|
- `ABL`: Année BLanchie
|
||||||
- Au diplôme: `ADM`
|
- Au diplôme: `ADM`
|
||||||
|
|
||||||
|
|
||||||
#### Correspondance avec les codes de ScoDoc
|
#### Correspondance avec les codes de ScoDoc
|
||||||
|
|
||||||
ScoDoc utilise des codes [documentés ici](GestionJury.md).
|
ScoDoc utilise des codes [documentés ici](GestionJury.md).
|
||||||
|
|
||||||
- Pour les semestres: `ADM`, `ADC`, `ADJ`, `ATT`, `ATB`, `ATJ`, `AJ`, `NAR`. En
|
- Pour les semestres: `ADM`, `ADC`, `ADJ`, `ATT`, `ATB`, `ATJ`, `AJ`, `NAR`. En
|
||||||
BUT, pas besoin de codes semestriels. On ajoutera un code `JSD` (*Jury Sans
|
BUT, pas besoin de codes semestriels. On ajoutera un code `JSD` (*Jury Sans
|
||||||
Décision*) pour simplement indiquer que le jury s'est tenu. Ce code ne sera pas
|
Décision*) pour simplement indiquer que le jury s'est tenu. Ce code ne sera pas
|
||||||
exporté vers Apogée.
|
exporté vers Apogée.
|
||||||
|
|
||||||
- Pour les UEs: **codes d'état d'UE**
|
- Pour les UEs: **codes d'état d'UE**
|
||||||
|
|
||||||
ScoDoc | BUT AMUE |
|
ScoDoc | BUT AMUE |
|
||||||
----------|-----|-----
|
----------|-----|-----
|
||||||
ADM | VAL | UE validée automatiquement |
|
ADM | VAL | UE validée automatiquement |
|
||||||
CMP | COMP| UE validée par compensation|
|
CMP | COMP| UE validée par compensation|
|
||||||
AJ | AJ | UE ajournée (échec) |
|
AJ | AJ | UE ajournée (échec) |
|
||||||
| UESBL | blanchissement (non dispo en ScoDoc 9) |
|
- | UESBL | blanchissement (non dispo en ScoDoc 9) |
|
||||||
|
|
||||||
- Pour les RCUE:
|
- Pour les RCUE:
|
||||||
|
|
||||||
ScoDoc | BUT AMUE |
|
ScoDoc | BUT AMUE |
|
||||||
----------|-----|-----
|
----------|-----|-----
|
||||||
@ -477,12 +345,13 @@ AJ | AJ | RCUE ajournée (échec) |
|
|||||||
Rappel: les codes exportés vers Apogée sont configurables (table de transcodage dans la
|
Rappel: les codes exportés vers Apogée sont configurables (table de transcodage dans la
|
||||||
config générale).
|
config générale).
|
||||||
|
|
||||||
|
|
||||||
## Diagramme de classes
|
## Diagramme de classes
|
||||||
|
|
||||||
(dessin réalisé automatiquement en Mermaid; toutes les classes ScoDoc ne
|
Juste pour rire, car ce diagramme est quasiment inexploitable (dessin réalisé
|
||||||
figurent pas ici).
|
automatiquement en Mermaid).
|
||||||
|
|
||||||
```mermaid
|
``` mermaid
|
||||||
erDiagram
|
erDiagram
|
||||||
FormSemestre ||--|{ ModuleImpl : contient
|
FormSemestre ||--|{ ModuleImpl : contient
|
||||||
ModuleImpl ||--o{ Evaluation : contient
|
ModuleImpl ||--o{ Evaluation : contient
|
||||||
@ -496,8 +365,6 @@ erDiagram
|
|||||||
str code
|
str code
|
||||||
}
|
}
|
||||||
|
|
||||||
ApcReferentielCompetences ||--|{ Formation : ""
|
|
||||||
|
|
||||||
Etudiant {
|
Etudiant {
|
||||||
str nom
|
str nom
|
||||||
}
|
}
|
||||||
@ -519,7 +386,7 @@ erDiagram
|
|||||||
ApcCompetence ||--o{ ApcNiveau : ""
|
ApcCompetence ||--o{ ApcNiveau : ""
|
||||||
ApcCompetence ||--o{ ApcSituationPro : ""
|
ApcCompetence ||--o{ ApcSituationPro : ""
|
||||||
ApcCompetence ||--o{ ApcComposanteEssentielle : ""
|
ApcCompetence ||--o{ ApcComposanteEssentielle : ""
|
||||||
ApcNiveau ||..o{ UE : ""
|
ApcNiveau }o..|| UE : "optionnel"
|
||||||
ApcNiveau ||--o{ ApcAppCritique : ""
|
ApcNiveau ||--o{ ApcAppCritique : ""
|
||||||
ApcAppCritique }o..o{ Module : "optionnel"
|
ApcAppCritique }o..o{ Module : "optionnel"
|
||||||
|
|
||||||
@ -527,19 +394,12 @@ erDiagram
|
|||||||
ApcParcours ||--o{ ApcAnneeParcours : ""
|
ApcParcours ||--o{ ApcAnneeParcours : ""
|
||||||
|
|
||||||
ApcAnneeParcours {
|
ApcAnneeParcours {
|
||||||
int ordre "année BUT"
|
int ordre
|
||||||
}
|
}
|
||||||
|
|
||||||
ApcCompetence }o--o{ ApcAnneeParcours : "ApcParcoursNiveauCompetence (1,2,3)"
|
ApcCompetence }o--o{ ApcAnneeParcours : "ApcParcoursNiveauCompetence (1,2,3)"
|
||||||
|
|
||||||
Module }o--o{ ApcParcours : "parcours_modules"
|
Module }o--o{ ApcParcours : "parcours_modules"
|
||||||
FormSemestre }o--o{ ApcParcours : "parcours_formsemestre"
|
FormSemestre }o--o{ ApcParcours : "parcours_formsemestre"
|
||||||
UE }o--o{ ApcParcours : "avec en option ECTS"
|
UE }o..o{ ApcParcours : "pour les ECTS"
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Informations pour les développeurs](GuideDeveloppeurs.md)
|
|
||||||
- [API ScoDoc 9](ScoDoc9API.md)
|
|
||||||
- [Le Bachelor Universitaire de Technologie (BUT)](BUT.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
11
docs/ModulesMalus.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
# Notes de malus
|
||||||
|
Il est fréquent d'introduire des pénalités ou *malus* sur les moyennes calculées à partir des notes. Par exemple, dans certains établissements, l'absence de l'étudiant à des activités obligatoires peut entrainer des points de pénalités. Inversement, certaines activités facultatives pourraient donner lieu à des bonifications.
|
||||||
|
|
||||||
|
Pour gérer cela ScoDoc propose de déclarer des modules de *malus*: les notes de malus sont directement *soustraites* à la moyenne générale. Contrairement aux notes ordinaires dans ScoDoc, les notes de malus sont toujours comprises entre -20 et +20. Une note de malus de 1 va diminuer la moyenne de l'UE de 1. Une note négative augmenterait cette moyenne. Les moyennes d'UE sont toujours comprises entre 0 et 20: si l'application du malus donne une note supérieure à 20 (ou inférieure à zéro), elle est ramenée à 20 (ou à zéro).
|
||||||
|
|
||||||
|
Lors de la création d'un module dans un programme pédagogique, on peut spécifier son type. Il est aussi possible de créer directement un module malus par UE du programme, via le lien "Ajouter des modules de malus dans chaque UE" en bas du programme.
|
||||||
|
|
||||||
|
Une fois le module créé (et ajouté à un semestre), on peut y déclarer une évaluation et saisir les notes de bonus/malus.
|
||||||
|
Ces notes sont toujours *à prise en compte immédiate*, il n'est donc pas nécessaire de saisir des notes de malus pour tous les étudiants.
|
||||||
|
|
@ -1,50 +1,37 @@
|
|||||||
|
|
||||||
# Paramétrage des bulletins de notes
|
# Paramétrage des bulletins de notes
|
||||||
|
Ces réglages permettent de configurer la présentation des relevés de notes au format PDF.
|
||||||
Ces réglages permettent de configurer la présentation des relevés de notes au
|
|
||||||
format PDF.
|
|
||||||
|
|
||||||
Le bulletin est constitué de plusieurs zones:
|
Le bulletin est constitué de plusieurs zones:
|
||||||
|
|
||||||
* Le titre;
|
* Le titre;
|
||||||
* le tableau des notes;
|
* le tableau des notes;
|
||||||
* les absences et appréciations (immédiatement sous le tableau des notes; les
|
* les absences et appréciations (immédiatement sous le tableau des notes; les absences ne sont mentionnés que si la case "Indiquer les absences sur les bulletins" est cochée);
|
||||||
absences ne sont mentionnés que si la case "Indiquer les absences sur les
|
* la situation de l'étudiant (inscription, décision de jury, validations d'UE);
|
||||||
bulletins" est cochée);
|
* la signature de gauche et celle de droite;
|
||||||
* la situation de l'étudiant (inscription, décision de jury, validations d'UE);
|
* le pied de page.
|
||||||
* la signature de gauche et celle de droite;
|
|
||||||
* le pied de page.
|
Le contenu et la présentation des zones titre, situation et signatures sont paramétrables à l'aide de formats utilisant un balisage XML assez simple.
|
||||||
|
|
||||||
Le contenu et la présentation des zones titre, situation et signatures sont
|
|
||||||
paramétrables à l'aide de formats utilisant un balisage XML assez simple.
|
|
||||||
|
|
||||||
## Marges et position du pied de page
|
## Marges et position du pied de page
|
||||||
|
Les bulletins sont formattés pour du papier A4.
|
||||||
|
|
||||||
Les bulletins sont formatés pour du papier A4.
|
Les marges sont réglables via les valeurs dans la section "Marges additionnelles des bulletins". Ces valeurs s'ajoutent aux marges par défaut qui sont assez étroites.
|
||||||
|
|
||||||
Les marges sont réglables via les valeurs dans la section "Marges additionnelles
|
Le pied de page (*Edité par ScoDoc le ...*) n'est pas affecté par le réglage des marges, et est positionné à l'aide des paramètres "Position horizontale du pied de page pdf" (resp. verticale) dans la section "Mise en forme des documents PDF". Ces valeurs affectent tous les documents PDF générés par ScoDoc.
|
||||||
des bulletins". Ces valeurs s'ajoutent aux marges par défaut qui sont assez
|
|
||||||
étroites.
|
|
||||||
|
|
||||||
Le pied de page (*Edité par ScoDoc le ...*) n'est pas affecté par le réglage des
|
|
||||||
marges, et est positionné à l'aide des paramètres "Position horizontale du pied
|
|
||||||
de page pdf" (resp. verticale) dans la section "Mise en forme des documents
|
|
||||||
PDF". Ces valeurs affectent tous les documents PDF générés par ScoDoc.
|
|
||||||
|
|
||||||
## Valeurs remplacées
|
## Valeurs remplacées
|
||||||
|
Dans les formats, les balises de la forme `%(X)s` sont remplacées par la valeur (texte) de la variable X si elle existe. Les variables définies apportent différentes informations:
|
||||||
|
|
||||||
Dans les formats, les balises de la forme `%(X)s` sont remplacées par la valeur
|
|
||||||
(texte) de la variable X si elle existe. Les variables définies apportent
|
|
||||||
différentes informations:
|
|
||||||
|
|
||||||
### Préférences
|
### Préférences
|
||||||
|
Toutes les préférences pour le semestre considéré (ou définies globalement) sont utilisables par leur nom.
|
||||||
|
Voir la liste complète sur [NomsPreferences](NomsPreferences.md).
|
||||||
|
|
||||||
Toutes les préférences pour le semestre considéré (ou définies globalement) sont
|
|
||||||
utilisables par leur nom. Voir la liste complète sur
|
|
||||||
[NomsPreferences](NomsPreferences.md).
|
|
||||||
|
|
||||||
### Informations sur le semestre
|
### Informations sur le semestre
|
||||||
|
|
||||||
Variable | Valeur
|
Variable | Valeur
|
||||||
---------|-------
|
---------|-------
|
||||||
titre_num | Le titre du semestre
|
titre_num | Le titre du semestre
|
||||||
@ -55,15 +42,14 @@ date_debut | 01/09/2008
|
|||||||
date_fin | 05/07/2009
|
date_fin | 05/07/2009
|
||||||
responsable | Nom du responsable du semestre (dir. des études)
|
responsable | Nom du responsable du semestre (dir. des études)
|
||||||
|
|
||||||
### Informations sur l'étudiant
|
|
||||||
|
|
||||||
|
### Informations sur l'étudiant
|
||||||
Variable | Valeur (exemple)
|
Variable | Valeur (exemple)
|
||||||
---------|-------
|
---------|-------
|
||||||
nom| DUPONT
|
nom| DUPONT
|
||||||
prenom| PIERRE
|
prenom| PIERRE
|
||||||
sexe| M.
|
sexe| M.
|
||||||
nomprenom| M. Pierre DUPONT (civilité et nom en usage à l'université)
|
nomprenom| M. Pierre DUPONT
|
||||||
etat_civil | Mme Pierrette DUPONT (civilité et nom de naissance / etat-civil)
|
|
||||||
situation| phrase expliquant la situation de l'étudiant (inscription, décisions de jury)
|
situation| phrase expliquant la situation de l'étudiant (inscription, décisions de jury)
|
||||||
demission| "DEMISSION" ou vide
|
demission| "DEMISSION" ou vide
|
||||||
inscription| phrase décrivant l'inscription ("ancien")
|
inscription| phrase décrivant l'inscription ("ancien")
|
||||||
@ -77,11 +63,6 @@ decisions_ue | noms (acronymes) des UE validées, séparées par des virgul
|
|||||||
descr_decisions_ue| " UE acquises: UE1, UE2", ou vide si pas de dec. ou paramétrage
|
descr_decisions_ue| " UE acquises: UE1, UE2", ou vide si pas de dec. ou paramétrage
|
||||||
mention| Mention, calculée d'après la moyenne générale (vide en BUT)
|
mention| Mention, calculée d'après la moyenne générale (vide en BUT)
|
||||||
|
|
|
|
||||||
**Parcours et référentiel BUT** |
|
|
||||||
parcours_titre | "Cybersécurité"
|
|
||||||
parcours_code | "Cyber"
|
|
||||||
refcomp_specialite | "RT"
|
|
||||||
refcomp_specialite_long| "Réseaux et Télécommunications"
|
|
||||||
**Jurys de BUT:** |
|
**Jurys de BUT:** |
|
||||||
descr_decision_annee | vide ou "Décision année: ADM" (code annuel: `ADM`, `PASD`, `DEF`...)
|
descr_decision_annee | vide ou "Décision année: ADM" (code annuel: `ADM`, `PASD`, `DEF`...)
|
||||||
descr_decisions_rcue | vide ou nom de la compétence et code jury RCUE: "Administrer 1: ADM, Connecter 1: ADJ"
|
descr_decisions_rcue | vide ou nom de la compétence et code jury RCUE: "Administrer 1: ADM, Connecter 1: ADJ"
|
||||||
@ -103,30 +84,27 @@ groupes | indique les groupes auxquels appartient l'étudiant dans le semestre
|
|||||||
group_0 | nom du groupe principal (1ère partition)
|
group_0 | nom du groupe principal (1ère partition)
|
||||||
group_<n> | nom du group de la n-ième partition
|
group_<n> | nom du group de la n-ième partition
|
||||||
|
|
||||||
### Autres informations
|
|
||||||
|
|
||||||
|
### Autres informations
|
||||||
Variable |
|
Variable |
|
||||||
---------|-------
|
---------|-------
|
||||||
date_dmy | date courante, au format jj/mm/aaaa
|
date_dmy | date courante, au format jj/mm/aaaa
|
||||||
date_iso | date courante, au format aaaa-mm-jj
|
date_iso | date courante, au format aaaa-mm-jj
|
||||||
|
|
||||||
## Balises XML utilisées dans les formats
|
|
||||||
|
|
||||||
Le balisage XML est celui de [ReportLab](http://www.reportlab.com/)
|
|
||||||
(intra-paragraph markup, voir page 70 du [guide
|
## Balises XML utilisées dans les formats
|
||||||
utilisateur](http://www.reportlab.com/docs/reportlab-userguide.pdf)). La balise
|
Le balisage XML est celui de [ReportLab](http://www.reportlab.com/) (intra-paragraph markup, voir page 70 du [guide utilisateur](http://www.reportlab.com/docs/reportlab-userguide.pdf)). La balise `<img>` n'est pas utilisable.
|
||||||
`<img>` n'est pas utilisable.
|
|
||||||
|
|
||||||
### Logos
|
### Logos
|
||||||
|
|
||||||
Une balise supplémentaire est interprétée par ScoDoc pour insérer des logos (images).
|
Une balise supplémentaire est interprétée par ScoDoc pour insérer des logos (images).
|
||||||
|
|
||||||
Les logos sont des images au format JPEG (extension `.jpg` ou `.jpeg`) ou PNG
|
Les logos sont des images au format JPEG (extension `.jpg` ou `.jpeg`) ou PNG
|
||||||
(extension `.png`), téléversés sur le serveur scodoc et intégrables dans les
|
(extension `.png`), téléversés sur le serveur scodoc et intégrables dans les
|
||||||
documents PDF. [Plus d'information sur la gestion des logos
|
documents PDF. [Plus d'information sur la gestion des logos ici](GestionLogos.md).
|
||||||
ici](GestionLogos.md).
|
|
||||||
|
|
||||||
Principes généraux:
|
Principes généraux :
|
||||||
|
|
||||||
* Un logo est désigné par un identifiant (nom) et peut être défini soit globalement, soit pour un département;
|
* Un logo est désigné par un identifiant (nom) et peut être défini soit globalement, soit pour un département;
|
||||||
|
|
||||||
@ -138,15 +116,12 @@ c'est le logo du département qui sera utilisé en lieu et place de logo global;
|
|||||||
|
|
||||||
* les logos de nom '`header`' et '`footer`' définis globalement ne peuvent être supprimés (mais peuvent être redéfinis).
|
* les logos de nom '`header`' et '`footer`' définis globalement ne peuvent être supprimés (mais peuvent être redéfinis).
|
||||||
|
|
||||||
L'enregistrement, la modification ou la suppression d'un logo peut être réalisé
|
L'enregistrement, la modification ou la suppression d'un logo peut être réalisé via la page de configuration qui est accessible aux
|
||||||
via la page de configuration qui est accessible aux administrateurs Scodoc
|
administrateurs Scodoc depuis la page d'accueil.
|
||||||
depuis la page d'accueil.
|
|
||||||
|
|
||||||
Ce formulaire comporte une section pour les définitions globales plus une
|
Ce formulaire comporte une section pour les définitions globales plus une section par département.
|
||||||
section par département.
|
|
||||||
|
|
||||||
Une section présente la liste des logos avec leurs propriétés (la dimension est
|
Une section présente la liste des logos avec leurs propriétés (la dimension est donnée à titre indicatif quand elle est disponible).
|
||||||
donnée à titre indicatif quand elle est disponible).
|
|
||||||
|
|
||||||
Pour chaque logo, les actions disponibles sont :
|
Pour chaque logo, les actions disponibles sont :
|
||||||
|
|
||||||
@ -156,29 +131,22 @@ Pour chaque logo, les actions disponibles sont :
|
|||||||
|
|
||||||
* l'ajout d'un nouveau logo dans une section (global ou département) et indiquant le nom.
|
* l'ajout d'un nouveau logo dans une section (global ou département) et indiquant le nom.
|
||||||
|
|
||||||
*NB*. Quelle que soit l'opération effectuée, le nom du fichier téléversé n'a
|
*NB*. Quelle que soit l'opération effectuée, le nom du fichier téléversé n'a aucune importance
|
||||||
aucune importance (Seul le nom indiqué dans le formulaire est pris en compte et
|
(Seul le nom indiqué dans le formulaire est pris en compte et le format du fichier est déduit des données propres du fichier)
|
||||||
le format du fichier est déduit des données propres du fichier)
|
|
||||||
|
|
||||||
La balise `<logo name="xxx" width="44mm" height="22mm" valign="+5mm"/>`, placée
|
La balise `<logo name="xxx" width="44mm" height="22mm" valign="+5mm"/>`, placée dans un paragraphe, insère le logo de nom `xxx` avec les dimensions indiquées.
|
||||||
dans un paragraphe, insère le logo de nom `xxx` avec les dimensions indiquées.
|
Le paramètre `valign` règle le positionnement vertical par rapport à la ligne de texte courante.
|
||||||
Le paramètre `valign` règle le positionnement vertical par rapport à la ligne de
|
|
||||||
texte courante.
|
|
||||||
|
|
||||||
Notez qu'il est possible de ne préciser que l'une des deux dimensions hauteur ou
|
Notez qu'il est possible de ne préciser que l'une des deux dimensions hauteur ou largeur.
|
||||||
largeur. Dans ce cas, la dimension manquante est déduite du ratio (rapport
|
Dans ce cas, la dimension manquante est déduite du ratio (rapport hauteur/largeur) de l'image originale.
|
||||||
hauteur/largeur) de l'image originale. Voir un exemple d'utilisation plus bas.
|
Voir un exemple d'utilisation plus bas.
|
||||||
|
|
||||||
### Fond de page
|
### Fond de page.
|
||||||
|
Les modalités d'utilisation des fonds de pages sont similaires pour les PV, les lettres individuelles de décision et les bulletins.
|
||||||
Les modalités d'utilisation des fonds de pages sont similaires pour les PV, les
|
Celles-ci sont décrites ici: [Paramétrage des PV. Images de fond de page](ParametragePV.md)
|
||||||
lettres individuelles de décision et les bulletins. Celles-ci sont décrites ici:
|
|
||||||
[Paramétrage des PV. Images de fond de page](ParametragePV.md)
|
|
||||||
|
|
||||||
## Exemples
|
## Exemples
|
||||||
|
|
||||||
### Exemple 1: Bulletins par défaut
|
### Exemple 1: Bulletins par défaut
|
||||||
|
|
||||||
Les bulletins édités par défaut sont obtenus avec:
|
Les bulletins édités par défaut sont obtenus avec:
|
||||||
|
|
||||||
* Paragraphe de titre:
|
* Paragraphe de titre:
|
||||||
@ -225,8 +193,9 @@ Année scolaire: %(anneescolaire)s
|
|||||||
</para>
|
</para>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemple 2: ancien bulletins
|
|
||||||
|
|
||||||
|
|
||||||
|
### Exemple 2: ancien bulletins
|
||||||
Les bulletins édités par défaut avant le 20/9/2009 étaient obtenus avec:
|
Les bulletins édités par défaut avant le 20/9/2009 étaient obtenus avec:
|
||||||
|
|
||||||
* Paragraphe de titre:
|
* Paragraphe de titre:
|
||||||
@ -263,7 +232,6 @@ Les bulletins édités par défaut avant le 20/9/2009 étaient obtenus avec:
|
|||||||
|
|
||||||
|
|
||||||
### Exemple 3: en-tête avec logo
|
### Exemple 3: en-tête avec logo
|
||||||
|
|
||||||
Même structure que le premier exemple, avec un logo. Notez que les dimensions du logo (en mm ou cm) doivent avoir le même rapport (hauteur/largeur) que l'image utilisée, sans quoi l'apparence est déformée.
|
Même structure que le premier exemple, avec un logo. Notez que les dimensions du logo (en mm ou cm) doivent avoir le même rapport (hauteur/largeur) que l'image utilisée, sans quoi l'apparence est déformée.
|
||||||
|
|
||||||
* Paragraphe de titre:
|
* Paragraphe de titre:
|
||||||
@ -288,12 +256,3 @@ Année scolaire: %(anneescolaire)s
|
|||||||
</para>
|
</para>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Gestion des logos](GestionLogos.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [Guide du responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [Guide utilisateur](GuideUtilisateur.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
- <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Tutoriels sur YouTube <img src="/img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
|
|
||||||
|
@ -1,93 +1,56 @@
|
|||||||
# Présentation rapide de ScoDoc
|
# Présentation rapide de ScoDoc
|
||||||
|
|
||||||
Voir les <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Vidéos d'introduction sur YouTube <img src="/img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
|
Voir les <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Vidéos d'introduction sur YouTube <img src="img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
|
||||||
|
|
||||||
## Page d'accueil
|
## Page d'accueil
|
||||||
|
|
||||||
![accueil](screens/accueil-scodoc7.png)
|
![accueil](screens/accueil-scodoc7.png)
|
||||||
|
|
||||||
On y trouve les éléments suivants:
|
On y trouve les éléments suivants:
|
||||||
|
|
||||||
La colonne de gauche indique l'identité de l'utilisateur connecté (en rouge à
|
La colonne de gauche indique l'identité de l'utilisateur connecté (en rouge à droite) et contient des liens facilitant la navigation sur le site (certains sont paramétrables à l'installation). On note l'accès à trois composants importants: Entreprises (fichier d'entreprises), Notes (gestion des notes), Absences (relevé des absences), et un champ de texte permettant de rechercher un étudiant par son nom.
|
||||||
droite) et contient des liens facilitant la navigation sur le site (certains
|
|
||||||
sont paramétrables à l'installation). On note l'accès à trois composants
|
|
||||||
importants: Entreprises (fichier d'entreprises), Notes (gestion des notes),
|
|
||||||
Absences (relevé des absences), et un champ de texte permettant de rechercher un
|
|
||||||
étudiant par son nom.
|
|
||||||
|
|
||||||
L'identité de l'utilisateur défini ses droits d'accès (rôle) et les fonctions
|
L'identité de l'utilisateur défini ses droits d'accès (rôle) et les fonctions qu'il peut utiliser.
|
||||||
qu'il peut utiliser.
|
|
||||||
|
|
||||||
Le centre de la page donne les formations (sessions) en cours, groupées par
|
Le centre de la page donne les formations (sessions) en cours, groupées par type. A côté du titre de chaque formation, on a le nom de son responsable (ou directeur des études dans le jargon IUT), ainsi que les dates de début et de fin de la session.
|
||||||
type. A côté du titre de chaque formation, on a le nom de son responsable (ou
|
|
||||||
directeur des études dans le jargon IUT), ainsi que les dates de début et de fin
|
|
||||||
de la session.
|
|
||||||
|
|
||||||
## Fiche étudiant
|
## Fiche étudiant
|
||||||
|
Pour accéder à la fiche d'un étudiant, on peut soit le rechercher par nom (voir RechercheEtudiant) soit cliquer sur un lien dans une liste ou sur une photo d'un trombinoscope. Cette fiche (exemple ci-dessous) donne accès à toutes les informations sur l'étudiant.
|
||||||
Pour accéder à la fiche d'un étudiant, on peut soit le rechercher par nom (voir
|
![fiche étudiant](screens/ficheEtud-scodoc7.png)
|
||||||
RechercheEtudiant) soit cliquer sur un lien dans une liste ou sur une photo d'un
|
|
||||||
trombinoscope. Cette fiche (exemple ci-dessous) donne accès à toutes les
|
|
||||||
informations sur l'étudiant. ![fiche étudiant](screens/ficheEtud-scodoc7.png)
|
|
||||||
|
|
||||||
## Suivi de l'assiduité
|
## Suivi de l'assiduité
|
||||||
|
ScoDoc permet d'enregistrer les absences des étudiants puis de les visualiser sur un calendrier. On peut aussi obtenir des comptes d'absences, générer des alarmes par e-mail pour prévenir un responsable, vérifier les absences qui coincident avec un examen, enregistre les justificatifs, etc.
|
||||||
ScoDoc permet d'enregistrer les absences des étudiants puis de les visualiser
|
![calendrier des absences](screens/calabs-scodoc7.png)
|
||||||
sur un calendrier. On peut aussi obtenir des comptes d'absences, générer des
|
|
||||||
alarmes par e-mail pour prévenir un responsable, vérifier les absences qui
|
|
||||||
coincident avec un examen, enregistre les justificatifs, etc. ![calendrier des
|
|
||||||
absences](screens/calabs-scodoc7.png)
|
|
||||||
|
|
||||||
## Gestion des notes
|
## Gestion des notes
|
||||||
|
|
||||||
La gestion des notes est la partie principale du logiciel et est conçue pour
|
La gestion des notes est la partie principale du logiciel et est conçue pour faciliter au maximum le travail des enseignants, grâce à une grande flexibilité (définition des évaluations, import/export via Excel ou saisie sur formulaire web, vérifications, etc.).
|
||||||
faciliter au maximum le travail des enseignants, grâce à une grande flexibilité
|
|
||||||
(définition des évaluations, import/export via Excel ou saisie sur formulaire
|
|
||||||
web, vérifications, etc.).
|
|
||||||
|
|
||||||
### Tableau de bord du semestre, avec les modules
|
### Tableau de bord du semestre, avec les modules
|
||||||
|
|
||||||
![tableau de bord du semestre](screens/tableaubord2011.png)
|
![tableau de bord du semestre](screens/tableaubord2011.png)
|
||||||
|
|
||||||
### Tableau récapitulatif des moyennes
|
### Tableau récapitulatif des moyennes
|
||||||
![tableau de bord du semestre](screens/NotesRecap2012-crop.png)
|
![tableau de bord du semestre](screens/NotesRecap2012-crop.png)
|
||||||
|
|
||||||
### Bulletins de notes
|
### Bulletins de notes
|
||||||
|
Les bulletins sont affichables selon différents formats (ci-dessous le format par défaut). Ils peuvent être exportés sous forme de document PDF (pour impression papier), à d'autres formats (XML, Excel) ou directement envoyé par mail aux étudiants.
|
||||||
Les bulletins sont affichables selon différents formats (ci-dessous le format
|
![bulletin de note web](screens/BulletinInter2012-crop.png)
|
||||||
par défaut). Ils peuvent être exportés sous forme de document PDF (pour
|
|
||||||
impression papier), à d'autres formats (XML, Excel) ou directement envoyé par
|
|
||||||
mail aux étudiants. ![bulletin de note web](screens/BulletinInter2012-crop.png)
|
|
||||||
|
|
||||||
## Gestion des jurys et commissions
|
## Gestion des jurys et commissions
|
||||||
|
Une interface permet la saisie des décisions de jury. Le parcours de l'étudiant (redoublements, validations antérieures, compensations entre semestres, capitalisations d'UE) est automatiquement pris en compte, permettant aux enseignant de se concentrer sur les aspects pédagogiques sans perdre de temps avec la gestion administrative (parfois assez complexe).
|
||||||
|
|
||||||
Une interface permet la saisie des décisions de jury. Le parcours de l'étudiant
|
ScoDoc intègre la gestion des jurys des DUT (2005) et bientôt du Bachelor Universitaire de technologie (BUT) et s'assure que les décisions prises respectent les règles.
|
||||||
(redoublements, validations antérieures, compensations entre semestres,
|
|
||||||
capitalisations d'UE) est automatiquement pris en compte, permettant aux
|
|
||||||
enseignant de se concentrer sur les aspects pédagogiques sans perdre de temps
|
|
||||||
avec la gestion administrative (parfois assez complexe).
|
|
||||||
|
|
||||||
ScoDoc intègre la gestion des jurys des DUT (2005) et bientôt du Bachelor
|
|
||||||
Universitaire de technologie (BUT) et s'assure que les décisions prises
|
|
||||||
respectent les règles.
|
|
||||||
|
|
||||||
## Gestion des groupes
|
## Gestion des groupes
|
||||||
|
|
||||||
ScoDoc permet de définir des partitions et groupes en nombre quelconque, et d'y
|
ScoDoc permet de définir des partitions et groupes en nombre quelconque, et d'y répartir facilement les étudiants (glisser/déposer, fonctions de répartition automatiques).
|
||||||
répartir facilement les étudiants (glisser/déposer, fonctions de répartition
|
![affectation aux groupes](screens/GroupesDnD.png)
|
||||||
automatiques). ![affectation aux groupes](screens/GroupesDnD.png)
|
|
||||||
|
|
||||||
## Trombinoscopes
|
## Trombinoscopes
|
||||||
|
|
||||||
![trombinoscope](screens/Trombi-scodoc7.png)
|
![trombinoscope](screens/Trombi-scodoc7.png)
|
||||||
*(en réalité vous aurez les photos de vos étudiants !)*
|
*(en réalité vous aurez les photos de vos étudiants !)*
|
||||||
|
|
||||||
## Autres fonctionnalités
|
## Autres fonctionnalités
|
||||||
|
|
||||||
### Imports / Exports
|
### Imports / Exports
|
||||||
|
Les données conservées dans le logiciel peuvent être exportées dans une grande variété de formats (pages web, PDF, Excel, XML...) ce qui facilite tant son usage par des non informaticiens que son intégration dans d'autres logiciels (portails d'établissements, systèmes d'informations comme Apogée).
|
||||||
Les données conservées dans le logiciel peuvent être exportées dans une grande
|
|
||||||
variété de formats (pages web, PDF, Excel, XML...) ce qui facilite tant son
|
|
||||||
usage par des non informaticiens que son intégration dans d'autres logiciels
|
|
||||||
(portails d'établissements, systèmes d'informations comme Apogée).
|
|
||||||
|
|
||||||
|
@ -1,41 +1,24 @@
|
|||||||
|
|
||||||
# En cas de problèmes avec ScoDoc
|
# En cas de problèmes avec [coDoc
|
||||||
|
|
||||||
## Envoi des données "assistance"
|
|
||||||
|
|
||||||
Cette fonction est accessible via un lien en bas de la page d'accueil des
|
|
||||||
départements. Elle déclenche la copie de la base de données, son anonymisation
|
|
||||||
(suppression des informations permettant d'identifier les étudiants: les champs
|
|
||||||
sont effacés ou remplacés par des valeurs aléatoires), et son envoi vers le
|
|
||||||
serveur des développeurs ScoDoc pour analyse. Il est recommandé d'indiquer les
|
|
||||||
circonstances du problème rencontré ou de contacter les développeurs sur le salon
|
|
||||||
Discord.
|
|
||||||
|
|
||||||
## Diagnostic détaillé (pour les administrateurs)
|
|
||||||
|
|
||||||
Informations destinées aux administrateurs ayant un accès direct (ssh, root) au serveur.
|
Informations destinées aux administrateurs ayant un accès direct (ssh, root) au serveur.
|
||||||
|
|
||||||
## Récupération et envoi d'informations de diagnostic
|
|
||||||
|
|
||||||
Un script permet de générer quelques informations sur votre configuration pour
|
## Récupération et envoi d'informations de diagnostic
|
||||||
les envoyer aux développeurs: logs, modifications du code source, version Linux
|
Un script permet de générer quelques informations sur votre configuration pour les envoyer aux développeurs: logs, modifications du code source, version Linux installée etc.
|
||||||
installée etc.
|
Aucune information personnelle ou confidentielle exploitable n'est transmise.
|
||||||
|
|
||||||
```
|
```
|
||||||
# en tant que root sur le serveur:
|
# en tant que root sur le serveur:
|
||||||
cd /opt/scodoc/tools
|
cd /opt/scodoc/Products/ScoDoc/config
|
||||||
./diagnostic.sh -a -n
|
./diagnostic.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Ce script génère un fichier `tgz`.
|
Ce script génère un fichier `tgz` et essaie de l'envoyer par mail aux développeurs.
|
||||||
|
|
||||||
Si on n'indique pas l'option `-n`, il essaie immédiatement de l'envoyer par mail aux
|
|
||||||
développeurs. Il est fréquent que l'envoi de mail ne fonctionne pas: fichier
|
|
||||||
trop volumineux ou filtrage des mails. Dans ce cas, le copier et le transmettre
|
|
||||||
par un autre moyen (cloud, ...).
|
|
||||||
|
|
||||||
Ce fichier est dans `/tmp` et son nom exact est affiché par le script:
|
|
||||||
|
|
||||||
|
Si pour une raison ou une autre le serveur étudié n'est pas capable d'envoyer un mail vers l'extérieur, récupérer manuellement le fichier généré et l'envoyer. Ce fichier est dans /tmp et son nom exact est affiché par le script:
|
||||||
```ScoDoc diagnostic: informations about your system will be sent to emmanuel.viennet@univ-paris13.fr
|
```ScoDoc diagnostic: informations about your system will be sent to emmanuel.viennet@univ-paris13.fr
|
||||||
and left in /tmp/scodoc-2016-09-05-1504631964
|
and left in /tmp/scodoc-2016-09-05-1504631964
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,15 +1,12 @@
|
|||||||
|
|
||||||
# Problèmes d'envoi de courriers électroniques
|
# Problèmes d'envoi de courriers électroniques
|
||||||
|
ScoDoc envoie des mails en plusieurs occasions (bulletins de notes, importation
|
||||||
ScoDoc envoie des mails (emails, ou e-mails, ou courriels) en plusieurs
|
d'utilisateurs, alertes sur absences, exceptions dans le code).
|
||||||
occasions (bulletins de notes, importation d'utilisateurs, alertes sur absences,
|
|
||||||
exceptions dans le code).
|
|
||||||
|
|
||||||
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne
|
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne
|
||||||
pas.
|
pas.
|
||||||
|
|
||||||
## Configuration du serveur
|
## Configuration du serveur
|
||||||
|
|
||||||
ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un
|
ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un
|
||||||
serveur de mail capable d'envoyer des messages (soit directement, soit via un
|
serveur de mail capable d'envoyer des messages (soit directement, soit via un
|
||||||
relais). L'installeur propose d'installer le logiciel serveur Postfix.
|
relais). L'installeur propose d'installer le logiciel serveur Postfix.
|
||||||
@ -17,33 +14,27 @@ relais). L'installeur propose d'installer le logiciel serveur Postfix.
|
|||||||
|
|
||||||
1. Vérifier que votre serveur de messagerie est bien configuré: dans un
|
1. Vérifier que votre serveur de messagerie est bien configuré: dans un
|
||||||
terminal, envoyez un message
|
terminal, envoyez un message
|
||||||
|
```
|
||||||
```bash
|
|
||||||
mail mon_adresse@universite.fr
|
mail mon_adresse@universite.fr
|
||||||
... entrer votre texte, terminez par ctrl-d ...
|
... entrer votre texte, terminez par ctrl-d ...
|
||||||
```
|
```
|
||||||
Si vous ne recevez pas le message que vous vous envoyiez, revoir la
|
Si vous ne recevez pas le message que vous vous envoyiez, revoir la
|
||||||
configuration de votre serveur, par exemple avec la commande
|
configuration de votre serveur, par exemple avec la commande
|
||||||
|
```
|
||||||
```bash
|
|
||||||
dpkg-reconfigure postfix
|
dpkg-reconfigure postfix
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Vérifiez que le serveur SMTP écoute bien en local sur le port 25: dans un terminal taper
|
2. Vérifiez que le serveur SMTP écoute bien en local sur le port 25: dans un terminal taper
|
||||||
|
```
|
||||||
```text
|
|
||||||
telnet localhost 25
|
telnet localhost 25
|
||||||
```
|
```
|
||||||
|
|
||||||
Vous devez observer:
|
Vous devez observer:
|
||||||
|
```
|
||||||
```text
|
|
||||||
Trying 127.0.0.1...
|
Trying 127.0.0.1...
|
||||||
Connected to localhost.
|
Connected to localhost.
|
||||||
Escape character is '^]'.
|
Escape character is '^]'.
|
||||||
220 nom_du_serveur ESMTP Postfix (Debian/GNU)
|
220 nom_du_serveur ESMTP Postfix (Debian/GNU)
|
||||||
```
|
```
|
||||||
|
|
||||||
(quitter avec ctrl-] puis `quit`)
|
(quitter avec ctrl-] puis `quit`)
|
||||||
|
|
||||||
## Tests avec ScoDoc
|
## Tests avec ScoDoc
|
||||||
@ -54,7 +45,7 @@ semestre, et lui envoyer son bulletin par mail. (sur la page web de son
|
|||||||
bulletin, petit menu "Autres opérations").
|
bulletin, petit menu "Autres opérations").
|
||||||
|
|
||||||
À ce moment, regarder le log
|
À ce moment, regarder le log
|
||||||
`/opt/scodoc-data/log/scodoc.log`
|
`/opt/scodoc/instance/log/notes.log`
|
||||||
|
|
||||||
On devrait voir quelque chose ressemblant à:
|
On devrait voir quelque chose ressemblant à:
|
||||||
```
|
```
|
||||||
@ -63,7 +54,6 @@ On devrait voir quelque chose ressemblant à:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Et d'autre part dans le log de postfix (`/var/log/mail.log`)
|
Et d'autre part dans le log de postfix (`/var/log/mail.log`)
|
||||||
|
|
||||||
```
|
```
|
||||||
Sep 7 11:37:42 xxxxxxxx postfix/smtp[31240]: ED1F62BAB22:
|
Sep 7 11:37:42 xxxxxxxx postfix/smtp[31240]: ED1F62BAB22:
|
||||||
to=<emmanuel.viennet@xxxx.fr>, relay=gmail-smtp-in.l.google.com[209.85.135.27]:25, delay=1.5,
|
to=<emmanuel.viennet@xxxx.fr>, relay=gmail-smtp-in.l.google.com[209.85.135.27]:25, delay=1.5,
|
||||||
@ -72,7 +62,7 @@ delays=0.03/0/0.41/1, dsn=2.0.0, status=sent (250 2.0.0 OK 1220942550 y2si226470
|
|||||||
|
|
||||||
Cela devrait permettre de savoir:
|
Cela devrait permettre de savoir:
|
||||||
|
|
||||||
1. si ScoDoc tente d'envoyer un mail (`/opt/scodoc-data/log/scodoc.log`);
|
1. si ScoDoc tente d'envoyer un mail (`notes.log`);
|
||||||
|
|
||||||
2. si le serveur SMTP arrive à traiter ce mail.
|
2. si le serveur SMTP arrive à traiter ce mail.
|
||||||
|
|
||||||
@ -85,8 +75,4 @@ notification ou de bulletins sans déranger les étudiants ou les collègues).
|
|||||||
Pour cela, aller sur la page *Paramétrage*, tout en bas, et indiquer une
|
Pour cela, aller sur la page *Paramétrage*, tout en bas, et indiquer une
|
||||||
*Adresse de test*. Ne pas oublier de l'enlever une fois les essais effectués !
|
*Adresse de test*. Ne pas oublier de l'enlever une fois les essais effectués !
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- Pour la configuration des messages envoyés par ScoDoc, la page [Configuration des envois d'emails](ConfigEmail.md)
|
|
||||||
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## Module "relations entreprises"
|
# Module "relations entreprises"
|
||||||
|
|
||||||
Ce module de ScoDoc a pour but de permettre aux utilisateurs de retrouver et
|
Ce module de ScoDoc a pour but de permettre aux utilisateurs de retrouver et
|
||||||
mémoriser toutes les relations entreprises dans un même endroit.
|
mémoriser toutes les relations entreprises dans un même endroit.
|
||||||
@ -8,9 +8,7 @@ l'application offre des droits de consultation et de modification différenciés
|
|||||||
Ce projet a été développé en 2021-2022, par Arthur Zhu, apprenti de l'IUT de
|
Ce projet a été développé en 2021-2022, par Arthur Zhu, apprenti de l'IUT de
|
||||||
Villetaneuse financé par l'Association ScoDoc.
|
Villetaneuse financé par l'Association ScoDoc.
|
||||||
|
|
||||||
Voir [présentation vidéo détaillée sur YouTube](https://www.youtube.com/watch?v=IBuW2EO3GUA).
|
# Fonctionnalités
|
||||||
|
|
||||||
## Fonctionnalités
|
|
||||||
|
|
||||||
Le module, intégrée à ScoDoc, fournit pour l'instant:
|
Le module, intégrée à ScoDoc, fournit pour l'instant:
|
||||||
|
|
||||||
@ -22,17 +20,6 @@ Le module, intégrée à ScoDoc, fournit pour l'instant:
|
|||||||
* Historique des modifications des fiches entreprises
|
* Historique des modifications des fiches entreprises
|
||||||
* Systèmes de rôles et de permissions pour les accès.
|
* Systèmes de rôles et de permissions pour les accès.
|
||||||
|
|
||||||
### Activation du module
|
|
||||||
Pour disposer du module "relations entreprises" dans votre établissement, il
|
|
||||||
faut m'activer dans le panneau de configuration global (en tant
|
|
||||||
qu'administrateur, lien "Configuration" sur la page d'accueil principale).
|
|
||||||
Cocher *activer le module entreprises*
|
|
||||||
|
|
||||||
![entreprises_activation.png](screens/entreprises_activation.png)
|
|
||||||
|
|
||||||
Il sera alors disponible pour tous les départements via le menu principal
|
|
||||||
![entreprises_menu.png](screens/entreprises_menu.png)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Les utilisateurs
|
## Les utilisateurs
|
||||||
|
@ -1,23 +1,16 @@
|
|||||||
|
|
||||||
# Saisie des décisions de jury
|
# Saisie des décisions de jury
|
||||||
|
ScoDoc guide les travaux de la commission (et/ou du jury) en présentant le parcours et
|
||||||
|
les résultats de chaque étudiant, et les différentes décisions possibles
|
||||||
|
(voir explications dans [GestionJury](GestionJury.md)).
|
||||||
|
|
||||||
ScoDoc guide les travaux de la commission (et/ou du jury) en présentant le
|
|
||||||
parcours et les résultats de chaque étudiant, et les différentes décisions
|
|
||||||
possibles (voir explications dans [GestionJury](GestionJury.md)).
|
|
||||||
|
|
||||||
Note: pour le BUT, une page spéciale est présentée.
|
|
||||||
|
|
||||||
## Saisie des décisions pour un étudiant
|
## Saisie des décisions pour un étudiant
|
||||||
|
On accède à cette page soit via la fiche étudiant (menu **Scolarité** du semestre à considérer),
|
||||||
On accède à cette page soit via la fiche étudiant (menu **Scolarité** du
|
soit via la page **Saisie des décisions du jury** accessible depuis le tableau de bord du semestre.
|
||||||
semestre à considérer), soit via la page **Saisie des décisions du jury**
|
|
||||||
accessible depuis le tableau de bord du semestre.
|
|
||||||
|
|
||||||
![ValidationSemestre.png](screens/ValidationSemestre.png)
|
![ValidationSemestre.png](screens/ValidationSemestre.png)
|
||||||
|
|
||||||
|
|
||||||
(source de ce dessin: <a class="attachment" href="/attachments/ValidationSemestre.dia" download>ValidationSemestre.dia</a>)
|
(source de ce dessin: <a class="attachment" href="/attachments/ValidationSemestre.dia" download>ValidationSemestre.dia</a>)
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Guide responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Mise en place de sauvegardes des bases de données ScoDoc 9
|
|
||||||
|
|
||||||
|
|
||||||
|
# Mise en place de sauvegardes des bases de données ScoDoc 9
|
||||||
Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde
|
Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde
|
||||||
permettant de rétablir le service en minimisant les pertes de données à la suite
|
permettant de rétablir le service en minimisant les pertes de données à la suite
|
||||||
d'un accident majeur mais probable comme: crash de disque dur, bug, vol du
|
d'un accident majeur mais probable comme: crash de disque dur, bug, vol du
|
||||||
@ -7,22 +8,22 @@ serveur, incendie...
|
|||||||
|
|
||||||
Nous recommandons d'agir à deux niveaux:
|
Nous recommandons d'agir à deux niveaux:
|
||||||
|
|
||||||
* sauvegarde des bases de données postgresql: dump des bases dans des fichiers.
|
* sauvegarde des bases de données postgresql: dump des bases dans des fichiers.
|
||||||
Le script donné ci-dessous peut se charger de gérer cela.
|
Le script donné ci-dessous peut se charger de gérer cela.
|
||||||
|
|
||||||
* sauvegarde du système complet (et de ses disques durs): la forme dépend de
|
* sauvegarde du système complet (et de ses disques durs): la forme dépend de
|
||||||
l'environnement (machine virtuelle ou non...). Dans tous les cas, les données
|
l'environnement (machine virtuelle ou non...). Dans tous les cas, les données
|
||||||
doivent être sauvegardées dans une salle (voire un bâtiment) différente de
|
doivent être sauvegardées dans une salle (voire un bâtiment) différente de
|
||||||
celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une
|
celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une
|
||||||
sauvegarde quotidienne (nocturne) est suffisante.
|
sauvegarde quotidienne (nocturne) est suffisante.
|
||||||
|
|
||||||
Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire
|
Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire
|
||||||
`/opt/scodoc-data` (en particulier les photos, les documents archivés et divers
|
`/opt/scodoc-data` (en particulier les photos, les documents archivés et divers
|
||||||
réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en
|
réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en
|
||||||
plus des bases de données SQL.
|
plus des bases de données SQL.
|
||||||
|
|
||||||
## Dump des bases de données
|
|
||||||
|
|
||||||
|
## Dump des bases de données
|
||||||
Le script `backup_db9` (fourni dans le répertoire `/opt/scodoc/tools/backups`)
|
Le script `backup_db9` (fourni dans le répertoire `/opt/scodoc/tools/backups`)
|
||||||
peut être utilisé pour effectuer des sauvegardes automatisées des bases de
|
peut être utilisé pour effectuer des sauvegardes automatisées des bases de
|
||||||
données SQL. Les données sont extraites de la base et écrites sur le disque
|
données SQL. Les données sont extraites de la base et écrites sur le disque
|
||||||
@ -38,29 +39,26 @@ derniers mois (tout ceci est paramétrable dans le script
|
|||||||
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de
|
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de
|
||||||
l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
|
l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
|
||||||
|
|
||||||
En tant que `root` sur le serveur, faire:
|
|
||||||
|
|
||||||
```bash
|
En tant que `root` sur le serveur, faire:
|
||||||
|
```
|
||||||
# su postgres
|
# su postgres
|
||||||
# cd
|
# cd
|
||||||
# crontab -e
|
# crontab -e
|
||||||
```
|
```
|
||||||
|
|
||||||
et ajouter:
|
et ajouter:
|
||||||
|
```
|
||||||
```bash
|
|
||||||
15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC
|
15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC
|
||||||
```
|
```
|
||||||
|
(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez configuré sur une autre base).
|
||||||
|
|
||||||
|
|
||||||
(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez
|
|
||||||
configuré sur une autre base).
|
|
||||||
|
|
||||||
## En cas de problème: restaurer la base à partir d'une sauvegarde
|
## En cas de problème: restaurer la base à partir d'une sauvegarde
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
||||||
🚸 Attention, certaines informations sont stockées dans des fichiers (sous
|
alt="/!\" /> Attention, certaines informations sont stockées dans des fichiers
|
||||||
`/opt/scodoc-data`) et non dans la base de données: configuration du logiciel,
|
et non dans la base de données: configuration du logiciel, photos des étudiants.
|
||||||
photos des étudiants, archives des PV, fichiers Apogée, etc. Ce paragraphe ne
|
Ce paragraphe ne traite que de la restauration de la base de données.
|
||||||
traite que de la restauration de la base de données.
|
|
||||||
|
|
||||||
Rappel: en ScoDoc 9, il n'y a qu'une seule base de donnée SQL, nommée par défaut
|
Rappel: en ScoDoc 9, il n'y a qu'une seule base de donnée SQL, nommée par défaut
|
||||||
`SCODOC`. Cette base contient les données des départements et la définition des
|
`SCODOC`. Cette base contient les données des départements et la définition des
|
||||||
@ -74,21 +72,21 @@ comptes utilisateurs.
|
|||||||
|
|
||||||
1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple:
|
1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple:
|
||||||
|
|
||||||
```bash
|
```
|
||||||
cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp
|
cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp
|
||||||
gunzip /tmp/SCODOC_pgdump.gz
|
gunzip /tmp/SCODOC_pgdump.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Recharger la base complète. 🚸 Attention, *cette opération effacera et
|
3. Recharger la base complète. <img src="/img/alert.png" style="vertical-align:
|
||||||
remplacera le contenu de la base de données actuelle !*
|
bottom; margin:0 0 0 0;" alt="/!\" /> Attention, cette opération effacera et
|
||||||
|
remplacera) le contenu de la base de données actuelle...
|
||||||
```bash
|
```
|
||||||
# en tant que root...
|
# en tant que root...
|
||||||
systemctl stop scodoc9 # arret du serveur
|
systemctl stop scodoc9 # arret du serveur
|
||||||
su - scodoc
|
su - scodoc
|
||||||
dropdb SCODOC # <<< votre base production
|
dropdb SCODOC # <<< votre base production
|
||||||
createdb -E UTF-8 SCODOC
|
createdb -E UTF-8 SCODOC
|
||||||
pg_restore -d SCODOC /tmp/SCODOC_pgdump # (nom du fichier dump)
|
pg_restore -d SCODOC /tmp/SCODOC_pgdump.gz # (nom du fichier dump)
|
||||||
source venv/bin/activate
|
source venv/bin/activate
|
||||||
flask db upgrade # nécessaire seulement si sauvegarde ancienne
|
flask db upgrade # nécessaire seulement si sauvegarde ancienne
|
||||||
flask clear-cache
|
flask clear-cache
|
||||||
@ -98,15 +96,12 @@ systemctl start scodoc9 # relance ScoDoc
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Déplacement de toute une installation
|
## Déplacement de toute une installation
|
||||||
|
|
||||||
Les scripts ci-dessus ne se chargent que de la base de données SQL.
|
Les scripts ci-dessus ne se chargent que de la base de données SQL.
|
||||||
|
|
||||||
Pour créer une sauvegarde complète d'une installation, vous pouvez utiliser le
|
Pour créer une sauvegarde complète d'une installation, vous pouvez utiliser le
|
||||||
script
|
script
|
||||||
|
|
||||||
```bash
|
|
||||||
tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
|
tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
|
||||||
```
|
|
||||||
|
|
||||||
Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement
|
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:
|
la base de données SQL mais aussi tous les fichiers générés par votre ScoDoc:
|
||||||
@ -122,10 +117,10 @@ Pour restaurer ce type de sauvegarde, sur une autre machine (ou plus tard sur la
|
|||||||
même), transférer le fichier généré (`/tmp/sauvegarde-scodoc.tgz`) dans
|
même), transférer le fichier généré (`/tmp/sauvegarde-scodoc.tgz`) dans
|
||||||
l'exemple ci-dessus) et utiliser
|
l'exemple ci-dessus) et utiliser
|
||||||
|
|
||||||
```bash
|
|
||||||
tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
|
tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
|
||||||
```
|
|
||||||
|
|
||||||
(Note: la sauvegarde s'effectue comme utilisateur `scodoc`, en revanche le
|
(Note: la sauvegarde s'effectue comme utilisateur `scodoc`, en revanche le
|
||||||
rechargement doit se faire en tant que `root` car il faut évidemment arrêter et
|
rechargement doit se faire en tant que `root` car il faut évidemment arrêter et
|
||||||
relancer le service).
|
relancer le service).
|
||||||
|
|
||||||
|
|
||||||
|
3349
docs/ScoDoc9API.md
921
docs/ScoDocAPI.md
Normal file
@ -0,0 +1,921 @@
|
|||||||
|
|
||||||
|
# API pour ScoDoc 7
|
||||||
|
L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux informations aux formats XML et JSON.
|
||||||
|
Cette API est encore incomplète: n'hésitez pas à demander de nouveaux accès en écrivant à la liste de diffusion.
|
||||||
|
|
||||||
|
L'ancienne API, un peu désordonnée, est décrite sur [ServicesXml](ServicesXml.md).
|
||||||
|
|
||||||
|
Chaque fonction d'accès (`*_list` et autres) prend un paramètre `format` qui indique le format de données désiré: `json` ou `xml` .
|
||||||
|
|
||||||
|
Les objets ScoDoc manipulables sont identifiés par des id, garantis uniques au sein d'un même département (mais pas au delà, car chaque département a sa base de données séparée).
|
||||||
|
|
||||||
|
* formation_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.
|
||||||
|
|
||||||
|
|
||||||
|
L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/DEPT/Scolarite/Notes/fonction` où `DEPT`est le département et `fonction` la fonction appelée.
|
||||||
|
|
||||||
|
Un exemple d'utilisation de l'API en PHP pour publier les bulletins de notes sur un site externe pour les étudiants est disponible ici: source:/trunk/misc/PublicationBulletins/ExemplePHP
|
||||||
|
|
||||||
|
|
||||||
|
# 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)
|
||||||
|
* Résultat: liste des id de départements.
|
||||||
|
|
||||||
|
## Programmes de formations
|
||||||
|
* **`formation_list`**
|
||||||
|
* Paramètres: `formation_id` (optionnel, si absent liste toutes les formations)
|
||||||
|
* Résultat: liste de formations.
|
||||||
|
|
||||||
|
* **`formation_export`**
|
||||||
|
* Paramètres: `formation_id`, `export_ids` (défaut "faux")
|
||||||
|
* Résultat: la formation, avec UE, matières, modules (un arbre).
|
||||||
|
|
||||||
|
|
||||||
|
## 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`
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
* Département (RT, GEII, INFO...) (= paramètre `DeptName`, en majuscules)
|
||||||
|
* Nom parcours: DUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME)
|
||||||
|
* Modalité: FI, FC, FA
|
||||||
|
* "Spécialité" : S1 (ou S1D pour les sem. décalés), ou le `code_specialite` si pas de semestres. Le code spécialité est un champ (libre) nouveau dans la "formation" (programme pédagogique).
|
||||||
|
* Année: année de début de l'année scolaire correspondante (eg 2014 pour une session appartenant à l'année scolaire 2014-2015, même si elle commence en mars 2015).
|
||||||
|
|
||||||
|
Exemple: `INFO-DUT-FI-S1-2014` : semestre S1 d'un DUT informatique de 2014 en formation initiale (FI)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 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`
|
||||||
|
* 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
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
* **`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`
|
||||||
|
* Résultat: liste des étudiants dans un groupe.
|
||||||
|
* Exemple: ici au format XML avec `with_codes=1`:
|
||||||
|
```
|
||||||
|
<group_list origin="" caption="soit 21 étudiants inscrits et 2 démissionaires." id="gt_711068">
|
||||||
|
|
||||||
|
<etud>
|
||||||
|
<nom value="TOTO"/>
|
||||||
|
<prenom value="Marc"/>
|
||||||
|
<etat value="I"/>
|
||||||
|
<email value="toto@example.com"/>
|
||||||
|
<etudid value="EID9876"/>
|
||||||
|
<code_nip value="987654"/>
|
||||||
|
<code_ine value=""/>
|
||||||
|
</etud>
|
||||||
|
|
||||||
|
<etud>
|
||||||
|
<nom value="ALVIS SAMOS"/>
|
||||||
|
<prenom value="NATHALIE"/>
|
||||||
|
<etat value="I"/>
|
||||||
|
<email value="xxx@example.com"/>
|
||||||
|
<etudid value="EID12345"/>
|
||||||
|
<code_nip value="12345678"/>
|
||||||
|
<code_ine value=""/>
|
||||||
|
</etud>
|
||||||
|
</group_list>
|
||||||
|
```
|
||||||
|
Et un autre exemple en format JSON:
|
||||||
|
```
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"etat":"I",
|
||||||
|
"emailperso":null,
|
||||||
|
"prenom":"Dalil",
|
||||||
|
"nom_disp":"CLINTO",
|
||||||
|
"email":"xxx@example.com",
|
||||||
|
"P62029":"A",
|
||||||
|
"P62032":null,
|
||||||
|
"P62031":"G1",
|
||||||
|
"P62030":"A1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"etat":"I",
|
||||||
|
"emailperso":null,
|
||||||
|
"prenom":"Georges",
|
||||||
|
"nom_disp":"BUSH",
|
||||||
|
"email":"bush@example.com",
|
||||||
|
"P62029":"A",
|
||||||
|
"P62032":null,
|
||||||
|
"P62031":"G1",
|
||||||
|
"P62030":"A1"
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Etudiants
|
||||||
|
* **`etud_info`**
|
||||||
|
* Paramètres: `etudid` 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`
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"code_ine": "",
|
||||||
|
"etudid": "EID8768",
|
||||||
|
"code_nip": "10991002",
|
||||||
|
"photo_url": "/ScoDoc/static/photos/F13/RT_EID8768.h90.jpg",
|
||||||
|
|
||||||
|
"domicile": "2 Rue Madame",
|
||||||
|
"villedomicile": "Paris",
|
||||||
|
"telephonemobile": ""
|
||||||
|
"fax": "",
|
||||||
|
|
||||||
|
"annee_bac": "2010",
|
||||||
|
"bac": "S",
|
||||||
|
"specialite": "SCIENTIFIQUE",
|
||||||
|
|
||||||
|
"nomlycee": "",
|
||||||
|
"villelycee": "",
|
||||||
|
"codelycee": "0950650R",
|
||||||
|
"codepostallycee": "",
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Bulletins de notes
|
||||||
|
* **`Notes/formsemestre_bulletinetud`**
|
||||||
|
* Paramètres: `formsemestre_id`, `etudid`, `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`)
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"rang": {
|
||||||
|
"ninscrits": 52,
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"etape_apo2": "",
|
||||||
|
"etape_apo3": "",
|
||||||
|
"etape_apo4": "",
|
||||||
|
"etudiant": {
|
||||||
|
"nom": "BOLANO",
|
||||||
|
"prenom": "Roberto",
|
||||||
|
"sexe": "M.",
|
||||||
|
"code_ine": "",
|
||||||
|
"etudid": "EID9860",
|
||||||
|
"code_nip": "123456789",
|
||||||
|
"email": "roberto@santateresa.mx",
|
||||||
|
"photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg"
|
||||||
|
},
|
||||||
|
"bonus_sport_culture": {
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"absences": {
|
||||||
|
"nbabsjust": 0,
|
||||||
|
"nbabs": 1
|
||||||
|
},
|
||||||
|
"decision": {
|
||||||
|
"etat": "I",
|
||||||
|
"code": "ADM",
|
||||||
|
"compense_formsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */
|
||||||
|
},
|
||||||
|
"note": {
|
||||||
|
"max": "15.51",
|
||||||
|
"moy": "10.80",
|
||||||
|
"value": "15.51",
|
||||||
|
"min": "07.29"
|
||||||
|
},
|
||||||
|
"etudid": "EID9860",
|
||||||
|
"decision_ue": [
|
||||||
|
{
|
||||||
|
"acronyme": "UE11",
|
||||||
|
"code": "ADM",
|
||||||
|
"ects": "16.0",
|
||||||
|
"titre": "D\u00e9couverte m\u00e9tiers",
|
||||||
|
"numero": "11",
|
||||||
|
"ue_id": "UE21456"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acronyme": "UE12",
|
||||||
|
"code": "ADM",
|
||||||
|
"ects": "14.0",
|
||||||
|
"titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques",
|
||||||
|
"numero": "12",
|
||||||
|
"ue_id": "UE21478"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ue_capitalisee": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"publie": 1,
|
||||||
|
"autorisation_inscription": [
|
||||||
|
{
|
||||||
|
"semestre_id": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"appreciation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"note_max": {
|
||||||
|
"value": 20
|
||||||
|
},
|
||||||
|
"date": "2014-07-12T17:38:47.693262",
|
||||||
|
"rang_group": [
|
||||||
|
{
|
||||||
|
"ninscrits": 26,
|
||||||
|
"value": "1",
|
||||||
|
"group_type": "TD",
|
||||||
|
"group_name": "B"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ninscrits": 13,
|
||||||
|
"value": "1",
|
||||||
|
"group_type": "TP",
|
||||||
|
"group_name": "B1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ninscrits": 4,
|
||||||
|
"value": "1",
|
||||||
|
"group_type": "G",
|
||||||
|
"group_name": "G4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ninscrits": "",
|
||||||
|
"value": "",
|
||||||
|
"group_type": "tutorat",
|
||||||
|
"group_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ninscrits": "",
|
||||||
|
"value": "",
|
||||||
|
"group_type": "App",
|
||||||
|
"group_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ninscrits": "",
|
||||||
|
"value": "",
|
||||||
|
"group_type": "sport",
|
||||||
|
"group_name": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"formsemestre_id": "SEM12345",
|
||||||
|
"etape_apo": "V1RT",
|
||||||
|
"ue": [
|
||||||
|
{
|
||||||
|
"acronyme": "UE11",
|
||||||
|
"rang": "1",
|
||||||
|
"code_apogee": "VRTU11",
|
||||||
|
"ects": "16",
|
||||||
|
"numero": "11",
|
||||||
|
"note": {
|
||||||
|
"max": "16.17",
|
||||||
|
"value": "16.17",
|
||||||
|
"min": "06.56"
|
||||||
|
},
|
||||||
|
"module": [
|
||||||
|
{
|
||||||
|
"coefficient": 3,
|
||||||
|
"rang": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"code": "M1101",
|
||||||
|
"code_apogee": "VRT1101",
|
||||||
|
"numero": 1101,
|
||||||
|
"note": {
|
||||||
|
"moy": "08.94",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "19.18",
|
||||||
|
"min": "03.70",
|
||||||
|
"nb_valid_evals": 3,
|
||||||
|
"value": "19.18"
|
||||||
|
},
|
||||||
|
"abbrev": "R\u00e9seaux d'entreprises",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Initiation aux r\u00e9seaux d'entreprises",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27427"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "2"
|
||||||
|
},
|
||||||
|
"code": "M1102",
|
||||||
|
"code_apogee": "VRT1102",
|
||||||
|
"numero": 1102,
|
||||||
|
"note": {
|
||||||
|
"moy": "12.58",
|
||||||
|
"nb_notes": 50,
|
||||||
|
"nb_missing": 1,
|
||||||
|
"max": "16.79",
|
||||||
|
"min": "02.50",
|
||||||
|
"nb_valid_evals": 2,
|
||||||
|
"value": "16.50"
|
||||||
|
},
|
||||||
|
"abbrev": "Initiation \u00e0 la t\u00e9l\u00e9phonie",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Initiation \u00e0 la t\u00e9l\u00e9phonie d'entreprise",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27437"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 1.5,
|
||||||
|
"rang": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"code": "M1103",
|
||||||
|
"code_apogee": "VRT1103",
|
||||||
|
"numero": 1103,
|
||||||
|
"note": {
|
||||||
|
"moy": "08.26",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "13.41",
|
||||||
|
"min": "00.94",
|
||||||
|
"nb_valid_evals": 2,
|
||||||
|
"value": "13.41"
|
||||||
|
},
|
||||||
|
"abbrev": "Architecture des \u00e9quipements informatiques",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Architecture des \u00e9quipements informatiques",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27451"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"code": "M1104",
|
||||||
|
"code_apogee": "VRT1104",
|
||||||
|
"numero": 1104,
|
||||||
|
"note": {
|
||||||
|
"moy": "10.77",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "17.90",
|
||||||
|
"min": "04.63",
|
||||||
|
"nb_valid_evals": 3,
|
||||||
|
"value": "17.90"
|
||||||
|
},
|
||||||
|
"abbrev": "Principe et architecture des r\u00e9seaux",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Principe et architecture des r\u00e9seaux",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27431"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"code": "M1105",
|
||||||
|
"code_apogee": "VRT1105",
|
||||||
|
"numero": 1105,
|
||||||
|
"note": {
|
||||||
|
"moy": "11.00",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "17.83",
|
||||||
|
"min": "04.98",
|
||||||
|
"nb_valid_evals": 2,
|
||||||
|
"value": "17.83"
|
||||||
|
},
|
||||||
|
"abbrev": "Bases des syst\u00e8mes d'exploitation",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Bases des syst\u00e8mes d'exploitation",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27433"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 1.5,
|
||||||
|
"rang": {
|
||||||
|
"value": "6"
|
||||||
|
},
|
||||||
|
"code": "M1106",
|
||||||
|
"code_apogee": "VRT1106",
|
||||||
|
"numero": 1106,
|
||||||
|
"note": {
|
||||||
|
"moy": "13.05",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "17.79",
|
||||||
|
"min": "07.08",
|
||||||
|
"nb_valid_evals": 1,
|
||||||
|
"value": "16.25"
|
||||||
|
},
|
||||||
|
"abbrev": "Initiation au d\u00e9veloppement Web",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Initiation au d\u00e9veloppement Web",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27449"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 1.5,
|
||||||
|
"rang": {
|
||||||
|
"value": "9"
|
||||||
|
},
|
||||||
|
"code": "M1107",
|
||||||
|
"code_apogee": "VRT1107",
|
||||||
|
"numero": 1107,
|
||||||
|
"note": {
|
||||||
|
"moy": "09.36",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "14.21",
|
||||||
|
"min": "04.17",
|
||||||
|
"nb_valid_evals": 3,
|
||||||
|
"value": "11.66"
|
||||||
|
},
|
||||||
|
"abbrev": "Initiation \u00e0 la mesure du signal",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Initiation \u00e0 la mesure du signal",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27440"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 1.5,
|
||||||
|
"rang": {
|
||||||
|
"value": "7"
|
||||||
|
},
|
||||||
|
"code": "M1108",
|
||||||
|
"code_apogee": "VRT1108",
|
||||||
|
"numero": 1108,
|
||||||
|
"note": {
|
||||||
|
"moy": "10.49",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "16.31",
|
||||||
|
"min": "05.39",
|
||||||
|
"nb_valid_evals": 4,
|
||||||
|
"value": "13.22"
|
||||||
|
},
|
||||||
|
"abbrev": "Acquisition et codage de l'information",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Acquisition et codage de l'information",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27453"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 1,
|
||||||
|
"rang": {
|
||||||
|
"value": "4 ex"
|
||||||
|
},
|
||||||
|
"code": "M1109",
|
||||||
|
"code_apogee": "VRT1109",
|
||||||
|
"numero": 1109,
|
||||||
|
"note": {
|
||||||
|
"moy": "12.46",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "16.00",
|
||||||
|
"min": "09.00",
|
||||||
|
"nb_valid_evals": 1,
|
||||||
|
"value": "15.00"
|
||||||
|
},
|
||||||
|
"abbrev": "PT : Recherche documentaire",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "PT : Recherche documentaire",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27444"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"effectif": "51",
|
||||||
|
"titre": "D\u00e9couverte m\u00e9tiers",
|
||||||
|
"id": "UE21456"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acronyme": "UE12",
|
||||||
|
"rang": "5",
|
||||||
|
"code_apogee": "VRTU12",
|
||||||
|
"ects": "14",
|
||||||
|
"numero": "12",
|
||||||
|
"note": {
|
||||||
|
"max": "15.20",
|
||||||
|
"value": "14.63",
|
||||||
|
"min": "07.94"
|
||||||
|
},
|
||||||
|
"module": [
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "3 ex"
|
||||||
|
},
|
||||||
|
"code": "M1201",
|
||||||
|
"code_apogee": "VRT1201",
|
||||||
|
"numero": 10,
|
||||||
|
"note": {
|
||||||
|
"moy": "13.02",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "16.00",
|
||||||
|
"min": "10.00",
|
||||||
|
"nb_valid_evals": 1,
|
||||||
|
"value": "14.00"
|
||||||
|
},
|
||||||
|
"abbrev": "Anglais",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Anglais g\u00e9n\u00e9ral de communication et initiation au vocabulaire technique",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27430"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "16 ex"
|
||||||
|
},
|
||||||
|
"code": "M1202",
|
||||||
|
"code_apogee": "VRT1202",
|
||||||
|
"numero": 20,
|
||||||
|
"note": {
|
||||||
|
"moy": "12.74",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "17.75",
|
||||||
|
"min": "04.00",
|
||||||
|
"nb_valid_evals": 2,
|
||||||
|
"value": "14.00"
|
||||||
|
},
|
||||||
|
"abbrev": "Expression",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "EC: \u00c9l\u00e9ments fondamentaux de la communication",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27439"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 1,
|
||||||
|
"rang": {
|
||||||
|
"value": "1 ex"
|
||||||
|
},
|
||||||
|
"code": "M1203",
|
||||||
|
"code_apogee": "VRT1203",
|
||||||
|
"numero": 30,
|
||||||
|
"note": {
|
||||||
|
"moy": "NA",
|
||||||
|
"nb_notes": 0,
|
||||||
|
"nb_missing": 51,
|
||||||
|
"max": "-",
|
||||||
|
"min": "-",
|
||||||
|
"nb_valid_evals": 0,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
"abbrev": "PPP: Connaitre son champ d'activit\u00e9",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "PPP: Connaitre son champ d'activit\u00e9",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27436"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "6"
|
||||||
|
},
|
||||||
|
"code": "M1204",
|
||||||
|
"code_apogee": "VRT1204",
|
||||||
|
"numero": 40,
|
||||||
|
"note": {
|
||||||
|
"moy": "10.66",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "16.35",
|
||||||
|
"min": "05.73",
|
||||||
|
"nb_valid_evals": 8,
|
||||||
|
"value": "14.09"
|
||||||
|
},
|
||||||
|
"abbrev": "Mise \u00e0 niveau en num\u00e9ration et calculs",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Mise \u00e0 niveau en num\u00e9ration et calculs",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27454"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "23"
|
||||||
|
},
|
||||||
|
"code": "M1205",
|
||||||
|
"code_apogee": "VRT1205",
|
||||||
|
"numero": 50,
|
||||||
|
"note": {
|
||||||
|
"moy": "10.37",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "18.69",
|
||||||
|
"min": "05.01",
|
||||||
|
"nb_valid_evals": 5,
|
||||||
|
"value": "10.58"
|
||||||
|
},
|
||||||
|
"abbrev": "Connaissances et Outils pour le signal",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Harmonisation des connaissances et des outils pour le signal",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27432"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "3 ex"
|
||||||
|
},
|
||||||
|
"code": "M1206",
|
||||||
|
"code_apogee": "VRT1206",
|
||||||
|
"numero": 60,
|
||||||
|
"note": {
|
||||||
|
"moy": "11.22",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "16.76",
|
||||||
|
"min": "03.91",
|
||||||
|
"nb_valid_evals": 6,
|
||||||
|
"value": "15.12"
|
||||||
|
},
|
||||||
|
"abbrev": "Circuits \u00e9lectroniques : mise \u00e0 niveau",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Circuits \u00e9lectroniques : mise \u00e0 niveau",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27435"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 2,
|
||||||
|
"rang": {
|
||||||
|
"value": "1 ex"
|
||||||
|
},
|
||||||
|
"code": "M1207",
|
||||||
|
"code_apogee": "VRT1207",
|
||||||
|
"numero": 70,
|
||||||
|
"note": {
|
||||||
|
"moy": "08.39",
|
||||||
|
"nb_notes": 51,
|
||||||
|
"nb_missing": 0,
|
||||||
|
"max": "20.00",
|
||||||
|
"min": "00.00",
|
||||||
|
"nb_valid_evals": 1,
|
||||||
|
"value": "20.00"
|
||||||
|
},
|
||||||
|
"abbrev": "Programmation 1",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Bases de la programmation",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27445"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"coefficient": 1,
|
||||||
|
"rang": {
|
||||||
|
"value": "1 ex"
|
||||||
|
},
|
||||||
|
"code": "M1208",
|
||||||
|
"code_apogee": "VRT1208",
|
||||||
|
"numero": 80,
|
||||||
|
"note": {
|
||||||
|
"moy": "NA",
|
||||||
|
"nb_notes": 0,
|
||||||
|
"nb_missing": 51,
|
||||||
|
"max": "-",
|
||||||
|
"min": "-",
|
||||||
|
"nb_valid_evals": 0,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
"abbrev": "M\u00e9thodologie Universitaire 1",
|
||||||
|
"effectif": {
|
||||||
|
"value": 51
|
||||||
|
},
|
||||||
|
"titre": "Adaptation et m\u00e9thodologie pour la r\u00e9ussite Universitaire",
|
||||||
|
"evaluation": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"id": "MIP27434"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"effectif": "51",
|
||||||
|
"titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques",
|
||||||
|
"id": "UE21478"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acronyme": "UE 1S",
|
||||||
|
"rang": "1 ex",
|
||||||
|
"code_apogee": "",
|
||||||
|
"ects": "0",
|
||||||
|
"numero": "13",
|
||||||
|
"note": {
|
||||||
|
"max": "00.00",
|
||||||
|
"value": "00.00",
|
||||||
|
"min": "00.00"
|
||||||
|
},
|
||||||
|
"module": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"effectif": "51",
|
||||||
|
"titre": "Sport &amp; Culture",
|
||||||
|
"id": "UE23716"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"situation": "Inscrit le 02\/09\/2015. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s'inscrire en S2."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Absences
|
||||||
|
* **`Absences/ListeAbsEtud`**
|
||||||
|
* Paramètres: `etudid, 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```
|
||||||
|
* 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```
|
||||||
|
* Résultat: *html*
|
||||||
|
|
||||||
|
* **`Absences/doAnnuleJustif`**
|
||||||
|
* Paramètres: ```context, datedebut0, datefin0, demijournee```
|
||||||
|
* Résultat: *html*
|
||||||
|
|
||||||
|
* **`Absences/EtatAbsencesGr`**
|
||||||
|
* Liste les absences d'un ou plusieurs groupes entre deux dates.
|
||||||
|
* Paramètres: ```group_ids, debut, fin, with_boursier=True, format=html```
|
||||||
|
* Résultat: liste des absences. Si `format="json"`, cela donne par exemple:
|
||||||
|
```[ {
|
||||||
|
boursier: "N",
|
||||||
|
nbabs: "9",
|
||||||
|
nbabsjust: "2",
|
||||||
|
nbabsnonjust: "7",
|
||||||
|
nbjustifs_noabs: "0",
|
||||||
|
nomprenom: "Mme Poisson Dodouce",
|
||||||
|
etudid: "EID12345"
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]```
|
||||||
|
* Remarque: on peut spécifier plusieurs groupes.
|
||||||
|
|
||||||
|
## Modules
|
||||||
|
* **`Notes/do_moduleimpl_list`**
|
||||||
|
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]`
|
||||||
|
* Résultat: liste de moduleimpl
|
||||||
|
|
||||||
|
* **`Notes/do_moduleimpl_withmodule_list`**
|
||||||
|
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]`
|
||||||
|
* Résultat: liste triée de moduleimpl, avec l'attribut `module`
|
||||||
|
|
||||||
|
|
||||||
|
## En savoir plus
|
||||||
|
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,132 +1,73 @@
|
|||||||
# Interfaçage ScoDoc - Apogée
|
# Interfaçage ScoDoc - Apogée
|
||||||
|
L'export des résultats de ScoDoc vers Apogée se fait après le jury. Pour les DUT classiques, on le fait deux fois par an: une première fois en janvier, une autre en juillet.
|
||||||
|
|
||||||
L'export des résultats de ScoDoc vers Apogée se fait après le jury. Pour les DUT
|
L'export des notes finales (et des décisions de jury) vers le logiciel Apogée peut être fait de plusieurs façons: soit par remplissage automatique de maquettes Apogée, soit en passant par des fichiers Excel.
|
||||||
classiques, on le fait deux fois par an: une première fois en janvier, une autre
|
|
||||||
en juillet.
|
|
||||||
|
|
||||||
L'export des notes finales (et des décisions de jury) vers le logiciel Apogée
|
La procédure détaillée d'import des résultats de ScoDoc dans Apogée est décrite ici: [SCODOC_import_notes_dans_apogee.pdf](papers/SCODOC_import_notes_dans_apogee.pdf), merci à Bérangère Lhoumeau, du service Scolarité de l'IUT de Tarbes.
|
||||||
se fait par remplissage automatique de maquettes Apogée par ScoDoc.
|
|
||||||
|
|
||||||
La procédure détaillée d'import des résultats de ScoDoc dans Apogée est décrite
|
|
||||||
ici:
|
|
||||||
[SCODOC_import_notes_dans_apogee.pdf](papers/SCODOC_import_notes_dans_apogee.pdf),
|
|
||||||
merci à Bérangère Lhoumeau, du service Scolarité de l'IUT de Tarbes.
|
|
||||||
|
|
||||||
Voir aussi [cette page pour les aspects spécifiques au BUT](BUTApogee.md).
|
|
||||||
|
|
||||||
## Remplissage des fichiers maquette Apogée (CSV)
|
## Remplissage des fichiers maquette Apogée (CSV)
|
||||||
|
|
||||||
Solution intégrée à ScoDoc en juillet 2016.
|
Solution intégrée à ScoDoc en juillet 2016.
|
||||||
|
|
||||||
La démarche est la suivante:
|
La démarche est la suivante:
|
||||||
|
|
||||||
1. S'assurer que les maquettes pédagogiques Apogée et ScoDoc sont cohérentes.
|
1. S'assurer que les maquettes pédagogiques Apogée et ScoDoc sont cohérentes. Les éléments pédagogiques Apogée (UE, modules) ont des codes (comme `VRTU11`) qu'il faut reporter dans les programmes ScoDoc (champs "Code Apogée" dans les programmes pédagogiques.
|
||||||
Les éléments pédagogiques Apogée (UE, modules) ont des codes (comme
|
|
||||||
`VRTU11`) qu'il faut reporter dans les programmes ScoDoc (champs "Code
|
|
||||||
Apogée" dans les programmes pédagogiques.
|
|
||||||
1. Exporter depuis Apogée le fichier CSV à remplir.
|
1. Exporter depuis Apogée le fichier CSV à remplir.
|
||||||
1. Sélectionner l'ensemble des semestres (S2 ou S4 ou LP) à considérer. Le menu
|
1. Sélectionner l'ensemble des semestres (S2 ou S4 ou LP) à considérer. Le menu "Jury / Export vers Apogée" permet de remplir ce fichier. Il génère aussi plusieurs fichiers annexes, dont un résumé des décision commenté, et une liste des étudiants interdits de ré-inscription (les "NAR", pour Non Autorisés à Redoubler).
|
||||||
"Jury / Export vers Apogée" permet de remplir ce fichier. Il génère aussi
|
|
||||||
plusieurs fichiers annexes, dont un résumé des décision commenté, et une
|
|
||||||
liste des étudiants interdits de ré-inscription (les "NAR", pour Non
|
|
||||||
Autorisés à Redoubler).
|
|
||||||
1. Importer dans ScoDoc les fichiers maquette Apogée nécessaires (un par étape Apogée).
|
1. Importer dans ScoDoc les fichiers maquette Apogée nécessaires (un par étape Apogée).
|
||||||
1. Après tenue du jury ScoDoc, vérifier la cohérence des listes de ScoDoc avec
|
1. Après tenue du jury ScoDoc, vérifier la cohérence des listes de ScoDoc avec celle d'Apogée et exporter les maquette remplies.
|
||||||
celle d'Apogée et exporter les maquette remplies.
|
|
||||||
1. Les fichiers remplis peuvent alors être importés dans Apogée.
|
1. Les fichiers remplis peuvent alors être importés dans Apogée.
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Bien que ScoDoc tente d'inférer de nombreuses informations, les résultats doivent impérativement être vérifiés avant clôture des opérations et édition des PV et attestations.
|
||||||
alt="/!\" /> Bien que ScoDoc tente d'inférer de nombreuses informations, les
|
|
||||||
résultats doivent impérativement être vérifiés avant clôture des opérations et
|
|
||||||
édition des PV et attestations.
|
|
||||||
|
|
||||||
Quelques détails ci-dessous.
|
Quelques détails ci-dessous.
|
||||||
|
|
||||||
### Saisie des codes Apogée dans ScoDoc
|
|
||||||
|
|
||||||
Les codes Apogée des éléments constitutifs (UE et modules de ScoDoc) doivent
|
### Saisie des codes Apogée dans ScoDoc
|
||||||
être saisis par le responsable de formation sur la page d'édition du programme
|
Les codes Apogée des éléments constitutifs (UE et modules de ScoDoc) doivent être saisis par le responsable de formation sur la page d'édition du programme pédagogique. En principe, le programme pédagogique ScoDoc est utilisé par de nombreux semestres. Afin de faciliter la gestion, il est possible d'éditer les codes Apogée des formations même si elles sont verrouillées, et cela peut se faire directement sur la page qui montre l'ensemble de la formation. Il suffit de cliquer sur un code Apogée, pour ouvrir un champ d'édition, comme on le voit ci-dessous:
|
||||||
pédagogique. En principe, le programme pédagogique ScoDoc est utilisé par de
|
|
||||||
nombreux semestres. Afin de faciliter la gestion, il est possible d'éditer les
|
|
||||||
codes Apogée des formations même si elles sont verrouillées, et cela peut se
|
|
||||||
faire directement sur la page qui montre l'ensemble de la formation. Il suffit
|
|
||||||
de cliquer sur un code Apogée, pour ouvrir un champ d'édition, comme on le voit
|
|
||||||
ci-dessous:
|
|
||||||
|
|
||||||
![SaisieCodeApoModule.png](screens/SaisieCodeApoModule.png)
|
![SaisieCodeApoModule.png](screens/SaisieCodeApoModule.png)
|
||||||
|
|
||||||
Par ailleurs, chaque semestre est associé à une étape Apogée (VET), et, en
|
Par ailleurs, chaque semestre est associé à une étape Apogée (VET), et, en option, à un code d'élément annuel et un code d'élément semestre. Pour le deuxième semestre 5S2) du DUT R&T Villetaneuse, cela donne:
|
||||||
option, à un code d'élément annuel et un code d'élément semestre. Pour le
|
|
||||||
deuxième semestre 5S2) du DUT R&T Villetaneuse, cela donne:
|
|
||||||
|
|
||||||
- Code étape (VET): `V1RT` (l'étape est annuelle)
|
* Code étape (VET): `V1RT` (l'étape est annuelle)
|
||||||
- Code année (ELP): `VRT1A` (cet élément contiendra exactement les mêmes
|
* Code année (ELP): `VRT1A` (cet élément contiendra exactement les mêmes informations que le VET)
|
||||||
informations que le VET)
|
* Code semestre (ELP): `VRTW2` (la note de ces élément sera la moyenne générale du semestre)
|
||||||
- Code semestre (ELP): `VRTW2` (la note de ces élément sera la moyenne générale
|
|
||||||
du semestre)
|
|
||||||
|
|
||||||
Notez que la nomenclature est variable et souvent peu prévisible, même au sein
|
Notez que la nomenclature est variable et souvent peu prévisible, même au sein d'un seul établissement.
|
||||||
d'un seul établissement.
|
|
||||||
|
Les trois codes ci-dessus sont à entrer dans le semestre (et non sur la formation car elle est partagée par des semestres différents, qui ont parfois des codes variés): passer par le menu "Semestre / Modifier le semestre".
|
||||||
|
|
||||||
Les trois codes ci-dessus sont à entrer dans le semestre (et non sur la
|
|
||||||
formation car elle est partagée par des semestres différents, qui ont parfois
|
|
||||||
des codes variés): passer par le menu "Semestre / Modifier le semestre".
|
|
||||||
|
|
||||||
### Préparation de l'ensemble des semestres
|
### Préparation de l'ensemble des semestres
|
||||||
|
Pour préparer un export des résultats, il faut définir l'ensemble des semestres que l'on veut considérer. Cet ensemble recouvre éventuellement plusieurs étapes Apogée. Chaque semestre ScoDoc peut en effet être associé à plusieurs étapes Apogée, ce qui est utile pour les formations accueillant différents types de publics (apprentis, FC, contrats de professionnalisation). D'autre part, plus rarement, les étudiants d'une étape Apogée peuvent être inscrits dans plusieurs semestres ScoDoc: c'est le cas pour certaines formations avec des parcours optionnels, dont il est préférable de séparer les suivis pédagogiques (cas du DUT CJ deuxième année à Villetaneuse: V2CJ recouvre deux options qui sont des promotions d'étudiants distinctes).
|
||||||
|
|
||||||
Pour préparer un export des résultats, il faut définir l'ensemble des semestres
|
La constitution de l'ensemble des semestres ScoDoc (semset) va définir l'ensemble des étapes Apogée à considérer (typiquement, on indique le S2 ou le S4, ScoDoc retrouvant automatiquement le semestre précédent). Traiter chaque année scolaire (par exemple S2 et S4) dans des ensembles séparés (chacune a son code étape).
|
||||||
que l'on veut considérer. Cet ensemble recouvre éventuellement plusieurs étapes
|
|
||||||
Apogée. Chaque semestre ScoDoc peut en effet être associé à plusieurs étapes
|
|
||||||
Apogée, ce qui est utile pour les formations accueillant différents types de
|
|
||||||
publics (apprentis, FC, contrats de professionnalisation). D'autre part, plus
|
|
||||||
rarement, les étudiants d'une étape Apogée peuvent être inscrits dans plusieurs
|
|
||||||
semestres ScoDoc: c'est le cas pour certaines formations avec des parcours
|
|
||||||
optionnels, dont il est préférable de séparer les suivis pédagogiques (cas du
|
|
||||||
DUT CJ deuxième année à Villetaneuse: V2CJ recouvre deux options qui sont des
|
|
||||||
promotions d'étudiants distinctes).
|
|
||||||
|
|
||||||
La constitution de l'ensemble des semestres ScoDoc (semset) va définir
|
Chaque étape Apogée correspond à un fichier "maquette" spécifique, que ScoDoc va devoir importer et remplir. Ces fichiers devront ensuite être ré-importés dans Apogée.
|
||||||
l'ensemble des étapes Apogée à considérer (typiquement, on indique le S2 ou le
|
|
||||||
S4, ScoDoc retrouvant automatiquement le semestre précédent). Traiter chaque
|
|
||||||
année scolaire (par exemple S2 et S4) dans des ensembles séparés (chacune a son
|
|
||||||
code étape).
|
|
||||||
|
|
||||||
Chaque étape Apogée correspond à un fichier "maquette" spécifique, que ScoDoc va
|
|
||||||
devoir importer et remplir. Ces fichiers devront ensuite être ré-importés dans
|
|
||||||
Apogée.
|
|
||||||
|
|
||||||
### Précautions à prendre et remarques diverses
|
### Précautions à prendre et remarques diverses
|
||||||
|
* Codage des fichiers: Apogée (du moins à l'Université Paris 13) exporte et importe des fichiers maquettes codés en latin-1 (ISO-8859-1). Les web services (portail Apogée), tout comme ScoDoc, travaillent en utf8. Pour faciliter les échanges, les fichiers maquettes importés et exportés de ScoDoc sont en latin-1 (sauf celui reçu du portail Apogée).
|
||||||
|
|
||||||
- **Codage des fichiers**: Apogée (du moins à l'Université Paris 13) exporte et
|
* Etudiants démissionnaires: on note les démissions dans ScoDoc (sur la fiche de l'étudiant), mais en général pas dans Apogée. Le résultat Apogée sera DEF. Ne jamais désinscrire du semestre ScoDoc les démissionnaires !
|
||||||
importe des fichiers maquettes codés en latin-1 (ISO-8859-1). Les web
|
|
||||||
services (portail Apogée), tout comme ScoDoc, travaillent en utf8. Pour
|
|
||||||
faciliter les échanges, les fichiers maquettes importés et exportés de ScoDoc
|
|
||||||
sont en latin-1 (sauf celui reçu du portail Apogée).
|
|
||||||
|
|
||||||
- **Format des nombres** (notes): les notes sont calculées par ScoDoc en haute
|
* Exports à mi-année (après jurys de janvier):
|
||||||
précision, mais affichées avec deux chiffres après la virgule dans
|
Si periode==1 (jury de janvier), alors l'étape Apogée (annuelle) n'est pas terminée.
|
||||||
l'application (ce qui donne 4 chiffres significatifs, par exemple *12,34*,
|
|
||||||
soit une précision de un pour dix mille, ce qui semble plus que suffisant
|
|
||||||
compte tenu de l'incertitude inhérente au processus de correction des
|
|
||||||
évaluations par des enseignants humains).
|
|
||||||
Les exports excel et API conservent la précision maximale.
|
|
||||||
Les exports Apogée passant par des fichiers texte, une perte de précision est
|
|
||||||
inévitable. Le format par défaut est là aussi deux chiffres après la virgule,
|
|
||||||
mais peut-être modifié via la configuration globale de ScoDoc, accessible à
|
|
||||||
l'administrateur uniquement. Voir *Configuration / Export Apogée /
|
|
||||||
Configuration des codes de décision*, tout en bas de la page.
|
|
||||||
|
|
||||||
![Config. précision exports Apogée](screens/apo-precision.png)
|
Donc on ne remplit pas le code annuel (`elt_annee_apo`, comme `VRT1A`) ni le `VET` sauf si l'année est en fait validée grace à un semestre de l'an précédent: (voir r1525)
|
||||||
|
* jury de fin de S1: si le S2 est validé;
|
||||||
|
* jury de fin de S3: si le S4 est validé.
|
||||||
|
|
||||||
- **Étudiants démissionnaires**: on note les démissions dans ScoDoc (sur la fiche
|
|
||||||
de l'étudiant), mais en général pas dans Apogée. Le résultat Apogée sera DEF.
|
|
||||||
Ne jamais désinscrire du semestre ScoDoc les démissionnaires !
|
|
||||||
|
|
||||||
- Exports à **mi-année** (après jurys de janvier): Si `periode==1` (jury de janvier),
|
|
||||||
alors l'étape Apogée (annuelle) n'est pas terminée.
|
|
||||||
Donc on ne remplit pas le code annuel (`elt_annee_apo`, comme `VRT1A`) ni le
|
|
||||||
`VET` sauf si l'année est en fait validée grâce à un semestre de l'an
|
|
||||||
précédent: (voir r1525)
|
|
||||||
|
|
||||||
- jury de fin de S1: si le S2 est validé;
|
----
|
||||||
- jury de fin de S3: si le S4 est validé.
|
|
||||||
|
|
||||||
|
## Exports via fichiers Excel (maintenant déconseillé)
|
||||||
|
Une solution alternative et anciennement utilisée est de générer à partir de ScoDoc un fichier Excel que l'on importe ensuite dans Apogée.
|
||||||
|
|
||||||
|
Dominique Soudière (IUT du Havre) a développé des macros Excel qui facilitent ce travail: à télécharger sur
|
||||||
|
<a href="/attachments/Interface.xlsm" download>Interface.xlsm</a> et <a href="/attachments/imp_exp.xls" download>imp_exp.xls</a>
|
||||||
|
(explications dans <a href="/attachments/InterfaceScoDocVersApogee-Excel.pdf" download>InterfaceScoDocVersApogee-Excel.pdf</a>).
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,35 +1,28 @@
|
|||||||
# Services XML pour l'export des données (obsolète)
|
|
||||||
|
|
||||||
!!! warning "Obsolète"
|
# Services XML pour l'export des données
|
||||||
|
ScoDoc offre un certain nombre de services XML pour faciliter son intégration dans
|
||||||
- Cette page est obsolète. Utiliser [l'API ScoDoc 9](ScoDoc9API.md)
|
|
||||||
|
|
||||||
ScoDoc offrait un certain nombre de services XML pour faciliter son intégration dans
|
|
||||||
d'autres composants (typiquement un portail de services pour étudiant,
|
d'autres composants (typiquement un portail de services pour étudiant,
|
||||||
comme le portail eSup CEVIF à l'IUT de Villetaneuse).
|
comme le portail eSup CEVIF à l'IUT de Villetaneuse).
|
||||||
|
|
||||||
|
|
||||||
## Identification des étudiants
|
## Identification des étudiants
|
||||||
|
les étudiants peuvent être identifiés au choix par l'un des trois codes:
|
||||||
|
|
||||||
Les étudiants peuvent être identifiés au choix par l'un des trois codes:
|
- **`etudid`** : code interne ScoDoc, toujours disponible.
|
||||||
|
|
||||||
* **`etudid`** : code interne ScoDoc, toujours disponible.
|
- **`code_ine`** : code INE Apogée, s'il a été renseigné
|
||||||
|
|
||||||
* **`code_ine`** : code INE Apogée, s'il a été renseigné
|
- **`code_nip`** : code NIP Apogée, s'il a été renseigné
|
||||||
|
|
||||||
* **`code_nip`** : code NIP Apogée, s'il a été renseigné
|
|
||||||
|
|
||||||
## Listes des principaux points d'entrée
|
## Listes des principaux points d'entrée
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> pour des raisons historiques, les noms des fonctions ne sont pas homogènes :-(
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
* **`XMLgetEtudInfos`**
|
||||||
alt="/!\" /> pour des raisons historiques, les noms des fonctions ne sont pas
|
|
||||||
homogènes :-(
|
|
||||||
|
|
||||||
* **`XMLgetEtudInfos`**
|
|
||||||
* Paramètre: etudid ou code_ine ou code_nip
|
* Paramètre: etudid ou code_ine ou code_nip
|
||||||
* Donne des informations sur l'étudiant et les semestres où il est (ou a été) inscrit.
|
* Donne des informations sur l'étudiant et les semestres où il est (ou a été) inscrit.
|
||||||
* Exemple:
|
* Exemple:
|
||||||
|
```
|
||||||
```xml
|
|
||||||
<etudiant nom="DUPOND" prenom="FREDERIC" sexe="M." code_ine="250308450" nomprenom="M. Frederic MARSAUD" code_nip="105022504" etudid="ADCDEF" email="toto@xxx.com" photo_url="https://scodoc.example.com/Dept/Fotos/dcp_2777.h90.jpg">
|
<etudiant nom="DUPOND" prenom="FREDERIC" sexe="M." code_ine="250308450" nomprenom="M. Frederic MARSAUD" code_nip="105022504" etudid="ADCDEF" email="toto@xxx.com" photo_url="https://scodoc.example.com/Dept/Fotos/dcp_2777.h90.jpg">
|
||||||
<insemestre etat="I" formsemestre_id="SEM4740" date_fin="2007-06-30" date_debut="2007-01-22" />
|
<insemestre etat="I" formsemestre_id="SEM4740" date_fin="2007-06-30" date_debut="2007-01-22" />
|
||||||
<insemestre etat="I" formsemestre_id="SEM3608" date_fin="2007-01-31" date_debut="2006-09-01" />
|
<insemestre etat="I" formsemestre_id="SEM3608" date_fin="2007-01-31" date_debut="2006-09-01" />
|
||||||
@ -37,11 +30,11 @@ homogènes :-(
|
|||||||
</etudiant>
|
</etudiant>
|
||||||
```
|
```
|
||||||
|
|
||||||
* **`XMLgetGroupsInPartition`**
|
* **`XMLgetGroupsInPartition`**
|
||||||
* Paramètres: `partition_id=X`
|
* Paramètres: `partition_id=X`
|
||||||
* Donne la liste des étudiants dans un semestre, par groupes.
|
* Donne la liste des étudiants dans un semestre, par groupes.
|
||||||
* Exemple:
|
* Exemple:
|
||||||
```xml
|
```
|
||||||
<ajax-response>
|
<ajax-response>
|
||||||
<response type="object" id="MyUpdater">
|
<response type="object" id="MyUpdater">
|
||||||
|
|
||||||
@ -58,13 +51,13 @@ homogènes :-(
|
|||||||
</ajax-response>
|
</ajax-response>
|
||||||
```
|
```
|
||||||
|
|
||||||
* **`XMLgetFormsemestres`**
|
* **`XMLgetFormsemestres`**
|
||||||
* Paramètres optionnels:
|
* Paramètres optionnels:
|
||||||
* `formsemestre_id` code semestre ScoDoc
|
* `formsemestre_id` code semestre ScoDoc
|
||||||
* `etape_apo` code étape Apogée
|
* `etape_apo` code étape Apogée
|
||||||
* Donne informations sur le ou les semestres sélectionnés (par défaut, sur tous les semestres).
|
* Donne informations sur le ou les semestres sélectionnés (par défaut, sur tous les semestres).
|
||||||
* Exemple:
|
* Exemple:
|
||||||
```xml
|
```
|
||||||
<formsemestrelist>
|
<formsemestrelist>
|
||||||
<formsemestre
|
<formsemestre
|
||||||
formsemestre_id="SEM4741"
|
formsemestre_id="SEM4741"
|
||||||
@ -78,12 +71,12 @@ homogènes :-(
|
|||||||
</formsemestrelist>
|
</formsemestrelist>
|
||||||
```
|
```
|
||||||
|
|
||||||
* **`formation_export_xml`**
|
|
||||||
|
* **`formation_export_xml`**
|
||||||
* Paramètre: `formation_id`
|
* Paramètre: `formation_id`
|
||||||
* Export XML du programme pédagogique complet (UE, matières, modules). Ce
|
* Export XML du programme pédagogique complet (UE, matières, modules). Ce format XML est réimportable pour créer une nouvelle formation.
|
||||||
format XML est réimportable pour créer une nouvelle formation.
|
|
||||||
* Exemple:
|
* Exemple:
|
||||||
```xml
|
```
|
||||||
<formation acronyme="DUT R&T" titre_officiel="DUT Réseaux et Télécommunications" formation_code="FCOD2" version="0" titre="DUT Réseaux et Télécommunications" formation_id="FORM1130">
|
<formation acronyme="DUT R&T" titre_officiel="DUT Réseaux et Télécommunications" formation_code="FCOD2" version="0" titre="DUT Réseaux et Télécommunications" formation_id="FORM1130">
|
||||||
<ue acronyme="UE 1" ue_code="UCOD5" numero="1" ue_id="UE1131" titre="Formation Générale" formation_id="FORM1130" type="0">
|
<ue acronyme="UE 1" ue_code="UCOD5" numero="1" ue_id="UE1131" titre="Formation Générale" formation_id="FORM1130" type="0">
|
||||||
<matiere titre="Mathématiques" matiere_id="MAT1132" numero="10" ue_id="UE1131">
|
<matiere titre="Mathématiques" matiere_id="MAT1132" numero="10" ue_id="UE1131">
|
||||||
@ -91,14 +84,14 @@ homogènes :-(
|
|||||||
titre="Fondamentaux d'algèbre et de trigonométrie" module_id="MOD1138" formation_id="FORM1130" heures_td="30.0"/>
|
titre="Fondamentaux d'algèbre et de trigonométrie" module_id="MOD1138" formation_id="FORM1130" heures_td="30.0"/>
|
||||||
...
|
...
|
||||||
...
|
...
|
||||||
```xml
|
```
|
||||||
|
|
||||||
* **`formsemestre_bulletinetud`**
|
* **`formsemestre_bulletinetud`**
|
||||||
* Paramètres: `format=xml&formsemestre_id=XXX&etudid=YYYX`
|
* Paramètres: `format=xml&formsemestre_id=XXX&etudid=YYYX`
|
||||||
* Paramètre optionnel: `xml_with_decisions` (force l'envoi des décisions même si elles ne doivent pas être montrées aux étudiants)
|
* Paramètre optionnel: xml_with_decisions (force l'envoi des décisions même si elles ne doivent pas être montrées aux étudiants)
|
||||||
* Bulletin de notes de l'étudiant. Toutes les notes obtenues dans ce semestres et prises en compte pour le calcul des moyennes (intégralement saisies), et décisions du jury si elles sont affichées (voir réglage des options du semestre).
|
* Bulletin de notes de l'étudiant. Toutes les notes obtenues dans ce semestres et prises en compte pour le calcul des moyennes (intégralement saisies), et décisions du jury si elles sont affichées (voir réglage des options du semestre).
|
||||||
* Exemple:
|
* Exemple:
|
||||||
```xml
|
```
|
||||||
<bulletinetud date="2007-07-11T18:50:48.164292" formsemestre_id="SEM4729" publie="1" etudid="10408738" etape_apo="V1TR">
|
<bulletinetud date="2007-07-11T18:50:48.164292" formsemestre_id="SEM4729" publie="1" etudid="10408738" etape_apo="V1TR">
|
||||||
<etudiant nom="DUPONT" prenom="YACINE" sexe="M." code_ine="2222222" etudid="11111111" code_nip="1033333333" email="toto@hotmail.com" photo_url="https://www-gtr.iutv.univ-paris13.fr/Dept/Fotos/dcp_n_01919.h90.jpg"/>
|
<etudiant nom="DUPONT" prenom="YACINE" sexe="M." code_ine="2222222" etudid="11111111" code_nip="1033333333" email="toto@hotmail.com" photo_url="https://www-gtr.iutv.univ-paris13.fr/Dept/Fotos/dcp_n_01919.h90.jpg"/>
|
||||||
<note value="12.92"/>
|
<note value="12.92"/>
|
||||||
@ -119,29 +112,25 @@ homogènes :-(
|
|||||||
```
|
```
|
||||||
|
|
||||||
Si les décisions du jury sont publiées, on a un élément:
|
Si les décisions du jury sont publiées, on a un élément:
|
||||||
```xml
|
```
|
||||||
<decision etat="I" code="ADM"/>
|
<decision etat="I" code="ADM"/>
|
||||||
```
|
```
|
||||||
et le cas échéant dans la décision une autorisation d'inscription (passage à un
|
et le cas échéant dans la décision une autorisation d'inscription (passage à un autre semestre) sous la forme:
|
||||||
autre semestre) sous la forme:
|
```
|
||||||
```xml
|
|
||||||
<autorisation_inscription semestre_id="3"/>
|
<autorisation_inscription semestre_id="3"/>
|
||||||
```
|
```
|
||||||
|
|
||||||
Le bulletin comporte aussi le décompte des absences enregistrées au cours de ce
|
Le bulletin comporte aussi le décompte des absences enregistrées au cours de ce semestre (comptées en nombre de demi-journées):
|
||||||
semestre (comptées en nombre de demi-journées):
|
```
|
||||||
```xml
|
|
||||||
<absences nbabsjust="0" nbabs="2"/>
|
<absences nbabsjust="0" nbabs="2"/>
|
||||||
```
|
```
|
||||||
|
|
||||||
* **`formsemestre_recapcomplet`**
|
* **`formsemestre_recapcomplet`**
|
||||||
* Paramètres: `formsemestre_id=XXXX&tabformat=xml`
|
* Paramètres: `formsemestre_id=XXXX&tabformat=xml`
|
||||||
* Paramètre optionnel: xml_with_decisions (force l'envoi des décisions même
|
* Paramètre optionnel: xml_with_decisions (force l'envoi des décisions même si elles ne doivent pas être montrées aux étudiants)
|
||||||
si elles ne doivent pas être montrées aux étudiants)
|
* L'ensemble des bulletins de toutes la promotion d'étudiants (au même format que `formsemestre_bulletinetud`).
|
||||||
* L'ensemble des bulletins de toutes la promotion d'étudiants (au même
|
|
||||||
format que `formsemestre_bulletinetud`).
|
|
||||||
* Exemple:
|
* Exemple:
|
||||||
```xml
|
```
|
||||||
<recapsemestre date="2007-07-11T19:00:12.370531" formsemestre_id="SEM4729">
|
<recapsemestre date="2007-07-11T19:00:12.370531" formsemestre_id="SEM4729">
|
||||||
<evals_info date_derniere_note="2007-07-02 14:04:11.00" nb_evals_vides="0" nb_evals_en_cours="0" nb_evals_completes="28"/>
|
<evals_info date_derniere_note="2007-07-02 14:04:11.00" nb_evals_vides="0" nb_evals_en_cours="0" nb_evals_completes="28"/>
|
||||||
<bulletinetud ...>
|
<bulletinetud ...>
|
||||||
@ -153,32 +142,25 @@ semestre (comptées en nombre de demi-journées):
|
|||||||
|
|
||||||
|
|
||||||
## Absences
|
## Absences
|
||||||
|
* **`XMLgetAbsEtud`**
|
||||||
* **`XMLgetAbsEtud`**
|
* Paramètres: etudid ou code_ine ou code_nip, beg_date, end_date (au format ISO 2009-11-04)
|
||||||
* Paramètres: etudid ou code_ine ou code_nip, beg_date, end_date (au format
|
|
||||||
ISO 2009-11-04)
|
|
||||||
* La liste des absences entre les dates indiquées (inclues):
|
* La liste des absences entre les dates indiquées (inclues):
|
||||||
|
```
|
||||||
```xml
|
|
||||||
<absences beg_date="2009-11-03" end_date="2009-11-29" etudid="EID1911">
|
<absences beg_date="2009-11-03" end_date="2009-11-29" etudid="EID1911">
|
||||||
<abs begin="2009-11-04 08:00:00" end="2009-11-04 11:59:59" justified="1" description="malade"/>
|
<abs begin="2009-11-04 08:00:00" end="2009-11-04 11:59:59" justified="1" description="malade"/>
|
||||||
<abs begin="2009-11-04 12:00:00" end="2009-11-04 17:59:59" justified="0" description=""/>
|
<abs begin="2009-11-04 12:00:00" end="2009-11-04 17:59:59" justified="0" description=""/>
|
||||||
</absences>
|
</absences>
|
||||||
```
|
```
|
||||||
|
|
||||||
* Les billets d'absences sont entrés via l'appel **`AddBilletAbsence`**:
|
* Les billets d'absences sont entrés via l'appel **`AddBilletAbsence`**:
|
||||||
* Paramètres: etudid ou code_ine ou code_nip, begin, end, description
|
* Paramètres: etudid ou code_ine ou code_nip, begin, end, description
|
||||||
* Résultat: XML contenant l'ID du billet créé.
|
* Résultat: XML contenant l'ID du billet créé.
|
||||||
|
|
||||||
* **`XMLgetBilletsEtud`**
|
* **`XMLgetBilletsEtud`**
|
||||||
|
|
||||||
* Paramètre: etudid ou code_ine ou code_nip
|
* Paramètre: etudid ou code_ine ou code_nip
|
||||||
* Les "billets" d'absence reçus pour cet étudiant (`etat` vaut 0 si le billet
|
* Les "billets" d'absence reçus pour cet étudiant (`etat` vaut 0 si le billet n'a pas été traité, 1 sinon, et `description` est la raison déclarée de l'absence).
|
||||||
n'a pas été traité, 1 sinon, et `description` est la raison déclarée de
|
|
||||||
l'absence).
|
|
||||||
* Exemple (1 row par billet):
|
* Exemple (1 row par billet):
|
||||||
|
```
|
||||||
```xml
|
|
||||||
<table origin="" caption="" id="gt_920276">
|
<table origin="" caption="" id="gt_920276">
|
||||||
<row>
|
<row>
|
||||||
<billet_id value="ABS-3"/>
|
<billet_id value="ABS-3"/>
|
||||||
@ -189,3 +171,4 @@ semestre (comptées en nombre de demi-journées):
|
|||||||
</row>
|
</row>
|
||||||
</table>
|
</table>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,48 +1,27 @@
|
|||||||
# Synchronisation avec Apogée
|
La page **Synchroniser avec étape Apogée** est accessible depuis le tableau de bord du semestre (via le menu **Inscriptions**). Elle permet de vérifier et modifier les inscriptions au semestre en utilisant l'étape Apogée (les inscriptions dans Apogée sont normalement gérées par le service de la Scolarité, cette opération ne concerne donc que les étudiants régulièrement inscrits).
|
||||||
|
|
||||||
La page **Synchroniser avec étape Apogée** est accessible depuis le tableau de
|
|
||||||
bord du semestre (via le menu **Inscriptions**). Elle permet de vérifier et
|
|
||||||
modifier les inscriptions au semestre en utilisant l'étape Apogée (les
|
|
||||||
inscriptions dans Apogée sont normalement gérées par le service de la Scolarité,
|
|
||||||
cette opération ne concerne donc que les étudiants régulièrement inscrits).
|
|
||||||
|
|
||||||
![MenuSynchroEtape.png](screens/MenuSynchroEtape.png).
|
![MenuSynchroEtape.png](screens/MenuSynchroEtape.png).
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Cette opération ne fonctionnera que si vous avez correctement renseigné le code étape du semestre (menu **Modifier le semestre**).
|
||||||
alt="/!\" /> Cette opération ne fonctionnera que si vous avez correctement
|
|
||||||
renseigné le code étape du semestre (menu **Modifier le semestre**).
|
|
||||||
|
|
||||||
ScoDoc peut rencontrer quatre cas de figure pour chaque étudiant:
|
ScoDoc peut rencontrer quatre cas de figure pour chaque étudiant:
|
||||||
|
|
||||||
1- étudiant présent dans Apogée et inscrit dans le semestre ScoDoc (*tout va
|
1- étudiant présent dans Apogée et inscrit dans le semestre ScoDoc (*tout va bien*)
|
||||||
bien*)
|
|
||||||
|
|
||||||
2- étudiant dans Apogée, dans ScoDoc, mais pas inscrit dans le semestre (*non
|
2- étudiant dans Apogée, dans ScoDoc, mais pas inscrit dans le semestre (*non incrit, on devrait l'inscrire*)
|
||||||
inscrit, on devrait l'inscrire*)
|
|
||||||
|
|
||||||
3- étudiant dans Apogée et pas dans ScoDoc (*on devrait l'importer et
|
3- étudiant dans Apogée et pas dans ScoDoc (*on devrait l'importer et l'inscrire*)
|
||||||
l'inscrire*)
|
|
||||||
|
|
||||||
4- étudiant inscrit dans le semestre ScoDoc, mais pas trouvé dans Apogée (sur la
|
4- étudiant inscrit dans le semestre ScoDoc, mais pas trouvé dans Apogée (sur la base du code NIP) (*peut être pas encore inscrit, ou bien une erreur de saisie ?*)
|
||||||
base du code NIP) (*peut être pas encore inscrit, ou bien une erreur de saisie
|
|
||||||
?*)
|
|
||||||
|
|
||||||
Ces quatre cas sont présentés dans des cadres différents.
|
Ces quatre cas sont présentés dans des cadres différents.
|
||||||
|
|
||||||
Le bouton **Importer et Inscrire** permet de traiter les étudiants du cas 3 (cas
|
Le bouton **Importer et Inscrire** permet de traiter les étudiants du cas 3 (cas rencontré normalement en début de semestre).
|
||||||
rencontré normalement en début de semestre).
|
|
||||||
|
|
||||||
Le lien **inscrire ces étudiants**, en bas du cadre **Etudiants non inscrits
|
Le lien **inscrire ces étudiants**, en bas du cadre **Etudiants non inscrits dans ce semestre**, permet d'inscrire les étudiants dans le cas 2.
|
||||||
dans ce semestre**, permet d'inscrire les étudiants dans le cas 2.
|
|
||||||
|
|
||||||
S'il reste, quelques semaines après la rentrée, des étudiants dans le cas 4 et
|
S'il reste, quelques semaines après la rentrée, des étudiants dans le cas 4 et que le code étape du semestre est correct, contactez votre service Scolarité pour élucider la situation.
|
||||||
que le code étape du semestre est correct, contactez votre service Scolarité
|
|
||||||
pour élucider la situation.
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
Voir aussi [Vérifier les codes NIP](VerifCodeNIP), [ Guide pour le chef de département](GuideAdminFormation).
|
||||||
|
|
||||||
- [Vérifier les codes NIP](VerifCodeNIP.md)
|
|
||||||
- [Guide pour le ou la responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
@ -3,67 +3,32 @@
|
|||||||
|
|
||||||
ScoDoc est basé sur Flask, se référer à la doc de Flask pour aller plus loin.
|
ScoDoc est basé sur Flask, se référer à la doc de Flask pour aller plus loin.
|
||||||
|
|
||||||
On travaille toujours en tant qu'utilisateur `scodoc`, dans le *virtualenv*:
|
On travaille toujours en tant qu'utilisateur `scodoc`, dans le virtualenv:
|
||||||
|
|
||||||
```bash
|
su scodoc # si nécessaire
|
||||||
su scodoc # si nécessaire
|
cd /opt/scodoc
|
||||||
cd /opt/scodoc
|
source venv/bin/activate
|
||||||
source venv/bin/activate
|
|
||||||
```
|
|
||||||
|
|
||||||
## Lancement interactif
|
## Lancement interactif
|
||||||
|
|
||||||
```bash
|
flask shell
|
||||||
flask shell
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour mémoire, un certains nombre de commandes en ligne facilitant la gestion de
|
Pour mémoire, un certains nombre de commandes en ligne facilitant la gestion de
|
||||||
ScoDoc sont disponibles, afficher la liste avec
|
ScoDoc sont disponibles, afficher la liste avec
|
||||||
|
|
||||||
```bash
|
flask --help
|
||||||
flask --help
|
|
||||||
```
|
|
||||||
|
|
||||||
## Tests unitaires
|
## Tests unitaires
|
||||||
|
|
||||||
On utilise `pytest`. Ainsi, la commande
|
On utilise `pytest`. Ainsi, la commande
|
||||||
|
|
||||||
```bash
|
pytest tests/unit
|
||||||
pytest tests/unit
|
|
||||||
```
|
|
||||||
|
|
||||||
lance l'ensemble des tests unitaires.
|
lance l'ensemble des tests unitaires.
|
||||||
|
|
||||||
Ces tests sont lancés automatiquement avant la création du paquet Debian
|
|
||||||
(release).
|
|
||||||
|
|
||||||
Rappelons quelques options utiles de `pytest`: `-x` permet de s'arrêter sur la
|
|
||||||
première erreur, et `--pdb` lance directement le debugger sur l'erreur.
|
|
||||||
Ainsi,
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pytest --pdb -x tests/api/test_api_departements.py
|
|
||||||
```
|
|
||||||
|
|
||||||
lancera un test en mode "interactif", utile pour les mises au point.
|
|
||||||
|
|
||||||
Et pour lancer un seul test:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pytest -x --pdb tests/unit/test_but_cursus.py::test_refcomp_niveaux_info
|
|
||||||
```
|
|
||||||
|
|
||||||
### Création de la base de données pour les tests unitaires
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./tools/create_database.sh SCODOC_TEST
|
|
||||||
export FLASK_ENV=test
|
|
||||||
flask db upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
## Tests Selenium (web)
|
## Tests Selenium (web)
|
||||||
|
|
||||||
*Ce projet est abandonné pour l'instant* (Aurélien, JMP).
|
TODO (Aurélien, JMP) *ce projet est abandonné pour l'instant*.
|
||||||
|
|
||||||
## Portail pour tests
|
## Portail pour tests
|
||||||
|
|
||||||
@ -71,15 +36,11 @@ Un faux portail "apogée" pour inscrire de faux étudiants avec photos. Utile po
|
|||||||
|
|
||||||
Le code se trouve dans `tools/fakeportal/`.
|
Le code se trouve dans `tools/fakeportal/`.
|
||||||
|
|
||||||
Le serveur écoute par défaut sur `tcp/8678`. Il faudra paramétrer l'URL du
|
Le serveur écoute par défaut sur `tcp/8678`. Il faudra paramétrer l'URL du "portail" dans les préférences du ScoDoc à tester, qui est en général sur le même hôte, donc `http://localhost:8678`.
|
||||||
"portail" dans les préférences du ScoDoc à tester, qui est en général sur le
|
|
||||||
même hôte, donc `http://localhost:8678`.
|
|
||||||
|
|
||||||
Lancement:
|
Lancement:
|
||||||
|
|
||||||
```bash
|
/opt/scodoc/tools/fakeportal/fakeportal.py
|
||||||
/opt/scodoc/tools/fakeportal/fakeportal.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## Tests de l'API ScoDoc9
|
## Tests de l'API ScoDoc9
|
||||||
|
|
||||||
@ -89,59 +50,62 @@ peu différent de celui des tests unitaire: on test un *client* de l'API. Il fau
|
|||||||
donc un serveur, tournant sur la même machine ou sur une machine distante. Ce
|
donc un serveur, tournant sur la même machine ou sur une machine distante. Ce
|
||||||
serveur doit avoir été configuré avec des données de test.
|
serveur doit avoir été configuré avec des données de test.
|
||||||
|
|
||||||
### TL;DR
|
|
||||||
|
|
||||||
Si votre installation de développement est bien configurée, il suffit de lancer
|
|
||||||
|
|
||||||
```bash
|
|
||||||
tools/test_api.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### Configuration du serveur pour tester l'API
|
### Configuration du serveur pour tester l'API
|
||||||
|
|
||||||
1. modifier `/opt/scodoc/.env` pour indiquer
|
1. modifier /opt/scodoc/.env pour indiquer
|
||||||
```bash
|
```
|
||||||
FLASK_ENV=test_api
|
FLASK_ENV=test_api
|
||||||
FLASK_DEBUG=1
|
FLASK_DEBUG=1
|
||||||
```
|
```
|
||||||
|
2. En tant qu'utilisateur scodoc, lancer:
|
||||||
1. En tant qu'utilisateur scodoc, lancer:
|
```
|
||||||
```bash
|
|
||||||
tools/create_database.sh --drop SCODOC_TEST_API
|
tools/create_database.sh --drop SCODOC_TEST_API
|
||||||
flask db upgrade
|
flask db upgrade
|
||||||
flask sco-db-init --erase
|
flask sco-db-init --erase
|
||||||
flask init-test-database
|
flask init-test-database
|
||||||
```
|
```
|
||||||
|
|
||||||
Ces commandes vont effacer la base `SCODOC_TEST_API` si elle existe, la
|
Ces commandes vont effacer la base `SCODOC_TEST_API` si elle existe, la
|
||||||
recréer, mettre à jour le schéma pour la dernière version de ScoDoc installée,
|
recréer, mettre à jour le schéma pour la dernière version de ScoDoc installée,
|
||||||
l'initialiser et la peupler de données fictives pour les tests.
|
l'initialiser et la peupler de données fictives pour les tests.
|
||||||
|
|
||||||
1. Relancer ScoDoc:
|
3. Relancer ScoDoc:
|
||||||
```bash
|
```
|
||||||
flask run --host 0.0.0.0 --debug
|
flask run --host 0.0.0.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Le script `tests/api/start_api_server.sh -p 5555` fait tout cela pour vous !
|
|
||||||
|
|
||||||
### Configuration du client de test API
|
### Configuration du client de test API
|
||||||
|
|
||||||
1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans
|
1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans
|
||||||
`scodoc/tests/api/.env`, et éditer ce fichier `.env`pour y configurer votre
|
`scodoc/tests/api/.env`, et éditer ce fichier `.env`pour y configurer votre
|
||||||
*client* de test (ne pas confondre avec `scodoc/.env` qui est la config de
|
*client* de test (ne pas confondre avec `scodoc/.env` qui est la config de
|
||||||
votre serveur).
|
votre serveur).
|
||||||
Normalement, il est suffisant d'indiquer l'URL de votre serveur. Si le
|
Normalement, il est suffisant d'indiquer l'URL de votre serveur. Si le
|
||||||
client de test est sur la même machine que le serveur ScoDoc, c'est simplement:
|
client de test est sur la même machine que le serveur ScoDoc, c'est simplement:
|
||||||
|
```
|
||||||
```bash
|
SCODOC_URL = "http://localhost:5000/"
|
||||||
SCODOC_URL="http://localhost:5000/"
|
```
|
||||||
```
|
|
||||||
|
|
||||||
### Lancement des tests de l'API
|
### Lancement des tests de l'API
|
||||||
|
|
||||||
Le serveur scodoc étant lancé comme expliqué ci-dessus, on utilise `pytest` sur
|
Le serveur scodoc étant lancé comme expliqué ci-dessus, on utilise `pytest`sur
|
||||||
le client (qui peut être un autre shell de la même machine, bien sûr).
|
le client (qui peut être un autre shell de la même machine, bien sûr).
|
||||||
|
|
||||||
```bash
|
```
|
||||||
cd /opt/scodoc/
|
cd /opt/scodoc/
|
||||||
pytest tests/api/test_api_xxx.py # remplacer xxx par votre test
|
pytest tests/api/test_api_xxx.py # remplacer xxx par votre test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rappelons quelques options utiles de `pytest`: `-x` permet de s'arrêter sur la
|
||||||
|
première erreur, et `--pdb` lance directement le débuggueur sur l'erreur.
|
||||||
|
Ainsi,
|
||||||
|
```
|
||||||
|
pytest --pdb -x tests/api/test_api_departements.py
|
||||||
|
```
|
||||||
|
lancera un test en mode "interactif", utile pour les mises au point.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,142 +1,72 @@
|
|||||||
# Récapitulatif des opérations en fin de semestre (et début du suivant)
|
# 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
|
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.
|
||||||
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.
|
|
||||||
|
|
||||||
Voir aussi le [Guide pour la cheffe ou le chef de
|
Voir aussi le [Guide pour la cheffe ou le chef de département](GuideAdminFormation.md).
|
||||||
département](GuideAdminFormation.md).
|
|
||||||
|
|
||||||
## À la fin d'un semestre
|
## À la fin d'un semestre
|
||||||
|
|
||||||
1. Vérifier que les réglages de votre semestre correspondent bien à ce que vous
|
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).
|
||||||
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)
|
![reglages-semestres-check.png](screens/reglages-semestres-check.png)
|
||||||
|
|
||||||
2. Vérifier que le cursus choisi est correct (menu *Semestre* / *Voir la
|
2. Vérifier que le parcours 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.
|
||||||
formation*): ainsi, le parcours affiché doit être "DUT selon l'arrêté d'août
|
|
||||||
2005" pour le DUT.
|
|
||||||
|
|
||||||
3. Vérifier que toutes les notes ont été saisies: regarder le tableau de bord,
|
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.
|
||||||
qui affiche dans chaque module les évaluations et indique si des notes
|
|
||||||
manquent ou sont en attente.
|
|
||||||
|
|
||||||
4. (optionnel) Vérifier les absences si cela n'a pas déjà été fait. Dans le
|
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*.
|
||||||
menu *Semestre* du tableau de bord, suivre *Vérifier les absences aux
|
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.
|
||||||
é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.
|
|
||||||
|
|
||||||
5. Réunir la commission (ou le jury):
|
5. Réunir la commission (ou le jury):
|
||||||
|
|
||||||
a. Il peut être utile de préparer des documents pour les membres de la
|
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*.
|
||||||
commission: suivre *Générer feuille préparation Jury* dans le menu *Jury*.
|
|
||||||
|
|
||||||
b. Durant la commission, nous recommandons de saisir en temps réel les
|
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*).
|
||||||
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*).
|
|
||||||
|
|
||||||
6. Édition du procès-verbal: menu *Jury / Voir les décisions du jury*.
|
6. Édition du procès-verbal: menu *Jury / Voir les décisions du jury*.
|
||||||
|
|
||||||
1. En bas de la page, un lien *Courriers individuels (classeur pdf)* permet
|
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).
|
||||||
de générer les courriers à adresser aux étudiants (penser à vérifier
|
|
||||||
leurs adresses postales au préalable sur leurs fiches).
|
|
||||||
|
|
||||||
2. Le lien *PV officiel (pdf)* permet de générer le procès verbal avec la
|
2. Le lien *PV officiel (pdf)* permet de générer le procès verbal avec la liste des décisions pour chaque étudiant.
|
||||||
liste des décisions pour chaque étudiant.
|
|
||||||
|
|
||||||
A ce stade, le semestre est terminé. Il est recommandé de le **verrouiller**
|
A ce stade, le semestre est terminé. Il est recommandé de le **verrouiller** après les prises de décisions définitives.
|
||||||
après les prises de décisions définitives.
|
|
||||||
|
|
||||||
## Mise en place du semestre suivant
|
## Mise en place du semestre suivant
|
||||||
|
|
||||||
1. **Créer une instance du semestre suivant** (par exemple un S2 après un S1).
|
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*.
|
||||||
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*.
|
|
||||||
|
|
||||||
2. En bas de la page qui détaille le programme, suivre le lien *Mettre en place
|
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.
|
||||||
un nouveau semestre de formation* et remplissez le formulaire.
|
|
||||||
|
|
||||||
Une autre approche, souvent plus rapide, consiste à créer un semestre en
|
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 ** *Cloner ce semestre* **.
|
||||||
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 **
|
|
||||||
*Cloner ce semestre* **.
|
|
||||||
|
|
||||||
1. Indiquez les dates correctes de début et de fin du semestre (attention:
|
1. Indiquez les dates correctes de début et de fin du semestre (attention: il est important que les dates ne se chevauchent pas: le nouveau semestre doit commencer quelques jours (ou semaines) après le précédent !)
|
||||||
il est important que les dates ne se chevauchent pas: le nouveau semestre
|
|
||||||
doit commencer quelques jours (ou semaines) après le précédent !)
|
|
||||||
|
|
||||||
2. Désignez le responsable (directeur des études en DUT).
|
2. Désignez le responsable (directeur des études en DUT).
|
||||||
|
|
||||||
3. Si vous êtes interfacé à Apogée (via un portail), indiquez le code étape
|
3. Si vous êtes interfacé à Apogée (via un portail), indiquez le code étape Apogée correspondant à votre nouveau semestre.
|
||||||
Apogée correspondant à votre nouveau semestre.
|
|
||||||
|
|
||||||
4. Cocher les modules de votre semestre, et associez leur un enseignant
|
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).
|
||||||
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*.
|
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.
|
NB: toutes ces informations pourront être ultérieurement modifiées via le lien *Semestre / Modifer le semestre* du tableau de bord.
|
||||||
|
|
||||||
3. **Inscrire les étudiants** Sauf pour le premier semestre (S1), il est en
|
3. **Inscrire les étudiants** Sauf pour le premier semestre (S1), il est en général plus simple de s'appuyer sur les décisions de jury pour sélectionner rapidement les étudiants à inscrire. C'est ce que permet la page *Inscriptions / Passage des étudiants depuis d'autres semestres*. Voir les explications sur cette page.
|
||||||
général plus simple de s'appuyer sur les décisions de jury pour sélectionner
|
|
||||||
rapidement les étudiants à inscrire. C'est ce que permet la page
|
|
||||||
*Inscriptions / Passage des étudiants depuis d'autres semestres*. Voir les
|
|
||||||
explications sur cette page.
|
|
||||||
|
|
||||||
4. Si vous avez un portail **Apogée** et que les inscriptions Apogée ont été
|
4. Si vous avez un portail **Apogée** et que les inscriptions Apogée ont été effectuées (ou les changements de codes étapes), utiliser *Inscriptions / Synchroniser avec étape Apogée* pour vérifier et compléter la liste des inscrits. (Pour plus d'informations consulter aussi les pages [Vérifier les codes NIP](VerifCodeNIP.md) et [Synchroniser avec une étape Apogée](SynchroApogee.md).)
|
||||||
effectuées (ou les changements de codes étapes), utiliser *Inscriptions /
|
|
||||||
Synchroniser avec étape Apogée* pour vérifier et compléter la liste des
|
|
||||||
inscrits. (Pour plus d'informations consulter aussi les pages [Vérifier les
|
|
||||||
codes NIP](VerifCodeNIP.md) et [Synchroniser avec une étape
|
|
||||||
Apogée](SynchroApogee.md).)
|
|
||||||
|
|
||||||
5. Si vous n'avez pas Apogée, qu'il s'agit du premier semestre, que vous
|
5. Si vous n'avez pas Apogée, qu'il s'agit du premier semestre, que vous n'utilisez pas non plus d'imports par fichiers Excel, et qu'il manque des étudiants (inscrits d'autres origines, cas particulier), il faut les créer individuellement (via le lien *créer un nouvel étudiant* en bas de la page d'accueil) puis les inscrire (via le menu *Inscriptions / Inscrire un étudiant* du tableau de bord semestre. **Avant cela, vérifiez bien que l'étudiant n'existe pas déjà dans ScoDoc afin de ne pas créer de doublons**.
|
||||||
n'utilisez pas non plus d'imports par fichiers Excel, et qu'il manque des
|
|
||||||
étudiants (inscrits d'autres origines, cas particulier), il faut les créer
|
6. (optionnel) Répartir les étudiants dans des groupes de TD (*Inscriptions / Modifier les groupes*).
|
||||||
individuellement (via le lien *créer un nouvel étudiant* en bas de la page
|
|
||||||
d'accueil) puis les inscrire (via le menu *Inscriptions / Inscrire un
|
|
||||||
étudiant* du tableau de bord semestre. **Avant cela, vérifiez bien que
|
|
||||||
l'étudiant n'existe pas déjà dans ScoDoc afin de ne pas créer de doublons**.
|
|
||||||
|
|
||||||
6. (optionnel) Répartir les étudiants dans des groupes de TD (*Inscriptions /
|
|
||||||
Modifier les groupes*).
|
|
||||||
|
|
||||||
C'est prêt. Les enseignants autorisés peuvent créer des évaluations et saisir des notes.
|
C'est prêt. Les enseignants autorisés peuvent créer des évaluations et saisir des notes.
|
||||||
|
|
||||||
## Problèmes couramment rencontrés
|
## Problèmes couramment rencontrés
|
||||||
|
|
||||||
- **Etudiants en doubles**: ceci arrive lorsqu'on crée manuellement les
|
- **Etudiants en doubles**: 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. 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.
|
||||||
é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.
|
|
||||||
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.
|
|
||||||
|
|
||||||
- **Désinscription d'un étudiant**: si vous avez inscrit par erreur un étudiant
|
- **Désinscription d'un étudiant**: si vous avez inscrit par erreur un étudiant dans un semestre, ce n'est pas grave: vous pouvez le désinscrire en utilisant le menu *Scolarité / désinscrire* sur sa fiche individuelle (à droite du nom du semestre concerné).
|
||||||
dans un semestre, ce n'est pas grave: vous pouvez le désinscrire en utilisant
|
|
||||||
le menu *Scolarité / désinscrire* sur sa fiche individuelle (à droite du nom
|
|
||||||
du semestre concerné).
|
|
||||||
|
|
||||||
- **Aucun étudiant à inscrire**: cela peut arriver si les dates de semestres
|
- **Aucun étudiant à inscrire**: cela peut arriver si les dates de semestres sont incorrectes (chevauchement): en particulier, vérifier que la date de début du nouveau semestre est bien postérieure à la date de fin des semestres d'où proviennent les étudiants à inscrire.
|
||||||
sont incorrectes (chevauchement): en particulier, vérifier que la date de
|
|
||||||
début du nouveau semestre est bien postérieure à la date de fin des semestres
|
|
||||||
d'où proviennent les étudiants à inscrire.
|
|
||||||
|
|
||||||
Pour toute question, n'hésitez pas à nous contacter ([contacts](Contact.md)).
|
Pour toutes questions, n'hésitez pas à contacter la liste de diffusion Notes (voir la [page d'information sur les listes](ListesDeDiffusion.md)).
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [Vérifier les codes NIP](VerifCodeNIP.md)
|
|
||||||
- [Guide pour le ou la responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,226 +0,0 @@
|
|||||||
# Procédure pour la mise à jour vers Debian 12 et ScoDoc 9.6
|
|
||||||
|
|
||||||
Cette page documente la mise à jour d'un serveur ScoDoc 9.4 ou 9.5 tournant sous
|
|
||||||
Linux Debian 11 vers la version suivante: ScoDoc 9.6 sous Debian 12.
|
|
||||||
|
|
||||||
On commence par mettre à jour normalement le système Debian, puis on change la
|
|
||||||
version de la base de données postgresql puis on met à jour ScoDoc.
|
|
||||||
|
|
||||||
Si vous souhaitez installer ScoDoc 9.6 sans partir d'un serveur 9.5,
|
|
||||||
[voir la page d'installation](GuideInstallDebian12.md)
|
|
||||||
|
|
||||||
Tout compris, la mise à jour d'un serveur typique prend environ 20 à 30 minutes
|
|
||||||
et ne demande aucune compétence particulière, autre que de suivre
|
|
||||||
scrupuleusement les instructions ci-dessous, sans oublier d'étape.
|
|
||||||
|
|
||||||
## Upgrade Debian 11 vers Debian 12
|
|
||||||
|
|
||||||
La documentation officielle est là:
|
|
||||||
[DebianUpgrade](https://wiki.debian.org/DebianUpgrade). Elle couvre tous les
|
|
||||||
cas, mais en général notre serveur ScoDoc est plus simple: résumé ci-dessous
|
|
||||||
|
|
||||||
### Sauvegarder
|
|
||||||
|
|
||||||
Avant tout, sauvegarder vos données et l'ensemble de votre serveur. Vérifiez que
|
|
||||||
vous avez assez d'espace disque disponible (par exemple avec la commande `df -h`).
|
|
||||||
|
|
||||||
Prévenez les utilisateurs et arrêtez le service: `systemctl stop scodoc9`
|
|
||||||
|
|
||||||
### Mettre à jour Debian
|
|
||||||
|
|
||||||
Dans la suite, on suppose que vous avez un shell root. Sinon, utilisez `sudo`.
|
|
||||||
|
|
||||||
#### Vérifier qu'on est à jour
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get update
|
|
||||||
apt-get upgrade
|
|
||||||
apt-get full-upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Modifier les sources de mise à jour
|
|
||||||
|
|
||||||
Si vous savez le faire, éditer le fichier `/etc/apt/sources.list` (par exemple
|
|
||||||
avec la commande `nano /etc/apt/sources.list`) et remplacer le mot `bullseye`par
|
|
||||||
`bookworm`. Vous pouvez aussi utiliser `sed`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
|
|
||||||
```
|
|
||||||
|
|
||||||
Bien vérifier le résultat. Sinon, il peut être plus simple de reprendre ce contenu:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
|
|
||||||
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
|
|
||||||
|
|
||||||
deb http://security.debian.org/debian-security bookworm-security main
|
|
||||||
deb-src http://security.debian.org/debian-security bookworm-security main
|
|
||||||
|
|
||||||
deb http://deb.debian.org/debian/ bookworm-updates main
|
|
||||||
deb-src http://deb.debian.org/debian/ bookworm-updates main
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Mettre à jour
|
|
||||||
|
|
||||||
```bash
|
|
||||||
/bin/rm /etc/apt/sources.list.d/scodoc.list
|
|
||||||
apt-get clean
|
|
||||||
apt-get update
|
|
||||||
```
|
|
||||||
|
|
||||||
Les deux commandes suivantes sont longues, surtout ne pas les interrompre.
|
|
||||||
Répondre "oui" (ou la réponse par défaut) aux diverses question, ou dire que
|
|
||||||
vous conservez les versions locales modifiées de vos fichiers de configuration
|
|
||||||
(lorsqu'un texte long s'affiche, taper 'q' puis "entrée"...).
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get upgrade
|
|
||||||
#
|
|
||||||
|
|
||||||
# Puis:
|
|
||||||
apt-get full-upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
Un petit nettoyage:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get autoremove
|
|
||||||
```
|
|
||||||
|
|
||||||
Et un redémarrage
|
|
||||||
|
|
||||||
```bash
|
|
||||||
shutdown -r now
|
|
||||||
```
|
|
||||||
|
|
||||||
Après reconnexion, vous avez un serveur Debian 12. Reste à s'occuper de la base
|
|
||||||
de données et de ScoDoc. D'abord, s'assurer que le service n'a pas redémarré:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl status scodoc9
|
|
||||||
```
|
|
||||||
|
|
||||||
et si besoin le stopper avec :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl stop scodoc9
|
|
||||||
```
|
|
||||||
|
|
||||||
## Problème avec proxmox
|
|
||||||
|
|
||||||
Si votre installation utilise des containers LXC/proxmox: on nous a signalé un
|
|
||||||
problème de compatibilité proxmox / Debian 12, qui bloque le service REDIS
|
|
||||||
(voire empêche le démarrage du container). Il semblerait que proxmox 7 ne soit
|
|
||||||
pas compatible avec Debian 12. Faites des essais avant de migrer ScoDoc.
|
|
||||||
|
|
||||||
Au cas où ce lien peut servir: [Debian 12 et
|
|
||||||
proxmox](https://www.abyssproject.net/2023/07/retex-sur-mes-upgrades-vers-debian-12-et-proxmox-ve-8)
|
|
||||||
|
|
||||||
Merci de vos retours si vous avez des informations sur ce problème.
|
|
||||||
|
|
||||||
## Upgrade Postgresql
|
|
||||||
|
|
||||||
Debian 12 est livré avec Postgresql 15, tandis que l'installation précédente
|
|
||||||
tournait sous Postgresql 13. Il est donc nécessaire de migrer les données en
|
|
||||||
base vers la nouvelle version.
|
|
||||||
Procédure inspirée de
|
|
||||||
[ce tuto en français](https://wiki.fiat-tux.fr/books/administration-syst%C3%A8mes/page/migration-d%E2%80%99une-version-majeure-de-postgresql-%C3%A0-une-autre)
|
|
||||||
|
|
||||||
Toujours dans un shell root, copier/coller les commandes suivantes:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Arrêter et mettre à jour
|
|
||||||
service postgresql stop
|
|
||||||
pg_dropcluster --stop 15 main
|
|
||||||
pg_upgradecluster -m upgrade 13 main
|
|
||||||
systemctl start postgresql
|
|
||||||
# Vérifier l'etat du service
|
|
||||||
systemctl status postgresql
|
|
||||||
```
|
|
||||||
|
|
||||||
Puis
|
|
||||||
|
|
||||||
```bash
|
|
||||||
/bin/su -c "/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages" postgres
|
|
||||||
|
|
||||||
pg_dropcluster 13 main --stop
|
|
||||||
apt-get autoremove --purge postgresql-13 postgresql-client-13
|
|
||||||
```
|
|
||||||
|
|
||||||
Soyez attentif et vérifier que les commandes précédentes se sont exécutées sans erreur.
|
|
||||||
|
|
||||||
## Passage de ScoDoc 9.5 (ou 9.4) à 9.6
|
|
||||||
|
|
||||||
### Modification des sources de paquets Debian
|
|
||||||
|
|
||||||
- Supprimer l'ancien fichier:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
/bin/rm -f /etc/apt/sources.list.d/scodoc*
|
|
||||||
```
|
|
||||||
|
|
||||||
- Ajouter le dépot scodoc: copier le fichier <a href="/attachments/scodoc.list"
|
|
||||||
download>scodoc.list</a> dans `/etc/apt/sources.list.d/` à l'aide de la
|
|
||||||
commande
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget --directory-prefix=/etc/apt/sources.list.d/ https://scodoc.org/attachments/scodoc.list
|
|
||||||
```
|
|
||||||
|
|
||||||
ou si vous préférez l'éditer pour qu'il contienne juste cette ligne:
|
|
||||||
|
|
||||||
```text
|
|
||||||
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
|
|
||||||
deb http://scodoc.org/deb/bookworm bookworm main
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Installation de la clé
|
|
||||||
|
|
||||||
L'ancienne clé crypto qui authentifie scodoc est toujours valide, mais il faut
|
|
||||||
l'installer différemment. Comme root, lancer:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-key export BBDA4CF7 | gpg --dearmour -o /etc/apt/trusted.gpg.d/scodoc.gpg
|
|
||||||
```
|
|
||||||
|
|
||||||
### Mise à jour du paquet scodoc9
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt update && apt upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
devrait installer `scodoc9.6.x` (cette première install est un peu longue, il
|
|
||||||
faut en effet charger et configurer de nombreux modules python).
|
|
||||||
|
|
||||||
### Migration des absences vers les assiduités
|
|
||||||
|
|
||||||
Le nouveau module de gestion des assiduité (absences/présences/justificatifs)
|
|
||||||
permet d'importer les anciennes "absences" (et justificatifs). Pour cela, lancer
|
|
||||||
les commandes suivantes:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl stop scodoc9 # le service DOIT etre stoppé !
|
|
||||||
/bin/su scodoc
|
|
||||||
#
|
|
||||||
cd /opt/scodoc
|
|
||||||
source venv/bin/activate
|
|
||||||
flask migrate-abs-to-assiduites
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour plus de détails et paramétrages (plages horaires, ...), voir
|
|
||||||
[la documentation sur la migration des absences](AssiduitesMigration.md).
|
|
||||||
|
|
||||||
Le traitement est assez long et peut prendre plusieurs minutes,
|
|
||||||
suivant le nombre d'absences et la vitesse de votre serveur.
|
|
||||||
|
|
||||||
### Démarrage du service
|
|
||||||
|
|
||||||
Comme d'habitude, en tant que `root`: (faire `exit`si vous êtes resté dans le
|
|
||||||
shell scodoc précédent):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl start scodoc9
|
|
||||||
```
|
|
@ -1,197 +1,186 @@
|
|||||||
|
|
||||||
# Établissements utilisant ScoDoc
|
# Établissements utilisant ScoDoc
|
||||||
|
Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant libre, nous ne sommes pas en mesure de dresser une liste exhaustive. Si vous utilisez le logiciel, merci d'envoyer un mail à <emmanuel.viennet@gmail.com>.
|
||||||
Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
|
|
||||||
libre, nous ne sommes pas en mesure de dresser une liste exhaustive. Si vous
|
|
||||||
utilisez le logiciel, merci d'envoyer un mail à <emmanuel.viennet@gmail.com>.
|
|
||||||
|
|
||||||
## Établissements membres de l'association (2020-2021) [liste non à jour]
|
## Établissements membres de l'association (2020-2021) [liste non à jour]
|
||||||
|
|
||||||
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr);
|
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr);
|
||||||
|
|
||||||
* [IUT de Besançon-Vesoul](http://iut-bv.univ-fcomte.fr), depuis 2013;
|
* [IUT de Besançon-Vesoul](http://iut-bv.univ-fcomte.fr), depuis 2013;
|
||||||
|
|
||||||
* [IUT de Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, GLT, GEA;
|
* [IUT de Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, GLT, GEA;
|
||||||
|
|
||||||
* [IUT de Cachan](http://www.iut-cachan.u-psud.fr) (Université Paris-Saclay, depuis 2009);
|
* [IUT de Cachan](http://www.iut-cachan.u-psud.fr) (Université Paris-Saclay, depuis 2009);
|
||||||
|
|
||||||
* [IUT de Cergy-Pontoise](http://www.iut.u-cergy.fr) tous les départements (GB, GCCD, GEII x 2, GLT, QLIO, MMI, TC x 2), DUT, LP, années spéciales et FC : plus de 1600 étudiants en 2018, utilise ScoDoc depuis 2015;
|
* [IUT de Cergy-Pontoise](http://www.iut.u-cergy.fr) tous les départements (GB, GCCD, GEII x 2, GLT, QLIO, MMI, TC x 2), DUT, LP, années spéciales et FC : plus de 1600 étudiants en 2018, utilise ScoDoc depuis 2015;
|
||||||
|
|
||||||
* [IUT de Chartres](https://www.univ-orleans.fr/iut-chartres/);
|
* [IUT de Chartres](https://www.univ-orleans.fr/iut-chartres/);
|
||||||
|
|
||||||
* [IUT1 Grenoble - Alpes](https://iut1.univ-grenoble-alpes.fr): cinq départements (GMP, GTHE, GEII, RT, GCCD), déploiement en 2011;
|
* [IUT1 Grenoble - Alpes](https://iut1.univ-grenoble-alpes.fr): cinq départements (GMP, GTHE, GEII, RT, GCCD), déploiement en 2011;
|
||||||
|
|
||||||
* [IUT de Nantes](http://www.iutnantes.univ-nantes.fr/), départements Informatique, GEA, GEII, GMP, GTE, QLIO et SGM (DUT et Licences Pro, depuis 2008);
|
* [IUT de Nantes](http://www.iutnantes.univ-nantes.fr/), départements Informatique, GEA, GEII, GMP, GTE, QLIO et SGM (DUT et Licences Pro, depuis 2008);
|
||||||
|
|
||||||
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/) depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012);
|
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/) depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012);
|
||||||
|
|
||||||
* [IUT de Perpignan](http://www.iut-perpignan.fr) depuis 2013, départements GB, GEA, GIM, GLT sur Perpignan CJ et GCGP sur Narbonne et TC et STID sur Carcassonne;
|
* [IUT de Perpignan](http://www.iut-perpignan.fr) depuis 2013, départements GB, GEA, GIM, GLT sur Perpignan CJ et GCGP sur Narbonne et TC et STID sur Carcassonne;
|
||||||
|
|
||||||
* [IUT de Poitiers](http://iutp.univ-poitiers.fr/);
|
* [IUT de Poitiers](http://iutp.univ-poitiers.fr/);
|
||||||
|
|
||||||
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/) utilisateur depuis 2009, sur deux sites;
|
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/) utilisateur depuis 2009, sur deux sites;
|
||||||
|
|
||||||
* [IUT Sénart-Fontainebleau](http://www.iutsf.u-pec.fr).
|
* [IUT Sénart-Fontainebleau](http://www.iutsf.u-pec.fr).
|
||||||
|
|
||||||
* [IUT de Saint-Etienne](http://www.iut.univ-st-etienne.fr/);
|
* [IUT de Saint-Etienne](http://www.iut.univ-st-etienne.fr/);
|
||||||
|
|
||||||
### Départements membres de l'association (2020-2021)
|
### Départements membres de l'association (2020-2021)
|
||||||
|
|
||||||
* Département d'Informatique de l'IUT d'Aix en Provence;
|
* Département d'Informatique de l'IUT d'Aix en Provence;
|
||||||
|
|
||||||
* département Informatique de l'[IUT Grand Ouest Normandie](http://iut-caen.unicaen.fr/presentation/4-sites-geographiques/site-d-ifs-campus-iii/), site d'Ifs;
|
* département Informatique de l'[IUT Grand Ouest Normandie](http://iut-caen.unicaen.fr/presentation/4-sites-geographiques/site-d-ifs-campus-iii/), site d'Ifs;
|
||||||
|
|
||||||
* département Génie Biologique de l'[IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/) (utilisateur depuis 2009);
|
* département Génie Biologique de l'[IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/) (utilisateur depuis 2009);
|
||||||
|
|
||||||
* département GEA de l'[IUT de Tours](http://iut.univ-tours.fr/);
|
* département GEA de l'[IUT de Tours](http://iut.univ-tours.fr/);
|
||||||
|
|
||||||
* départements GIM et GMP de l'[IUT de Mantes](http://www.iut-mantes.uvsq.fr) (Université de Versailles St Quentin en Yvelines).
|
* départements GIM et GMP de l'[IUT de Mantes](http://www.iut-mantes.uvsq.fr) (Université de Versailles St Quentin en Yvelines).
|
||||||
|
|
||||||
* département Informatique de l'[IUT de Montpellier-Sète](https://iut-montpellier-sete.edu.umontpellier.fr/dut-informatique/)
|
* département Informatique de l'[IUT de Montpellier-Sète](https://iut-montpellier-sete.edu.umontpellier.fr/dut-informatique/)
|
||||||
|
|
||||||
### Autres membres
|
### Autres membres
|
||||||
|
* [IUT de La Rochelle](http://www.iut-larochelle.fr/).
|
||||||
|
|
||||||
* [IUT de La Rochelle](http://www.iut-larochelle.fr/).
|
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/) (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005);
|
||||||
|
|
||||||
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/) (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005);
|
## IUT utilisateurs
|
||||||
|
* [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii),
|
||||||
|
(site de Salon);
|
||||||
|
|
||||||
## IUT utilisateurs ou adhérents
|
* [IUT Aix-Marseille](http://iut.univ-amu.fr/), Mesures Physiques (depuis 2012) et Informatique;
|
||||||
|
|
||||||
* [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii),
|
* [IUT d'Amiens](http://www.iut-amiens.fr/) tous les départements (6, soit 1850
|
||||||
(site de Salon);
|
|
||||||
|
|
||||||
* [IUT Aix-Marseille](http://iut.univ-amu.fr/), Mesures Physiques (depuis 2012) et Informatique;
|
|
||||||
|
|
||||||
* [IUT d'Amiens](http://www.iut-amiens.fr/) tous les départements (6, soit 1850
|
|
||||||
étudiants), depuis 2014;
|
étudiants), depuis 2014;
|
||||||
|
|
||||||
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr);
|
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr);
|
||||||
|
|
||||||
* [IUT de Belfort-Montbéliard](http://www.iut-bm.univ-fcomte.fr/) (MP, R&T), depuis 2013;
|
* [IUT de Belfort-Montbéliard](http://www.iut-bm.univ-fcomte.fr/) (MP, R&T), depuis 2013;
|
||||||
|
|
||||||
* [IUT de Béthune](http://www.iutbethune.org) (Université d'Artois), tous départements (Chimie, GCCD, GEII, GMP, QLIO et R&T);
|
* [IUT de Béthune](http://www.iutbethune.org) (Université d'Artois), tous départements (Chimie, GCCD, GEII, GMP, QLIO et R&T);
|
||||||
|
|
||||||
* [IUT de Béziers](http://www.iutbeziers.fr) depuis 2014 (RT, MMI, CS, TC);
|
* [IUT de Béziers](http://www.iutbeziers.fr) depuis 2014 (RT, MMI, CS, TC);
|
||||||
|
|
||||||
* [IUT de Blagnac](https://www.iut-blagnac.fr/fr/), CS, GIM, INFO, RT + 4 LP ; depuis 2017, environ 600 étudiants/an;
|
* [IUT de Blagnac](https://www.iut-blagnac.fr/fr/), CS, GIM, INFO, RT + 4 LP ; depuis 2017, environ 600 étudiants/an;
|
||||||
|
|
||||||
* [IUT de Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, MLT, GEA;
|
* [IUT de Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, MLT, GEA;
|
||||||
|
|
||||||
* [IUT de Brest](http://www.iut-brest.fr) depuis 2009, 4 départements (DUT et licences pro) à Brest et 2 à Morlaix, environ 1350 étudiants/an;
|
* [IUT de Brest](http://www.iut-brest.fr) depuis 2009, 4 départements (DUT et licences pro) à Brest et 2 à Morlaix, environ 1350 étudiants/an;
|
||||||
|
|
||||||
* [IUT de Bourges](http://www.univ-orleans.fr/iut-bourges/) départements GEA, QLIO, MP, CS, 2 années spéciales et 2 licences pro;
|
* [IUT de Bourges](http://www.univ-orleans.fr/iut-bourges/) départements GEA, QLIO, MP, CS, 2 années spéciales et 2 licences pro;
|
||||||
|
|
||||||
* IUT de Calais;
|
* IUT de Calais;
|
||||||
|
|
||||||
* [IUT de Cergy-Pontoise](http://www.iut.u-cergy.fr), tous les départements
|
* [IUT de Cergy-Pontoise](http://www.iut.u-cergy.fr), tous les départements
|
||||||
(GB, GCCD, GEII x 2, MLT, QLIO, MMI, TC x 2), DUT, LP, années spéciales et FC
|
(GB, GCCD, GEII x 2, MLT, QLIO, MMI, TC x 2), DUT, LP, années spéciales et FC
|
||||||
: plus de 1600 étudiants en 2018, utilise ScoDoc depuis 2015;
|
: plus de 1600 étudiants en 2018, utilise ScoDoc depuis 2015;
|
||||||
|
|
||||||
* [IUT de Colmar](http://www.iutcolmar.uha.fr) (Université de Haute Alsace), département R&T et GB (depuis 2006);
|
* [IUT de Colmar](http://www.iutcolmar.uha.fr) (Université de Haute Alsace), département R&T et GB (depuis 2006);
|
||||||
|
|
||||||
* [IUT d'Évry Val d’Essonne](http://www.iut-evry.fr), départements GMP, QLIO,
|
* [IUT d'Évry Val d’Essonne](http://www.iut-evry.fr), départements GMP, QLIO,
|
||||||
SGM, GEA et MLT;
|
SGM, GEA et MLT;
|
||||||
|
|
||||||
* IUT de Fontainebleau;
|
* IUT de Fontainebleau;
|
||||||
|
|
||||||
* [IUT de Kourou](http://iut.univ-ag.fr/) (Guyane, depuis 2011);
|
* [IUT de Kourou](http://iut.univ-ag.fr/) (Guyane, depuis 2011);
|
||||||
|
|
||||||
* [IUT de l'Indre](http://www.univ-orleans.fr/iut-indre/), départements GEA, GEII, MLT, TC, depuis 2015;
|
* [IUT de l'Indre](http://www.univ-orleans.fr/iut-indre/), départements GEA, GEII, MLT, TC, depuis 2015;
|
||||||
|
|
||||||
* [IUT de Lannion](http://www.iut-lannion.fr/), 5 DUT et 5 LP, sur 4 départements;
|
* [IUT de Lannion](http://www.iut-lannion.fr/), 5 DUT et 5 LP, sur 4 départements;
|
||||||
|
|
||||||
* [IUT de La Rochelle](http://www.iut-larochelle.fr/), 5 départements (généralisé en 2017): 1070 étudiants de DUT et 9 LP (180 étudiants);
|
* [IUT de La Rochelle](http://www.iut-larochelle.fr/), 5 départements (généralisé en 2017): 1070 étudiants de DUT et 9 LP (180 étudiants);
|
||||||
|
|
||||||
* [IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/),
|
* [IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/),
|
||||||
départements GEA, IC, R&T, GB et licences pro, soit 550 étudiants/ans depuis
|
départements GEA, IC, R&T, GB et licences pro, soit 550 étudiants/ans depuis
|
||||||
2009;
|
2009;
|
||||||
|
|
||||||
* [IUT Le Havre](http://www-iut.univ-lehavre.fr/), 10 départements et 3 années spéciales, soit environ 1800 étudiants;
|
* [IUT Le Havre](http://www-iut.univ-lehavre.fr/), 10 départements et 3 années spéciales, soit environ 1800 étudiants;
|
||||||
|
|
||||||
* [IUT Le Mans](https://iut.univ-lemans.fr), 4 départements (GEA, CHIMIE, GMP, MP), environ 1000 étudiants;
|
* [IUT Le Mans](https://www-iut.univ-lehavre.fr/);
|
||||||
|
|
||||||
* [IUT A de Lille](http://www-iut.univ-lille1.fr), (depuis 2010) 7
|
* [IUT A de Lille](http://www-iut.univ-lille1.fr), (depuis 2010) 7
|
||||||
départements;
|
départements;
|
||||||
|
|
||||||
* [IUT du Littoral Côte d'Opale](http://www.iut.univ-littoral.fr), tous les départements (2018);
|
* [IUT du Littoral Côte d'Opale](http://www.iut.univ-littoral.fr), tous les départements (2018);
|
||||||
|
|
||||||
* [IUT de Lorient & Pontivy](http://www-iutlorient.univ-ubs.fr), départements
|
* [IUT de Lorient & Pontivy](http://www-iutlorient.univ-ubs.fr), départements
|
||||||
GTE, GIML, QLIO, GCGP, HSE;
|
GTE, GIML, QLIO, GCGP, HSE;
|
||||||
|
|
||||||
* [IUT de Mantes](http://www.iut-mantes.uvsq.fr), départements GIM et GMP (Université de Versailles St Quentin en Yvelines);
|
* [IUT de Mantes](http://www.iut-mantes.uvsq.fr), départements GIM et GMP (Université de Versailles St Quentin en Yvelines);
|
||||||
|
|
||||||
* [IUT de Marseille](http://iut.univ-amu.fr/), depuis 2007;
|
* [IUT de Marseille](http://iut.univ-amu.fr/), depuis 2007;
|
||||||
|
|
||||||
* [IUT de Metz](http://www.iut.univ-metz.fr), depuis 2011, départements GMP, TC;
|
* [IUT de Metz](http://www.iut.univ-metz.fr), depuis 2011, départements GMP, TC;
|
||||||
|
|
||||||
* [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/), depuis 2014, départements
|
* [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/), depuis 2014, départements
|
||||||
GEA, GEII, MLT, GMP;
|
GEA, GEII, MLT, GMP;
|
||||||
|
|
||||||
* [IUT de Nantes](http://www.iutnantes.univ-nantes.fr/), départements Informatique, GEA, GEII, GMP, GTE, QLIO et SGM (DUT et Licences Pro, depuis 2008);
|
* [IUT de Nantes](http://www.iutnantes.univ-nantes.fr/), départements Informatique, GEA, GEII, GMP, GTE, QLIO et SGM (DUT et Licences Pro, depuis 2008);
|
||||||
|
|
||||||
* [IUT de Nouvelle Calédonie](https://unc.nc/formation/formation-a-l-iut/linstitut-universitaire-de-technologie/);
|
* [IUT de Nouvelle Calédonie](https://unc.nc/formation/formation-a-l-iut/linstitut-universitaire-de-technologie/);
|
||||||
|
|
||||||
* [IUT de Nîmes](https://iut-nimes.edu.umontpellier.fr/), depuis 2019, GEII,
|
* [IUT de Nîmes](https://iut-nimes.edu.umontpellier.fr/), depuis 2019, GEII,
|
||||||
GMP, SGM, et [Polytech Montpellier](https://www.polytech.umontpellier.fr);
|
GMP, SGM, et [Polytech Montpellier](https://www.polytech.umontpellier.fr);
|
||||||
|
|
||||||
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/), depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012).
|
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/), depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012).
|
||||||
|
|
||||||
* [IUT d'Orsay](https://www.iut-orsay.universite-paris-saclay.fr/);
|
* [IUT d'Orsay](https://www.iut-orsay.universite-paris-saclay.fr/);
|
||||||
|
|
||||||
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr);
|
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr);
|
||||||
|
|
||||||
* [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot),
|
* [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot),
|
||||||
Mesures Physiques;
|
Mesures Physiques;
|
||||||
|
|
||||||
* [IUT de Perpignan](http://www.iut-perpignan.fr), depuis 2013, départements GB, GEA, GIM, MLT à Perpignan CJ et GCGP à Narbonne et TC et STID à Carcassonne;
|
* [IUT de Perpignan](http://www.iut-perpignan.fr), depuis 2013, départements GB, GEA, GIM, MLT à Perpignan CJ et GCGP à Narbonne et TC et STID à Carcassonne;
|
||||||
|
|
||||||
* [IUT de Poitiers](http://iutp.univ-poitiers.fr/);
|
* [IUT de Poitiers](http://iutp.univ-poitiers.fr/);
|
||||||
|
|
||||||
* [IUT de Rennes](https://iut-rennes.univ-rennes1.fr/) départements GEII, GMP, Chimie et Génie Civil Construction durable (2015);
|
* [IUT de Rennes](https://iut-rennes.univ-rennes1.fr/) départements GEII, GMP, Chimie et Génie Civil Construction durable (2015);
|
||||||
|
|
||||||
* [IUT de Roanne](http://portail.univ-st-etienne.fr/bienvenue/utilitaires/iut-de-roanne-26151.kjsp), dépt. Génie Industriel et Maintenance (GIM), environ 70 étudiants/an (2012);
|
* [IUT de Roanne](http://portail.univ-st-etienne.fr/bienvenue/utilitaires/iut-de-roanne-26151.kjsp), dépt. Génie Industriel et Maintenance (GIM), environ 70 étudiants/an (2012);
|
||||||
|
|
||||||
* [IUT de Saint-Denis (Université Sorbonne Paris Nord)](https://iutsd.univ-paris13.fr), départements HSE, GIM, GMP, TC, depuis 2009;
|
* [IUT de Saint-Denis (Université Sorbonne Paris Nord)](https://iutsd.univ-paris13.fr), départements HSE, GIM, GMP, TC, depuis 2009;
|
||||||
|
|
||||||
* [IUT de Saint-Dié des Vosges](http://www.iutsd.uhp-nancy.fr) depuis 2009);
|
* [IUT de Saint-Dié des Vosges](http://www.iutsd.uhp-nancy.fr) depuis 2009);
|
||||||
|
|
||||||
* [IUT de Saint-Malo](https://iut-stmalo.univ-rennes1.fr/);
|
* [IUT de Saint-Malo](https://iut-stmalo.univ-rennes1.fr/);
|
||||||
|
|
||||||
* [IUT de Saint-Nazaire](http://www.iut-sn.univ-nantes.fr/) tous les départements (GLT, GCCD, GIM, GCH, MP, TC) et 8 LP, 1400 étudiants, rentrée 2013. Et aussi Formation Continue, 1 DU PFST, 2 formations DUT par apprentissage (TC et GIM);
|
* [IUT de Saint-Nazaire](http://www.iut-sn.univ-nantes.fr/) tous les départements (GLT, GCCD, GIM, GCH, MP, TC) et 8 LP, 1400 étudiants, rentrée 2013. Et aussi Formation Continue, 1 DU PFST, 2 formations DUT par apprentissage (TC et GIM);
|
||||||
|
|
||||||
* [IUT de Tours](http://iut.univ-tours.fr/): départements GEII et TC2A: 450 étudiants/an, 2 DUT, 4 Licences Pro, 1 année spéciale, (ScoDoc depuis 2012);
|
* [IUT de Tours](http://iut.univ-tours.fr/): départements GEII et TC2A: 450 étudiants/an, 2 DUT, 4 Licences Pro, 1 année spéciale, (ScoDoc depuis 2012);
|
||||||
|
|
||||||
* [IUT de Tremblay](http://www.iu2t.univ-paris8.fr/) (U. Paris 8, dépt. GIM, 2010);
|
* [IUT de Tremblay](http://www.iu2t.univ-paris8.fr/) (U. Paris 8, dépt. GIM, 2010);
|
||||||
|
|
||||||
* [IUT de Valenciennes](https://www.uphf.fr/IUT) 9 départements (en FI, FA, FC) - DUT & 20 LP;
|
* [IUT de Valenciennes](https://www.uphf.fr/IUT) 9 départements (en FI, FA, FC) - DUT & 20 LP;
|
||||||
|
|
||||||
* [IUT de Vannes](https://www.iutvannes.fr/) département Informatique (DUT et LP, 200 étudiants) depuis sept. 2014, et GEA (400 étudiants) et TC depuis 2016, STID depuis 2019;
|
* [IUT de Vannes](https://www.iutvannes.fr/) département Informatique (DUT et LP, 200 étudiants) depuis sept. 2014, et GEA (400 étudiants) et TC depuis 2016, STID depuis 2019;
|
||||||
|
|
||||||
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/), utilisateur depuis 2009, sur deux sites;
|
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/), utilisateur depuis 2009, sur deux sites;
|
||||||
|
|
||||||
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/), (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005);
|
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/), (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005);
|
||||||
|
|
||||||
* [IUT de Villeurbanne (Lyon 1)](http://iut.univ-lyon1.fr/), département GEII, environ 220 inscrits/an.
|
* [IUT de Villeurbanne (Lyon 1)](http://iut.univ-lyon1.fr/), département GEII, environ 220 inscrits/an.
|
||||||
|
|
||||||
## Autres établissements utilisateurs (hors IUT)
|
## Autres établissements utilisateurs (hors IUT)
|
||||||
|
* Licence de sciences (SPI) à L'Université de Bretagne Occidentale (UBO);
|
||||||
|
|
||||||
* Licence de sciences (SPI) à L'Université de Bretagne Occidentale (UBO);
|
* Masters de sciences, Institut Galilée, Université Sorbonne Paris Nord;
|
||||||
|
|
||||||
* Masters de sciences, Institut Galilée, Université Sorbonne Paris Nord;
|
* Master ISB, Université Sorbonne Paris Nord;
|
||||||
|
|
||||||
* Master ISB, Université Sorbonne Paris Nord;
|
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et
|
||||||
|
|
||||||
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et
|
|
||||||
gestion, AUF);
|
gestion, AUF);
|
||||||
|
|
||||||
* ILEPS, Cergy-Pontoise.
|
* ILEPS, Cergy-Pontoise.
|
||||||
|
|
||||||
* [Université Catholique d'Afrique Centrale](http://www.ucac-icy.net/) (UCAC, Yaoundé, Cameroun): Licences, Masters (2011);
|
* [Université Catholique d'Afrique Centrale](http://www.ucac-icy.net/) (UCAC, Yaoundé, Cameroun): Licences, Masters (2011);
|
||||||
|
|
||||||
* [École Supérieure des Sciences et Technologies de l'Ingénieur de Nancy](http://www.esstin.univ-lorraine.fr) (jusqu'en 2013);
|
* [École Supérieure des Sciences et Technologies de l'Ingénieur de Nancy](http://www.esstin.univ-lorraine.fr) (jusqu'en 2013);
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
|
||||||
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
||||||
|
@ -1,48 +1,33 @@
|
|||||||
# Vérification des codes NIP
|
|
||||||
|
|
||||||
Le code NIP est le code d'identification de l'étudiant utilisé par le service de
|
## Vérification des codes NIP
|
||||||
la scolarité (logiciel Apogée) et qui apparait entre autre sur la carte
|
Le code NIP est le code d'identification de l'étudiant utilisé par le service de la scolarité (logiciel Apogée) et qui apparait entre autre sur la carte d'étudiant. ScoDoc peut l'utiliser, ce qui est utile si le logiciel est interfacé à un portail qui le connecte à Apogée. Si vous utilisez ScoDoc seul, il n'est pas utile de saisir les codes NIP.
|
||||||
d'étudiant. ScoDoc peut l'utiliser, ce qui est utile si le logiciel est
|
|
||||||
interfacé à un portail qui le connecte à Apogée. Si vous utilisez ScoDoc seul,
|
|
||||||
il n'est pas utile de saisir les codes NIP.
|
|
||||||
|
|
||||||
Lorsqu'on importe un étudiant depuis le portail, il est naturellement associé à
|
Lorsqu'on importe un étudiant depuis le portail, il est naturellement associé à son code NIP.
|
||||||
son code NIP.
|
|
||||||
|
Ce n'est pas le cas si l'on a importé l'étudiant à la main (via un formulaire ou l'importation d'une feuille Excel).
|
||||||
|
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Le code NIP est utilisé par le portail pour identifer les étudiants: *si ScoDoc ne le connait pas, l'étudiant n'a pas accès à son bulletin de notes sur le web*.
|
||||||
|
|
||||||
Ce n'est pas le cas si l'on a importé l'étudiant à la main (via un formulaire ou
|
|
||||||
l'importation d'une feuille Excel).
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
|
||||||
alt="/!\" /> Le code NIP est utilisé par le portail pour identifier les
|
|
||||||
étudiants: *si ScoDoc ne le connait pas, l'étudiant n'a pas accès à son bulletin
|
|
||||||
de notes sur le web*.
|
|
||||||
|
|
||||||
## Fixer le code NIP d'un étudiant
|
## Fixer le code NIP d'un étudiant
|
||||||
|
Pour renseigner à postériori le code NIP d'un étudiant, passer par sa fiche individuelle, menu Etudiant, **Changer les données identité/admission**. En bas de cette page, la section "Informations Apogée" vous montre toutes les informations retrouvées dans Apogée.
|
||||||
|
|
||||||
Pour renseigner à postériori le code NIP d'un étudiant, passer par sa fiche
|
Attention, dans la recherche est effectuée en utilisant le nom et le prénom. S'ils sont mal orthographiés (dans ScoDoc ou dans Apogée), elle peut échouer. Si on a des homonymes (cas fréquent), ScoDoc présente une liste d'étudiants d'Apogée pouvant correspondre à celui de ScoDoc: à vous de choisir.
|
||||||
individuelle, menu Etudiant, **Changer les données identité/admission**. En bas
|
|
||||||
de cette page, la section "Informations Apogée" vous montre toutes les
|
Vous pouvez facilement copier le code de l'étudiant qui correspond via le bouton **copier ce code**.
|
||||||
informations retrouvées dans Apogée.
|
Cliquez ensuite sur le bouton **Modifier les données**.
|
||||||
|
|
||||||
Attention, dans la recherche est effectuée en utilisant le nom et le prénom.
|
|
||||||
S'ils sont mal orthographiés (dans ScoDoc ou dans Apogée), elle peut échouer. Si
|
|
||||||
on a des homonymes (cas fréquent), ScoDoc présente une liste d'étudiants
|
|
||||||
d'Apogée pouvant correspondre à celui de ScoDoc: à vous de choisir.
|
|
||||||
|
|
||||||
Vous pouvez facilement copier le code de l'étudiant qui correspond via le bouton
|
|
||||||
**copier ce code**. Cliquez ensuite sur le bouton **Modifier les données**.
|
|
||||||
|
|
||||||
## Vérifier les codes de tous les étudiants d'un semestre
|
## Vérifier les codes de tous les étudiants d'un semestre
|
||||||
|
Vous pouvez vérifier les codes et adresses mail de tous les étudiants d'un semestre via la page **vérification des codes Apogée**. Cette page est accessible via un lien en bas de la page **Synchroniser avec une étape Apogée**.
|
||||||
Vous pouvez vérifier les codes et adresses mail de tous les étudiants d'un
|
|
||||||
semestre via la page **vérification des codes Apogée**. Cette page est
|
|
||||||
accessible via un lien en bas de la page **Synchroniser avec une étape Apogée**.
|
|
||||||
|
|
||||||
|
|
||||||
!!! note "Voir aussi"
|
### Voir aussi:
|
||||||
|
|
||||||
|
- [Synchroniser avec une étape Apogée](SynchroApogee.md)
|
||||||
|
- [Guide pour le chef de département](GuideAdminFormation.md)
|
||||||
|
- [Opérations de fin de semestre](TransitionSemestre.md)
|
||||||
|
|
||||||
|
|
||||||
- [Synchroniser avec une étape Apogée](SynchroApogee.md)
|
|
||||||
- [Guide pour le ou la responsable de formation](GuideAdminFormation.md)
|
|
||||||
- [Opérations de fin de semestre](TransitionSemestre.md)
|
|
||||||
- [FAQ](FAQ.md)
|
|
||||||
- [Contacts](Contact.md)
|
|
57
docs/VersionProgrammes.md
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
## Modification d'un programme pédagogique et versions
|
||||||
|
|
||||||
|
|
||||||
|
Un programme pédagogique définit notamment les coefficients des modules qui le composent. Les semestres qui se réfèrent à ce programme utilisent ces coefficients pour calculer leurs notes. De même, les noms de UE et modules qui apparaissent sur les bulletins viennent du programme. Il faut être particulièrement vigilant lors des modifications du programme pédagogique
|
||||||
|
|
||||||
|
Dans la configuration par défaut, seul le chef de département (rôle Admin) peut modifier les programmes pédagogiques.
|
||||||
|
|
||||||
|
(voir aussi des exemples de programmes en bas de la page [GuideAdminFormation](GuideAdminFormation.md)).
|
||||||
|
|
||||||
|
|
||||||
|
### Points importants
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### Unités d'Enseignement (UE)
|
||||||
|
|
||||||
|
Les UE sont destinées à être *capitalisées* (voir [CapitalisationUE](CapitalisationUE.md)). Par conséquent, une formation en plusieurs semestres devrait normalement avoir un jeu d'UE différent dans chaque semestre.
|
||||||
|
|
||||||
|
* Il est parfois désirable de capitaliser au sein d'un parcours des UE appartenant à deux programmes ScoDoc différents (par exemple, on peut avoir changé de version du programme entre deux semestres, comme expliqué plus loin). Dans ce cas, il faut attribuer aux programmes le même code de formation (via le lien "modifier" sur la page d'accueil des programmes), et aussi attribuer les mêmes codes aux UE (via le lien "modifier l'UE" sur la page "programme détaillé et semestres").
|
||||||
|
|
||||||
|
* Les UE peuvent être de type "normal" ou "Sport&Culture". Ces dernières ne sont utilisées que pour les notes optionnelles (activités culturelles et sportives) utilisée dans certains établissements. Elles se voient attribuer une règle de calcul spécifique qui dépend généralement de l'établissement (il n'y à pas de règle nationale pour la prise en compte de snotes de sport et culture). Typiquement, la note des UE de ce type spécial agit directement sur la moyenne générale de l'étudiant.
|
||||||
|
|
||||||
|
|
||||||
|
#### Modules
|
||||||
|
|
||||||
|
|
||||||
|
* Le *code* du module va apparaitre sur les bulletins et certains tableaux récapitulatifs. Il comporte habituellement quelques caractères (comme "MATH", ou "SPO"). Si la version officielle de votre programme pédagogique n'utilise pas de codes de ce genre, inventez des codes à la fois courts (pas plus de 4 ou 5 caractères) et évocateurs du nom du module.
|
||||||
|
|
||||||
|
* Le *titre* du module apparaitra sur le tableau de bord du semestre et sur les bulletins.
|
||||||
|
|
||||||
|
* L' *abréviation* est une version courte du titre. Si le titre n'est pas trop long (3 ou 4 mots), copier le. Sinon, inventer une abréviation en quelques mots qui soit lisible.
|
||||||
|
|
||||||
|
* Les volumes horaires ne sont présents que pour information et ne sont actuellement pas du tout utilisés par ScoDoc: il est donc facultatif de les indiquer.
|
||||||
|
|
||||||
|
* Le coefficient est utilisé pour le calcul de la moyenne d'UE et de la moyenne générale. Il s'agit d'un nombre réel positif ou nul.
|
||||||
|
|
||||||
|
* Choisir dans le menu la *matière* à laquelle appartient le module.
|
||||||
|
|
||||||
|
* Le semestre est un nombre indiquant dans quel semestre de la formation se place habituellement ce module. Il arrive que l'on décline la même formation selon différentes modalités (formation initiale, continue) avec des placements différents: dans ce cas, indiquer le semestre dans la modalité "habituelle"; lors de la mise en place d'un semestre, on peut choisir manuellement des modules de tous les semestres.
|
||||||
|
|
||||||
|
|
||||||
|
#### Ordre d'affichage des UE, matières et modules
|
||||||
|
|
||||||
|
|
||||||
|
Chaque élément (UE, matières et modules) possède un attribut *numéro* qui est un nombre entier utilisé pour le classement des éléments de même niveau dans la hiérarchie dans les tableaux et bulletins.
|
||||||
|
|
||||||
|
Il est conseillé d'attribuer les numéros de 10 en 10 afin de pouvoir plus facilement insérer un nouvel élément entre deux éléments existants. Par exemple, si l'on a dans une matière trois modules MA, MB, MC, on va leur attribuer les numéros 10, 20 et 30.
|
||||||
|
|
||||||
|
|
||||||
|
### Verrouillage et versions
|
||||||
|
|
||||||
|
Lorsque au moins l'un des semestres qui se réfèrent à ce programme est *verrouillé*, il devient impossible de modifier le programme (la page de présentation du programme ne comporte alors aucun lien). Deux cas peuvent se présenter:
|
||||||
|
|
||||||
|
* il s'agit d'une modification mineure (intitulé d'un module, ...) ne risquant pas affecter les notes existantes, et il y a peu de semestres verrouillés: dans ce cas, il est possible d'aller déverrouiller un à un les semestres concernés, puis d'effectuer la modification du programme avant de reverrouiller les semestres.
|
||||||
|
|
||||||
|
* il s'agit d'une modification conséquente, on ne ne veut pas affecter les semestres existants: on crée alors une nouvelle *version* du programme. La version crée est une copie à l'identique du programme existant, que l'on peut modifier à sa guise.
|
BIN
docs/attachments/MaquetteVersion2017.xlsm
Normal file
@ -1,2 +0,0 @@
|
|||||||
# ScoDoc repository
|
|
||||||
deb http://scodoc.org/repo bullseye main
|
|
@ -1,2 +1,2 @@
|
|||||||
# ScoDoc repository for Debian 12 bookworm
|
# ScoDoc repository
|
||||||
deb http://scodoc.org/deb/bookworm bookworm main
|
deb http://scodoc.org/repo bullseye main
|
||||||
|
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 138 KiB |
Before Width: | Height: | Size: 256 KiB |
Before Width: | Height: | Size: 219 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 147 KiB |
Before Width: | Height: | Size: 451 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 130 KiB |