Compare commits
194 Commits
master
...
fix_2022-0
Author | SHA1 | Date | |
---|---|---|---|
|
cb1f807b1f | ||
06a1691ce5 | |||
399624ebb6 | |||
|
d70f30b6ec | ||
c8b3bc724a | |||
|
3b536525cc | ||
04c347e654 | |||
|
770ab19278 | ||
8359c8c7fe | |||
|
1c8db01544 | ||
5cc4c5ca2a | |||
b58a62f77e | |||
1c9e95cbab | |||
|
de61535675 | ||
a9efe59bc5 | |||
|
09330a30e6 | ||
46f78590ac | |||
|
cd3767271b | ||
24a8f3e585 | |||
|
4ebaf197e5 | ||
25b72bff54 | |||
|
5ba29909eb | ||
60a315729e | |||
cbe2db880b | |||
|
5e567633c2 | ||
ecbf0fc514 | |||
|
a869d25c53 | ||
67cf0163ed | |||
3aac11a6dc | |||
|
ec7131fe5d | ||
d95f7c9fdb | |||
80cc8e6ca8 | |||
2707d452e3 | |||
1be533f48d | |||
e7b20625be | |||
91aacaae77 | |||
dd837eff8c | |||
8d63f35593 | |||
|
634b250330 | ||
8d5a62e211 | |||
296c2e020c | |||
|
a561fdd2ee | ||
6dc304bbb2 | |||
02c1d20a2c | |||
e6fa0ed8b6 | |||
d9935fed21 | |||
|
8de14ea8bf | ||
0d6a5b758a | |||
|
010573a672 | ||
4955012dca | |||
133f1663b9 | |||
8800b93cd7 | |||
|
34afa7e9d1 | ||
f8a6c7f864 | |||
2186f57a14 | |||
bccd7ac82e | |||
|
3401b09701 | ||
99cfc106b9 | |||
c13a2deb38 | |||
|
9d8a468f5e | ||
5f97c42dae | |||
e32095e114 | |||
38d103cfa7 | |||
f611923686 | |||
6a07f6e5af | |||
aa90c15bde | |||
458661543a | |||
01e3c36b7a | |||
443ff7a2c2 | |||
8bd336bc08 | |||
e06373d58f | |||
60abfeb3e8 | |||
2d77e8e358 | |||
6448fb6a07 | |||
f56030422e | |||
533a698a09 | |||
f5c93d1a3f | |||
591d622f07 | |||
17b262178d | |||
003158e9b5 | |||
3e85d45f94 | |||
e94061c214 | |||
b56018283a | |||
cbeb1fa945 | |||
29bd44fc2e | |||
|
a3e6d1f340 | ||
|
fba82c37c8 | ||
fcb30f02d9 | |||
|
5fd83c918a | ||
eaf21b86f5 | |||
|
fd48c95888 | ||
16b9dbe6cb | |||
d2fab7f619 | |||
|
5bb2f166cc | ||
8d9cb5fae7 | |||
|
49bcfcee1c | ||
|
1b61d49d63 | ||
|
a12c4fe885 | ||
|
5c8de2b9f2 | ||
5b1ad81249 | |||
42f4fe05ff | |||
044c213455 | |||
9352de83b4 | |||
f26fdb2478 | |||
db7dc8cabc | |||
a9caa7625d | |||
bc6b790bbf | |||
24acf76dd4 | |||
94ee633f11 | |||
53dc2982cb | |||
54dd4da541 | |||
|
1250f69535 | ||
e99a066894 | |||
d7bbb11113 | |||
|
d519723e02 | ||
110db52994 | |||
9fadb97c9f | |||
aa2c349bb4 | |||
|
fc6e6e72d2 | ||
570b10ae9d | |||
f8b569e6e8 | |||
c3065894b6 | |||
dfa1a388db | |||
0ff8b9e869 | |||
46e633b129 | |||
bfdae65a39 | |||
|
19b2f06a25 | ||
8d33ce1758 | |||
|
3e56366f0c | ||
|
56c02f6a6c | ||
|
29b4915ef5 | ||
|
e452cbe2d6 | ||
|
ca20ff89e1 | ||
7e32332f4c | |||
f41ff469f8 | |||
|
126c034c58 | ||
e7ae9a6a91 | |||
ccb90ef8b9 | |||
78a51f8697 | |||
6f032db036 | |||
|
c893c96b3b | ||
5ffd0749ea | |||
4b9a044bb2 | |||
|
d7df642b71 | ||
1f9a09c70c | |||
bb1caaf32c | |||
6d1e4d1ece | |||
69c5ad9b23 | |||
|
4d56488159 | ||
|
6360782fb4 | ||
e62c81338d | |||
0e79f99e1a | |||
7cd56f4059 | |||
7f64c8c111 | |||
bec9f78764 | |||
aed7133ab2 | |||
a039e71c06 | |||
e76e441e90 | |||
69e528a5bc | |||
d409fd66a9 | |||
fe583938e0 | |||
8be16fa32e | |||
|
ca7a2fe546 | ||
|
f280ecf541 | ||
|
873c038640 | ||
3825e37fbb | |||
|
a176adf27b | ||
2db0930bca | |||
2d4b651ec7 | |||
b125025eca | |||
d5f2acd896 | |||
6ed0ab6ab7 | |||
c8b5c47c66 | |||
89fe455235 | |||
61db2b779f | |||
6f336b2008 | |||
2b92f0f608 | |||
b2ad4cadf5 | |||
a54a0db0f1 | |||
e67b8690c1 | |||
f4c423a808 | |||
970923d5e3 | |||
206c90e7f5 | |||
4748be09d8 | |||
503bfca6e2 | |||
e713143096 | |||
f9c2ef5956 | |||
d254eb46f8 | |||
8e6a1e9fe1 | |||
c0bb9a6ba0 | |||
6b1da462e7 | |||
46ea96bbba | |||
0053380c96 | |||
c829137d08 |
7
.gitignore
vendored
@ -191,3 +191,10 @@ CVS
|
|||||||
|
|
||||||
# MkDocs ScoDoc
|
# MkDocs ScoDoc
|
||||||
site/
|
site/
|
||||||
|
|
||||||
|
# Pycharm
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# VS Code
|
||||||
|
.vscode/
|
||||||
|
*.code-workspace
|
@ -3,32 +3,217 @@
|
|||||||
ScoDoc gère sa liste d'utilisateurs (enseignants, secrétaires) dans
|
ScoDoc gère sa liste d'utilisateurs (enseignants, secrétaires) dans
|
||||||
une base de données SQL.
|
une base de données SQL.
|
||||||
|
|
||||||
|
### Principes généraux
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Il est prévu de développer un connecteur vers LDAP, mais ce n'est pas encore disponible (avis aux volontaires, voir https://www-lipn.univ-paris13.fr/projects/scodoc/ticket/140)
|
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).
|
||||||
|
|
||||||
|
Les entités gérées par scodoc sont :
|
||||||
|
- Les utilisateurs ;
|
||||||
|
- les rôles ;
|
||||||
|
- en liaison avec les départements.
|
||||||
|
|
||||||
|
#### 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.
|
||||||
|
|
||||||
|
#### L'entité rôle
|
||||||
|
Un rôle est le regroupement d'un certain nombre de privilèges.
|
||||||
|
C'est généralement la combinaison d'un département et d'un type d'utilisation.
|
||||||
|
Actuellement au nombre de quatre (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 `AdminRT` et `EnsGEII`, ce qui lui permettra :
|
||||||
|
|
||||||
|
- de gérer les utilisateurs du (seul) département RT :
|
||||||
|
Privilèges associés : `Gérer les utlisateurs (Sco Users Manage)`, `Changer les
|
||||||
|
formations (Sco Change Formation)`, ...
|
||||||
|
- 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)`, ...
|
||||||
|
|
||||||
|
Pour une description plus fine des privilèges, voir
|
||||||
|
[ConfigPermissions](ConfigPermissions.md)
|
||||||
|
|
||||||
|
### Opérations et cycle de vie des utilisateurs
|
||||||
|
|
||||||
|
Un compte utilisateur peut être modifié par 3 types d'utilisateurs :
|
||||||
|
|
||||||
|
- L'utilisateur lui-même ;
|
||||||
|
- un administrateur du département de rattachement de l'utilisateur ;
|
||||||
|
- le super administrateur.
|
||||||
|
|
||||||
|
Les opérations existantes sont :
|
||||||
|
|
||||||
|
- La création ;
|
||||||
|
- la demande de renouvellement de mot de passe;
|
||||||
|
- la désactivation.
|
||||||
|
|
||||||
|
#### Notes:
|
||||||
|
|
||||||
|
- 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
|
||||||
|
pas dans la liste).)
|
||||||
|
- Le mécanisme de changement de mot de passe de ScoDoc 7 (par envoi d'un nouveau
|
||||||
|
mot de passe par mail) a été remplacé par l'ajout de la mention suivante dans
|
||||||
|
le formulaire de connexion :
|
||||||
|
|
||||||
|
|
||||||
|
` 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
|
||||||
|
administrateur. Le lien `Ajouter un utlisateur` permettant cela se trouve dans
|
||||||
|
la page de gestion des utilisateurs (accessible par le menu latéral)
|
||||||
|
|
||||||
|
**Le mot de passe** peut être
|
||||||
|
|
||||||
|
- saisi par le créateur de l'utilisateur (il appartient alors au créateur de
|
||||||
|
communiquer ce mot de passe à l'utilisateur final);
|
||||||
|
- ou initialisé à une valeur non communiquée, à charge pour l'utilisateur final
|
||||||
|
de finaliser la création du mot de passe avant d'utiliser son accès (il y est
|
||||||
|
invité par un email qui lui est envoyé).
|
||||||
|
|
||||||
|
**Les options de création (mail)** permettent également de choisir parmi les 3
|
||||||
|
scenarii suivants :
|
||||||
|
|
||||||
|
1. un message d'accueil l'invitant à initialiser son mot de passe ;
|
||||||
|
2. un message de bienvenue simple ;
|
||||||
|
3. aucun message.
|
||||||
|
|
||||||
|
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
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
SCODOC_MAIL_FROM=no-reply@univ-exemple.fr
|
||||||
|
```
|
||||||
|
|
||||||
|
**Le département d'appartenance** peut être choisi si le créateur est
|
||||||
|
administrateur pour plusieurs départements. Il aura alors le loisir
|
||||||
|
de sélectionner l'un des départements qu'il administre (liste déroulante).
|
||||||
|
|
||||||
|
#### Création en masse (fichier xlsx)
|
||||||
|
|
||||||
|
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
|
||||||
|
`importer des utilisateurs` de la même page de gestion des utilisateurs.
|
||||||
|
|
||||||
|
La page affichée lui permet d'importer un modèle qu'il doit compléter et re-soumettre à ScoDoc
|
||||||
|
selon le même schéma que la saisie de note par fichier Excel.
|
||||||
|
|
||||||
|
Les colonnes à remplir sont les suivantes :
|
||||||
|
|
||||||
|
- `user_name`: le nom de connexion de l'utilisateur; (obligatoire, unique dans scodoc)
|
||||||
|
- `nom`: le nom de l'utilisateur ; (obligatoire)
|
||||||
|
- `prenom`: le prénom de l'utilisateur ; (obligatoire)
|
||||||
|
- `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`)
|
||||||
|
- `dept`: le département de rattachement de l'utilisateur (acronyme, en lettres capitales).
|
||||||
|
|
||||||
|
_Note_:
|
||||||
|
|
||||||
|
- Tous les utilisateurs sont créés ou bien aucun.
|
||||||
|
- Un mail est envoyé à chaque utilisateur nouvellement créé.
|
||||||
|
|
||||||
|
#### Changement du mot de passe
|
||||||
|
|
||||||
|
Deux circonstances sont envisagées.
|
||||||
|
|
||||||
|
##### Oubli de mot de passe
|
||||||
|
|
||||||
|
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
|
||||||
|
réinitialisation par le lien situé sur la page de connexion. Après renseignement
|
||||||
|
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
|
||||||
|
renvoie vers la page permettant de redéfinir le mot de passe de l'utilisateur.
|
||||||
|
|
||||||
|
##### Edition du profil
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
||||||
|
permet à l'utilsateur d'éditer son profil.
|
||||||
|
|
||||||
|
#### Activation/désactivation
|
||||||
|
|
||||||
|
Une fois créé, le compte utilisateur conserve son existence. Il peut cependant être rendu inactif:
|
||||||
|
|
||||||
|
- soit à l'expiration de la date de validité spécifiée à la création ou lors d'un modification
|
||||||
|
- soit directement par un administrateur.
|
||||||
|
|
||||||
|
Quelle que soit la procédure, le compte existe encore et conserve son email (il
|
||||||
|
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
|
||||||
|
par l'utilisateur lui-même.
|
||||||
|
|
||||||
|
### Implémentation (pour les développeurs)
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
On notera:
|
||||||
|
|
||||||
|
1. Que la création (1) peut le placer initialement dans deux états différents
|
||||||
|
selon le mode de création choisi.
|
||||||
|
2. Que l'on peut demander le renouvellement du mot de passe plusieurs fois même
|
||||||
|
sans avoir complété la procédure.
|
||||||
|
3. Que les états `créé`et `créé + ticket`permettent la connexion (sous réserve
|
||||||
|
de la connaissance du mot de passe).
|
||||||
|
|
||||||
|
|
||||||
### Base de données utilisateurs
|
<img src="/fig/GrapheUser.png" />
|
||||||
Il est conseillé de placer la table utilisateurs dans une base de données séparées de celle
|
|
||||||
des notes, afin de pouvoir la partager entre plusieurs UFRs ou départements sans compromettre
|
|
||||||
la sécurité des données. Dans l'installation standard ([GuideInstallDebianDix](GuideInstallDebianDix.md)), il s'agit de la base
|
|
||||||
**SCOUSERS**.
|
|
||||||
|
|
||||||
La table **sco_users** contient:
|
**SCODOC**.
|
||||||
|
|
||||||
**Colonne** | **Type** || Contenu
|
La table **user** contient:
|
||||||
---------- | ----- | -----
|
|
||||||
user_id | text | identifiant interne unique
|
| **Colonne** | **Type** | Contenu | Modifié par |
|
||||||
user_name | text | nom de login
|
|-------------------|-----------------------------|--------------------------------------------------------------|----------------|
|
||||||
passwd | text | hash password
|
| id | integer | identifiant interne unique | 1 |
|
||||||
roles | text | liste des noms de rôles, séparés par des virgules
|
| user_name | character varying(64) | nom de login | 1 |
|
||||||
date_modif_passwd | date |
|
| email | character varying(120) | adresse mail (unique dans la base) | 1, 6 |
|
||||||
nom | text |
|
|nom | character varying(64) | | 1, 6 |
|
||||||
prenom | text |
|
|prenom | character varying(64) | | 1, 6 |
|
||||||
email | text | adresse mail
|
|dept | character varying(32) | département de rattachement (identifiant numérique) | 1, 6 |
|
||||||
dept | text | département de rattachement (exemple "RT")
|
|active | boolean | | 1, 7, 9 |
|
||||||
|
|password_hash | character varying(128) | hash password | 1, 6 |
|
||||||
|
|password_scodoc7 | character varying(42) | deprecated (utilisé lors de la migration scodoc7 > scodoc9) | 1, 2, 4, 5, 6 |
|
||||||
|
|last_seen | timestamp without time zone | date de dernière connexion | 1, A |
|
||||||
|
|date_modif_passwd | timestamp without time zone | | 1, 2, 4, 5, 6 |
|
||||||
|
|date_created | timestamp without time zone | | 1 |
|
||||||
|
|date_expiration | timestamp without time zone | | 1 |
|
||||||
|
|passwd_temp | boolean | deprecated | |
|
||||||
|
|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 |
|
||||||
|
|
||||||
|
|
||||||
<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 [ConfigPermissions](ConfigPermissions.md).
|
<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
|
||||||
|
[ConfigPermissions](ConfigPermissions.md).
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
|
|||||||
"""Un exemple simple de bulletin de notes en version PDF seulement.
|
"""Un exemple simple de bulletin de notes en version PDF seulement.
|
||||||
Part du bulletin standard et redéfini la partie centrale.
|
Part du bulletin standard et redéfini la partie centrale.
|
||||||
"""
|
"""
|
||||||
description = 'exemple (ne pas utiliser)' # la description doit être courte: elle apparait dans le menu de paramètrage
|
description = 'exemple (ne pas utiliser)' # la description doit être courte: elle apparait dans le menu de paramétrage
|
||||||
supported_formats = [ 'pdf' ] # indique que ce générateur ne peut produire que du PDF (la version web sera donc celle standard de [ScoDoc](ScoDoc.md))
|
supported_formats = [ 'pdf' ] # indique que ce générateur ne peut produire que du PDF (la version web sera donc celle standard de [ScoDoc](ScoDoc.md))
|
||||||
|
|
||||||
# En général, on veut définir un format de table spécial, sans changer le reste (titre, pied de page).
|
# En général, on veut définir un format de table spécial, sans changer le reste (titre, pied de page).
|
||||||
|
@ -3,12 +3,31 @@
|
|||||||
|
|
||||||
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, professeur à l'université Sorbonne Paris Nord (ex Paris 13), plusieurs fois chef 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 ou ajoutant des fonctions. Ils sont enseignants ou BIATSS dans les IUT de Colmar, Ville d'Avray, Grenoble, Le Havre, Lille, Nantes, pour ne citer que ceux-là.
|
Le développement du projet a été porté par son créateur, Emmanuel Viennet,
|
||||||
|
professeur à l'université Sorbonne Paris Nord (ex Paris 13), plusieurs fois chef
|
||||||
|
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
|
||||||
|
ou ajoutant des fonctions. Ils sont enseignants ou BIATSS dans les IUT de
|
||||||
|
Colmar, Ville d'Avray, Grenoble, Le Havre, Lille, Nantes, pour ne citer que
|
||||||
|
ceux-là.
|
||||||
|
|
||||||
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 possibilité de recruter des stagiaires, apprentis ou CDD pour travailler sur le projet a souvent été évoquée. Pour se donner ces possibilités et pérenniser le projet, nous avons créé début 2020 une association à but non lucratif (loi 1901).
|
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
|
||||||
|
possibilité de recruter des stagiaires, apprentis ou CDD pour travailler sur le
|
||||||
|
projet a souvent été évoquée. Pour se donner ces possibilités et pérenniser le
|
||||||
|
projet, nous avons créé début 2020 une association à but non lucratif (loi
|
||||||
|
1901).
|
||||||
|
|
||||||
Les établissements ou départements qui utilisent ScoDoc sont encouragés à adhérer à l'association. Leur cotisation permettra de financer les actions de l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise à jour et support technique.
|
Les établissements ou départements qui utilisent ScoDoc sont encouragés à
|
||||||
|
adhérer à l'association. Leur cotisation permettra de financer les actions de
|
||||||
|
l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise à
|
||||||
|
jour et support technique.
|
||||||
|
|
||||||
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion PDF](papers/Adhesion-2020-Association-ScoDoc.pdf) ([version Word](papers/Adhesion-2020-Association-ScoDoc.docx)), à renvoyer à <emmanuel.viennet@gmail.com>.
|
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion
|
||||||
|
PDF](papers/Adhesion-2022-2023-Association-ScoDoc.pdf) ([version
|
||||||
|
Word](papers/Adhesion-2022-2023-Association-ScoDoc.docx)), à renvoyer à
|
||||||
|
<emmanuel.viennet@gmail.com>. (note: toutes les informations nécessaires à la
|
||||||
|
"création fournisseur" sont sur le bulletin d'adhésion).
|
||||||
|
|
||||||
Je vous remercie de votre support qui rendra possible la pérennité du projet ScoDoc
|
Nous vous remercions de votre support qui rendra possible la pérennité du projet
|
||||||
|
ScoDoc.
|
319
docs/BUT.md
Normal file
@ -0,0 +1,319 @@
|
|||||||
|
|
||||||
|
# Le Bachelor Universitaire de Technologie (BUT)
|
||||||
|
|
||||||
|
Formation en trois ans dispensées par les IUT français, introduite en 2021, et
|
||||||
|
basée sur une forme d'approche par compétences nécessitant un système
|
||||||
|
d'évaluation spécifique.
|
||||||
|
|
||||||
|
Cette page décrit les principaux éléments du BUT utiles à comprendre pour le
|
||||||
|
gérer avec ScoDoc. Pour les curieux, la page
|
||||||
|
[modélisation des parcours BUT](ModelisationParcoursBUT.md)
|
||||||
|
donne quelques détails sur la façon dont ScoDoc organise les objets du BUT.
|
||||||
|
|
||||||
|
|
||||||
|
## UE, modules, évaluations
|
||||||
|
|
||||||
|
- UE : Unité d'Enseignement, associée à des crédits (ECTS) et validée (ou non)
|
||||||
|
en jury. Une UE est rattachée à une *formation*.
|
||||||
|
|
||||||
|
- 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
|
||||||
|
SAE (*situation d'apprentissage et d'évaluation*). Un module est rattaché à
|
||||||
|
une (seule) UE.
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
- Évaluation: dispositif produisant une note pour les étudiants inscrits à un
|
||||||
|
module. L'évaluation est associée à des coefficients.
|
||||||
|
|
||||||
|
## Structure des formations par compétences de type BUT
|
||||||
|
|
||||||
|
L'architecture d'une formation BUT est définie par les éléments suivants:
|
||||||
|
|
||||||
|
- Compétence
|
||||||
|
- Niveau
|
||||||
|
- Composantes essentielles ("En respectant les règles métiers...")
|
||||||
|
- Situations professionnelles ("Surveillance de la qualité de la
|
||||||
|
production...")
|
||||||
|
|
||||||
|
- Niveaux de compétence: associés à une année. Attention, le niveau 1 commence
|
||||||
|
parfois en deuxième année.
|
||||||
|
- Numéro (1, 2, 3)
|
||||||
|
- Titre
|
||||||
|
- Apprentissages critiques (AC): "Identifier les dysfonctionnements du réseau local..."
|
||||||
|
|
||||||
|
Chaque niveau se décompose en deux UE (aka "regroupement cohérent d'UE"), en
|
||||||
|
semestres impair et pair d'une année scolaire.
|
||||||
|
|
||||||
|
La figure ci-dessous indique la correspondance entre compétences (découpées en
|
||||||
|
niveaux) et UEs.
|
||||||
|
|
||||||
|
<img src="/fig/but-competences-ues.png" width="70%">
|
||||||
|
|
||||||
|
## Calcul des notes
|
||||||
|
|
||||||
|
Les rôles des SAÉ et ressources étant symétriques, on appellera dans la suite (et
|
||||||
|
dans ScoDoc) *module* un objet de type SAÉ _ou_ ressource.
|
||||||
|
|
||||||
|
Dans la suite, on considère les poids et coefficients toujours positifs ou
|
||||||
|
nuls (pas de coefficients négatifs).
|
||||||
|
|
||||||
|
### Coefficients des SAÉ et ressources
|
||||||
|
Les coefficients des modules (ressources et SAÉ) sont fixés par le PN (*adapté
|
||||||
|
localement*).
|
||||||
|
|
||||||
|
Traditionnellement, chaque module $m$ est noté par une note (moyenne de ses
|
||||||
|
évaluations) représentée par le nombre $\mu_m$. Si $c_{u,m}$ désigne le coefficient du
|
||||||
|
module $m$ dans l'UE $u$, la moyenne d'UE de l'étudiant est
|
||||||
|
|
||||||
|
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \mu_m$$
|
||||||
|
|
||||||
|
Mais pour le BUT, on souhaite avoir des évaluations associées à un
|
||||||
|
sous-ensemble de compétences (par exemple via des *apprentissages critiques*),
|
||||||
|
ce qui se traduit par une note envoyée vers certaines UE mais pas toutes, comme
|
||||||
|
on le voit dans exemples suivants:
|
||||||
|
|
||||||
|
L'exemple ci-dessous est un extrait du référentiel de compétence du BUT GEII. On
|
||||||
|
voit que les SAÉ et les ressources sont affectées de coefficients dans les deux
|
||||||
|
UE de ce semestre (S2), ici à parts égales sauf pour les SAÉs 2.1 et 2.2, dites
|
||||||
|
"mono-compétences", qui contribuent chacune à une seule UE.
|
||||||
|
|
||||||
|
<img src="/fig/but-ref-comp-ex-geii.jpg" width="70%">
|
||||||
|
|
||||||
|
|
||||||
|
Un autre exemple, cette fois avec des coefficients différents et un nombre plus
|
||||||
|
réduit d'apprentissages critiques:
|
||||||
|
![but-ref-comp-ex-commente](fig/but-ref-comp-ex-commente.png)
|
||||||
|
|
||||||
|
### Note d'un module
|
||||||
|
|
||||||
|
La note (moyenne) d'un module (SAÉ ou ressource) se calcule à partir de ses
|
||||||
|
évaluations. Chaque évaluation est pondérée, par un poids $p$ est fixé par
|
||||||
|
l'enseignant. Ce poids joue le même rôle que le coefficient d'une évaluation
|
||||||
|
classique, mais peut se décliner en plusieurs valeurs, une par UE associée au
|
||||||
|
module.
|
||||||
|
|
||||||
|
Soit $n_e$ la note à l'évaluation $e$ du module $m$, et $p_{e, u}$ son poids
|
||||||
|
vers l'UE $u$. La somme des notes d'un module pour l'UE $u$ est:
|
||||||
|
|
||||||
|
$$n_u = \sum_e p_{e,u} \, n_e$$
|
||||||
|
|
||||||
|
Chaque UE indiquée par le référentiel de formation doit être évaluée: si le
|
||||||
|
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é
|
||||||
|
*non conforme* et le jury ne pourra pas être tenu.
|
||||||
|
|
||||||
|
|
||||||
|
### 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:
|
||||||
|
|
||||||
|
$$\mu_{m, u} = \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{u,e}}$$
|
||||||
|
|
||||||
|
Toutefois, une moyenne *scalaire* (un nombre entre 0 et 20) est calculée à
|
||||||
|
titre indicatif (et sera éventuellement utilisée dans certaines fonctions de
|
||||||
|
ScoDoc conçues avant le BUT):
|
||||||
|
|
||||||
|
$$\mu_m = \frac{\sum_e (\sum_u p_{e,u}) \, n_e}{\sum_{u,e} \, p_{u,e}}$$
|
||||||
|
|
||||||
|
### Calcul moyenne d'UE
|
||||||
|
|
||||||
|
On va considérer les coefficients de modules et d'évaluations:
|
||||||
|
|
||||||
|
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{e,u}}$$
|
||||||
|
|
||||||
|
L'exemple suivant illustre ce mode de calcul:
|
||||||
|
|
||||||
|
<img src="/fig/but-exemple-calcul-notes.png" width="70%">
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
### Validation d'une UE
|
||||||
|
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
|
||||||
|
règlements des établissements):
|
||||||
|
|
||||||
|
<img src="/fig/but-validation-ue.png" width="50%">
|
||||||
|
|
||||||
|
Voir plus loin la gestion du parcours et les règles d'obtention du diplôme, qui
|
||||||
|
peuvent entrainer la validation d'UE a posteriori.
|
||||||
|
|
||||||
|
### Capitalisation
|
||||||
|
|
||||||
|
Les UE sont capitalisables, c'est à dire qu'un étudiant conserve son UE s'il
|
||||||
|
arrête temporairement ses études ou redouble un semestre.
|
||||||
|
|
||||||
|
En cas de redoublement, l'étudiant qui choisi de répéter une UE conserve le
|
||||||
|
résultat antérieur sauf s'il obtient mieux.
|
||||||
|
|
||||||
|
### Moyenne générale
|
||||||
|
|
||||||
|
La validation du BUT ne considère pas de "moyenne générale": chaque
|
||||||
|
regroupement d'UE est considéré indépendamment (aucunes compensations entre UE
|
||||||
|
relevant de compétences différentes).
|
||||||
|
|
||||||
|
Cependant, ScoDoc calculera une moyenne générale indicative, utile pour
|
||||||
|
certaines opérations (tri de tableaux, création de groupe de niveaux semblables,
|
||||||
|
avis de poursuite d'études, etc.).
|
||||||
|
|
||||||
|
Cette moyenne sera calculée en utilisant les ECTS de chaque UE du semestre
|
||||||
|
considéré:
|
||||||
|
|
||||||
|
$$ g = \frac{1}{\sum_{u \in \cal S} \mbox{ects}_u} \sum_{u \in \cal S} \mbox{ects}_u \, \mu_u $$
|
||||||
|
|
||||||
|
### Passage d'une année à l'autre
|
||||||
|
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
|
||||||
|
regroupements cohérents d’UE (niveaux de compétences). Ainsi, si l'année comporte 4
|
||||||
|
compétences, il faut en valider au moins 3.
|
||||||
|
2. Aucun regroupement cohérent d’UE < 8.
|
||||||
|
3. Cas particulier du passage en BUT 3: nécessité d’avoir validé toutes les UE
|
||||||
|
du BUT 1.
|
||||||
|
|
||||||
|
Note: La validation des deux UE du niveau d’une compétence emporte la validation de
|
||||||
|
l’ensemble des UE du niveau inférieur de cette même compétence.
|
||||||
|
|
||||||
|
### Redoublements
|
||||||
|
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.
|
||||||
|
|
||||||
|
Durant la totalité du cursus conduisant au bachelor universitaire de
|
||||||
|
technologie, l'étudiant peut être autorisé à redoubler une seule fois chaque
|
||||||
|
semestre dans la limite de *4 redoublements*. Le directeur de l'IUT peut autoriser
|
||||||
|
un redoublement supplémentaire en cas de force majeure dûment justifiée et
|
||||||
|
appréciée par ses soins. Tout refus d'autorisation de redoubler est pris après
|
||||||
|
avoir entendu l'étudiant à sa demande. Il doit être motivé et assorti de
|
||||||
|
conseils d'orientation.
|
||||||
|
|
||||||
|
|
||||||
|
### Obtention du diplôme
|
||||||
|
|
||||||
|
Le diplôme de BUT est obtenu lorsque toutes les compétences du parcours suivi
|
||||||
|
sont validées.
|
||||||
|
|
||||||
|
### Modules "bonus" (sport, culture, LV2)
|
||||||
|
|
||||||
|
Les modules hors formation comme le sport ou les langues vivantes supplémentaires
|
||||||
|
sont traditionnellement intégrés sous forme de "points de bonus" appliqués sur
|
||||||
|
la moyenne générale. Le BUT, on l'a vu, n'utilise plus la moyenne générale: le
|
||||||
|
bonus pourra donc être appliqué au niveau des moyennes UE: soit sur toutes
|
||||||
|
(bonus fixe ajouté à chaque UE), soit sur un sous-ensemble des UE du semestre.
|
||||||
|
|
||||||
|
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
|
||||||
|
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.
|
||||||
|
|
||||||
|
# Éditer ou importer une formation
|
||||||
|
|
||||||
|
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
|
||||||
|
locale*.
|
||||||
|
|
||||||
|
TODO: voir si on offre la possibilité de voir/gérer le delta entre le PN et le local.
|
||||||
|
|
||||||
|
# Modules et évaluations
|
||||||
|
|
||||||
|
## Créer une évaluation
|
||||||
|
|
||||||
|
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
|
||||||
|
évaluation affecte plus un UE qu'une autre);
|
||||||
|
|
||||||
|
- cocher des apprentissages critiques (on rappelle que les AC sont associés à des niveaux de
|
||||||
|
compétences, donc à 2 UE consécutives);
|
||||||
|
|
||||||
|
- indiquer un poids par UE.
|
||||||
|
|
||||||
|
#### Coefficient et poids d'une évaluation
|
||||||
|
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
|
||||||
|
impact dans chaque UE). On introduit donc un coefficient $w_e$, et les poids
|
||||||
|
bruts $b_{e, u}$. Les vrais poids sont calculés comme
|
||||||
|
|
||||||
|
$$p_{e, u} = w_e \, \frac{b_{e,u}}{\sum_u b_{e,u}}$$
|
||||||
|
|
||||||
|
#### Dialogue création/édition évaluation
|
||||||
|
|
||||||
|
<img src="/fig/but-dialog-eval-create.png" width="50%">
|
||||||
|
|
||||||
|
- L'enseignant _doit_ renseigner le coefficient de l'évaluation.
|
||||||
|
- Par défaut, les poids valent 1 (la contribution de l'évaluation vers les
|
||||||
|
différentes UE respecte alors le PN).
|
||||||
|
- Si on décoche un AC, les poids sont mis à jour, au prorata du nombre d'AC
|
||||||
|
dans chaque UE (compétence).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Tableau de bord module
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
- 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:
|
||||||
|
|
||||||
|
<img src="/fig/but-tableau-evals-module-ok.png" width="50%">
|
||||||
|
|
||||||
|
Dans le cas où les évaluations ne couvriraient pas toutes les UE (mauvais choix
|
||||||
|
des poids ou oubli d'une évaluation):
|
||||||
|
|
||||||
|
<img src="/fig/but-tableau-evals-module-ko.png" width="50%">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Bulletins de notes
|
||||||
|
|
||||||
|
La quantité d'information à présenter rend la conception des bulletins de notes difficile.
|
||||||
|
|
||||||
|
## Modèle "Lillois"
|
||||||
|
Proposition de l'IUT de Lille:
|
||||||
|
|
||||||
|
- en ligne, les ressources, puis les SAÉ;
|
||||||
|
- en colonnes, les UE;
|
||||||
|
- dans chaque case, le coefficient et la note obtenue;
|
||||||
|
- on peut ajouter les évaluations (lignes);
|
||||||
|
- on pourrait ajouter les infos habituelles en colonnes: min/max/moy/rangs/...
|
||||||
|
|
||||||
|
Avantage: toutes les informations importantes sont présentées.
|
||||||
|
|
||||||
|
Inconvénients (?): beaucoup de cases vides, peu synthétique, pas évident à
|
||||||
|
exploiter pour un non spécialiste du BUT (poursuites d'études, employeurs).
|
||||||
|
|
||||||
|
<img src="/fig/but-bul-lille.png" width="50%">
|
||||||
|
|
||||||
|
## Modèle "Bordelais"
|
||||||
|
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
|
||||||
|
chaque ressource et SAE, puis les résultats de chaque UE.
|
||||||
|
|
||||||
|
Un exemple préliminaire:
|
||||||
|
|
||||||
|
<img src="/fig/but-bul-bdx.png" width="50%">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -3,14 +3,23 @@
|
|||||||
|
|
||||||
*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...*
|
||||||
|
|
||||||
|
**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é:
|
||||||
|
|
||||||
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" 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 l'évaluation.
|
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"
|
||||||
|
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
|
||||||
|
l'évaluation.
|
||||||
|
|
||||||
Les moyennes de modules sont obtenues en calculant dans chacun la moyenne pondérée des notes disponibles, en utilisant les coefficient des évaluations.
|
Les moyennes de modules sont obtenues en calculant dans chacun la moyenne
|
||||||
|
pondérée des notes disponibles, en utilisant les coefficient des évaluations.
|
||||||
|
|
||||||
Les moyennes d'UE et générale sont calculées à partir des moyennes de modules, en utilisant les coefficients du programme pédagogique (dénommé dans ScoDoc "formation").
|
Les moyennes d'UE et générale sont calculées à partir des moyennes de modules,
|
||||||
|
en utilisant les coefficients du programme pédagogique (dénommé dans ScoDoc
|
||||||
|
"formation").
|
||||||
|
|
||||||
|
|
||||||
Plus de détails ci-dessous.
|
Plus de détails ci-dessous.
|
||||||
@ -28,26 +37,42 @@ Chaque évaluation produit des notes de différents types:
|
|||||||
|
|
||||||
* 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 module. Chaque note est associée à un coefficient: le coefficient de l'évaluation dans le module.
|
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
|
||||||
|
l'évaluation dans le module.
|
||||||
|
|
||||||
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 spécifique.
|
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
|
||||||
|
spécifique.
|
||||||
|
|
||||||
|
|
||||||
#### Formules de calcul spéciales
|
#### Formules de calcul spéciales
|
||||||
|
|
||||||
Il est possible de définir des formules de calcul spéciales pour calculer les moyennes. Ces formules sont alors utilisées par ScoDoc à la place de la moyenne pondérée standard. Voir [FormulesCalculUtilisateur](FormulesCalculUtilisateur.md) pour plus d'informations.
|
Il est possible de définir des formules de calcul spéciales pour calculer les
|
||||||
|
moyennes. Ces formules sont alors utilisées par ScoDoc à la place de la moyenne
|
||||||
|
pondérée standard. Voir
|
||||||
|
[FormulesCalculUtilisateur](FormulesCalculUtilisateur.md)
|
||||||
|
pour plus d'informations.
|
||||||
|
|
||||||
|
|
||||||
### Moyennes d'UE
|
### 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)
|
||||||
|
|
||||||
Seuls les modules auxquels l'étudiant est inscrit et dans lesquels il y a des notes sont considérés.
|
Seuls les modules auxquels l'étudiant est inscrit et dans lesquels il y a des
|
||||||
|
notes sont considérés.
|
||||||
|
|
||||||
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 [ModulesMalus](ModulesMalus.md)).
|
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
|
||||||
|
[ModulesMalus](ModulesMalus.md)).
|
||||||
|
|
||||||
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).
|
Comme pour le calcul des moyennes de modules, il est possible de définir une
|
||||||
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).
|
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).
|
||||||
|
|
||||||
La présence de formules d'UE est signalée sur le tableau de bord du semestre.
|
La présence de formules d'UE est signalée sur le tableau de bord du semestre.
|
||||||
|
|
||||||
@ -56,40 +81,59 @@ La présence de formules d'UE est signalée sur le tableau de bord du semestre.
|
|||||||
|
|
||||||
moyenne = moyenne pondérée des moyennes d'UE + bonus sport/culture
|
moyenne = moyenne pondérée des moyennes d'UE + bonus sport/culture
|
||||||
|
|
||||||
Le coef. d'une UE est par défaut la somme des coefs des modules qui la compose (et peut donc différer d'un étudiant à un autre, s'ils ne sont pas inscrits aux mêmes modules).
|
Le coef. d'une UE est par défaut la somme des coefs des modules qui la compose
|
||||||
|
(et peut donc différer d'un étudiant à un autre, s'ils ne sont pas inscrits aux
|
||||||
|
mêmes modules).
|
||||||
|
|
||||||
Toutefois (depuis mai 2020), il est possible de spécifier un coefficient d'UE dans le programme pédagogique, et de l'utiliser pour calculer la moyenne générale (option "Utiliser les coefficients d'UE pour calculer la moyenne générale"). Dans ce cas, les coefficients des modules ne servent qu'à calculer les moyennes d'UE, qui sont ensuite affectée de leur propre coefficient. De cette façon, les UE pèsent le même poids pour tous les étudiants, quel que soit le nombre de modules auquel l'étudiant est inscrit (ce qui peut sembler étrange: bien réfléchir avant de choisir le mode de calcul adapté à sa formation).
|
Toutefois (depuis mai 2020), il est possible de spécifier un coefficient d'UE
|
||||||
|
dans le programme pédagogique, et de l'utiliser pour calculer la moyenne
|
||||||
|
générale (option "Utiliser les coefficients d'UE pour calculer la moyenne
|
||||||
|
générale"). Dans ce cas, les coefficients des modules ne servent qu'à calculer
|
||||||
|
les moyennes d'UE, qui sont ensuite affectée de leur propre coefficient. De
|
||||||
|
cette façon, les UE pèsent le même poids pour tous les étudiants, quel que soit
|
||||||
|
le nombre de modules auquel l'étudiant est inscrit (ce qui peut sembler étrange:
|
||||||
|
bien réfléchir avant de choisir le mode de calcul adapté à sa formation).
|
||||||
|
|
||||||
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 expliqué ci-dessous.
|
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
|
||||||
|
expliqué ci-dessous.
|
||||||
|
|
||||||
|
|
||||||
### Notes de rattrapage
|
### Notes 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 "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
|
||||||
|
"Rattrapage":
|
||||||
|
|
||||||
![CreateEvaluationRat.png](screens/CreateEvaluationRat.png)
|
![CreateEvaluationRat.png](screens/CreateEvaluationRat.png)
|
||||||
|
|
||||||
Pour chaque étudiant, la note obtenue à l'évaluation de rattrapage remplace la moyenne du module, seulement si elle est supérieure à celle-ci.
|
Pour chaque étudiant, la note obtenue à l'évaluation de rattrapage remplace la
|
||||||
|
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**.
|
Ce bonus s'applique directement sur la **moyenne générale** et/ou sur les
|
||||||
|
moyennes d'UE (notamment en BUT).
|
||||||
|
|
||||||
Les notes des UEs de type spécial "Sport & Culture" sont utilisées pour calculer ce bonus.
|
Les notes des UEs de type spécial "Sport & Culture" sont utilisées pour calculer ce bonus.
|
||||||
|
|
||||||
Pour qu'un étudiant bénéficie de ce bonus, il doit être inscrit à un module d'une UE de type "Sport&Culture". Cette UE et modules associés doivent donc être prévu dans le programme pédagogique.
|
Pour qu'un étudiant bénéficie de ce bonus, il doit être inscrit à un module
|
||||||
|
d'une UE de type "Sport&Culture". Cette UE et modules associés doivent donc être
|
||||||
|
prévu dans le programme pédagogique.
|
||||||
|
|
||||||
La règle par défaut, en vigueur à l'IUT de Villetaneuse, est la suivante:
|
La règle appliquée dépend de l'établissement. Par exemple, l'Université de
|
||||||
*Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
Haute Alsace appliquait le règlement suivant: *Les étudiants de l'IUT peuvent
|
||||||
de l'Université Paris 13 (sports, musique, deuxième langue,
|
suivre des enseignements optionnels de l'U.H.A. (sports, musique, deuxième
|
||||||
culture, etc) non rattachés à une unité d'enseignement. Les points
|
langue, culture, etc) non rattachés à une unité d'enseignement. Les points
|
||||||
au-dessus de 10 sur 20 obtenus dans chacune des matières
|
au-dessus de 10 sur 20 obtenus dans chacune des matières optionnelles sont
|
||||||
optionnelles sont cumulés et 5% de ces points cumulés s'ajoutent à
|
cumulés dans la limite de 10 points. 5% de ces points cumulés s'ajoutent à la
|
||||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
moyenne générale du semestre déjà obtenue par l'étudiant.*
|
||||||
*
|
|
||||||
|
|
||||||
Mais la règle à appliquer dépend de l'établissement. Ainsi, l'Université de Haute Alsace applique le règlement suivant: *Les étudiants de l'IUT peuvent suivre des enseignements optionnels de l'U.H.A. (sports, musique, deuxième langue, culture, etc) non rattachés à une unité d'enseignement. Les points au-dessus de 10 sur 20 obtenus dans chacune des matières optionnelles sont cumulés dans la limite de 10 points. 5% de ces points cumulés s'ajoutent à la moyenne générale du semestre déjà obtenue par l'étudiant.*
|
L'administrateur peut changer la fonction de calcul du bonus sport via le
|
||||||
|
formulaire de configuration accessible (aux admin) depuis la page d'accueil. Si
|
||||||
|
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
|
||||||
|
établissement. Le code correspondant sera ajouté via une mise à jour.
|
||||||
|
|
||||||
Si vous souhaitez changer la règle de calcul utilisée par ScoDoc, il faut modifier un fichier de configuration et éventuellement écrire une fonction pour calculer votre bonus. Regardez les fichier `config/scodoc_config.py` et éventuellement `bonus_sport.py`.
|
|
||||||
|
@ -39,7 +39,7 @@ Voici les permissions utilisées:
|
|||||||
|
|
||||||
* **Sco Change Entreprises** : modifier le fichier d'entreprises
|
* **Sco Change Entreprises** : modifier le fichier d'entreprises
|
||||||
|
|
||||||
* **Sco Users Manage** : voir et modifier les utilisateurs ScoDoc
|
* **Sco Users Admin** : voir et modifier les utilisateurs ScoDoc
|
||||||
|
|
||||||
* **Sco Users View** : voir les utilisateurs ScoDoc
|
* **Sco Users View** : voir les utilisateurs ScoDoc
|
||||||
|
|
||||||
@ -53,31 +53,40 @@ Pour la liste à jour des permissions et leur nom complet, et les associations i
|
|||||||
### Rôles associés à chaque permission dans chaque département
|
### 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`).
|
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... | |
|
Permission | Rôles... | | |
|
||||||
-----------| ------- | -- | --
|
-----------------------------|--------------|--------|---------|
|
||||||
**`ScoView`** | `Ens` | `Secr` | `Admin`
|
**`ScoView`** | `Ens` | `Secr` | `Admin` |
|
||||||
**`ScoEnsView`** | `Ens` | | `Admin`
|
**`ScoEnsView`** | `Ens` | | `Admin` |
|
||||||
**`ScoUsersView`** | `Ens` | `Secr` | `Admin`
|
**`ScoUsersView`** | `Ens` | `Secr` | `Admin` |
|
||||||
**`ScoEtudAddAnnotations`** | `Ens` | `Secr` | `Admin`
|
**`ScoEtudAddAnnotations`** | `Ens` | `Secr` | `Admin` |
|
||||||
**`ScoAbsChange`** | `Ens` | `Secr` | `Admin`
|
**`ScoAbsChange`** | `Ens` | `Secr` | `Admin` |
|
||||||
**`ScoEntrepriseView`** | `Ens` | `Secr` | `Admin`
|
**`ScoEntrepriseView`** | `Ens` | `Secr` | `Admin` |
|
||||||
**`ScoEntrepriseChange`** | | `Secr` | `Admin`
|
**`ScoEntrepriseChange`** | | `Secr` | `Admin` |
|
||||||
**`ScoEtudChangeAdr`** | | `Secr` | `Admin`
|
**`ScoEtudChangeAdr`** | | `Secr` | `Admin` |
|
||||||
**`ScoChangeFormation`** | | | `Admin`
|
**`ScoChangeFormation`** | | | `Admin` |
|
||||||
**`ScoEditAllNotes`** | | | `Admin`
|
**`ScoEditAllNotes`** | | | `Admin` |
|
||||||
**`ScoEditAllEvals`** | | | `Admin`
|
**`ScoEditAllEvals`** | | | `Admin` |
|
||||||
**`ScoImplement`** | | | `Admin`
|
**`ScoImplement`** | | | `Admin` |
|
||||||
**`ScoEtudChangeGroups`** | | | `Admin`
|
**`ScoEtudChangeGroups`** | | | `Admin` |
|
||||||
**`ScoEtudInscrit`** | | | `Admin`
|
**`ScoEtudInscrit`** | | | `Admin` |
|
||||||
**`ScoUsersAdmin`** | | | `Admin`
|
**`ScoUsersAdmin`** | | | `Admin` |
|
||||||
**`ScoChangePreferences`** | | | `Admin`
|
**`ScoChangePreferences`** | | | `Admin` |
|
||||||
|
|
||||||
|
|
||||||
## 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 utilsateur
|
||||||
|
* 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).
|
||||||
|
|
||||||
|
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 AdminGEII et AdminCJ
|
||||||
|
* Il pourra créer des utilisateurs uniquement dans le département GEII
|
||||||
|
* il pourra ajouter ou retirer les rôles EnsGEII, SecrGEII, AdminGEII à tout utilisateur de scodoc
|
||||||
|
* il pourra ajouter ou retirer les rôles EnsCJ, SecrCJ, AdminCJ à tout utilisateur de scodoc
|
||||||
|
|
||||||
Plus d'informations techniques sur la page [AdminUsers](AdminUsers.md).
|
Plus d'informations techniques sur la page [AdminUsers](AdminUsers.md).
|
||||||
|
|
||||||
|
@ -4,15 +4,41 @@ Quelques indications pour développer avec ScoDoc 7.x, à adapter à vos goûts
|
|||||||
|
|
||||||
# Machine virtuelle
|
# Machine virtuelle
|
||||||
|
|
||||||
Il est confortable de développer dans une VM (un container Docker ferait aussi bien l'affaire, mais Docker a été créé bien après ScoDoc ! Les utilisateurs étant dans des VM, on a l'avantage d'être dans les mêmes conditions qu'eux).
|
Il est confortable de développer dans une VM (un container Docker ferait
|
||||||
|
aussi bien l'affaire).
|
||||||
|
|
||||||
## Conseils pour VirtualBox
|
## Conseils pour la machine virtuelle
|
||||||
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Mac, Linux ou Windows. Créer une VM avec Debian 10, et suivre la [procédure habituelle d'installation de ScoDoc](GuideInstallDebianDix.md).
|
|
||||||
|
|
||||||
En général, vous préférez développer sur la machine hôte pour disposer de votre éditeur préféré. Mais vous exécutez ScoDoc dans la VM.
|
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Linux ou
|
||||||
|
Windows. Créer une VM avec Debian 10, et suivre la [procédure habituelle
|
||||||
|
d'installation de ScoDoc](GuideInstallDebian11.md).
|
||||||
|
|
||||||
### Configuration réseau
|
Sur les Macs anciens (processeurs Intel), VirtualBox fonctionne bien. Sur les
|
||||||
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 depuis l'hôte doit être possible via un réseau privé interne (car vous ne serez pas toujours conencté à Internet, et ne souhaitez pas que l'on accède à votre serveur de test de l'extérieur).
|
modèles "M1" (Apple Silicon), je conseille d'utiliser
|
||||||
|
[UTM](https://mac.getutm.app/) qui est facile à installer et très performant. On
|
||||||
|
installe alors une VM avec la distribution Linux Debian pour l'architecture
|
||||||
|
`arm64` (nous ne produisons pas de paquets Debian `arm64` pour ScoDoc 9, mais
|
||||||
|
l'installation est simple, ne pas hésiter à demander sur le Discord).
|
||||||
|
|
||||||
|
En général, vous préférez développer sur la machine hôte pour disposer de votre
|
||||||
|
éditeur préféré, mais exécutez ScoDoc dans la VM.
|
||||||
|
|
||||||
|
### Éditeur de texte / IDE
|
||||||
|
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
|
||||||
|
dans une machine virtuelle ou réelle séparée de votre machine de burea), nous
|
||||||
|
vous conseillons **VS Code** avec le module
|
||||||
|
[*Remote-SSH*](https://code.visualstudio.com/docs/remote/ssh). Ceci vous évite
|
||||||
|
de fastidieuses configurations de partage de fichiers entre les machine, il
|
||||||
|
suffit d'une connexion SSH fonctionnelle.
|
||||||
|
|
||||||
|
### Configuration réseau de VirtualBox
|
||||||
|
|
||||||
|
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
|
||||||
|
depuis l'hôte doit être possible via un réseau privé interne (car vous ne serez
|
||||||
|
pas toujours conencté à Internet, et ne souhaitez pas que l'on accède à votre
|
||||||
|
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.
|
||||||
|
|
||||||
@ -32,7 +58,8 @@ Dans le Debian, j'utilise `/etc/network/interfaces`
|
|||||||
|
|
||||||
(le `enp0s3` désigne chez moi l'`Adapter 1`, mais c'est susceptible de changer. Normalement, l'installeur créé ce fichier )
|
(le `enp0s3` désigne chez moi l'`Adapter 1`, mais c'est susceptible de changer. Normalement, l'installeur créé ce fichier )
|
||||||
|
|
||||||
Pour lancer l'interface externe , quand on a besoin d'accéder à Internet depuis la VM (en fait assez rarement):
|
Pour lancer l'interface externe , quand on a besoin d'accéder à Internet depuis
|
||||||
|
la VM (en fait assez rarement):
|
||||||
|
|
||||||
dhclient enp0s8
|
dhclient enp0s8
|
||||||
|
|
||||||
@ -45,12 +72,23 @@ Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre
|
|||||||
|
|
||||||
|
|
||||||
### Partage de fichiers
|
### Partage de fichiers
|
||||||
Pour éditer votre code au chaud sur votre hôte, il y a plein de solutions. L'une consiste à laisser le code dans la VM, mais de monter un répertoire (par exemple `/opt`) sur l'hôte, par exemple via `sshfs`.
|
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
|
||||||
|
Code propose un module dédié très simple et performant, mais tout montage de
|
||||||
|
type `sshfs`peut aussi faire l'affaire).
|
||||||
|
|
||||||
Une autre solution (que j'utilise sur mon MacBook), 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`.
|
Une autre solution est de laisser le source (clone git) sur l'hôte, et de
|
||||||
Dans ScoDoc, `/opt/scodoc/Products/ScoDoc` est alors un lien symbolique vers votre `src/ScoDoc`.
|
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`:
|
Attention, VirtualBox gère mal les droits/permissions du répertoire partagé. les utilisateurs linux (dans la VM) doit être dans le groupe `vboxsf`:
|
||||||
|
|
||||||
@ -70,7 +108,7 @@ Il arrive (?) que Virtual Box change les droits unix sur les fichiers partagés.
|
|||||||
|
|
||||||
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
|
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
|
||||||
|
|
||||||
# Interaction avec ScoDoc 7
|
# 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.
|
ScoDoc 7 utilise Zope, et ce n'est pas un environnement commode pour débugguer.
|
||||||
|
|
||||||
|
@ -1,17 +1,30 @@
|
|||||||
# Contribuer à ScoDoc
|
# Contribuer à ScoDoc
|
||||||
|
|
||||||
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun peut aider, en améliorant la documentation (page, vidéos), en s'abonnant à la liste Notes (voir [listes de diffusion](ListesDeDiffusion.md)) pour y aider les collègues, ou en développant ou testant le logiciel.
|
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun
|
||||||
|
peut aider, en améliorant la documentation (page, vidéos), en s'abonnant à la
|
||||||
|
liste Notes (voir [listes de diffusion](ListesDeDiffusion.md)) pour y aider les
|
||||||
|
collègues, ou en développant ou testant le logiciel.
|
||||||
|
|
||||||
Le canal de communication entre développeurs est la liste de diffusion mail [scodoc-devel](ListesDeDiffusion.md). Là, vous pourrez demander un compte sur le [git du projet](https://scodoc.org/git), consulter/ajouter des tickets, proposer votre code (*pull requests*).
|
Les canaux de communication entre développeurs sont d'une part la liste de
|
||||||
|
diffusion mail [scodoc-devel](ListesDeDiffusion.md), d'autre part un serveur
|
||||||
|
Discord (accès sur invitation, demander par mail). Vous pourrez demander un
|
||||||
|
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 YouTube](https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1). Proposez de nouvelles vidéos, c'est très facile à faire !
|
- les vidéos postées sur [la chaîne
|
||||||
|
YouTube](https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1).
|
||||||
|
Proposez de nouvelles vidéos, c'est très facile à faire !
|
||||||
|
|
||||||
- Les pages Web comme celle que vous lisez actuellement. La documentation est générée via `MkDocs, un système très simple basé sur le format [Markdown](https://www.markdownguide.org/basic-syntax/). Toutes les sources sont sur le [dépôt git DocScoDoc](https://scodoc.org/git/viennet/DocScoDoc).
|
- Les pages Web comme celle que vous lisez actuellement. La documentation est
|
||||||
|
générée via `MkDocs, un système très simple basé sur le format
|
||||||
|
[Markdown](https://www.markdownguide.org/basic-syntax/). Toutes les sources
|
||||||
|
sont sur le [dépôt git DocScoDoc](https://scodoc.org/git/viennet/DocScoDoc).
|
||||||
|
|
||||||
## Contribuer au logiciel
|
## Contribuer au logiciel
|
||||||
|
|
||||||
Le [dépot principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).
|
Le [dépot principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs
|
||||||
|
branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).
|
113
docs/DevAPIPermissions.md
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
/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:
|
||||||
|
```
|
||||||
|
@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
|
||||||
|
fomsemestre est
|
||||||
|
```
|
||||||
|
ScoDoc/<str:dept_acronym>/Scolarite/Notes/formsemestre_status
|
||||||
|
```
|
||||||
|
La vue s'écrit
|
||||||
|
```
|
||||||
|
@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
|
||||||
|
```
|
||||||
|
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:
|
||||||
|
```
|
||||||
|
/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
|
||||||
|
```
|
||||||
|
/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
|
||||||
|
```
|
||||||
|
p = Partition.query.get(partition_id)
|
||||||
|
```
|
||||||
|
mais plutôt
|
||||||
|
```
|
||||||
|
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:
|
||||||
|
```
|
||||||
|
@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`).
|
188
docs/FAQ.md
@ -1,106 +1,176 @@
|
|||||||
|
|
||||||
## FAQ
|
## FAQ / Questions fréquemment posées
|
||||||
En cours d'élaboration et en vrac...
|
|
||||||
|
|
||||||
### 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 plusieurs contributeurs, enseignants ou BIASTSS dans les IUT et universités. Son développement est toujours actif, voir le dépot git <https://scodoc.org/git>.
|
ScoDoc a été conçu et développé par Emmanuel Viennet, puis complété par
|
||||||
|
plusieurs contributeurs, enseignants ou BIATSS dans les IUT et universités. Son
|
||||||
|
développement est toujours actif, voir le dépôt git <https://scodoc.org/git>.
|
||||||
|
|
||||||
En 2020, une association a été crée pour soutenir et pérénniser le projet: par exemple pour acquérir services et équipements pour le développement informatique, recruter stagiaires, ou apprentis, ou mener une veille scientifique et technologique sur le sujet: voir [AssociationScoDoc](AssociationScoDoc.md). L'avenir du logiciel dépend donc de vous: adhérez, ou incitez votre institution (département IUT, Institut, Ecole) à le faire.
|
En 2020, une association a été créée pour soutenir et pérenniser le projet: par
|
||||||
|
exemple pour acquérir services et équipements pour le développement
|
||||||
|
informatique, recruter stagiaires, apprentis, ou mener une veille scientifique
|
||||||
|
et technologique sur le sujet: voir [AssociationScoDoc](AssociationScoDoc.md).
|
||||||
|
L'avenir du logiciel dépend donc de vous: adhérez, ou incitez votre institution
|
||||||
|
(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 ?
|
||||||
Voir [CalculNotes](CalculNotes.md)
|
Voir [CalculNotes](CalculNotes.md), ou bien
|
||||||
|
[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 département peuvent voir les notes, en passant par la page du module concerné.
|
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é.
|
||||||
|
|
||||||
Les notes n'apparaissent dans les bulletins et tableaux récapitulatifs que lorsqu'elles
|
Les notes n'apparaissent dans les bulletins et tableaux récapitulatifs que
|
||||||
sont prises en compte dans les moyennes: soit parce que toutes les notes des étudiants inscrits à cette évaluation sont saisies, soit parce qu'il s'agit d'une évaluation avec "prise en compte immédiate".
|
lorsqu'elles sont prises en compte dans les moyennes: soit parce que toutes les
|
||||||
|
notes des étudiants inscrits à cette évaluation sont saisies, soit parce qu'il
|
||||||
|
s'agit d'une évaluation avec "prise en compte immédiate".
|
||||||
|
|
||||||
Les **étudiants n'ont pas accès à ScoDoc**, et ne peuvent donc pas voir leurs notes, sauf si une interface spécifique est configurée ("portail", avec affichage sur leur ENT en général, cet affichage pouvant être désactivé depuis ScoDoc pour un semestre particulier). A défaut, il faut leur envoyer leurs bulletins par mail.
|
Les **étudiants n'ont pas accès à ScoDoc**, et ne peuvent donc pas voir leurs
|
||||||
|
notes, sauf si une interface spécifique est configurée ("portail", avec
|
||||||
|
affichage sur leur ENT en général, cet affichage pouvant être désactivé depuis
|
||||||
|
ScoDoc pour un semestre particulier). A défaut, il faut leur envoyer leurs
|
||||||
|
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:
|
1. Supprimer toutes les notes saisies dans cette évaluation, s'il y en a: passer
|
||||||
passer par la page "Saisie des notes" et suivre le lien "Effacer toutes les notes de cette évaluation".
|
par la page "Saisie des notes" et suivre le lien "Effacer toutes les notes de
|
||||||
|
cette évaluation".
|
||||||
|
|
||||||
2. Lorsqu'il n'y a plus de notes, une croix rouge apparait sur le tableau de bord du module: cliquer dessus pour supprimer l'évaluation.
|
2. Lorsqu'il n'y a plus de notes, une croix rouge apparait sur le tableau de
|
||||||
|
bord du module: cliquer dessus pour supprimer l'évaluation.
|
||||||
|
|
||||||
|
|
||||||
#### 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
|
||||||
|
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).
|
||||||
|
|
||||||
* 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*").
|
* 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 remède. Cette option n'est en principe jamais utile, sauf pour corriger une fausse manœuvre au moment des inscriptions.
|
* *Supprimer cet étudiant* : il sera totalement supprimé de la base, sans
|
||||||
|
remède. Cette option n'est en principe jamais utile, sauf pour corriger
|
||||||
|
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é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 (typiquement, après le 15 octobre).
|
* *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
|
||||||
|
abandon en cours d'année, passé le délai légal ou il peut se désengager
|
||||||
|
(typiquement, après le 15 octobre).
|
||||||
|
|
||||||
* *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 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 abandonne en tout début d'année (il ne sera alors pas compté dans les inscrits).
|
* *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
|
||||||
|
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
|
||||||
|
abandonne en tout début d'année (il ne sera alors pas compté dans les
|
||||||
|
inscrits).
|
||||||
|
|
||||||
### Configuration
|
### Mes données sont erronées, que faire ?
|
||||||
#### Comment changer les logos sur les documents PDF (PV...)
|
En cas de problème (bug, erreur de manipulation, suspicion de piratage),
|
||||||
Ce n'est malheureusement pas encore simple.
|
différents journaux peuvent être consultés.
|
||||||
Il faut (pour l'instant) être administrateur sur le serveur ScoDoc.
|
|
||||||
Les logos sont stockés dans le répertoire `/opt/scodoc/var/scodoc/config/logos/` (anciennement dans `/opt/scodoc/Products/ScoDoc`) et doivent être des images JPEG (extension `.jpg`).
|
|
||||||
Il faut aussi indiquer les tailles des images dans le fichier de configuration `config/scodoc_config.py`, variable `CONFIG.LOGO_FOOTER_HEIGHT` etc.
|
|
||||||
|
|
||||||
* Sur les PV, `logo_header.jpg` est affiché en haut, et `logo_header.jpg` en bas de la page.
|
Les utilisateurs autorisés peuvent facilement voir:
|
||||||
* Sur les bulletins de notes, c'est configurable (et on peut utiliser d'autres logos), voir [ParametrageBulletins](ParametrageBulletins.md)
|
* les opérations effectuées sur un étudiant (inscriptions, saisies d'absences,
|
||||||
|
...), accessibles via le menu "Etudiant" / "Voir le journal..." en haut de sa
|
||||||
|
fiche individuelle.
|
||||||
|
|
||||||
|
* les différentes saisies de notes, via le formulaire de saisie de notes (toutes
|
||||||
|
les valeurs précédemment saisies sont conservées, ainsi que la date et
|
||||||
|
l'identité de l'utilisateur ayant effectué la saisie).
|
||||||
|
|
||||||
#### Administration
|
Les administrateurs (informaticiens) peuvent aussi consulter les journaux (logs)
|
||||||
|
du serveur, voir plus loin.s
|
||||||
|
|
||||||
#### Quel système d'exploitation ?
|
### Comment signaler un problème ?
|
||||||
|
Nous vous remercions de nous signaler tous les problèmes que vous rencontrez:
|
||||||
|
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
|
||||||
|
garantie. Mais nous faisons de notre mieux:
|
||||||
|
|
||||||
|
- si vous êtes utilisateurs, écrire à
|
||||||
|
[notes@listes.univ-paris13.fr](mailto:notes@listes.univ-paris13.fr).
|
||||||
|
ou joindre le canal Discord Assistance.
|
||||||
|
|
||||||
|
- si vous êtes informaticien et voulez évoquer un problème technique
|
||||||
|
(développement, installation), écrire à
|
||||||
|
[scodoc-devel@listes.univ-paris13.fr](mailto:scodoc-devel@listes.univ-paris13.fr).
|
||||||
|
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
### Comment changer les logos sur les documents PDF (PV...)
|
||||||
|
|
||||||
|
Il faut avoir un compte (web) administrateur sur ScoDoc, et passer
|
||||||
|
par l'onglet "configuration" accessible sur la page d'accueil.
|
||||||
|
Voir [la page sur la gestion des logos et images ](GestionLogos.md).
|
||||||
|
|
||||||
|
### Administration
|
||||||
|
|
||||||
|
### 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 script d'installation ( [GuideInstallDebianDix](GuideInstallDebianDix.md) ) assure l'installation de tout les éléments nécessaires au bon fonctionnement de ScoDoc. Une distribution sous forme de container Docker est prévue prochainement.
|
Le serveur ScoDoc fonctionne sous Linux. Il n'est testé qu'avec Debian (stable).
|
||||||
|
Le script d'installation ([GuideInstallDebian11](GuideInstallDebian11.md))
|
||||||
|
assure l'installation de tout les éléments nécessaires au bon fonctionnement de
|
||||||
|
ScoDoc.
|
||||||
|
|
||||||
|
|
||||||
|
### Quand et comment mettre à jour le logiciel ?
|
||||||
|
Les mises à jour sont normalement automatiquement appliquées chaque nuit,
|
||||||
|
assurant la sécurité et l'actualisation de ScoDoc.
|
||||||
|
|
||||||
|
Des améliorations et corrections sont fréquemment introduites. Les plus
|
||||||
|
importantes sont annoncées sur la liste de diffusion
|
||||||
|
"[scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces)".
|
||||||
|
|
||||||
|
Voir aussi la page [MisesAJour](MisesAJour.md).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Quand et comment mettre à jour le logiciel ?
|
### Quelles sauvegardes des données ?
|
||||||
Des améliorations et corrections sont fréquemment introduites. Les plus importantes sont annoncées sur la liste de diffusion "[scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces)". Appliquer les mises à jour assez souvent, en suivant les instructions données sur [MisesAJour](MisesAJour.md).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Quelles sauvegardes des données ?
|
|
||||||
Voir [SauvegardesBases](SauvegardesBases.md).
|
Voir [SauvegardesBases](SauvegardesBases.md).
|
||||||
|
|
||||||
|
|
||||||
#### Où sont les journaux (logs) ?
|
### Où sont les journaux (logs) ?
|
||||||
En cas de problème (bug, erreur de manipulation, suspicion de piratage), différents journaux peuvent être consultés.
|
|
||||||
|
|
||||||
* Le journal du serveur Web Apache
|
Les administrateurs du serveur peuvent consulter:
|
||||||
|
* Le journal du serveur Web (nginx)
|
||||||
```
|
```
|
||||||
/var/log/apache2/scodoc_access.log
|
/var/log/nginx/scodoc*.log
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* le fichier `/opt/scodoc-data/log/scodoc.log` reçoit des messages de déboggage
|
||||||
* les opérations effectuées sur un étudiant sont accessibles via le menu "Etudiant" / "Voir le journal..." en haut de la fiche individuelle de l'étudiant.
|
de ScoDoc.
|
||||||
|
|
||||||
* le fichier `/opt/scodoc/log/notes.log` reçoit des messages de déboggage de ScoDoc. (c'est là que sont écrits les messages envoyés par la fonction `log()` dans le code de ScoDoc).
|
|
||||||
|
|
||||||
* le fichier `/opt/scodoc/log/events.log` reçoit des messages de déboggage du serveur Zope (démarrages/arrêts, erreurs d'authentification, bugs liés à des problèmes d'installation, etc.)
|
|
||||||
|
|
||||||
|
|
||||||
#### 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 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.
|
Il est de plus en plus important d'installer un certificat SSL; les navigateurs
|
||||||
Si votre établissement (par exemple via RENATER) ne vous fournit pas de de certificat, je conseille de passer par <a href="https://letsencrypt.org/fr/">Let's Encrypt</a> dont l'utilisation est très simple et rapide.
|
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
|
||||||
|
RENATER) ne vous fournit pas de de certificat, je conseille de passer par <a
|
||||||
|
href="https://letsencrypt.org/fr/">Let's Encrypt</a> dont l'utilisation est très
|
||||||
|
simple et rapide.
|
||||||
|
|
||||||
Pour vos tests en local, avec Chrome, modifier le paramétrage en réglant: `chrome://flags/#allow-insecure-localhost`.
|
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
|
||||||
|
page bloquée).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Comment supprimer un département ?
|
### Comment supprimer un département ?
|
||||||
La suppression d'un département efface toutes les données: étudiants, notes, etc. Se connecter sur ScoDoc (Web) comme administrateur, suivre le lien `Administration de scodoc` sur la page d'accueil, et supprimer le département. Cette opération retire le département de l'application Web, mais ne supprime pas la base de données du serveur. Pour cela, se connecter (en ssh) en tant que `root` sur le serveur, aller dans le répertoire `/opt/scodoc/Products/ScoDoc/config` et lancer le script `./delete_dept.sh`.
|
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.md).
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
# Obsolète, non disponible en ScoDoc 9.
|
||||||
|
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
||||||
|
alt="/!\" /> **Les formules utilisateurs, disponibles à titre expérimental en
|
||||||
|
ScoDoc version 7,
|
||||||
|
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="/!\" />
|
||||||
|
|
||||||
## 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 qu'avec une simple moyenne des notes pondérée par les
|
||||||
@ -32,19 +39,19 @@ 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_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_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_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)
|
||||||
@ -62,7 +69,7 @@ Ainsi, la moyenne du module `BD1` serait aussi accessible comme la variable `not
|
|||||||
|
|
||||||
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:
|
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:
|
||||||
```
|
```
|
||||||
ifelse(moy_valid, min(moy_val+notes['SPORT'], 20), moy)
|
ifelse(moy_is_valid, min(moy_val+notes['SPORT'], 20), moy)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -115,9 +115,8 @@ pour un semestre de formation.
|
|||||||
Il s'agit d'un document PDF en format paysage, à imprimer sur
|
Il s'agit d'un document PDF en format paysage, à imprimer sur
|
||||||
papier ordinaire A4.
|
papier ordinaire A4.
|
||||||
|
|
||||||
Les logos (IUT en haut, université en pied de page) ne sont actuellement pas
|
Les logos (IUT en haut, université en pied de page) sont
|
||||||
paramétrables par l'utilisateur (il faut installer les images dans le sous-répertoire
|
paramétrables par l'utilisateur: voir [configuration des logos](GestionLogos.md).
|
||||||
`logos` du logiciel).
|
|
||||||
|
|
||||||
|
|
||||||
### Lettres d'avis individuelles
|
### Lettres d'avis individuelles
|
||||||
|
53
docs/GestionLogos.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
|
||||||
|
# Gestions des logos et fonds de documents
|
||||||
|
|
||||||
|
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 bulletins de notes, c'est configurable (et on peut utiliser d'autres
|
||||||
|
logos), voir [ParametrageBulletins](ParametrageBulletins.md)
|
||||||
|
* 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
|
||||||
|
de jury (en format portrait). Voir [paramétrage des PV](ParametragePV.md).
|
||||||
|
|
||||||
|
Ces images peuvent être chargées ou modifiées par l'administrateur via le menu
|
||||||
|
"*configuration*" sur la page d'accueil de ScoDoc.
|
||||||
|
|
||||||
|
|
||||||
|
## Informations techniques pour les développeurs et administrateurs curieux.
|
||||||
|
|
||||||
|
Normalement, l'administrateur n'a pas besoin d'intervenir dans les répertoires
|
||||||
|
mentionnés ci-dessous (sauf pour veiller à ce que `/opt/scodoc-data` soit bien
|
||||||
|
sauvegardé ou transféré lors des migrations).
|
||||||
|
|
||||||
|
La totalité des opérations nécessaires à l'utilisation de ScoDoc peuvent être
|
||||||
|
réalisées par le menu de configuration des logos.
|
||||||
|
|
||||||
|
### Fichiers et répertoires associés aux logos
|
||||||
|
|
||||||
|
Les images (logos et fonds de document) sont enregistrées dans le répertoire `/opt/scodoc-data/config/logos` et ses sous-répertoires.
|
||||||
|
|
||||||
|
Les images ajoutées par les utilisateurs ont toutes un nom de la forme `logo_<nom>.png` ou `logo_<nom>.jpg`
|
||||||
|
(`<nom>` représente le nom d'usage du logo : *header*, *footer*, signature, ... au choix de l'utilisateur)
|
||||||
|
Les sous-répertoires ont des noms de la forme `logos_<dept>` où `<dept>` est
|
||||||
|
l'identifiant numérique du département
|
||||||
|
(la commande `flask list-depts` donne la 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`) :
|
||||||
|
|
||||||
|
| Document | nom | fichier |
|
||||||
|
|----------------------------------|-------------------------|--------------------------------|
|
||||||
|
| PV de jury | pvjury_background | `logo_pvjury_background.<ext>` |
|
||||||
|
| bulletin de note | letter_background | `logo_letter_background.<ext>` |
|
||||||
|
| lettre individuelle de décision | letter_background | `logo_letter_background.<ext>` |
|
||||||
|
|
||||||
|
### Note: héritage scodoc7
|
||||||
|
|
||||||
|
Les serveurs ScoDoc 7 utilisaient pour les fonds de page, des fichiers de nom
|
||||||
|
`letter_background.<ext>` et `pvjury_background.<ext>`. Lors de la migration
|
||||||
|
depuis ScoDoc 7, ces fichiers ont placés dans le même répertoire que les images
|
||||||
|
scodoc9. Pour assurer la compatibilité ascendante, leur présence est
|
||||||
|
exceptionnellement prise en compte. Bien évidemment, si un fichier scodoc9 (donc
|
||||||
|
avec le préfixe `logo_`) est présent, il est prioritaire sur le fond de page
|
||||||
|
"historique".
|
||||||
|
|
@ -1,6 +1,8 @@
|
|||||||
|
|
||||||
# Guide ScoDoc pour le chef de département
|
# Guide ScoDoc pour le ou la responsable de formation
|
||||||
Dans cette partie, nous allons apprendre à:
|
|
||||||
|
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é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)
|
||||||
|
|
||||||
|
@ -1,42 +1,38 @@
|
|||||||
# Guide pour les administrateurs système de ScoDoc
|
# Guide pour les administrateurs système de ScoDoc
|
||||||
|
|
||||||
ScoDoc est prévu pour fonctionner sur un serveur **Linux Debian 10 (Buster) ou 9 (Stretch)**.
|
ScoDoc 9 est prévu pour fonctionner sur un serveur **Linux Debian 11 (Bullseye)**.
|
||||||
L'installation sur tout autre système est peut-être possible avec (beaucoup de) travail et n'est **pas supportée**.
|
L'installation sur tout autre système n'est **pas supportée**.
|
||||||
Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de machine Debian dédiée.
|
Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de machine Debian dédiée.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
* Installation de ScoDoc: [GuideInstallDebianDix](GuideInstallDebianDix.md) (ou [GuideInstallDebianNeuf](GuideInstallDebianNeuf.md))
|
* Installation de ScoDoc: [GuideInstallDebian11](GuideInstallDebian11.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)
|
||||||
|
|
||||||
### Pour les anciennes installations
|
|
||||||
ScoDoc 7 est une version adaptée aux systèmes Debian 9 ou 10 (il est possible que les version plus anciennes de Linux Debian fonctionnent encore, mais une mise à jour est fortement recommandée).
|
|
||||||
|
|
||||||
Linux Debian 10 est la version recommandée en production.
|
|
||||||
|
|
||||||
* Migration installations Debian anciennes vers Debian 10: [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)
|
|
||||||
|
|
||||||
|
|
||||||
## Configuration et préférences
|
## Configuration et préférences
|
||||||
|
|
||||||
|
* [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)
|
||||||
* [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](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications
|
* [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications
|
||||||
* [ServicesXml](ServicesXml.md) : web services XML pour interfaçage avec d'autres applications (obsolète).
|
* [ServicesXml](ServicesXml.md) : web services XML pour interfaçage avec d'autres applications (obsolète).
|
||||||
* [AdminUsers](AdminUsers.md) : gestion des utilisateurs
|
* [AdminUsers](AdminUsers.md) : gestion des utilisateurs
|
||||||
* [InterrogationPortail](InterrogationPortail.md) : liaison avec portail
|
* [InterrogationPortail](InterrogationPortail.md) : liaison avec portail
|
||||||
|
@ -1,50 +1,344 @@
|
|||||||
|
|
||||||
# Prise en main et paramétrage de ScoDoc
|
## Prise en main et paramétrage de ScoDoc 9
|
||||||
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans [GuideInstallDebianDix](GuideInstallDebianDix.md).
|
|
||||||
|
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans
|
||||||
|
[GuideInstallDebian11](GuideInstallDebian11.md).
|
||||||
|
|
||||||
|
|
||||||
|
## Administration en ligne de commande
|
||||||
|
|
||||||
|
Les opérations d'administration se résument à la création de départements, 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,
|
||||||
|
import d'étudiants, etc) se fait à partir du logiciel (web).
|
||||||
|
|
||||||
|
L'administration se fait dans un terminal connecté au serveur (en général via
|
||||||
|
ssh), en tant qu'utilisateur `scodoc` (*et non* `root`).
|
||||||
|
|
||||||
|
Se connecter et initialiser la session ainsi:
|
||||||
|
|
||||||
|
ssh votre.serveur # si nécessaire
|
||||||
|
su scodoc # idem,
|
||||||
|
# ou tout autre moyen d'ouvrir un shell comme scodoc
|
||||||
|
|
||||||
|
cd /opt/scodoc
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
Après quoi, vous pouvez utiliser les commandes décrites ci-dessous. *Attention:
|
||||||
|
le lancement de chaque commande peut être assez long (quelques secondes) car
|
||||||
|
toute l'application scodoc est initialisée à chaque fois.*
|
||||||
|
|
||||||
|
### Création d'un département
|
||||||
|
|
||||||
|
flask create-dept DEPT
|
||||||
|
|
||||||
|
où `DEPT` est l'acronyme du département, par exemple "RT". Ce département
|
||||||
|
apparait immédiatement sur la page d'accueil.
|
||||||
|
|
||||||
|
### Suppression d'un département
|
||||||
|
|
||||||
|
Opération très rarement nécessaire, proposée pour corriger une erreur
|
||||||
|
immédiatement après la création.
|
||||||
|
|
||||||
|
flask delete-dept DEPT
|
||||||
|
|
||||||
|
### Création d'un utilisateur
|
||||||
|
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:
|
||||||
|
|
||||||
|
flask user-create LOGIN ROLE DEPT
|
||||||
|
|
||||||
|
où `LOGIN` sera le pseudo de l'utilisateur (utilisé pour se connecter),
|
||||||
|
et `ROLE` le rôle (`Ens`, `Secr`, `Admin`) dans le département `DEPT`.
|
||||||
|
|
||||||
|
### Création d'un super-administrateur
|
||||||
|
|
||||||
|
Il s'agit d'un utilisateur ayant tous les droits, comme s'il était
|
||||||
|
`Admin` dans tous les départements.
|
||||||
|
|
||||||
|
flask user-create admin2 SuperAdmin @all
|
||||||
|
|
||||||
|
où `admin2` est ici le pseudo du nouvel admin.
|
||||||
|
|
||||||
|
### Changement du mot de passe d'un utilisateur
|
||||||
|
Cette opération peut s'effectuer via la page de gestion web des
|
||||||
|
utilisateurs, mais il est parfois commode de le faire depuis la
|
||||||
|
console:
|
||||||
|
|
||||||
|
flask user-password LOGIN
|
||||||
|
|
||||||
|
où `LOGIN` est le pseudo de l'utilisateur. Le mot de passe est demandé
|
||||||
|
sur la ligne de commande.
|
||||||
|
|
||||||
|
### Création d'un nouveau rôle
|
||||||
|
|
||||||
|
flask create-role role_name [permissions...]
|
||||||
|
|
||||||
|
Exemple: création d'une rôle "Observateur" ayant juste la permission de "voir":
|
||||||
|
|
||||||
|
flask create-role Observateur ScoView
|
||||||
|
|
||||||
|
### Liste des rôles
|
||||||
|
|
||||||
|
flask list-roles
|
||||||
|
|
||||||
|
### Édition d'un rôle (ajout/retrait permissions)
|
||||||
|
|
||||||
|
flask edit-role [-a permission] [-r permission] role_name
|
||||||
|
|
||||||
|
Ajoute ou retire une permission.
|
||||||
|
|
||||||
|
### Ajout/retrait d'un rôle à un utilisateur
|
||||||
|
|
||||||
|
flask user-role username [-d departement] [-a RoleAAjouter] [-r RoleARetirer]
|
||||||
|
|
||||||
|
Exemples:
|
||||||
|
|
||||||
|
flask user-role dupont
|
||||||
|
|
||||||
|
affiche les rôles de l'utilisateur `dupont`.
|
||||||
|
|
||||||
|
flask user-role dupont -d MMI -a Observateur
|
||||||
|
|
||||||
|
donne le rôle `Observateur` (qui doit déjà exister) à l'utilisateur `dupont` dans
|
||||||
|
le département `MMI`.
|
||||||
|
|
||||||
|
Si le département n'est pas spécifié, le rôle est donné dans *tous* les
|
||||||
|
départements (utile pour certains compte administrateurs ou utilisés en lecture
|
||||||
|
par des clients de l'API).
|
||||||
|
|
||||||
|
### Migration des données de ScoDoc 7
|
||||||
|
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
|
||||||
|
mais prend du temps.
|
||||||
|
|
||||||
|
Se reporter à [MigrationScoDoc7a9](MigrationScoDoc7a9.md)
|
||||||
|
|
||||||
|
Ces commandes sont utilisées par le script de migration de ScoDoc 7 à ScoDoc 9.
|
||||||
|
*Ne pas utiliser sauf si vous savez vraiment ce que vous faites.*
|
||||||
|
|
||||||
|
#### Comptes utilisateurs
|
||||||
|
|
||||||
|
Toujours migrer les comptes utilisateurs avant d'importer les
|
||||||
|
départements.
|
||||||
|
|
||||||
|
flask import-scodoc7-users
|
||||||
|
|
||||||
|
#### Départements
|
||||||
|
Pour migrer un seul département:
|
||||||
|
|
||||||
|
flask import-scodoc7-dept DEPT DBNAME
|
||||||
|
|
||||||
|
Exemple:
|
||||||
|
|
||||||
|
flask import-scodoc7-dept InfoComm DBINFOCOMM
|
||||||
|
|
||||||
|
### Liste des commandes Flask/ScoDoc
|
||||||
|
```
|
||||||
|
Usage: app [OPTIONS] COMMAND [ARGS]...
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help Show this message and exit.
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
clear-cache Clear ScoDoc cache This cache (currently...
|
||||||
|
create-dept Create new departement
|
||||||
|
create-role Create a new role
|
||||||
|
delete-dept Delete existing departement
|
||||||
|
delete-role Delete a role
|
||||||
|
dumphelp
|
||||||
|
list-roles List roles
|
||||||
|
edit-role Add [-a] and/or remove [-r] a permission...
|
||||||
|
import-scodoc7-dept Import département ScoDoc 7: dept:...
|
||||||
|
import-scodoc7-users Import users defined in ScoDoc7...
|
||||||
|
list-depts If dept exists, print it, else nothing.
|
||||||
|
localize-logo Make local to a dept a global logo (both...
|
||||||
|
migrate-scodoc7-dept-archives Post-migration: renomme les archives en...
|
||||||
|
migrate-scodoc7-dept-logos Post-migration: renomme les logos en...
|
||||||
|
photos-import-files
|
||||||
|
profile Start the application under the profiler...
|
||||||
|
sco-db-init Initialize the database.
|
||||||
|
scodoc-database print the database connexion string
|
||||||
|
user-create Create a new user
|
||||||
|
user-db-clear Erase all users and roles from the...
|
||||||
|
user-delete Try to delete this user.
|
||||||
|
user-password Set (or change) user’s password
|
||||||
|
user-role Display roles, or add or remove a role to the given user...
|
||||||
|
|
||||||
|
Usage: app sco-db-init [OPTIONS]
|
||||||
|
|
||||||
|
Initialize the database. Starts from an existing database and create all the
|
||||||
|
necessary SQL tables and functions.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--erase / --no-erase
|
||||||
|
|
||||||
|
Usage: app user-db-clear [OPTIONS]
|
||||||
|
|
||||||
|
Erase all users and roles from the database !
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Procédure à suivre pour créer un département et son utilisateur administrateur
|
Usage: app user-create [OPTIONS] USERNAME ROLE DEPT
|
||||||
|
|
||||||
|
Create a new user
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-n, --nom TEXT
|
||||||
|
-p, --prenom TEXT
|
||||||
|
|
||||||
|
Usage: app user-delete [OPTIONS] USERNAME
|
||||||
|
|
||||||
|
Try to delete this user. Fails if it’s associated to some scodoc objects.
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app user-password [OPTIONS] USERNAME
|
||||||
|
|
||||||
|
Set (or change) user’s password
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--password TEXT
|
||||||
|
|
||||||
|
Usage: app create-role [OPTIONS] ROLENAME [PERMISSIONS]...
|
||||||
|
|
||||||
|
Create a new role
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app edit-role [OPTIONS] ROLENAME
|
||||||
|
|
||||||
|
Add [-a] and/or remove [-r] a permission to/from a role. In ScoDoc,
|
||||||
|
permissions are not associated to users but to roles. Each user has a set of
|
||||||
|
roles in each departement.
|
||||||
|
|
||||||
|
Example: `flask edit-role -a ScoEditApo Ens`
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-a, --add TEXT
|
||||||
|
-r, --remove TEXT
|
||||||
|
|
||||||
|
Usage: app delete-role [OPTIONS] ROLENAME
|
||||||
|
|
||||||
|
Delete a role
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help Show this message and exit.
|
||||||
|
|
||||||
|
Usage: app user-role [OPTIONS] USERNAME
|
||||||
|
|
||||||
|
Add or remove a role to the given user in the given dept
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-d, --dept TEXT
|
||||||
|
-a, --add TEXT
|
||||||
|
-r, --remove TEXT
|
||||||
|
--help Show this message and exit.
|
||||||
|
|
||||||
|
Usage: app delete-dept [OPTIONS] DEPT
|
||||||
|
|
||||||
|
Delete existing departement
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--yes
|
||||||
|
--help Show this message and exit.
|
||||||
|
|
||||||
|
Usage: app create-dept [OPTIONS] DEPT
|
||||||
|
|
||||||
|
Create new departement
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app list-depts [OPTIONS] [DEPTS]...
|
||||||
|
|
||||||
|
If dept exists, print it, else nothing. Called without arguments, list all
|
||||||
|
depts along with their ids.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app scodoc-database [OPTIONS]
|
||||||
|
|
||||||
|
print the database connexion string
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-n, --name show database name instead of connexion string (required for
|
||||||
|
dropdb/createdb commands)
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app import-scodoc7-users [OPTIONS]
|
||||||
|
|
||||||
|
Import users defined in ScoDoc7 postgresql database into ScoDoc 9 The old
|
||||||
|
database SCOUSERS must be alive and readable by the current user. This
|
||||||
|
script is typically run as unix user "scodoc". The original SCOUSERS
|
||||||
|
database is left unmodified.
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app import-scodoc7-dept [OPTIONS] DEPT DEPT_DB_NAME
|
||||||
|
|
||||||
|
Import département ScoDoc 7: dept: InfoComm, dept_db_name: SCOINFOCOMM
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app migrate-scodoc7-dept-archives [OPTIONS] [DEPT]
|
||||||
|
|
||||||
|
Post-migration: renomme les archives en fonction des id de ScoDoc 9
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app migrate-scodoc7-dept-logos [OPTIONS] [DEPT]
|
||||||
|
|
||||||
|
Post-migration: renomme les logos en fonction des id / dept de ScoDoc 9
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app localize-logo [OPTIONS] LOGO DEPT
|
||||||
|
|
||||||
|
Make local to a dept a global logo (both logo and dept names are mandatory)
|
||||||
|
|
||||||
|
|
||||||
|
Usage: app photos-import-files [OPTIONS] FORMSEMESTRE_ID XLSFILE ZIPFILE
|
||||||
|
|
||||||
|
Import des photos d’étudiants à partir d’une liste excel et d’un zip avec les images.
|
||||||
|
|
||||||
|
Usage: app clear-cache [OPTIONS]
|
||||||
|
|
||||||
|
Clear ScoDoc cache This cache (currently Redis) is persistent between
|
||||||
|
invocation and it may be necessary to clear it during upgrades, development
|
||||||
|
or tests.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--sanitize / --no-sanitize
|
||||||
|
|
||||||
|
Usage: app dumphelp [OPTIONS]
|
||||||
|
|
||||||
|
Génère la page d’aide complète pour la doc.
|
||||||
|
|
||||||
|
Usage: app profile [OPTIONS]
|
||||||
|
|
||||||
|
Start the application under the code profiler.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --host TEXT The interface to bind to.
|
||||||
|
-p, --port INTEGER The port to bind to.
|
||||||
|
--length INTEGER Number of functions to include in the profiler report.
|
||||||
|
--profile-dir TEXT Directory where profiler data files are saved.
|
||||||
|
--help Show this message and exit.
|
||||||
|
```
|
||||||
|
|
||||||
|
(*la liste ci-dessus est générée à l'aide de la commande* `flask dumphelp`).
|
||||||
|
|
||||||
|
### Changement des logos apparaissant sur les documents
|
||||||
|
|
||||||
|
*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
|
||||||
|
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
|
||||||
|
**Configuration** sur la page d'accueil, en tant que super-admin),
|
||||||
|
[voir la FAQ](/FAQ/#comment-changer-les-logos-sur-les-documents-pdf-pv).
|
||||||
|
|
||||||
|
## 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 (il est possible que votre navigateur vous demande d'accepter un certificat).
|
Vous allez voir la page d'accueil de ScoDoc, vous permettant de choisir le département
|
||||||
|
où travailler.
|
||||||
Il n'y a pas de "département défini": c'est normal, lors de l'installation nous avons créé des bases de données, mais pas les interfaces web.
|
|
||||||
|
|
||||||
* Suivez le lien *Identifiez vous comme administrateur*. L'utilisateur *admin* est administrateur et a tous les droits sur !ScoDoc. C'est le seul à pouvoir créer un nouveau département.
|
|
||||||
|
|
||||||
Le logiciel va vous demander de changer immédiatement le mot de passe administrateur.
|
|
||||||
Entrez l'identifiant et le mot de passe définis pendant l'installation.
|
|
||||||
|
|
||||||
Après vous être identifié sur la page d'accueil ScoDoc, vous avez maintenant un lien 'Administration de ScoDoc' qui
|
|
||||||
vous permet d'ajouter un département, puis des utilisateurs.
|
|
||||||
|
|
||||||
* Ajouter un département (donnez le nom du département créé pendant l'installation)
|
|
||||||
|
|
||||||
* Ajouter un administrateur pour votre département: lien "Utilisateurs" (marge de gauche), puis suivre "ajouter un utilisateur". Donner à ce nouvel utilisateur les rôles `Admin`, `Ens` et `Secr` afin qu'il puisse effectuer toutes les opérations.
|
|
||||||
|
|
||||||
Quittez votre navigateur et reconnectez vous à ScoDoc avec votre nouvel utilisateur.
|
|
||||||
|
|
||||||
Vous pouvez si nécessaire créer plusieurs administrateurs par département (il est préférable que chaque compte ne soit utilisé que par une seule personne, pour éviter de divulguer les mots de passe et mieux suivre les opérations).
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Surtout, évitez de travailler comme "admin": cet utilisateur doit être réservé à la création de départements. Prenez le temps de créer un utilisateur "chef de département !".
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Changement des logos apparaissant sur les documents
|
|
||||||
Les documents PDF (PV de jurys...) incluent les logos de l'établissement. Par défaut, ceux de l'IUT de Villetaneuse et de l'Université Paris 13 sont distribués (ce n'est pas bien, ils ne sont sans doute pas sous licence libre !). Pour les changer, placer vos logos (fichiers images JPEG ou PNG) dans le répertoire
|
|
||||||
```
|
|
||||||
/opt/scodoc/var/scodoc/config/logos
|
|
||||||
```
|
|
||||||
avec les noms `logo_header.jpg` (habituellement le logo de votre composante, mais faites comme vous voulez) et `logo_footer.jpg` (habituellement le logo de votre Université ou école).
|
|
||||||
|
|
||||||
Ensuite, éditez le fichier
|
|
||||||
```
|
|
||||||
/opt/scodoc/Products/ScoDoc/config/scodoc_config.py
|
|
||||||
```
|
|
||||||
et changer les valeurs des variables `CONFIG.LOGO_FOOTER_ASPECT` et suivantes (ce n'est pas pratique, il faudrait modifier le code ScoDoc pour calculer ces valeurs à partir des fichiers images).
|
|
||||||
|
|
||||||
|
|
||||||
Enfin, redémarrez ScoDoc (`/etc/init.d/scodoc start`).
|
|
||||||
|
|
||||||
|
<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.
|
||||||
|
@ -5,29 +5,32 @@ Informations pour les développeurs souhaitant étendre ou modifier ScoDoc.
|
|||||||
|
|
||||||
## Informations générales
|
## Informations générales
|
||||||
|
|
||||||
* S'abonner aux [listes de diffusion](ListesDeDiffusion.md)
|
* S'abonner aux [listes de diffusion](ListesDeDiffusion.md). Il y a aussi
|
||||||
|
un serveur Discord ouvert sur invitation aux développeur actifs. Contacter Emmanuel.
|
||||||
* [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md)
|
* [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md)
|
||||||
* [Créer de nouveaux types de "parcours"](ApiCreationParcours.md)
|
* [Créer de nouveaux types de "parcours"](ApiCreationParcours.md)
|
||||||
* [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications
|
* [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications
|
||||||
* Notes diverses
|
* Notes diverses
|
||||||
* [Discussions pour la future gestion des absences](IdeesGestionAbsences.md)
|
* [Discussions pour la future gestion des absences](IdeesGestionAbsences.md)
|
||||||
* [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md)
|
* [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md)
|
||||||
|
|
||||||
|
|
||||||
## Développer sur ScoDoc 7 et 8
|
## Développer sur ScoDoc
|
||||||
|
|
||||||
Quelques conseils, indications et mémos pour les développeurs sur ScoDoc version 7.x et 8.
|
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 mouvants 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 peu cohérent.
|
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).
|
||||||
|
|
||||||
Le code doit être formatté avec [`black`](https://black.readthedocs.io/) avant tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement).
|
Le code DOIT être formatté avec [`black`](https://black.readthedocs.io/) avant
|
||||||
|
tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement).
|
||||||
|
|
||||||
#### Documentation
|
#### Documentation
|
||||||
On adoptera 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:
|
||||||
"""Description résumée de la fonction
|
"""Description résumée de la fonction
|
||||||
@ -53,14 +56,18 @@ Exemple:
|
|||||||
|
|
||||||
### Git
|
### Git
|
||||||
|
|
||||||
Le dépot est <https://scodoc.org/git/viennet/ScoDoc>
|
Le dépôt est <https://scodoc.org/git/viennet/ScoDoc>
|
||||||
|
|
||||||
La branche `master` est celle en production. La branche `Scodoc8`est expérimentale (nouvel installeur, refactoring...). ScoDoc9 sera avec Python 3.
|
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.
|
Ci-dessous quelques pense-bête qui peuvent servir.
|
||||||
#### Hot fixes (internes)
|
#### Hot fixes (internes)
|
||||||
|
|
||||||
Pour les développeurs internes (écriture sur le dépot master), un exemple basique:
|
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
|
# Créer une branche
|
||||||
# si besoin (travail en cours), utiliser git stash avant
|
# si besoin (travail en cours), utiliser git stash avant
|
||||||
@ -77,11 +84,16 @@ Pour les développeurs internes (écriture sur le dépot master), un exemple bas
|
|||||||
|
|
||||||
# éventuellement: git stash pop
|
# é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
|
#### Mettre à jour votre branche
|
||||||
|
|
||||||
Vous travaillez dans votre branche `ma_branche`. Pour lui appliquer les mises à jour de `master` (remote):
|
Quand vous travaillez dans votre branche `ma_branche`, pour lui appliquer les
|
||||||
|
mises à jour de `master` (remote), faire:
|
||||||
|
```bash
|
||||||
git pull origin master
|
git pull origin master
|
||||||
|
```
|
||||||
|
|
||||||
#### Commandes utiles, en vrac
|
#### Commandes utiles, en vrac
|
||||||
|
|
||||||
@ -91,34 +103,334 @@ Vous travaillez dans votre branche `ma_branche`. Pour lui appliquer les mises à
|
|||||||
#### Refactoring
|
#### Refactoring
|
||||||
|
|
||||||
Lint tous les fichiers modifiés:
|
Lint tous les fichiers modifiés:
|
||||||
|
```bash
|
||||||
git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E
|
git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E
|
||||||
|
```
|
||||||
Restore les modes au besoin (SAMBA les changent parfois):
|
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
|
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:
|
Affiche les variables non définies dans un fichier:
|
||||||
|
```bash
|
||||||
pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \'
|
pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \'
|
||||||
|
```
|
||||||
Prépare un sed pour renommer les variables non définies:
|
Prépare un sed pour renommer les variables non définies:
|
||||||
|
```bash
|
||||||
for f in *.py
|
for f in *.py
|
||||||
do
|
do
|
||||||
pylint --disable=all -e E "$f" | grep undefined-variable | awk '{print "sed -i .bak s/"$4"/scu."$4"/ '$f'";}' | sort | uniq | tr -d \'
|
pylint --disable=all -e E "$f" | grep undefined-variable | awk '{print "sed -i .bak s/"$4"/scu."$4"/ '$f'";}' | sort | uniq | tr -d \'
|
||||||
done
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
Note pour travailler sur VirtualBox:
|
||||||
|
|
||||||
### Portail pour tests
|
addgroup scodoc vboxsf
|
||||||
TODO (voir `scotests/fakeportal/`).
|
|
||||||
|
### 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
|
||||||
|
|
||||||
|
Voir [TestsScoDoc](TestsScoDoc.md)
|
||||||
|
|
||||||
|
## Cache Redis
|
||||||
|
|
||||||
|
Certains objets couteux à calculer sont cachés. Depuis ScoDoc 9, on utilise
|
||||||
|
Redis, via `flask-caching`.
|
||||||
|
|
||||||
|
Au besoin, mémo:
|
||||||
|
|
||||||
|
- client ligne de commande: `https://redis.io/topics/rediscli`
|
||||||
|
|
||||||
|
- afficher les clés: `redis-cli KEYS '*'`
|
||||||
|
|
||||||
|
- `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_),
|
||||||
|
affiche toutes les 3 secondes.
|
||||||
|
|
||||||
|
- `flask clear-cache` efface le cache Redis.
|
||||||
|
|
||||||
|
## Re-création du virtualenv
|
||||||
|
|
||||||
|
ScoDoc est livré avec un "virtualenv", qui contient tous les modules python
|
||||||
|
nécessaires. Il se trouve sous `/opt:scodoc/venv`.
|
||||||
|
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:
|
||||||
|
```bash
|
||||||
|
# en tant qu'utilisateur scodoc
|
||||||
|
cd /opt/scodoc
|
||||||
|
/bin/rm -rf venv # ou mv ...
|
||||||
|
python3 -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
pip install wheel
|
||||||
|
```
|
||||||
|
Puis soit vous installez les versions "officielles" (testées)
|
||||||
|
```
|
||||||
|
pip install -r requirements-3.9.txt
|
||||||
|
```
|
||||||
|
Soit vous prenez les version les plus à jour disponibles. Une façon rapide de
|
||||||
|
faire ceci est:
|
||||||
|
```bash
|
||||||
|
cut -d= -f 1 requirements-3.9.txt | xargs pip install
|
||||||
|
```
|
||||||
|
à adapter selon vos objectifs.
|
||||||
|
Pour régénérer le fichier indiquant la liste des paquets:
|
||||||
|
```bash
|
||||||
|
pip freeze > requirements-3.9.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
Sujets **prioritaires** en 2021:
|
Sujets **prioritaires** en 2021:
|
||||||
|
|
||||||
- modernisation du code: Flask, Python 3.
|
- 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'arêté Licence Pro 2020.
|
- 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.
|
||||||
|
|
||||||
- Redéfinition API et interface mobile simplifiée.
|
- Redéfinition API et interface mobile simplifiée.
|
||||||
|
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> '''Attention: document obsolète pour une version ancienne de Debian. Voir [GuideInstallDebianDix](GuideInstallDebianDix.md) pour l'installation normale de !ScoDoc !
|
|
||||||
|
|
||||||
|
|
285
docs/GuideInstallDebian11.md
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
|
||||||
|
# Installation de ScoDoc 9 sur Debian 11 (Bullseye)
|
||||||
|
Ce document décrit la procédure d'installation et de configuration de ScoDoc 9.
|
||||||
|
Cette procédure doit être effectué sur la machine serveur avec un accès
|
||||||
|
administrateur (root).
|
||||||
|
|
||||||
|
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) 11 (Bullseye, stable) s'exécutant sur une
|
||||||
|
machine intel-like **64bits** (architecture **AMD64**). 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.
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
Merci de signaler tout problème (emmanuel.viennet@gmail.com
|
||||||
|
ou [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel) ).
|
||||||
|
|
||||||
|
|
||||||
|
- 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),
|
||||||
|
choisir la version "petits CD" pour **amd64** (*Il est indispensable
|
||||||
|
d'utiliser une version 64 bits ! *)
|
||||||
|
|
||||||
|
- 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
|
||||||
|
sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme
|
||||||
|
VirtualBox ou VMWare). L'installation ci-dessous 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 20Go 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'install 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 Subversion).
|
||||||
|
1. Vérifiez la connectivité, par exemple:
|
||||||
|
```
|
||||||
|
ping www.univ-paris13.fr
|
||||||
|
(quitter avec ctrl-c)
|
||||||
|
cd /tmp
|
||||||
|
wget --no-check-certificate https://www-lipn.univ-paris13.fr/projects/scodoc
|
||||||
|
# doit créer un fichier nomme "scodoc" 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`.
|
||||||
|
|
||||||
|
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 mise à 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.
|
||||||
|
|
||||||
|
Ensuite, dans ScoDoc, indiquer votre proxy: pour cela, éditer le fichier
|
||||||
|
```/opt/scodoc/.env```
|
||||||
|
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
|
||||||
|
```
|
||||||
|
HTTP_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).
|
||||||
|
|
||||||
|
Après modification de ce fichier (qui _doit_ être lisible par l'utilisateur `scodoc`),
|
||||||
|
redémarrer le service:
|
||||||
|
```
|
||||||
|
sudo systemctl restart scodoc
|
||||||
|
```
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
apt-get install redis
|
||||||
|
|
||||||
|
Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichier
|
||||||
|
`redis.conf` avec les lignes suivantes :
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
PrivateTmp=no
|
||||||
|
ProtectSystem=false
|
||||||
|
PrivateDevices=false
|
||||||
|
ProtectHome=no
|
||||||
|
ProtectControlGroups=no
|
||||||
|
ProtectKernelTunables=no
|
||||||
|
ProtectKernelModules=no
|
||||||
|
ReadWritePaths=
|
||||||
|
ReadOnlyDirectories=
|
||||||
|
|
||||||
|
Ensuite
|
||||||
|
|
||||||
|
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 :
|
||||||
|
|
||||||
|
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 :
|
||||||
|
|
||||||
|
features: nesting=1
|
||||||
|
|
||||||
|
... et poursuivez l'installation comme ci-dessous.
|
||||||
|
|
||||||
|
## 2) Installation de ScoDoc sur Debian
|
||||||
|
|
||||||
|
### 2.1) Charger le logiciel
|
||||||
|
|
||||||
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
||||||
|
alt="/!\" /> 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 le créer contenant juste cette ligne:
|
||||||
|
|
||||||
|
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
|
||||||
|
deb http://scodoc.org/repo bullseye main
|
||||||
|
|
||||||
|
- Installer la clé: en `root` sur le serveur, lancer
|
||||||
|
|
||||||
|
apt-get -y install gnupg
|
||||||
|
wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
|
||||||
|
|
||||||
|
- Installer le logiciel:
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
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`:
|
||||||
|
|
||||||
|
passwd scodoc
|
||||||
|
|
||||||
|
|
||||||
|
### 2.2) Configuration des logiciels et des données
|
||||||
|
|
||||||
|
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
|
||||||
|
|
||||||
|
/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**:
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Après installation, vous pouvez migrer toutes vos données (comptes utilisateurs,
|
||||||
|
étudiants, formations, notes, photos et fichiers divers) depuis une
|
||||||
|
installation ScoDoc 7, ou même en place.
|
||||||
|
|
||||||
|
Voir [la procédure de migration](MigrationScoDoc7a9.md).
|
||||||
|
|
||||||
|
## En cas de problème
|
||||||
|
Ne pas hésiter à me contacter ou à écrire sur la liste notes (voir [Listes de
|
||||||
|
diffusion](ListesDeDiffusion.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)
|
||||||
|
|
||||||
|
* Abonnez-vous au moins à la liste d'annonces: voir [Listes de diffusion](ListesDeDiffusion.md)
|
120
docs/GuideInstallDebian11Advanced.md
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
# Configuration manuelle de ScoDoc sur Debian 11 (Bullseye)
|
||||||
|
|
||||||
|
Instructions pour utilisateurs ne souhaitant pas utiliser le script
|
||||||
|
|
||||||
|
/opt/scodoc/tools/configure-scodoc9.sh
|
||||||
|
|
||||||
|
Toutes les opérations décrites sur cette page sont effectuées par ce script.
|
||||||
|
Cette page est donc destinée aux curieux et futurs développeurs. Se référer au
|
||||||
|
script lui même pour les détails.
|
||||||
|
|
||||||
|
## Activation du firewall
|
||||||
|
|
||||||
|
(optionnel, recommandé)
|
||||||
|
|
||||||
|
ufw default deny incoming
|
||||||
|
ufw default allow outgoing
|
||||||
|
ufw allow ssh
|
||||||
|
ufw allow http
|
||||||
|
ufw allow https
|
||||||
|
yes | ufw enable
|
||||||
|
|
||||||
|
## Certificats pour nginx
|
||||||
|
|
||||||
|
ScoDoc utilise le serveur Web nginx. Installer les certificats SSL
|
||||||
|
nécessaires pour https. C'est indispensable sur un serveur en production.
|
||||||
|
Sur un serveur de test, pour faire des essais, vous pouvez utiliser des
|
||||||
|
certificats auto-signés. Procéder ainsi:
|
||||||
|
|
||||||
|
su scodoc # utilisateur scodoc
|
||||||
|
cd /opt/scodoc-data
|
||||||
|
mkdir -p certs && openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -keyout certs/key.pem -out certs/cert.pem
|
||||||
|
|
||||||
|
Répondre aux questions, la seule importante étant `Common Name (e.g. server
|
||||||
|
FQDN or YOUR name)` en réponse à laquelle vous devez fournir le nom que vous
|
||||||
|
utiliserez pour vous adresser au serveur: par exemple
|
||||||
|
`monscodoc.mondomaine.fr`. Ce nom dépend de votre configuration réseau.
|
||||||
|
|
||||||
|
|
||||||
|
Sinon, éditer le fichier `/etc/nginx/sites-available/scodoc9.nginx` pour
|
||||||
|
indiquer vos certificats.
|
||||||
|
|
||||||
|
## Démarrage de nginx et redis
|
||||||
|
|
||||||
|
su # se connecter en root d'une manière ou d'une autre
|
||||||
|
systemctl restart nginx
|
||||||
|
systemctl start redis
|
||||||
|
|
||||||
|
Il est utile de vérifier que le serveur Web a bien démarré, avec
|
||||||
|
|
||||||
|
systemctl status nginx
|
||||||
|
|
||||||
|
## Création des bases de données
|
||||||
|
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`
|
||||||
|
en mode développement, ou `SCODOC_TEST`pour les tests unitaires).
|
||||||
|
Cette base est créée via `sqlalchemy` (l'ORM habituel de Flask).
|
||||||
|
|
||||||
|
Pour créer la base de données, lancer le script:
|
||||||
|
|
||||||
|
su scodoc # au besoin (pas root !)
|
||||||
|
cd /opt/scodoc
|
||||||
|
./tools/create_database.sh SCODOC
|
||||||
|
./tools/create_database.sh SCODOC_DEV # pour la base "developement"
|
||||||
|
./tools/create_database.sh SCODOC_TEST # pour les tests unitaires
|
||||||
|
|
||||||
|
|
||||||
|
Les bases créées appartiennent à l'utilisateur (rôle) postgres `scodoc`
|
||||||
|
(qui a été créé par le script d'installation précédent).
|
||||||
|
|
||||||
|
## Variables d'environnement
|
||||||
|
Le serveur utilise des variables d'environnement donnant la
|
||||||
|
configuration de base.
|
||||||
|
Le plus simple est de les grouper dans un fichier `.env` (dans
|
||||||
|
`/opt/scodoc-data/.env`)
|
||||||
|
qui sera lu automatiquement au démarrage:
|
||||||
|
|
||||||
|
# .env for ScoDoc (production)
|
||||||
|
|
||||||
|
FLASK_APP=scodoc.py
|
||||||
|
FLASK_ENV=production
|
||||||
|
|
||||||
|
MAIL_SERVER=votre.serveur.de.mail.net # ou vide si pas de mail
|
||||||
|
MAIL_PORT=25
|
||||||
|
|
||||||
|
SCODOC_ADMIN_MAIL="adresse.admin@toto.fr" # important: le mail de admin
|
||||||
|
SECRET_KEY="CGGAJAKlh6789JJK?KNAb=" # une chaine aléatoire à changer
|
||||||
|
|
||||||
|
Le fichier `/opt/scodoc/.env-exemple` est donné à titre... d'exemple. Vous pouvez faire:
|
||||||
|
|
||||||
|
# en tant qu'utilisateur scodoc
|
||||||
|
cp /opt/scodoc/.env-exemple /opt/scodoc-data/.env
|
||||||
|
nano /opt/scodoc-data/.env # édition
|
||||||
|
|
||||||
|
Il est nécessaire de modifier MAIL_SERVER, SCODOC_ADMIN_MAIL et SECRET_KEY.
|
||||||
|
Cette dernière variable doit contenir une chaîne aléatoire qui servira
|
||||||
|
de clé pour sécuriser les formulaires. Vous pouvez utiliser la commande suivante
|
||||||
|
pour afficher une chaine de ce genre (choisie au hasard), que vous copierez
|
||||||
|
dans votre fichier `.env`:
|
||||||
|
|
||||||
|
python3 -c "import uuid; print(uuid.uuid4().hex)"
|
||||||
|
|
||||||
|
Note: le fichier utilisé par Flask est bien sûr `/opt/scodoc/.env`,
|
||||||
|
mais l'installeur créé un lien symbolique vers `/opt/scodoc-data/.env` afin
|
||||||
|
de conserver ce fichier durant les mise à jour par `apt-get upgrade`.
|
||||||
|
|
||||||
|
## Initialisation de la base et de l'utilisateur admin
|
||||||
|
|
||||||
|
En tant qu'utilisateur `scodoc`:
|
||||||
|
|
||||||
|
su scodoc # si besoin
|
||||||
|
cd /opt/scodoc
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
Puis initialisation de l'appli:
|
||||||
|
|
||||||
|
flask db-init
|
||||||
|
|
||||||
|
Et saisie du mot de passe `admin`:
|
||||||
|
|
||||||
|
flask user-password admin
|
@ -1,162 +0,0 @@
|
|||||||
|
|
||||||
# Installation de ScoDoc sur Debian 10 (Buster)
|
|
||||||
Ce document décrit la procédure d'installation et de configuration de ScoDoc.
|
|
||||||
Cette procédure doit être effectué sur la machine serveur avec un accès administrateur (root).
|
|
||||||
|
|
||||||
*Si vous avez déjà une installation ScoDoc version 7 (en Debian 7, 8 ou 9), voir aussi [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)*
|
|
||||||
|
|
||||||
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 sur un système [Debian](http://www.debian.org) 10 (Buster, stable) s'exécutant sur une machine intel-like **64bits** (architecture **AMD64**). Debian s'installe facilement en une quinzaine de minutes, sur une machine normale ou un serveur virtualisé. Il est **très déconseillé** de tenter l'installation sur une autre version, à moins de disposer de temps et de bonnes connaissances sur Linux et les paquetages Python.
|
|
||||||
|
|
||||||
Merci de me signaler tout problème (emmanuel.viennet@gmail.com)
|
|
||||||
|
|
||||||
|
|
||||||
- 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), choisir une version "petits CD" pour **amd64** (*Il est indispensable d'utiliser une version 64 bits ! *)
|
|
||||||
|
|
||||||
- Note 2: si quelqu'un produit, teste et documente une image Docker, merci de la partager (écrire à scodoc-devel).
|
|
||||||
|
|
||||||
|
|
||||||
<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 sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme VirtualBox ou VMWare. L'installation ci-dessous va en effet modifier de nombreux paramètres de votre système linux (serveur web, firewall, serveur SQL, messagerie, ...).
|
|
||||||
|
|
||||||
|
|
||||||
## Préalable: configurer un serveur linux
|
|
||||||
Le serveur devrait être accessible depuis Internet. Seul le port 443 (https) est utilisé par ScoDoc. Il est recommandé que le serveur puisse envoyer du mail (smtp).
|
|
||||||
|
|
||||||
Nous recommandons d'effectuer une installation standard de Debian par le réseau (netinst).
|
|
||||||
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.).
|
|
||||||
|
|
||||||
![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 Subversion).
|
|
||||||
1. Vérifiez la connectivité, par exemple:
|
|
||||||
```
|
|
||||||
ping www.univ-paris13.fr
|
|
||||||
(quitter avec ctrl-c)
|
|
||||||
cd /tmp
|
|
||||||
wget --no-check-certificate https://www-lipn.univ-paris13.fr/projects/scodoc
|
|
||||||
# doit créer un fichier nomme "scodoc" 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.
|
|
||||||
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 (`aptitude install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
|
|
||||||
1. Cette liste est très 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 serveur doit passer par un proxy pour accéder à Internet:
|
|
||||||
1. Configurer wget: placer ceci dans `/root/.bashrc` (par exemple)
|
|
||||||
```
|
|
||||||
export http_proxy=http://my-proxy-server.com:my-proxy-port/
|
|
||||||
export https_proxy=$http_proxy
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Configurer le client svn
|
|
||||||
dans `/root/.subversion/servers` dé-commenter et compléter les lignes:
|
|
||||||
```
|
|
||||||
[global]
|
|
||||||
http-proxy-host = my-proxy-server
|
|
||||||
http-proxy-port = my-proxy-port
|
|
||||||
```
|
|
||||||
(attention bien enlever l'espace du début de ligne).
|
|
||||||
|
|
||||||
|
|
||||||
## Installation de ScoDoc
|
|
||||||
1. Récupérer et ouvrir le logiciel (en tant que root):
|
|
||||||
```
|
|
||||||
sudo su # si necessaire pour passer root
|
|
||||||
cd /opt
|
|
||||||
wget http://www-l2ti.univ-paris13.fr/~viennet/ScoDoc/builds/scodoc-1851.tgz
|
|
||||||
tar xfz scodoc-1851.tgz
|
|
||||||
```
|
|
||||||
Cette archive contient ScoDoc, Zope et quelques outils tiers.
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> vous pouvez installer ailleurs que dans /opt, mais il faudra alors éditer plusieurs scripts (non recommandé).
|
|
||||||
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> 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**).
|
|
||||||
|
|
||||||
1. **Mettre à jour les sources**. Va télécharger les sources à jour, et le script d'installation:
|
|
||||||
```
|
|
||||||
cd /opt/scodoc/Products/ScoDoc
|
|
||||||
apt install subversion
|
|
||||||
svn up
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3. **Configurer le logiciel**. Attention: durant cette étape, de nombreux paquets et fichiers de configuration de votre système linux vont être modifiés. Si vous préférez effectuer vous même l'installation (vous êtes développeur ou avez des besoins particuliers), lisez et adaptez le script.
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> je répète, le script `install_debian10.sh` va reconfigurer beaucoup de choses sur votre serveur. Il suppose que la machine vient d'être installée et en gros qu'elle va servir principalement pour ScoDoc.
|
|
||||||
|
|
||||||
Toujours en tant qu'utilisateur root:
|
|
||||||
```
|
|
||||||
cd /opt/scodoc/Products/ScoDoc/config
|
|
||||||
./install_debian10.sh
|
|
||||||
```
|
|
||||||
Répondez oui (Y) à toutes les questions, sauf, si vous avez une bonne raison de faire autrement.
|
|
||||||
En cas d'échec, ce script peut être relancé (il écrasera l'ancienne configuration).
|
|
||||||
|
|
||||||
Dans cette étape, sont installés et configurés automatiquement:
|
|
||||||
|
|
||||||
* serveur web Apache (et https)
|
|
||||||
* parefeu réseau (optionnel, basé sur `ufw`)
|
|
||||||
* messagerie pour envois messages (postfix) (optionnel mais très vivement recommandé)
|
|
||||||
* installation de divers logiciels utilisés par ScoDoc (par apt-get)
|
|
||||||
* script de lancement automatique de ScoDoc (service systemd).
|
|
||||||
|
|
||||||
(dans certains cas, l'installateur vous posera des questions sur votre configuration).
|
|
||||||
|
|
||||||
|
|
||||||
4. **Initialiser la base de données utilisateurs** (qui sera commune à tous les départements).
|
|
||||||
En tant que root:
|
|
||||||
```
|
|
||||||
cd /opt/scodoc/Products/ScoDoc/config
|
|
||||||
./create_user_db.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
5. **Mettre à jour le logiciel** (c'est absolument nécessaire, la version préinstallée étant incomplète):
|
|
||||||
En tant que root,
|
|
||||||
```
|
|
||||||
cd /opt/scodoc/Products/ScoDoc/config
|
|
||||||
./upgrade.sh
|
|
||||||
```
|
|
||||||
La première fois, il faudra accepter un certificat cryptographique, répondre "p (accept (p)ermanently)".
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Si un message d'erreur apparaît à la fin de la mise à jour, relancer `./upgrade.sh`.
|
|
||||||
|
|
||||||
|
|
||||||
Si vous migrez les données d'une installation existante, vous pouvez arrêter ici et appliquer la procédure [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)
|
|
||||||
|
|
||||||
6. **Initialiser la base de données pour un département** (vous pourrez à tout moment utiliser la même commande pour ajouter d'autres départements):
|
|
||||||
```
|
|
||||||
./create_dept.sh -n DEPT
|
|
||||||
```
|
|
||||||
Il faut alors saisir le nom abrégé du département: ce nom doit être un mot, sans ponctuation (GEII, RT, Info, ...). Il apparaîtra dans l'URL du site correspondant.
|
|
||||||
|
|
||||||
7. **Lancer ScoDoc**:
|
|
||||||
```
|
|
||||||
systemctl restart scodoc
|
|
||||||
```
|
|
||||||
et voila !
|
|
||||||
|
|
||||||
Visiter `https://votre.site.fr/` pour achever la configuration et utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## En cas de problème
|
|
||||||
Ne pas hésiter à me contacter ou à écrire sur la liste notes (voir [Listes de diffusion](ListesDeDiffusion.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...
|
|
||||||
* Appliquez fréquemment les [mises à jour](MisesAJour.md)
|
|
||||||
|
|
||||||
* Mettez en place des [sauvegardes](SauvegardesBases.md)
|
|
||||||
|
|
||||||
* Abonnez vous au moins à la liste d'annonces: voir [Listes de diffusion](ListesDeDiffusion.md)
|
|
@ -1,8 +0,0 @@
|
|||||||
# Guide d'installation sur Debian 9
|
|
||||||
|
|
||||||
Version ancienne de Debian, nous recommandons d'utiliser la nouvelle version.
|
|
||||||
Voir [installation sur Debian 10](GuideInstallDebianDix.md).
|
|
||||||
|
|
||||||
Si besoin, se reporter à [l'ancienne documentation pour Debian 9](https://trac.lipn.univ-paris13.fr/projects/scodoc/wiki/GuideInstallDebianNeuf).
|
|
||||||
|
|
||||||
|
|
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,14 +45,18 @@ 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>
|
||||||
@ -65,7 +69,12 @@ 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>
|
||||||
|
@ -25,7 +25,7 @@ Le principe est donc:
|
|||||||
|
|
||||||
## Marche à suivre détaillée
|
## Marche à suivre détaillée
|
||||||
### Installation de Debian et ScoDoc
|
### Installation de Debian et ScoDoc
|
||||||
Voir les instructions ici: [GuideInstallDebianDix](GuideInstallDebianDix.md) (ou si votre système est encore en Debian 9: [GuideInstallDebianNeuf](GuideInstallDebianNeuf.md) : mais ce n'est pas conseillé)
|
Voir les instructions ici: [GuideInstallDebian11](GuideInstallDebian11.md).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
190
docs/MigrationScoDoc7a9.md
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
# Migration des données ScoDoc 7 vers ScoDoc 9
|
||||||
|
|
||||||
|
On peut installer à partir de zéro (cas 1), ou sur une machine ayant déjà un ScoDoc 7
|
||||||
|
et migrer les données (cas 2).
|
||||||
|
|
||||||
|
## Cas 1: Migration d'une installation ScoDoc 7 sur un nouveau serveur
|
||||||
|
|
||||||
|
C'est la voie recommandée, notamment si vous avez un parc de machines
|
||||||
|
virtuelles, car elle minimise la durée de coupure et permet de tester avant de
|
||||||
|
basculer d'une version à l'autre.
|
||||||
|
|
||||||
|
Dans ce cas, la migration va se faire en suivant les étapes, détaillées plus loin:
|
||||||
|
|
||||||
|
1. installer le nouveau serveur Linux Debian 11 et ScoDoc 9;
|
||||||
|
|
||||||
|
2. sauvegarder les données de ScoDoc7 depuis le serveur de production **et l'arrêter**;
|
||||||
|
|
||||||
|
3. charger les données ScoDoc 7 sur le nouveau serveur;
|
||||||
|
|
||||||
|
4. importer ces données dans ScoDoc 9.
|
||||||
|
|
||||||
|
Si vous venez d'installer ScoDoc 9, passez directement à l'**étape 3**.
|
||||||
|
|
||||||
|
### Étape 1: Installer le nouveau serveur
|
||||||
|
|
||||||
|
Installer le nouveau serveur avec Debian 11 et ScoDoc 9.
|
||||||
|
|
||||||
|
Voir [GuideInstallDebian11](GuideInstallDebian11.md).
|
||||||
|
|
||||||
|
Vérifier que tout fonctionne avant d'aller plus loin.
|
||||||
|
|
||||||
|
### Étape 2: Sauvegarder les données du serveur ScoDoc 7
|
||||||
|
|
||||||
|
Ouvrir un terminal en tant que `root`sur l'ancien serveur ScoDoc 7.
|
||||||
|
|
||||||
|
cd /opt/scodoc/Products/ScoDoc/config
|
||||||
|
# Mise à jour indispensable pour avoir le script de migration
|
||||||
|
./upgrade.sh
|
||||||
|
# Arrêt du service en production
|
||||||
|
systemctl stop scodoc
|
||||||
|
# Export des données
|
||||||
|
./save_scodoc7_data.sh /tmp/sauvegarde-scodoc7
|
||||||
|
|
||||||
|
Attention à l'espace disque: au besoin, faire le ménage ou montez un disque supplémentaire.
|
||||||
|
|
||||||
|
Notez que cette migration ne fonctionne qu'à partir de la dernière version de
|
||||||
|
ScoDoc 7. Si vous avez une version plus ancienne, mettez-la d'abord à jour.
|
||||||
|
|
||||||
|
Le script indique le nom du fichier à transférer, qui sera dans
|
||||||
|
l'exemple ci-dessus `/tmp/sauvegarde-scodoc7.tgz`
|
||||||
|
|
||||||
|
Copier ce fichier sur le nouveau serveur (scp, ...).
|
||||||
|
|
||||||
|
|
||||||
|
### Étape 3: Charger les données ScoDoc 7
|
||||||
|
|
||||||
|
Récupérez l'archive transférée sur le nouveau serveur et ouvrez-la (vous êtes
|
||||||
|
toujours `root`):
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
tar xfz sauvegarde-scodoc7.tgz
|
||||||
|
chown -R scodoc /tmp/sauvegarde-scodoc7
|
||||||
|
|
||||||
|
commande qui va créer `/tmp/sauvegarde-scodoc7`.
|
||||||
|
|
||||||
|
Chargement des bases SQL ScoDoc 7: en tant qu'utilisateur "`scodoc`":
|
||||||
|
|
||||||
|
su scodoc
|
||||||
|
/opt/scodoc/tools/restore_scodoc7_data.sh /tmp/sauvegarde-scodoc7
|
||||||
|
|
||||||
|
(adaptez l'argument si les données ont été copiées ailleurs)
|
||||||
|
|
||||||
|
Note: les messages d'erreur comme
|
||||||
|
|
||||||
|
pg_restore: warning: restoring tables WITH OIDS is not supported anymore
|
||||||
|
pg_restore: error: could not execute query: ERROR: schema "public" already exists
|
||||||
|
pg_restore: error: could not execute query: ERROR: must be owner of extension plpgsql
|
||||||
|
|
||||||
|
sont normaux et a priori anodins.
|
||||||
|
|
||||||
|
A ce stade, vous avez rechargé les bases ScoDoc 7 mais il faut encore
|
||||||
|
les convertir vers la nouvelle structure ScoDoc 9, et importer les photos,
|
||||||
|
archives et autres fichiers: c'est l'objet de l'étape suivante.
|
||||||
|
|
||||||
|
### Étape 4: Importer les données dans ScoDoc 9
|
||||||
|
|
||||||
|
Les formats des bases ayant changé l'opération est complexe et peut durer
|
||||||
|
plusieurs minutes (ou dizaines de minutes). Attention: **Il faut lancer le script en tant
|
||||||
|
que `root` **.
|
||||||
|
|
||||||
|
su # passer root d'une façon ou d'une autre
|
||||||
|
# lancer le script, avec le nom du répertoire:
|
||||||
|
/opt/scodoc/tools/migrate_from_scodoc7.sh /tmp/sauvegarde-scodoc7
|
||||||
|
|
||||||
|
## Cas 2: Migration "en place" sur la même machine
|
||||||
|
|
||||||
|
Si vous n'avez pas la possibilité de changer de serveur (par exemple, vous ne
|
||||||
|
travaillez pas dans des machines virtuelles, ou qu'il est compliqué de créer une
|
||||||
|
nouvelle VM). Vous pouvez partir de ScoDoc 7 / Debian 10, faire l'upgrade Debian
|
||||||
|
en place, puis migrer ScoDoc 9.
|
||||||
|
|
||||||
|
Avant tout, sauvegardez évidemment votre serveur complet, vérifiez que la
|
||||||
|
sauvegarde est bonne et que plusieurs exemplaires sont stockés en lieux sûrs,
|
||||||
|
comme d'habitude.
|
||||||
|
|
||||||
|
Toutes les étapes sont importantes, prenez votre temps, lisez bien cette page.
|
||||||
|
Si vous venez d'installer ScoDoc 9, passez directement à l'**étape 4**.
|
||||||
|
|
||||||
|
### 1. Préparation et arrêt de ScoDoc 7
|
||||||
|
|
||||||
|
1. **S'assurer que l'installation ScoDoc 7 est à jour**
|
||||||
|
|
||||||
|
sudo su
|
||||||
|
cd /opt/scodoc/Products/ScoDoc/config
|
||||||
|
./upgrade.sh
|
||||||
|
|
||||||
|
Notez que cette migration ne fonctionne qu'à partir de la dernière version
|
||||||
|
de ScoDoc 7. Si vous avez une version plus ancienne, mettez-la d'abord à
|
||||||
|
jour.
|
||||||
|
|
||||||
|
2. **Arrêter le service ScoDoc 7**
|
||||||
|
|
||||||
|
systemctl stop scodoc
|
||||||
|
|
||||||
|
S'assurer qu'il est bien stoppé (`ps auxw`, ...), sans quoi la migration va échouer.
|
||||||
|
|
||||||
|
3. **Renommer le répertoire de ScoDoc 7**
|
||||||
|
|
||||||
|
sudo su
|
||||||
|
mv /opt/scodoc /opt/scodoc7
|
||||||
|
|
||||||
|
Les données seront migrées après installation la nouvelle version, voir
|
||||||
|
plus loin. ScoDoc 9 sera installé dans `/opt/scodoc`, il est donc très important
|
||||||
|
de renommer le répertoire en `scodoc7`.
|
||||||
|
|
||||||
|
### 2. Upgrade Debian
|
||||||
|
|
||||||
|
Suivre la procédure standard. La [doc
|
||||||
|
officielle](https://www.debian.org/releases/bullseye/mips64el/release-notes/ch-upgrading.fr.html)
|
||||||
|
est longue, mais en réalité c'est très simple et prends moins de 10 minutes,
|
||||||
|
sauf si vous avez configuré votre système de façon exotique.
|
||||||
|
Nombreux tutos disponibles, voir [par exemple
|
||||||
|
celui-ci](https://www.cyberciti.biz/faq/update-upgrade-debian-10-to-debian-11-bullseye/).
|
||||||
|
|
||||||
|
Attention, il faut désinstaller Apache (avant ou après upgrade Linux), car
|
||||||
|
ScoDoc 9 utilise un autre serveur web (nginx) qui serait en conflit:
|
||||||
|
|
||||||
|
# peut être utile pour récuperer vos certificats SSL ?
|
||||||
|
mv /etc/apache2 /etc/apache2.old
|
||||||
|
apt-get remove --purge apache2
|
||||||
|
|
||||||
|
|
||||||
|
### 3. Installer ScoDoc 9
|
||||||
|
Voir [la section 2 du guide d'installation](GuideInstallDebian11.md#2-installation-de-scodoc-sur-debian).
|
||||||
|
|
||||||
|
Vérifier que tout fonctionne avant d'aller plus loin.
|
||||||
|
|
||||||
|
### 4. Migrer vos données ScoDoc 7
|
||||||
|
|
||||||
|
Les données sont restées dans /opt/scodoc7.
|
||||||
|
|
||||||
|
Lancer le script suivant en tant que `root`:
|
||||||
|
|
||||||
|
/opt/scodoc/tools/migrate_from_scodoc7.sh -m
|
||||||
|
|
||||||
|
(l'option `-m` indique qu'il s'agit d'une migration "en place").
|
||||||
|
|
||||||
|
La migration prends du temps, et il n'est pas inutile de consulter les messages
|
||||||
|
affichés, dont la plupart se retrouvent aussi dans le fichier
|
||||||
|
|
||||||
|
/opt/scodoc/data/log/migration79.log
|
||||||
|
|
||||||
|
Prêtez attention aux éventuels changements de login des utilisateurs et
|
||||||
|
informez-les. ScoDoc 9 n'autorise pas de caractères spéciaux (apostrophes, ...)
|
||||||
|
ou accentués dans les logins.
|
||||||
|
|
||||||
|
### 5. Vérifier que tout fonctionne
|
||||||
|
|
||||||
|
Vos départements et utilisateurs devraient être accessibles.
|
||||||
|
L'utilisateur `admin` créé à l'installation de ScoDoc 9 doit avoir accès à tout.
|
||||||
|
|
||||||
|
Vérifiez que les semestres, étudiants, photos, archives et comptes utilisateurs
|
||||||
|
sont bien là.
|
||||||
|
|
||||||
|
Au besoin, réglez la fonction de calcul du **bonus sport&culture** via la page
|
||||||
|
"configuration" accessible depuis la page d'accueil en tant qu'admin uniquement.
|
||||||
|
|
||||||
|
Célébrez !
|
||||||
|
|
||||||
|
|
@ -1,107 +1,11 @@
|
|||||||
|
|
||||||
# Mise à jour de ScoDoc
|
Il est nécessaire de mettre à jour très fréquemment votre installation ScoDoc.
|
||||||
Il est recommandé de mettre à jour très régulièrement votre installation ScoDoc.
|
|
||||||
|
|
||||||
Le système Linux doit être correctement maintenu (en particulier, les mises à jour de sécurité de Debian doivent être appliquées quotidiennement).
|
|
||||||
|
|
||||||
ScoDoc est actuellement prévu pour fonctionner avec Linux Debian 10.
|
|
||||||
|
|
||||||
* Les (rares) mises à jour majeures du logiciel ScoDoc sont annoncées sur la liste [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces).
|
|
||||||
* Les (fréquentes) mises à jour mineures (corrections de bugs, améliorations) sont annoncées sur la liste [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel).
|
|
||||||
|
|
||||||
*Une mise à jour hebdomadaire (au moins) est recommandée*
|
|
||||||
|
|
||||||
Pour appliquer une mise à jour de ScoDoc, se connecter en tant que `root` sur le serveur, puis faire:
|
|
||||||
```
|
|
||||||
cd /opt/scodoc/Products/ScoDoc/config
|
|
||||||
./upgrade.sh
|
|
||||||
```
|
|
||||||
La première fois, il faudra accepter un certificat cryptographique, répondre "p (accept (p)ermanently)".
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Si un message d'erreur apparaît à la fin de la mise à jour, relancer `./upgrade.sh`.
|
|
||||||
|
|
||||||
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> La mise à jour entraine une déconnexion des utilisateurs (mais pas de pertes de données !).
|
|
||||||
|
|
||||||
Note: cette procédure ne change pas de version majeure de ScoDoc, ni du système Linux. Pour cela, voir [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)) ou plus bas sur cette page.
|
|
||||||
|
|
||||||
## Note concernant les anciens systèmes (Debian 9)
|
|
||||||
|
|
||||||
En Debian version 9 (et version antérieures), ScoDoc n'utilisait pas `systemd` et n'était pas automatiquement relancé lors de mises à jour de ceertains logiciels, comme la base de données `postgresql`. Sur ces systèmes, il est conseillé de mettre à jour Debian avec le script `/opt/scodoc/Products/ScoDoc/config/upgrade.sh` afin d'éviter d'interrompre le service ScoDoc.
|
|
||||||
|
|
||||||
|
|
||||||
## Mise à jour rapide de Debian 9 à Debian 10
|
# Mise à jour de ScoDoc 9
|
||||||
|
|
||||||
Procédure raccourcie réservée aux personnes à l'aise avec linux. On met à jour Debian mais on réinstalle ScoDoc proprement.
|
À partir de ScoDoc 9, les mises à jour sont automatiques. Au besoin, on peut en
|
||||||
|
lancer une à tout moment avec la commande
|
||||||
Vérifiez que vous avez assez d'espace disque disponible (`df -h`, au moins 3Go libres sur `/` ou `/opt`).
|
|
||||||
|
|
||||||
0. Sauvegardez complètement votre système en lieu sûr. Si la procédure ci-dessous échoue, reprenez la voie normale: [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md).
|
|
||||||
|
|
||||||
1. Mettre à jour votre ScoDoc:
|
|
||||||
|
|
||||||
cd /opt/scodoc/Products/ScoDoc/config
|
|
||||||
./upgrade.sh
|
|
||||||
|
|
||||||
2. Arrêter le service (en Debian 9 on utilisait *SysV-style init*, à partir de Debian 10 ScoDoc utilise `systemd`):
|
|
||||||
|
|
||||||
/etc/init.d/scodoc stop
|
|
||||||
|
|
||||||
|
|
||||||
3. Sauvegarder les données et configurations ScoDoc:
|
|
||||||
|
|
||||||
cd /opt/scodoc/Products/ScoDoc/config
|
|
||||||
./save_scodoc_data.sh /opt/data-scodoc-deb9 # par exemple
|
|
||||||
|
|
||||||
|
|
||||||
4. Mettre à jour Debian: pour les détails voir [https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html](https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html).
|
|
||||||
|
|
||||||
En résumé:
|
|
||||||
|
|
||||||
- éditer `/etc/apt/sources.list` et indiquer
|
|
||||||
```
|
|
||||||
deb http://deb.debian.org/debian buster main contrib
|
|
||||||
```
|
|
||||||
|
|
||||||
- puis:
|
|
||||||
```
|
|
||||||
apt-get remove firehol
|
|
||||||
apt update
|
|
||||||
apt-get upgrade
|
|
||||||
apt full-upgrade
|
|
||||||
apt autoremove
|
|
||||||
```
|
|
||||||
et **rebooter**.
|
|
||||||
|
|
||||||
|
|
||||||
5. Supprimer postgresql 9.6
|
|
||||||
|
|
||||||
On enlève carrément l'ancien, le script d'installation de ScoDoc installera la version 11:
|
|
||||||
|
|
||||||
apt-get --purge remove postgresql
|
|
||||||
|
|
||||||
|
|
||||||
6. Réinstaller ScoDoc
|
|
||||||
|
|
||||||
Déplacer l'ancienne installation de ScoDoc (vous la supprimerez plus tard):
|
|
||||||
|
|
||||||
mv /opt/scodoc /opt/scodoc.deb9
|
|
||||||
|
|
||||||
|
|
||||||
Réinstaller un ScoDoc tout neuf, en suivant [GuideInstallDebianDix](GuideInstallDebianDix.md)
|
|
||||||
|
|
||||||
La plupart des composants de votre système seront déjà présents, donc répondre en général "non" aux questions du script d'installation.
|
|
||||||
|
|
||||||
S'arrêter avant l'initialisation des bases de données.
|
|
||||||
|
|
||||||
7. Restaurer la sauvegarde:
|
|
||||||
|
|
||||||
cd /opt/scodoc/Products/ScoDoc/config
|
|
||||||
./restore_scodoc_data.sh /opt/data-scodoc-deb9
|
|
||||||
|
|
||||||
Vérifiez et voilà.
|
|
||||||
|
|
||||||
- Faire un peu de ménage (supprimer `/opt/scodoc.deb9` quand vous êtes sûr de n'y avoir rien oublié), vérifiez les logs (`/opt/scodoc/log`).
|
|
||||||
|
|
||||||
- Vérifier que le nouveau système (et ses bases de données) est bien sauvegardé ([SauvegardesBases](SauvegardesBases.md)).
|
|
||||||
|
|
||||||
|
apt update && apt-get upgrade
|
||||||
|
|
||||||
|
405
docs/ModelisationParcoursBUT.md
Normal file
@ -0,0 +1,405 @@
|
|||||||
|
# Implémentation des parcours du BUT dans ScoDoc
|
||||||
|
Cette page est *destinée aux développeurs* et à tous ceux qui souhaitent
|
||||||
|
comprendre le fonctionnement du logiciel: ce sont des notes un peu désordonnées
|
||||||
|
prises au moment de la conception.
|
||||||
|
|
||||||
|
ScoDoc est livré avec les référentiels de compétences de tous les parcours de toutes
|
||||||
|
les spécialités de BUT. En effet, ces référentiels sont nationaux, publiés par
|
||||||
|
le ministère (voir
|
||||||
|
[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.
|
||||||
|
|
||||||
|
Nous nous sommes basés sur les versions exportées du logiciel Orébut.
|
||||||
|
|
||||||
|
## Rappel général sur le BUT et ScoDoc
|
||||||
|
Rappel simplifié, se concentrant sur les points utiles pour l'évaluation
|
||||||
|
et les liens avec le cursus de formation:
|
||||||
|
|
||||||
|
- 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, ...).
|
||||||
|
|
||||||
|
Dans 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
|
||||||
|
universités (*adaptation locale*).
|
||||||
|
|
||||||
|
Les modules: on appelle ici "module" tout dispositif pédagogique évalué, dans le
|
||||||
|
BUT ce sont les *ressources* et les *SAÉ*.
|
||||||
|
|
||||||
|
Dans ScoDoc, le programme pédagogique définit les UE et modules pour l'ensemble
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Modélisation ScoDoc
|
||||||
|
|
||||||
|
On a d'une part le *programme de formation*, et de l'autre le *référentiel de
|
||||||
|
compétences*.
|
||||||
|
|
||||||
|
### Programme de formation
|
||||||
|
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).
|
||||||
|
|
||||||
|
- `Formation` (ex: "BUT R&T")
|
||||||
|
- `UniteEns` (UE, ex: "Administrer les réseaux")
|
||||||
|
- `Modules` (ressources, SAÉs) *<-> `ApcAppCritique`*, *<-> `ApcAnneeParcours`*
|
||||||
|
|
||||||
|
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
|
||||||
|
matrice de coefficients.
|
||||||
|
|
||||||
|
On va aussi rattacher les Modules à un ou plusieurs ApcParcours, de façon à
|
||||||
|
pouvoir vérifier que les parcours couvrent les AC, et à faciliter les
|
||||||
|
inscriptions des étudiants aux modules (par ex. page présentant les modules
|
||||||
|
auxquels inscrire un groupe).
|
||||||
|
|
||||||
|
#### Cas des modules présents dans plusieurs parcours
|
||||||
|
|
||||||
|
Si un module est utilisé dans plusieurs parcours de la même formation BUT, cela
|
||||||
|
ne pose aucun problème, _sauf_ si ce module doit avoir des coefficients (vers
|
||||||
|
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.
|
||||||
|
|
||||||
|
### Référentiel de compétences
|
||||||
|
Le référentiel de compétences est structuré par les classes suivantes:
|
||||||
|
|
||||||
|
- `ApcReferentielCompetences`
|
||||||
|
- `ApcCompetence`
|
||||||
|
- `ApcSituationPro`
|
||||||
|
- `ApcComposanteEssentielle`
|
||||||
|
- `ApcNiveau` (année (BUT1, BUT2, ...), ordre (1,2) ou (1,2,3)) *<-> `UE`*
|
||||||
|
- `ApcAppCritique` *<-> `Module`*
|
||||||
|
- `ApcParcours`
|
||||||
|
- `ApcAnneeParcours` (ordre=1,2,3) *<-> `Module`*
|
||||||
|
- *`ApcCompetence`* <- `ApcParcoursNiveauCompetence` (niveau 1, 2, 3) -> *`ApcAnneeParcours`*
|
||||||
|
|
||||||
|
Notons:
|
||||||
|
|
||||||
|
- Le lien entre UE et Niveau de compétence (`ApcNiveau`).
|
||||||
|
|
||||||
|
- Le lien à entre Compétence et Année de Parcours à travers la table
|
||||||
|
(*many-to-many*) `ApcParcoursNiveauCompetence` qui indique le niveau ce
|
||||||
|
compétence concerné.
|
||||||
|
|
||||||
|
- Le lien entre les apprentissages critiques (`ApcAppCritique`) et les
|
||||||
|
modules, qui permet d'établir les critères d'évaluation de chaque module.
|
||||||
|
|
||||||
|
### FormSemestres
|
||||||
|
La formation est mise en œuvre dans des `FormSemestre` (date début, fin,
|
||||||
|
enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant,
|
||||||
|
évaluations, ...).
|
||||||
|
|
||||||
|
- `FormSemestre`
|
||||||
|
- `ModuleImpl`
|
||||||
|
- `Evaluation`
|
||||||
|
|
||||||
|
### Inscriptions des étudiants
|
||||||
|
Les étudiants sont inscrits:
|
||||||
|
|
||||||
|
- dans un `FormSemestre` (`FormSemestreInscription`, avec état (`I`, `D`,
|
||||||
|
`DEF`) et étape Apogée)
|
||||||
|
- dans un ModuleImpl (`ModuleImplInscription`)
|
||||||
|
- et, pour le BUT, dans un `ApcParcours`: l'inscription au formsemestre
|
||||||
|
`FormSemestreInscription` comporte:
|
||||||
|
|
||||||
|
- l'état (`I`, `D`, `DEF`);
|
||||||
|
- l'étape Apogée;
|
||||||
|
- un `ApcParcours`.
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
||||||
|
implicitement inscrit à tous les parcours du semestre.
|
||||||
|
|
||||||
|
### Associations (nouvelles pour le BUT):
|
||||||
|
|
||||||
|
Pour la gestion des parcours BUT, il faut introduire les associations suivantes,
|
||||||
|
qui n'existent pas dans ScoDoc 9.2:
|
||||||
|
|
||||||
|
- UE <-> `ApcNiveau` : choix sur la page `ue_edit`
|
||||||
|
- `Module` ||--o{ ensemble de `ApcParcours`
|
||||||
|
- `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit`
|
||||||
|
- `FormSemestre` ||--o{ `ApcParcours` : choix sur la page
|
||||||
|
`formsemestre_editwithmodules`
|
||||||
|
- `FormSemestreInscription` ||--|| `ApcParcours` : inscription au parcours, page à créer.
|
||||||
|
|
||||||
|
### Cas d'usage
|
||||||
|
|
||||||
|
#### Niveau de compétence d'un formsemestre
|
||||||
|
|
||||||
|
Le formsemestre est lié à un ensemble d'`ApcParcours`.
|
||||||
|
|
||||||
|
La liste des niveaux (`ApcNiveau`) associés aux UEs:
|
||||||
|
```
|
||||||
|
[ ue.niveau_competence
|
||||||
|
for ue in formsemestre.query_ues() if ue.niveau_competence ]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Inscription d'un étudiant aux ModuleImpls
|
||||||
|
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
|
||||||
|
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
|
||||||
|
|
||||||
|
- Créer des groupes de parcours (via `edit_partition_form`)
|
||||||
|
|
||||||
|
- 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
|
||||||
|
`FormSemestre`.
|
||||||
|
|
||||||
|
#### Comment ScoDoc détermine-t-il les modules d'un parcours ?
|
||||||
|
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 UE
|
||||||
|
associées à un parcours.
|
||||||
|
|
||||||
|
Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC
|
||||||
|
(`ApcAppCritique`), et chaque module est aussi associé à son ensemble d'AC.
|
||||||
|
|
||||||
|
Pour chaque parcours d'un `FormSemestre`, on déterminera l'ensemble des `ModuleImpl`
|
||||||
|
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
|
||||||
|
annuels, mais que les `ModuleImpl` sont semestriels.
|
||||||
|
|
||||||
|
#### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs
|
||||||
|
|
||||||
|
Vérification utile en fin de formation.
|
||||||
|
|
||||||
|
##### En fin de formation, pour un étudiant
|
||||||
|
|
||||||
|
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
|
||||||
|
facilement vérifier que les AC ont été couverts:
|
||||||
|
|
||||||
|
- Lister les `ModuleImpl` auxquels l'étudiant a été inscrit dans ses semestres
|
||||||
|
(S1 à S6);
|
||||||
|
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
|
||||||
|
réussite);
|
||||||
|
- 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
|
||||||
|
|
||||||
|
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 à
|
||||||
|
couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
|
||||||
|
on ne peut pas aller plus loin.
|
||||||
|
|
||||||
|
#### Lister les UEs d'un parcours d'une formation
|
||||||
|
```
|
||||||
|
# Soit un parcours:
|
||||||
|
parcour = formation.referentiel_competence.parcours.filter_by(code="ROM").first()
|
||||||
|
# Listes UEs de ce parcours:
|
||||||
|
formation.query_ues_parcour(parcour)
|
||||||
|
# Liste des UEs du semestre 3:
|
||||||
|
formation.query_ues_parcour(parcour).filter_by(semestre_idx=2)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 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
|
||||||
|
impair, soit pair, soit les deux (il est rare mais pas impossible d'avoir une
|
||||||
|
inscription seulement en semestre pair, par exemple suite à un transfert ou un
|
||||||
|
arrêt temporaire du cursus).
|
||||||
|
|
||||||
|
1. Déterminer l'*autre* semestre: semestre précédent ou suivant de la même
|
||||||
|
année, formation compatible (même référentiel de compétence) dans lequel
|
||||||
|
l'étudiant est inscrit.
|
||||||
|
|
||||||
|
2. Construire les couples d'UE (regroupements cohérents): apparier les UE qui
|
||||||
|
ont le même `ApcParcoursNiveauCompetence`.
|
||||||
|
|
||||||
|
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
|
||||||
|
cursus (BUT1, BUT2 ou BUT3).
|
||||||
|
|
||||||
|
#### 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
|
||||||
|
particuliers (décision de jury manuelle).
|
||||||
|
|
||||||
|
**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] 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).
|
||||||
|
|
||||||
|
Il faut donc:
|
||||||
|
|
||||||
|
1. Construire les regroupements d'UE et calculer la moyenne des moyennes d'UE
|
||||||
|
(a priori de même poids, cela n'est pas spécifié dans les textes).
|
||||||
|
|
||||||
|
2. Vérifier les conditions ci-dessus.
|
||||||
|
|
||||||
|
3. Pour le passage en S5, construire l'ensemble des semestres de formations
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
#### 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
|
||||||
|
|
||||||
|
### Rappel: validations en formations classiques
|
||||||
|
Pour toutes les formations, ScoDoc enregistre les validations de semestres et
|
||||||
|
d'UE, via la classe `ScolarFormSemestreValidation`, dont les instances stockent:
|
||||||
|
|
||||||
|
- `etudid, formsemestre_id, code, event_date`
|
||||||
|
|
||||||
|
et pour les validations de semestres:
|
||||||
|
|
||||||
|
- `assidu, compense_formsemestre_id`
|
||||||
|
|
||||||
|
ou pour les validations d'UE
|
||||||
|
|
||||||
|
- `ue_id, is_external`
|
||||||
|
|
||||||
|
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
|
||||||
|
DUT](GestionJury.md)).
|
||||||
|
|
||||||
|
### Validation des niveaux de compétences
|
||||||
|
|
||||||
|
Pour le BUT, il faut enregistrer la validation des *niveaux de compétences*,
|
||||||
|
constitués de *regroupements cohérents d'UE* ("RCUE"), qui sont les UEs de la
|
||||||
|
même année de parcours associées à la même compétence.
|
||||||
|
|
||||||
|
On va stocker les validation des RCUE dans `ApcValidationRCUE`:
|
||||||
|
|
||||||
|
- `etudid`
|
||||||
|
- `formsemestre_id` (dernier déclenchant cette validation).
|
||||||
|
- `ue_1`, `ue_2` : les deux UE associées à ce niveau.
|
||||||
|
- `ApcParcours` : optionnel, le parcours dans lequel se trouve la compétence.
|
||||||
|
- `datetime` de la validation.
|
||||||
|
- `code` de validation: `ADM`, `CMP`, `AJ`.
|
||||||
|
|
||||||
|
Rappel: chaque UE est associé à un niveau de compétence
|
||||||
|
(`ue.niveau_competence`), qui doit ici être le même.
|
||||||
|
|
||||||
|
### Validation des années du BUT
|
||||||
|
Pour le BUT, ScoDoc enregistre les validations d'années `ApcValidationAnnee`
|
||||||
|
|
||||||
|
- `etudid`
|
||||||
|
- `ordre`: 1, 2, 3 pour BUT1, BUT2, BUT3.
|
||||||
|
- `formsemestre_id` (dernier déclenchant cette validation, None si extérieure)
|
||||||
|
- `annee_scolaire` (int, année de début, eg 2021 pour "2021-2022")
|
||||||
|
- `datetime` de la validation.
|
||||||
|
- `code` de validation: `PASD`, `PAS1NCI`, `RED`, `REO`, `DEM`, `EXC`, `ABAN`, `ABL`.
|
||||||
|
|
||||||
|
|
||||||
|
### Codes préconisés par l'AMUE pour le BUT
|
||||||
|
On associe lors du jury un code de décision:
|
||||||
|
|
||||||
|
- À chaque UE: `VAL`, `COMP`, `AJ`, `UESBL`.
|
||||||
|
- À chaque niveau de compétence (RCUE): `VAL`, `AJ`, `CODJ`.
|
||||||
|
- À chaque année:
|
||||||
|
|
||||||
|
- `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)
|
||||||
|
- `RED`: Redoublement de l'année
|
||||||
|
- `REO`: REOrientation - décision automatique (revient à une exclusion), plus de 4 semestres RED ou décision de Jury
|
||||||
|
- `DEM`: DEMission (lettre de l'étudiant).
|
||||||
|
- `EXC`: EXClusion, décision réservée à des décisions disciplinaires
|
||||||
|
- `ABAN`: ABANdon constaté (sans lettre de démission)
|
||||||
|
- `ABL`: Année BLanchie
|
||||||
|
- Au diplôme: `ADM`
|
||||||
|
|
||||||
|
|
||||||
|
#### Correspondance avec les codes de ScoDoc
|
||||||
|
|
||||||
|
ScoDoc utilise des codes [documentés ici](GestionJury.md).
|
||||||
|
|
||||||
|
- 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
|
||||||
|
Décision*) pour simplement indiquer que le jury s'est tenu. Ce code ne sera pas
|
||||||
|
exporté vers Apogée.
|
||||||
|
|
||||||
|
- Pour les UEs: **codes d'état d'UE**
|
||||||
|
|
||||||
|
ScoDoc | BUT AMUE |
|
||||||
|
----------|-----|-----
|
||||||
|
ADM | VAL | UE validée automatiquement |
|
||||||
|
CMP | COMP| UE validée par compensation|
|
||||||
|
AJ | AJ | UE ajournée (échec) |
|
||||||
|
- | UESBL | blanchissement (non dispo en ScoDoc 9) |
|
||||||
|
|
||||||
|
- Pour les RCUE:
|
||||||
|
|
||||||
|
ScoDoc | BUT AMUE |
|
||||||
|
----------|-----|-----
|
||||||
|
ADM | VAL | validée automatiquement |
|
||||||
|
CMP | CODJ| Niveau validée par "compensation" ???|
|
||||||
|
AJ | AJ | RCUE ajournée (échec) |
|
||||||
|
|
||||||
|
Rappel: les codes exportés vers Apogée sont configurables (table de transcodage dans la
|
||||||
|
config générale).
|
||||||
|
|
||||||
|
|
||||||
|
## Diagramme de classes
|
||||||
|
|
||||||
|
Juste pour rire, car ce diagramme est quasiment inexploitable (dessin réalisé
|
||||||
|
automatiquement en Mermaid).
|
||||||
|
|
||||||
|
``` mermaid
|
||||||
|
erDiagram
|
||||||
|
FormSemestre ||--|{ ModuleImpl : contient
|
||||||
|
ModuleImpl ||--o{ Evaluation : contient
|
||||||
|
Module ||--o{ ModuleImpl : ""
|
||||||
|
Formation ||--o{ UE : ""
|
||||||
|
UE ||--|{ Module : ""
|
||||||
|
|
||||||
|
Formation {
|
||||||
|
str titre
|
||||||
|
str acronym
|
||||||
|
str code
|
||||||
|
}
|
||||||
|
|
||||||
|
Etudiant {
|
||||||
|
str nom
|
||||||
|
}
|
||||||
|
|
||||||
|
FormSemestre {
|
||||||
|
int dept_id
|
||||||
|
str titre
|
||||||
|
date date_debut
|
||||||
|
date date_fin
|
||||||
|
}
|
||||||
|
|
||||||
|
Etudiant }|..|{ ModuleImpl : ModuleImplInscription
|
||||||
|
Etudiant }|..|{ FormSemestre : FormSemestreInscription
|
||||||
|
FormSemestreInscription ||..o{ ApcParcours : "optionnel"
|
||||||
|
|
||||||
|
Formation ||--o{ FormSemestre : ""
|
||||||
|
|
||||||
|
ApcReferentielCompetences ||--o{ ApcCompetence : ""
|
||||||
|
ApcCompetence ||--o{ ApcNiveau : ""
|
||||||
|
ApcCompetence ||--o{ ApcSituationPro : ""
|
||||||
|
ApcCompetence ||--o{ ApcComposanteEssentielle : ""
|
||||||
|
ApcNiveau }o..|| UE : "optionnel"
|
||||||
|
ApcNiveau ||--o{ ApcAppCritique : ""
|
||||||
|
ApcAppCritique }o..o{ Module : "optionnel"
|
||||||
|
|
||||||
|
ApcReferentielCompetences ||--o{ ApcParcours : ""
|
||||||
|
ApcParcours ||--o{ ApcAnneeParcours : ""
|
||||||
|
|
||||||
|
ApcAnneeParcours {
|
||||||
|
int ordre
|
||||||
|
}
|
||||||
|
|
||||||
|
ApcCompetence }o--o{ ApcAnneeParcours : "ApcParcoursNiveauCompetence (1,2,3)"
|
||||||
|
|
||||||
|
Module }o--o{ ApcParcours : "parcours_modules"
|
||||||
|
FormSemestre }o--o{ ApcParcours : "parcours_formsemestre"
|
||||||
|
UE }o..o{ ApcParcours : "pour les ECTS"
|
||||||
|
```
|
@ -9,4 +9,3 @@ Lors de la création d'un module dans un programme pédagogique, on peut spécif
|
|||||||
Une fois le module créé (et ajouté à un semestre), on peut y déclarer une évaluation et saisir les notes de bonus/malus.
|
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.
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ Toutes les préférences pour le semestre considéré (ou définies globalement)
|
|||||||
Voir la liste complète sur [NomsPreferences](NomsPreferences.md).
|
Voir la liste complète sur [NomsPreferences](NomsPreferences.md).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Informations sur le semestre
|
### Informations sur le semestre
|
||||||
Variable | Valeur
|
Variable | Valeur
|
||||||
---------|-------
|
---------|-------
|
||||||
@ -55,14 +54,19 @@ situation| phrase expliquant la situation de l'étudiant (inscription, décision
|
|||||||
demission| "DEMISSION" ou vide
|
demission| "DEMISSION" ou vide
|
||||||
inscription| phrase décrivant l'inscription ("ancien")
|
inscription| phrase décrivant l'inscription ("ancien")
|
||||||
date_inscription| jj/mm/aaaa
|
date_inscription| jj/mm/aaaa
|
||||||
date_demission || (vide si pas demission)
|
date_demission | (vide si pas démission)
|
||||||
descr_inscription| "Inscrit" ou "Pas inscrit[e]"
|
descr_inscription| "Inscrit" ou "Pas inscrit[e]"
|
||||||
descr_demission || "Démission le 01/02/2000" ou vide si pas de démissio
|
descr_demission | "Démission le 01/02/2000" ou vide si pas de démission
|
||||||
decision_jury || "Validé", "Ajourné", ... (code semestre
|
decision_jury | "Validé", "Ajourné", ... (code semestre, vide en BUT)
|
||||||
descr_decision_jury| "Décision jury: Validé" (une phrase
|
descr_decision_jury| "Décision jury: Validé" (une phrase)
|
||||||
decisions_ue || noms (acronymes) des UE validées, séparées par des virgules.
|
decisions_ue | noms (acronymes) des UE validées, séparées par des virgules.
|
||||||
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
|
mention| Mention, calculée d'après la moyenne générale (vide en BUT)
|
||||||
|
|
|
||||||
|
**Jurys de BUT:** |
|
||||||
|
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_niveaux | pareil, avec "Niveaux de compétences: " devant
|
||||||
|
|
|
|
||||||
**Absences:** |
|
**Absences:** |
|
||||||
nbabs| nombre d'absences (en demi-journées)
|
nbabs| nombre d'absences (en demi-journées)
|
||||||
@ -96,12 +100,50 @@ Le balisage XML est celui de [ReportLab](http://www.reportlab.com/) (intra-parag
|
|||||||
### 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 doivent être des images au format JPEG (extension `.jpg` uniquement), placées dans le répertoire `.../logos/`, et nommées `logo_xxx.jpg`.
|
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
|
||||||
|
documents PDF. [Plus d'information sur la gestion des logos ici](GestionLogos.md).
|
||||||
|
|
||||||
La balise `<logo name="xxx" width="44mm" height="22mm" valign="+5mm"/>`, placée dans un paragraphe, insère alors le logo `xxx` avec les dimensions indiquées. Le paramètre `valign` règle le positionnement vertical par rapport à la ligne de texte courante.
|
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;
|
||||||
|
|
||||||
|
* le nom d'un logo est exclusivement composé de caractères alphanumériques ou du caractère '`-`';
|
||||||
|
|
||||||
|
* les logos définis globalement sont accessibles pour tous les départements.
|
||||||
|
Toutefois, si un logo de même nom est également présent dans un département,
|
||||||
|
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).
|
||||||
|
|
||||||
|
L'enregistrement, la modification ou la suppression d'un logo peut être réalisé via la page de configuration qui est accessible aux
|
||||||
|
administrateurs Scodoc depuis la page d'accueil.
|
||||||
|
|
||||||
|
Ce formulaire comporte une section pour les définitions globales plus une section par département.
|
||||||
|
|
||||||
|
Une section présente la liste des logos avec leurs propriétés (la dimension est donnée à titre indicatif quand elle est disponible).
|
||||||
|
|
||||||
|
Pour chaque logo, les actions disponibles sont :
|
||||||
|
|
||||||
|
* Le remplacement de l'image existante par un nouveau fichier ;
|
||||||
|
|
||||||
|
* la suppression du logo (sauf pour `header`et `footer`dans la section globale) ;
|
||||||
|
|
||||||
|
* 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 aucune importance
|
||||||
|
(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)
|
||||||
|
|
||||||
|
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.
|
||||||
|
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 largeur.
|
||||||
|
Dans ce cas, la dimension manquante est déduite du ratio (rapport hauteur/largeur) de l'image originale.
|
||||||
Voir un exemple d'utilisation plus bas.
|
Voir un exemple d'utilisation plus bas.
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
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
|
||||||
|
@ -10,14 +10,32 @@ Le PV de jury est en format paysage et liste les résultats des étudiants chois
|
|||||||
## Image de fond de page (logos, tête, pied)
|
## Image de fond de page (logos, tête, pied)
|
||||||
L'exemple ci-dessus utilise une image de fond qui contient l'en-tête et le pied de page, avec des logos. Il faut fournir à ScoDoc une image de fond. Le plus simple est généralement de la composer dans un logiciel de traitement de texte, et de l'enregistrer en image: exporter en PDF puis convertir le PDF en image PNG ou JPEG de bonne résolution (300dpi , par exemple avec un logiciel comme Aperçu sur Mac.
|
L'exemple ci-dessus utilise une image de fond qui contient l'en-tête et le pied de page, avec des logos. Il faut fournir à ScoDoc une image de fond. Le plus simple est généralement de la composer dans un logiciel de traitement de texte, et de l'enregistrer en image: exporter en PDF puis convertir le PDF en image PNG ou JPEG de bonne résolution (300dpi , par exemple avec un logiciel comme Aperçu sur Mac.
|
||||||
|
|
||||||
L'image doit ensuite être enregistrée sur le serveur à un emplacement spécifique (seul l'administrateur du serveur peut faire cela):
|
L'image obtenue peut ensuite être téléversée sur le serveur de la même façon que pour un simple logo
|
||||||
|
(voir la section [paramétrage des bulletins, section Logos](ParametrageBulletins.md)
|
||||||
|
avec le nom "`pvjury_background`" ou "`letter_background`" selon le type de document visé.
|
||||||
|
|
||||||
- Pour les PV de jury (A4 paysage), sous le chemin `/opt/scodoc/var/scodoc/config/logos/pvjury_background.png`
|
Il ne reste plus qu'à activer l'option correspondante soit globalement dans le
|
||||||
- Pour les lettres individuelles (format A4 portrait), sous `/opt/scodoc/var/scodoc/config/logos/letter_background.png`
|
paramétrage du département, soit (pour les bulletins) dans par le menu réglage
|
||||||
|
bulletin du semestre (qui a priorité):
|
||||||
|
|
||||||
Ne pas oublier d'activer l'option *"Mettre l'image de fond sur les PV de jury"* dans les [paramètres du département](PreferencesScoDoc.md).
|
- Mettre l'image de fond sur les PV de jury (paysage)
|
||||||
|
- Mettre l'image de fond sur les bulletins
|
||||||
|
- Mettre l'image de fond sur les lettres individuelles de décision
|
||||||
|
|
||||||
**Note :** on peut aussi ajouter les logos séparément, mais il est plus commode de fournir une trame de fond complète. Voir [ici](GuideConfig/#changement-des-logos-apparaissant-sur-les-documents) si besoin.
|
**Note** : pour les serveurs migrés depuis ScoDoc 7, les anciennes
|
||||||
|
configurations sont normalement reprises automatiquement.
|
||||||
|
|
||||||
|
L'image doit ensuite être enregistrée sur le serveur à un emplacement spécifique
|
||||||
|
(seul l'administrateur du serveur peut faire cela): [voir la page sur la
|
||||||
|
configuration les images](GestionLogos.md).
|
||||||
|
|
||||||
|
Ne pas oublier d'activer l'option *"Mettre l'image de fond sur les PV de jury"*
|
||||||
|
dans les [paramètres du département](PreferencesScoDoc.md).
|
||||||
|
|
||||||
|
**Note :** on peut aussi ajouter les logos séparément, mais il est souvent plus
|
||||||
|
commode de fournir une trame de fond complète. Voir
|
||||||
|
[ici](GuideConfig/#changement-des-logos-apparaissant-sur-les-documents) si
|
||||||
|
besoin.
|
||||||
|
|
||||||
## PV de Jury: textes, marges et autres paramètres
|
## PV de Jury: textes, marges et autres paramètres
|
||||||
|
|
||||||
@ -31,9 +49,11 @@ Les paragraphes de texte utilisent un balisage identique à celui des bulletins
|
|||||||
|
|
||||||
## Lettres individuelles
|
## Lettres individuelles
|
||||||
|
|
||||||
ScoDoc génère un docuement PDF contenant les letters de tous les étudiants du semestre ou d'un groupe.
|
ScoDoc génère un document PDF contenant les lettres de tous les étudiants du semestre ou d'un groupe.
|
||||||
|
|
||||||
Le principe est le même, mais on fournit une trame de fond au format portrait, come indiqué plus haut. Le texte de la lettre est configurable dans les préférences.
|
Le principe est le même, mais on fournit une trame de fond au format portrait,
|
||||||
|
comme indiqué plus haut. Le texte de la lettre est configurable dans les
|
||||||
|
préférences.
|
||||||
|
|
||||||
<img src="/screens/LettresPreferences.png" width="50%">
|
<img src="/screens/LettresPreferences.png" width="50%">
|
||||||
|
|
||||||
|
@ -1,23 +1,37 @@
|
|||||||
|
|
||||||
## Préférences
|
## Préférences
|
||||||
Les préférences sont des paramètres stockés dans la base de données d'un département. Les préférences s'appliquent à tout un département (tous les semestres), ou bien à un semestre particulier. Chaque département a son propre jeu de préférences (c'est parfois regrettable, car certaines préférences concernent tout l'établissement).
|
Les préférences sont des paramètres stockés dans la base de données d'un
|
||||||
|
département. Les préférences s'appliquent à tout un département (tous les
|
||||||
|
semestres), ou bien à un semestre particulier. Chaque département a son propre
|
||||||
|
jeu de préférences (c'est parfois regrettable, car certaines préférences
|
||||||
|
concernent tout l'établissement).
|
||||||
|
|
||||||
|
|
||||||
Si un semestre ne défini pas de valeur pour un paramètre (eg marge, police, paramétrage du bulletin de notes...), ScoDoc utilisera les préférences globales pour le département.
|
Si un semestre ne défini pas de valeur pour un paramètre (eg marge, police,
|
||||||
|
paramétrage du bulletin de notes...), ScoDoc utilisera les préférences globales
|
||||||
|
pour le département.
|
||||||
|
|
||||||
Donc:
|
Donc:
|
||||||
|
|
||||||
* Pour affecter tous les semestres sauf ceux qui ont dit autrement: suivre le lien "Paramétrage" dans la marge gauche (visible uniquement si vous en avez la permission).
|
* Pour affecter tous les semestres sauf ceux qui ont dit autrement: suivre le
|
||||||
|
lien "Paramétrage" dans la marge gauche (visible uniquement si vous en avez
|
||||||
|
la permission).
|
||||||
|
|
||||||
* Pour affecter seulement un semestre: menu "Semestre", "Réglages bulletins" ou "Préférences du semestre".
|
* Pour affecter seulement un semestre: menu "Semestre", "Réglages bulletins" ou
|
||||||
|
"Préférences du semestre".
|
||||||
|
|
||||||
On accède aux préférences via le lien "Paramétrage", qui est présent dans la marge gauche seulement si l'on a le droit de modifier les préférences (la permission `Sco Change Preferences`, normalement associée au rôle `Admin` possédé par chef du département, voir [ConfigPermissions](ConfigPermissions.md)).
|
On accède aux préférences via le lien "Paramétrage", qui est présent dans la
|
||||||
|
marge gauche seulement si l'on a le droit de modifier les préférences (la
|
||||||
|
permission `Sco Change Preferences`, normalement associée au rôle `Admin`
|
||||||
|
possédé par chef du département, voir
|
||||||
|
[ConfigPermissions](ConfigPermissions.md)).
|
||||||
|
|
||||||
On distingue plusieurs groupes de préférences:
|
On distingue plusieurs groupes de préférences:
|
||||||
|
|
||||||
* Générales: nom de l'Université, du directeur, etc...
|
* Générales: nom de l'Université, du directeur, etc...
|
||||||
|
|
||||||
* Absences: alarmes si beaucoup d'absences, statut des samedis... (voir détails sur [GestionAbsences](GestionAbsences.md))
|
* Absences: alarmes si beaucoup d'absences, statut des samedis... (voir détails
|
||||||
|
sur [GestionAbsences](GestionAbsences.md))
|
||||||
|
|
||||||
* Liaison avec le portail: URL du portail, code du département, ...
|
* Liaison avec le portail: URL du portail, code du département, ...
|
||||||
|
|
||||||
@ -28,5 +42,6 @@ On distingue plusieurs groupes de préférences:
|
|||||||
|
|
||||||
Voir la liste des préférences sur la page [NomsPreferences](NomsPreferences.md).
|
Voir la liste des préférences sur la page [NomsPreferences](NomsPreferences.md).
|
||||||
|
|
||||||
Note: les préférences et leurs valeurs par défaut sont définies dans le fichier `sco_preferences.py`.
|
Note pour les développeurs: les préférences et leurs valeurs par défaut sont
|
||||||
|
définies dans le fichier `sco_preferences.py`.
|
||||||
|
|
||||||
|
@ -1,19 +1,25 @@
|
|||||||
|
|
||||||
# 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 d'utilisateurs, alertes sur absences, exceptions dans le code).
|
ScoDoc envoie des mails en plusieurs 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 pas.
|
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne
|
||||||
|
pas.
|
||||||
|
|
||||||
|
## Configuration du serveur
|
||||||
|
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
|
||||||
|
relais). L'installeur propose d'installer le logiciel serveur Postfix.
|
||||||
|
|
||||||
|
|
||||||
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 relais). L'installeur propose d'installer le logiciel serveur Postfix.
|
1. Vérifier que votre serveur de messagerie est bien configuré: dans un
|
||||||
|
terminal, envoyez un message
|
||||||
|
|
||||||
1. Vérifier que votre serveur de messagerie est bien configuré: dans un terminal, envoyez un message
|
|
||||||
```
|
```
|
||||||
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 configuration de votre serveur, par exemple avec la commande
|
Si vous ne recevez pas le message que vous vous envoyiez, revoir la
|
||||||
|
configuration de votre serveur, par exemple avec la commande
|
||||||
```
|
```
|
||||||
dpkg-reconfigure postfix
|
dpkg-reconfigure postfix
|
||||||
```
|
```
|
||||||
@ -29,14 +35,19 @@ 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`)
|
||||||
|
|
||||||
3. Si cela fonctionne, passer au test de ScoDoc: créer un étudiant bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un semestre, et lui envoyer son bulletin par mail. (sur la page web de son bulletin, petit menu "Autres opérations").
|
## Tests avec ScoDoc
|
||||||
|
|
||||||
A ce moment, regarder le log
|
Une fois que le mail, fonctionne, passer au test de ScoDoc: créer un étudiant
|
||||||
|
bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un
|
||||||
|
semestre, et lui envoyer son bulletin par mail. (sur la page web de son
|
||||||
|
bulletin, petit menu "Autres opérations").
|
||||||
|
|
||||||
|
À ce moment, regarder le log
|
||||||
`/opt/scodoc/instance/log/notes.log`
|
`/opt/scodoc/instance/log/notes.log`
|
||||||
|
|
||||||
on devrait voir quelque chose ressemblant à:
|
On devrait voir quelque chose ressemblant à:
|
||||||
```
|
```
|
||||||
[Sun Sep 07 11:37:40 2008] mail bulletin a emmanuel.viennet@gmail.com
|
[Sun Sep 07 11:37:40 2008] mail bulletin a emmanuel.viennet@gmail.com
|
||||||
[Sun Sep 07 11:37:40 2008] sendEmail: ok
|
[Sun Sep 07 11:37:40 2008] sendEmail: ok
|
||||||
@ -51,6 +62,17 @@ 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 (notes.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.
|
||||||
|
|
||||||
|
## Redirection des tous les mails de ScoDoc
|
||||||
|
|
||||||
|
Afin de vérifier les envois de mail, il peut être pratique de détourner tous les
|
||||||
|
envois vers une adresse (cela permet par exemple de tester les envois de
|
||||||
|
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
|
||||||
|
*Adresse de test*. Ne pas oublier de l'enlever une fois les essais effectués !
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,15 +1,21 @@
|
|||||||
# Publication des notes aux étudiants
|
# Publication des notes aux étudiants
|
||||||
|
|
||||||
ScoDoc n'est pas et ne doit pas être accessible aux étudiants, principalement pour des raisons de sécurité. Seuls les personnels devraient avoir des comptes sur ScoDoc.
|
ScoDoc n'est pas et ne doit pas être accessible aux étudiants, principalement
|
||||||
|
pour des raisons de sécurité. Seuls les personnels devraient avoir des comptes
|
||||||
|
sur ScoDoc.
|
||||||
|
|
||||||
Pour communiquer aux étudiants leurs réultats, plusieurs solutions:
|
Pour communiquer aux étudiants leurs résultats, plusieurs solutions:
|
||||||
|
|
||||||
- Envoi des bulletins (pdf) par mail (c'est facile depuis le menu "Notes").
|
- Envoi des bulletins (pdf) par mail (c'est facile depuis le menu "Notes").
|
||||||
|
|
||||||
- Publication sur un autre site Web: typiquement l'ENT de l'établissement, ou un mini-site dédié.
|
- Publication sur un autre site Web: typiquement l'ENT de l'établissement, ou
|
||||||
- Pour interfacer un ENT, [voir l'API](ScoDocAPI.md).
|
un mini-site dédié.
|
||||||
- Plusieurs collègues ont développé des mini-sites pour publier les notes (accès protégé par CAS ou autre). Ces codes ne font pas stricto censu partie de ScoDoc. Quelques exemples en PHP sont distribués dans le répertoire `misc/PublicationBulletins` ([voir ici](https://scodoc.org/git/viennet/ScoDoc/src/branch/master/misc/PublicationBulletins)).
|
- Pour interfacer un ENT, [voir l'API](ScoDoc9API.md).
|
||||||
- Plus récemment (2020), des collègues de l'IUT de Mulhouse ont développé un mini-portail complet: [Scodoc_Notes](https://github.com/SebL68/Scodoc_Notes) (github), [historique](https://notes.iutmulhouse.uha.fr/maj.php).
|
|
||||||
|
- Depuis 2020, Sébastien Lehmann l'IUT de Mulhouse a développé et maintient
|
||||||
|
un mini-portail complet:
|
||||||
|
[Scodoc_Notes](https://github.com/SebL68/Scodoc_Notes) (github),
|
||||||
|
[historique](https://notes.iutmulhouse.uha.fr/maj.php).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
266
docs/RelationsEntreprises.md
Normal file
@ -0,0 +1,266 @@
|
|||||||
|
# Module "relations entreprises"
|
||||||
|
|
||||||
|
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.
|
||||||
|
La base de données est commune aux départements de l'établissement, mais
|
||||||
|
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
|
||||||
|
Villetaneuse financé par l'Association ScoDoc.
|
||||||
|
|
||||||
|
# Fonctionnalités
|
||||||
|
|
||||||
|
Le module, intégrée à ScoDoc, fournit pour l'instant:
|
||||||
|
|
||||||
|
* Saisie et gestion des entreprises, sites et correspondants
|
||||||
|
* Saisie et gestion des offres de stage et d'apprentissage
|
||||||
|
* Saisie et gestion de la taxe d'apprentissage
|
||||||
|
* Envoi des offres aux responsables de formations
|
||||||
|
* Historique à propos des entreprises
|
||||||
|
* Historique des modifications des fiches entreprises
|
||||||
|
* Systèmes de rôles et de permissions pour les accès.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Les utilisateurs
|
||||||
|
|
||||||
|
- le pôle des relations extérieures (le responsable, l'assistant, les chargés de relations entreprises)
|
||||||
|
- les secrétariats pédagogiques
|
||||||
|
- les responsables de stage
|
||||||
|
- les responsables de formations
|
||||||
|
|
||||||
|
Des actions et visibilités différentes selon le rôle de l'utilisateur (voir section "Rôles" plus loin).
|
||||||
|
|
||||||
|
|
||||||
|
## Rôles et permissions
|
||||||
|
|
||||||
|
Ses rôles ne sont pas reliés à des département. Les rôles permettent aux utilisateurs d'avoir différentes permissions selon le rôle qu'il possède.
|
||||||
|
|
||||||
|
Rôles:
|
||||||
|
|
||||||
|
* AdminEntreprise
|
||||||
|
* UtilisateurEntreprise
|
||||||
|
* ObservateurEntreprise
|
||||||
|
|
||||||
|
Permissions:
|
||||||
|
|
||||||
|
* RelationsEntreprisesView -> Voir l'application relations entreprises
|
||||||
|
* RelationsEntreprisesChange -> Modifier les entreprises
|
||||||
|
* RelationsEntreprisesExport -> Exporter les données de l'application relations entreprises
|
||||||
|
* RelationsEntreprisesSend -> Envoyer des offres
|
||||||
|
* RelationsEntreprisesValidate -> Valide les entreprises
|
||||||
|
* RelationsEntreprisesCorrespondants -> Voir les correspondants
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Saisie et gestion des entreprises, sites et correspondants
|
||||||
|
|
||||||
|
### Page "Entreprises"
|
||||||
|
|
||||||
|
Les entreprises dans la base de données apparaissent alors dans une liste
|
||||||
|
d'entreprise où leur SIRET est un lien vers leur fiche entreprise. Il y a 2
|
||||||
|
checkbox pour pouvoir afficher toutes les entreprises de la base (les
|
||||||
|
entreprises désactivées en rouge) ou/et que les associations partenaires.
|
||||||
|
|
||||||
|
### Fiche entreprise
|
||||||
|
|
||||||
|
Chaque entreprises de la base possède une fiche entreprise avec dessus les
|
||||||
|
informations de l'entreprise (SIRET, nom, adresse, code postal, pays), les
|
||||||
|
sites, les correspondants, les offres, les dernières opérations, l'historique
|
||||||
|
concernant l'entreprise.
|
||||||
|
|
||||||
|
### Ajouter une entreprise
|
||||||
|
|
||||||
|
Pour ajouter une entreprise dans la base, il y a un bouton `Ajouter une
|
||||||
|
entreprise` sur la page "Entreprises" qui vous emmène vers un formulaire
|
||||||
|
comportant 2 partie, une partie entreprise avec tous les champs sur l'entreprise
|
||||||
|
(SIRET, nom, adresse, code postal, pays) puis une partie contact optionnelle
|
||||||
|
avec les champs concernant le contact de cette entreprise (nom, prenom,
|
||||||
|
téléphone mail, poste, service) avec au moins un moyen de contact (téléphone ou
|
||||||
|
mail). Un site par défaut est automatiquement créé avec les informations de
|
||||||
|
l'entreprise.
|
||||||
|
|
||||||
|
En saisissant un SIRET dans le formulaire d'ajout d'entreprise, le formulaire
|
||||||
|
peut auto remplir le formulaire si le SIRET saisi correspond à celle d'une
|
||||||
|
entreprise.
|
||||||
|
Il auto-remplit les champs: nom, adresse, code postal.
|
||||||
|
|
||||||
|
### Modifier une entreprise
|
||||||
|
|
||||||
|
Pour modifier une entreprise, on peut le faire à partir de la liste des
|
||||||
|
entreprises ou alors sur la fiche entreprise de l'entreprise avec le bouton
|
||||||
|
`Modifier` sous les informations de l'entreprise. Toutes les informations de
|
||||||
|
l'entreprise peuvent être modifiés sauf le SIRET.
|
||||||
|
|
||||||
|
Les champs sont préremplis avec les informations actuelles de l'entreprise
|
||||||
|
|
||||||
|
### Activer/Désactiver une entreprise
|
||||||
|
|
||||||
|
On peut activer et désactiver une entreprise, on peut le faire à partir de la
|
||||||
|
liste des entreprises ou alors sur la fiche entreprise de l'entreprise avec le
|
||||||
|
bouton `Désactiver` ou `Activer`. On peut écrire une note sur la désactivation
|
||||||
|
de la fiche entreprise.
|
||||||
|
|
||||||
|
### Validation d'une entreprise
|
||||||
|
|
||||||
|
Les administrateurs du module gestion des relations entreprises doivent valider
|
||||||
|
les entreprises saisies par les utilisateurs pour qu'il soit affichés dans la
|
||||||
|
liste des entreprises.
|
||||||
|
|
||||||
|
### Ajouter et modifier un site
|
||||||
|
|
||||||
|
Pour ajouter/modifier un site sur une fiche entreprise, il y a un bouton
|
||||||
|
`Ajouter site` et un autre bouton `Modifier` sous les informations d'un site sur
|
||||||
|
la fiche entreprise qui vous emmène vers un formulaire pour ajouter un site ou
|
||||||
|
modifier un site. (nom unique)
|
||||||
|
|
||||||
|
### Ajouter un correspondant
|
||||||
|
|
||||||
|
On peut ajouter un correspondant à une entreprise avec le bouton `Ajouter
|
||||||
|
correspondant` présent sous les informations des sites qui vous emmène vers un
|
||||||
|
formulaire avec plusieurs champs (nom, prénom, téléphone, mail, poste, service).
|
||||||
|
Les champs nom, prénom sont obligatoires. Il faut que le contact possède au
|
||||||
|
moins un moyen de contact c'est-à-dire soit un téléphone, soit un mail. Le poste
|
||||||
|
et le service dans lequel il travaille est optionel.
|
||||||
|
|
||||||
|
Les contacts ne peuvent pas avoir le même nom et prénom au sein d'une même entreprise.
|
||||||
|
|
||||||
|
On peut saisir plusieurs correspondants en une seule fois sur le même formulaire
|
||||||
|
avec le bouton `Ajouter un correspondant`.
|
||||||
|
|
||||||
|
### Modifier un correspondant
|
||||||
|
|
||||||
|
Pour modifier un correspondant, on peut le faire avec le bouton `Modifier
|
||||||
|
correspondant` sous les informations du correspondant présent sur la fiche
|
||||||
|
entreprise de celle-ci. Toutes les informations du correspondant peuvent être
|
||||||
|
modifiés.
|
||||||
|
|
||||||
|
Les champs sont préremplis avec les informations actuelles du contact.
|
||||||
|
|
||||||
|
### Supprimer un correspondant
|
||||||
|
|
||||||
|
Pour supprimer un correspondant, on peut le faire avec le bouton `Supprimer correspondant`.
|
||||||
|
|
||||||
|
### Page offres expirés
|
||||||
|
|
||||||
|
C'est une page qui regroupe toutes les offres dont la date d'expiration est
|
||||||
|
passées. Elle est accessible sur chaque fiche entreprise avec le bouton `Voir
|
||||||
|
les offres expirées`.
|
||||||
|
|
||||||
|
### Pages "Correspondants"
|
||||||
|
|
||||||
|
C'est une page qui affiche la liste des contacts avec le nom de leur entreprise
|
||||||
|
cliquable qui envoie sur la fiche entreprise de l'entreprise.
|
||||||
|
|
||||||
|
### Exportation/Importation des données
|
||||||
|
|
||||||
|
Les données de la base sont exportables en .xlxs avec le bouton présent sur la
|
||||||
|
page "Entreprises" `Exporter les données`. La feuille Excel est composée de 3
|
||||||
|
feuilles:
|
||||||
|
|
||||||
|
* Feuille "Entreprises"
|
||||||
|
* Feuille "Sites"
|
||||||
|
* Feuille "Correspondants"
|
||||||
|
|
||||||
|
On peut importer des données par fichier Excel (.xlxs) avec le bouton `Importer
|
||||||
|
des données` présent sur la page "Entreprises". Il faut récupérer la feuille
|
||||||
|
Excel exemple pour avoir les titres correctement présents avec le lien `Obtenir
|
||||||
|
la feuille excel à remplir` et le remplir. L'importation réussie s'il passe les
|
||||||
|
vérifications et sont directement ajoutés à la base.
|
||||||
|
|
||||||
|
Feuille importation:
|
||||||
|
* Feuille "Entreprises": création et modification d'entreprises
|
||||||
|
* Feuille "Sites": création et modification de sites / partie avec les titres en
|
||||||
|
rouges -> ajout de correspondant lié au site de la même ligne (1 seul ajout)
|
||||||
|
* Feuille "Correspondants": modification de correspondants uniquement
|
||||||
|
|
||||||
|
## Saisie et gestion des offres de stage et d'apprentissage
|
||||||
|
|
||||||
|
### Visibilité d'une offre
|
||||||
|
|
||||||
|
Une offre est lié à un ou plusieurs départements se qui change sa visibilité.
|
||||||
|
|
||||||
|
### Ajouter une offre
|
||||||
|
|
||||||
|
On peut ajouter une offre à une entreprise avec le bouton `Ajouter offre`
|
||||||
|
présent sur la fiche entreprise qui vous emmène vers un formulaire avec
|
||||||
|
plusieurs champs (intitulé, description, type de l'offre, missions, durée,
|
||||||
|
départements et date d'expiration).
|
||||||
|
|
||||||
|
### Modifier une offre
|
||||||
|
|
||||||
|
Pour modifier une offre, on peut le faire avec le bouton `Modifier l'offre` sous
|
||||||
|
les informations de l'offre présent sur la fiche entreprise de celle-ci. Toutes
|
||||||
|
les informations du peuvent être modifiés.
|
||||||
|
|
||||||
|
Les champs sont préremplis avec les informations actuelles de l'offre.
|
||||||
|
|
||||||
|
### Supprimer une offre
|
||||||
|
|
||||||
|
Pour supprimer une offre, on peut le faire avec le bouton `Supprimer l'offre`.
|
||||||
|
On peut supprimer toutes les offres.
|
||||||
|
|
||||||
|
### Attacher un fichier à une offre existante
|
||||||
|
|
||||||
|
On peut attacher un ou plusieurs fichiers à une offre avec le lien `Ajoutez un
|
||||||
|
fichier` sous les informations de l'offre qui vous emmène vers un formulaire ou
|
||||||
|
il faut choisir le fichier à attaché. Les extensions de fichier acceptés sont
|
||||||
|
.docx et .pdf
|
||||||
|
|
||||||
|
Le fichier est stocké sur le disque.
|
||||||
|
|
||||||
|
### Télécharger un fichier attaché
|
||||||
|
|
||||||
|
On peut télécharger un fichier attaché à une offre en cliquant sur le nom du
|
||||||
|
fichier.
|
||||||
|
|
||||||
|
### Supprimer un fichier attaché a une offre existante
|
||||||
|
|
||||||
|
Chaque fichier attaché à une offre peut être supprimé.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Saisie et gestion de la taxe d'apprentissage
|
||||||
|
|
||||||
|
### Ajout taxe d'apprentissage
|
||||||
|
|
||||||
|
Sur la fiche entreprise, il est possible de saisir la taxe d'apprentissage
|
||||||
|
versée par l'entreprise avec l'année, le montant et une note avec le bouton
|
||||||
|
`Ajouter taxe d'apprentissage`.
|
||||||
|
|
||||||
|
### Modifier/Supprimer taxe d'apprentissage
|
||||||
|
|
||||||
|
Il est possible de modifier et de supprimer les informations sur la taxe d'apprentissage.
|
||||||
|
|
||||||
|
## Historique des modifications des fiches entreprises
|
||||||
|
|
||||||
|
Toutes les opérations de création, modification, suppression est ajouté dans la
|
||||||
|
liste des dernières opérations de toutes les entreprises et sur leur propre
|
||||||
|
fiche entreprise qui sert d'historique des modifications.
|
||||||
|
|
||||||
|
## Ajouter un étudiant qui a déjà réalisé un stage ou une alternance au sein de l'entreprise
|
||||||
|
|
||||||
|
On peut ajouter un étudiant qui a déjà réalisé un stage ou une alternance au
|
||||||
|
sein de l'entreprise avec le bouton `Ajouter historique` qui vous emmène vers un
|
||||||
|
formulaire avec les champs étudiant (auto suggestion de nom d'étudiant selon la
|
||||||
|
saisie), type de l'offre, date début et date fin.
|
||||||
|
|
||||||
|
## Envoi des offres aux responsables de formations
|
||||||
|
|
||||||
|
### Envoi des offres aux responsables
|
||||||
|
|
||||||
|
Sous chaque offre, il y a un bouton `Envoyer offre` qui permet d'envoyer une
|
||||||
|
offre à un utilisateur de ScoDoc avec un champ (auto suggestion). Les offres
|
||||||
|
envoyées arrivent sur la page "Offres reçues"
|
||||||
|
(`.../ScoDoc/entreprise/offres_recues`)
|
||||||
|
|
||||||
|
Envoie a plusieurs utilisateurs possible avec le bouton `Ajouter un responsable` qui rajoute un champ.
|
||||||
|
|
||||||
|
### Page "Offres reçues"
|
||||||
|
|
||||||
|
La page "Offres reçues" affichent les offres qui ont été envoyés par d'autres utilisateurs ScoDoc.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,22 +1,43 @@
|
|||||||
|
|
||||||
# Mise en place de sauvegardes des bases de données ScoDoc
|
|
||||||
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 d'un accident majeur mais probable comme: crash de disque dur, bug, vol du serveur, incendie...
|
# 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
|
||||||
|
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
|
||||||
|
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. Le script donné ci-dessous peut se charger de gérer cela.
|
* 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.
|
||||||
|
|
||||||
* 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 doivent être sauvegardées dans une salle (voire un bâtiment) différente de celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une sauvegarde quotidienne (nocturne) est suffisante. Le script `/opt/scodoc/instance/Products/ScoDoc/misc/backup_to_remote_server.sh` peut être utilisé pour cela.
|
* 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
|
||||||
|
doivent être sauvegardées dans une salle (voire un bâtiment) différente de
|
||||||
|
celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une
|
||||||
|
sauvegarde quotidienne (nocturne) est suffisante.
|
||||||
|
|
||||||
Notons que ScoDoc sauvegarde certaines informations sous le répertoire `/opt/scodoc` (en particulier les photos, les documents archivés et divers réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en plus des bases de données SQL.
|
Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire
|
||||||
|
`/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
|
||||||
|
plus des bases de données SQL.
|
||||||
|
|
||||||
|
|
||||||
### Dump des bases de données
|
## Dump des bases de données
|
||||||
Le script `backup_db` (ou bien `backup_db2`, fournis dans le répertoire `.../ScoDoc/misc`) 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 local du serveur, qui doit bien entendu être sauvegardé par d'autres moyens, comme indiqué ci-dessus.
|
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
|
||||||
|
données SQL. Les données sont extraites de la base et écrites sur le disque
|
||||||
|
local du serveur, qui doit bien entendu être sauvegardé par d'autres moyens,
|
||||||
|
comme indiqué ci-dessus.
|
||||||
|
|
||||||
Le nouveau (mars 2014) script `backup_db2` permet de conserver des sauvegardes de chaque heure durant les 48 (par défaut) dernières heures, des sauvegardes quotidiennes des 40 derniers jours, hebdomadaires des 30 dernières semaines, et mensuelles des 200 derniers mois (tout ceci est paramétrable dans le script `.../ScoDoc/backup_rotation.sh`).
|
Le script `backup_db9` permet de conserver des sauvegardes de chaque heure
|
||||||
|
durant les 48 (par défaut) dernières heures, des sauvegardes quotidiennes des 40
|
||||||
|
derniers jours, hebdomadaires des 30 dernières semaines, et mensuelles des 200
|
||||||
|
derniers mois (tout ceci est paramétrable dans le script
|
||||||
|
`/opt/scodoc/tools/backups/backup_rotation.sh`).
|
||||||
|
|
||||||
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
|
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de
|
||||||
|
l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
|
||||||
|
|
||||||
|
|
||||||
En tant que `root` sur le serveur, faire:
|
En tant que `root` sur le serveur, faire:
|
||||||
@ -27,39 +48,79 @@ En tant que `root` sur le serveur, faire:
|
|||||||
```
|
```
|
||||||
et ajouter:
|
et ajouter:
|
||||||
```
|
```
|
||||||
10 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOUSERS
|
15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC
|
||||||
15 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOXXXX
|
|
||||||
20 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOYYYY
|
|
||||||
...
|
|
||||||
```
|
```
|
||||||
Remplacer `SCOXXXX` et `SCOYYYY` par les noms des bases de vos départements (la commande `psql -l` permet de lister toutes les bases).
|
(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;" alt="/!\" /> Attention, certaines informations sont stockées dans des fichiers et non dans la base de données: configuration du logiciel, photos des étudiants. Ce paragraphe ne traite que de la restauration à de la base de données.
|
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
|
||||||
|
alt="/!\" /> Attention, certaines informations sont stockées dans des fichiers
|
||||||
|
et non dans la base de données: configuration du logiciel, photos des étudiants.
|
||||||
|
Ce paragraphe ne traite que de la restauration de la base de données.
|
||||||
|
|
||||||
1. Choisir la sauvegarde à utiliser, en fonction de la date à partir de laquelle on a fait une erreur (eg suppression non intentionnelle d'un semestre...). Le fichier se trouve sous `/var/lib/postgresql/SCOXXX-BACKUPS`où `XXX` est le département concerné. Utiliser par exemple `ls -lrt` pour visualiser les sauvegardes triées par date. (Note: la version précédente du script écrivait dans `/var/lib/postgresql/BACKUP-SCOXXX`).
|
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
|
||||||
|
comptes utilisateurs.
|
||||||
|
|
||||||
|
1. Choisir la sauvegarde à utiliser, en fonction de la date à partir de
|
||||||
|
laquelle on a fait une erreur (par ex. suppression non intentionnelle d'un
|
||||||
|
semestre...). Le fichier se trouve sous
|
||||||
|
`/var/lib/postgresql/SCODOC-BACKUPS`où `XXX` est concerné. Utiliser par
|
||||||
|
exemple `ls -lrt` pour visualiser les sauvegardes triées par date.
|
||||||
|
|
||||||
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:
|
||||||
|
|
||||||
```
|
```
|
||||||
cp /var/lib/postgresql/SCOGEII-BACKUPS/backup.hourly/2014-03-04T05\:35/SCOGEII_pgdump.gz /tmp
|
cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp
|
||||||
gunzip /tmp/SCOGEII_pgdump.gz
|
gunzip /tmp/SCODOC_pgdump.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Recharger la base complète pour le département concerné. <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention, cette opération effacera et remplacera) le contenu de la base de données actuelle...
|
3. Recharger la base complète. <img src="/img/alert.png" style="vertical-align:
|
||||||
|
bottom; margin:0 0 0 0;" alt="/!\" /> Attention, cette opération effacera et
|
||||||
|
remplacera) le contenu de la base de données actuelle...
|
||||||
```
|
```
|
||||||
# en tant que root...
|
# en tant que root...
|
||||||
/etc/init.d/scodoc stop # arret du serveur
|
systemctl stop scodoc9 # arret du serveur
|
||||||
su postgres
|
su - scodoc
|
||||||
dropdb SCOXXX # <<< par exemple SCOGEII
|
dropdb SCODOC # <<< votre base production
|
||||||
pg_restore -C -d postgres /tmp/SCOXXX_pgdump # <<< changer le nom du fichier
|
createdb -E UTF-8 SCODOC
|
||||||
|
pg_restore -d SCODOC /tmp/SCODOC_pgdump.gz # (nom du fichier dump)
|
||||||
|
source venv/bin/activate
|
||||||
|
flask db upgrade # nécessaire seulement si sauvegarde ancienne
|
||||||
|
flask clear-cache
|
||||||
|
|
||||||
exit # retour a l'utilisateur root
|
exit # retour a l'utilisateur root
|
||||||
/etc/init.d/scodoc start # relance ScoDoc
|
systemctl start scodoc9 # relance ScoDoc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Déplacement de toute une installation
|
||||||
|
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
|
||||||
|
script
|
||||||
|
|
||||||
|
tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
|
||||||
|
|
||||||
|
Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement
|
||||||
|
la base de données SQL mais aussi tous les fichiers générés par votre ScoDoc:
|
||||||
|
photos, configurations locales, archives, PV de jurys, logos, etc (tout ceci
|
||||||
|
étant stocké sous `/opt/scodoc-data`).
|
||||||
|
|
||||||
|
Attention à l'espace disque: le répertoire destination (`/tmp`dans l'exemple
|
||||||
|
ci-dessus) doit avoir de l'espace (sinon utilisez un autre répertoire dans
|
||||||
|
lequel l'utilisateur `scodoc` puisse écrire, ou montez un autre disque. La
|
||||||
|
commande `df -h`est votre amie).
|
||||||
|
|
||||||
|
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
|
||||||
|
l'exemple ci-dessus) et utiliser
|
||||||
|
|
||||||
|
tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
|
||||||
|
|
||||||
|
(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
|
||||||
|
relancer le service).
|
||||||
|
|
||||||
|
|
||||||
|
1216
docs/ScoDoc9API.md
Normal file
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# API pour ScoDoc
|
# 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.
|
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.
|
Cette API est encore incomplète: n'hésitez pas à demander de nouveaux accès en écrivant à la liste de diffusion.
|
||||||
|
|
||||||
@ -868,7 +868,7 @@ Et un autre exemple en format JSON:
|
|||||||
|
|
||||||
## Absences
|
## Absences
|
||||||
* **`Absences/ListeAbsEtud`**
|
* **`Absences/ListeAbsEtud`**
|
||||||
* Paramètres: `etudid, abs_just_only, format`. `abs_just_only` spécifie si on veut les absences justifiées ou non.
|
* 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:
|
* Résultat: liste d'absences. Exemple:
|
||||||
```{jour: "2021-02-10", ampm: "0", description: "M2202", }```
|
```{jour: "2021-02-10", ampm: "0", description: "M2202", }```
|
||||||
(`ampm` vaut 1 le matin et 0 l'après-midi).
|
(`ampm` vaut 1 le matin et 0 l'après-midi).
|
||||||
@ -904,18 +904,17 @@ Et un autre exemple en format JSON:
|
|||||||
* Remarque: on peut spécifier plusieurs groupes.
|
* Remarque: on peut spécifier plusieurs groupes.
|
||||||
|
|
||||||
## Modules
|
## Modules
|
||||||
* **`Notes/do_moduleimpl_list`**
|
|
||||||
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]`
|
|
||||||
* Résultat: liste de moduleimpl
|
|
||||||
|
|
||||||
|
Fonctions retirées en 9.3.28: [voir la nouvelle API](ScoDoc9API.md).
|
||||||
|
|
||||||
|
* **`Notes/do_moduleimpl_list`**
|
||||||
|
|
||||||
* **`Notes/do_moduleimpl_withmodule_list`**
|
* **`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
|
## En savoir plus
|
||||||
Voir l'exemple complet d'utilisation de l'API JSON en Python, dans `misc/example-api-1.py`
|
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ L'export des résultats de ScoDoc vers Apogée se fait après le jury. Pour les
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
## 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.
|
||||||
|
111
docs/TestsScoDoc.md
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
|
||||||
|
# Tests de ScoDoc
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
su scodoc # si nécessaire
|
||||||
|
cd /opt/scodoc
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
## Lancement interactif
|
||||||
|
|
||||||
|
flask shell
|
||||||
|
|
||||||
|
Pour mémoire, un certains nombre de commandes en ligne facilitant la gestion de
|
||||||
|
ScoDoc sont disponibles, afficher la liste avec
|
||||||
|
|
||||||
|
flask --help
|
||||||
|
|
||||||
|
## Tests unitaires
|
||||||
|
|
||||||
|
On utilise `pytest`. Ainsi, la commande
|
||||||
|
|
||||||
|
pytest tests/unit
|
||||||
|
|
||||||
|
lance l'ensemble des tests unitaires.
|
||||||
|
|
||||||
|
## Tests Selenium (web)
|
||||||
|
|
||||||
|
TODO (Aurélien, JMP) *ce projet est abandonné pour l'instant*.
|
||||||
|
|
||||||
|
## Portail pour tests
|
||||||
|
|
||||||
|
Un faux portail "apogée" pour inscrire de faux étudiants avec photos. Utile pour tester les fonctions d'inscription/synchronisation, et aussi pour peupler rapidement une base de donnée.
|
||||||
|
|
||||||
|
Le code se trouve dans `tools/fakeportal/`.
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
Lancement:
|
||||||
|
|
||||||
|
/opt/scodoc/tools/fakeportal/fakeportal.py
|
||||||
|
|
||||||
|
## Tests de l'API ScoDoc9
|
||||||
|
|
||||||
|
L'API est [documentée ici](ScoDoc9API.md).
|
||||||
|
Des tests sont disponibles sous `scodoc/tests/api`. Le mécanisme de test est un
|
||||||
|
peu différent de celui des tests unitaire: on test un *client* de l'API. Il faut
|
||||||
|
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.
|
||||||
|
|
||||||
|
### Configuration du serveur pour tester l'API
|
||||||
|
|
||||||
|
1. modifier /opt/scodoc/.env pour indiquer
|
||||||
|
```
|
||||||
|
FLASK_ENV=test_api
|
||||||
|
FLASK_DEBUG=1
|
||||||
|
```
|
||||||
|
2. En tant qu'utilisateur scodoc, lancer:
|
||||||
|
```
|
||||||
|
tools/create_database.sh --drop SCODOC_TEST_API
|
||||||
|
flask db upgrade
|
||||||
|
flask sco-db-init --erase
|
||||||
|
flask init-test-database
|
||||||
|
```
|
||||||
|
|
||||||
|
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,
|
||||||
|
l'initialiser et la peupler de données fictives pour les tests.
|
||||||
|
|
||||||
|
3. Relancer ScoDoc:
|
||||||
|
```
|
||||||
|
flask run --host 0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration du client de test API
|
||||||
|
1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans
|
||||||
|
`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
|
||||||
|
votre serveur).
|
||||||
|
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:
|
||||||
|
```
|
||||||
|
SCODOC_URL = "http://localhost:5000/"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lancement des tests de l'API
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
```
|
||||||
|
cd /opt/scodoc/
|
||||||
|
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,36 +0,0 @@
|
|||||||
|
|
||||||
# Tests de ScoDoc7
|
|
||||||
|
|
||||||
## Lancement interactif
|
|
||||||
|
|
||||||
Un script permet de lancer ScoDoc7 en mode interactif, et d'exécuter au préalable des scripts (de test ou de création d'objets divers).
|
|
||||||
|
|
||||||
cd /opt/scodoc/Products/ScoDoc
|
|
||||||
# Lance le script scotests/test_basic.py
|
|
||||||
scotests/scointeractive.sh -r TEST00 scotests/test_basic.py
|
|
||||||
|
|
||||||
L'option `-r` utilisée ci-dessus va recréer la base SQL du département `TEST00` (et l'*effacer avant si elle existe*).
|
|
||||||
|
|
||||||
Attention: la base utilisateurs étant à part, s'assurer que les utilisateurs utilisés dans vos scripts de test existent au préalable.
|
|
||||||
|
|
||||||
|
|
||||||
## Tests unitaires
|
|
||||||
|
|
||||||
TODO (Fares)
|
|
||||||
|
|
||||||
## Tests Selenium (web)
|
|
||||||
|
|
||||||
TODO (Aurélien)
|
|
||||||
|
|
||||||
## Portail pour tests
|
|
||||||
|
|
||||||
Un faux portail "apogée" pour inscrire de faux étudiants avec photos. Utile pour tester les fonctions d'inscription/synchronisation, et aussi pour peupler rapidement une base de donnée.
|
|
||||||
|
|
||||||
Le code se trouve dans `scotests/fakeportal/`.
|
|
||||||
|
|
||||||
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`.
|
|
||||||
|
|
||||||
/opt/scodoc/Products/ScoDoc/scotests/fakeportal/fakeportal.py
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
# É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)
|
## É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);
|
||||||
|
|
||||||
@ -51,23 +51,16 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
|
|||||||
|
|
||||||
* [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);
|
||||||
|
|
||||||
## Établissements ayant contribué au développement de ScoDoc
|
|
||||||
|
|
||||||
|
|
||||||
* [IUT A de Lille](http://www-iut.univ-lille1.fr) (depuis 2010) 7 départements;
|
|
||||||
|
|
||||||
* [IUT du Havre](http://www-iut.univ-lehavre.fr/), 10 départements et 3 années spéciales, soit environ 1800 étudiants;
|
|
||||||
|
|
||||||
* [IUT de Ville d'Avray](http://www.cva.u-paris10.fr/iut) (depuis 2008) 3 départements (GEII, Carrières Sociales et GEA) et 3 licences pro (350 étudiants/an, données de 2012);
|
|
||||||
|
|
||||||
* [International Business School](http://www.iscid-co.fr/), Institut Supérieur de Commerce International de Dunkerque – Côte d’Opale (Université du Littoral).
|
|
||||||
|
|
||||||
## IUT utilisateurs
|
## IUT utilisateurs
|
||||||
* [IUT d'Amiens](http://www.iut-amiens.fr/) tous les départements (6, soit 1850 étudiants), depuis 2014;
|
* [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii),
|
||||||
|
(site de Salon);
|
||||||
* [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii) (site de Salon);
|
|
||||||
|
* [IUT Aix-Marseille](http://iut.univ-amu.fr/), Mesures Physiques (depuis 2012) et Informatique;
|
||||||
* [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;
|
||||||
|
|
||||||
|
* [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;
|
||||||
|
|
||||||
@ -75,55 +68,89 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
|
|||||||
|
|
||||||
* [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 Brest](http://www.iut-brest.fr) depuis 2009, 4 départements (DUT et licences pro) à Brest et 2 à Morlaix, environ 1350 étudiants suivis/an;
|
* [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 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 (détails?);
|
* IUT de Calais;
|
||||||
|
|
||||||
* [IUT de Colmar](http://www.iutcolmar.uha.fr) (Université de Haute Alsace), département R&T et GB (depuis 2006);
|
* [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
|
||||||
|
: 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 d'Evry Val d’Essonne](http://www.iut-evry.fr), départements GMP, QLIO, SGM, GEA et GLT;
|
* [IUT d'Évry Val d’Essonne](http://www.iut-evry.fr), départements GMP, QLIO,
|
||||||
|
SGM, GEA et MLT;
|
||||||
|
|
||||||
|
* 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, GLT, 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/) (départements GEA, IC, R&T, GB et licences pro, soit 550 étudiants/ans depuis 2009);
|
* [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
|
||||||
|
2009;
|
||||||
|
|
||||||
|
* [IUT Le Havre](http://www-iut.univ-lehavre.fr/), 10 départements et 3 années spéciales, soit environ 1800 étudiants;
|
||||||
|
|
||||||
* [http://www.iut.univ-littoral.fr](IUT du Littoral Côte d'Opale), tous les départements (2018);
|
* [IUT Le Mans](https://iut.univ-lemans.fr), 4 départements (GEA, CHIMIE, GMP, MP), environ 1000 étudiants;
|
||||||
|
|
||||||
* [IUT de Lorient](http://www-iutlorient.univ-ubs.fr) départements GTE, GIML, QLIO, GCGP, HSE;
|
* [IUT A de Lille](http://www-iut.univ-lille1.fr), (depuis 2010) 7
|
||||||
|
départements;
|
||||||
|
|
||||||
|
* [IUT du Littoral Côte d'Opale](http://www.iut.univ-littoral.fr), tous les départements (2018);
|
||||||
|
|
||||||
* [IUT de Marseille](http://iut.univ-amu.fr/) (depuis 2007) départements ?
|
* [IUT de Lorient & Pontivy](http://www-iutlorient.univ-ubs.fr), départements
|
||||||
|
GTE, GIML, QLIO, GCGP, HSE;
|
||||||
|
|
||||||
* [IUT de Metz](http://www.iut.univ-metz.fr) (depuis 2011), départements GMP, TC ;
|
* [IUT de Mantes](http://www.iut-mantes.uvsq.fr), départements GIM et GMP (Université de Versailles St Quentin en Yvelines);
|
||||||
|
|
||||||
* [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/) (depuis 2014), départements GEA, GEII, GLT, GMP;
|
* [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 Mulhouse](http://www.iutmulhouse.uha.fr/), depuis 2014, départements
|
||||||
|
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 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, GMP, SGM, et [Polytech Montpellier](https://www.polytech.umontpellier.fr));
|
* [IUT de Nîmes](https://iut-nimes.edu.umontpellier.fr/), depuis 2019, GEII,
|
||||||
|
GMP, SGM, et [Polytech Montpellier](https://www.polytech.umontpellier.fr);
|
||||||
|
|
||||||
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr) département Informatique, Année Spéciale, L3 Miage et un DU;
|
* [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 Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot) Mesures Physiques;
|
* [IUT d'Orsay](https://www.iut-orsay.universite-paris-saclay.fr/);
|
||||||
|
|
||||||
|
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr);
|
||||||
|
|
||||||
|
* [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot),
|
||||||
|
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 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) (GEII, autres ?, 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/fr/accueil.html), département Informatique, depuis 2011;
|
* [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);
|
||||||
|
|
||||||
@ -135,8 +162,11 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
|
|||||||
|
|
||||||
* [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 Villeurbanne (Lyon 1)](http://iut.univ-lyon1.fr/) département GEII, environ 220 inscrits/an.
|
* [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 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);
|
||||||
@ -145,7 +175,10 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
|
|||||||
|
|
||||||
* Master ISB, Université Sorbonne Paris Nord;
|
* Master ISB, Université Sorbonne Paris Nord;
|
||||||
|
|
||||||
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et gestion, AUF);
|
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et
|
||||||
|
gestion, AUF);
|
||||||
|
|
||||||
|
* 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);
|
||||||
|
|
||||||
|
BIN
docs/assets/grenouille_bleue.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
docs/assets/images/android-chrome-192x192.png
Executable file
After Width: | Height: | Size: 9.5 KiB |
BIN
docs/assets/images/android-chrome-512x512.png
Executable file
After Width: | Height: | Size: 27 KiB |
BIN
docs/assets/images/apple-touch-icon.png
Executable file
After Width: | Height: | Size: 8.7 KiB |
BIN
docs/assets/images/favicon-16x16.png
Executable file
After Width: | Height: | Size: 502 B |
BIN
docs/assets/images/favicon-32x32.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
docs/assets/images/favicon.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
2
docs/attachments/scodoc.list
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# ScoDoc repository
|
||||||
|
deb http://scodoc.org/repo bullseye main
|
BIN
docs/fig/GrapheUser.odg
Normal file
BIN
docs/fig/GrapheUser.png
Normal file
After Width: | Height: | Size: 127 KiB |
BIN
docs/fig/but-bul-bdx.png
Normal file
After Width: | Height: | Size: 228 KiB |
BIN
docs/fig/but-bul-lille.png
Normal file
After Width: | Height: | Size: 174 KiB |
BIN
docs/fig/but-competences-ues.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
docs/fig/but-dialog-eval-create.png
Normal file
After Width: | Height: | Size: 421 KiB |
BIN
docs/fig/but-exemple-calcul-notes.png
Normal file
After Width: | Height: | Size: 171 KiB |
BIN
docs/fig/but-ref-comp-ex-commente.png
Normal file
After Width: | Height: | Size: 373 KiB |
BIN
docs/fig/but-ref-comp-ex-geii.jpg
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
docs/fig/but-tableau-evals-module-ko.png
Normal file
After Width: | Height: | Size: 89 KiB |
BIN
docs/fig/but-tableau-evals-module-ok.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
docs/fig/but-validation-ue.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
docs/img/API_Chart.odg
Normal file
BIN
docs/img/API_Chart.png
Normal file
After Width: | Height: | Size: 260 KiB |
2999
docs/img/API_Chart.svg
Normal file
After Width: | Height: | Size: 337 KiB |
102
docs/index.md
@ -1,24 +1,38 @@
|
|||||||
# ScoDoc: un logiciel libre pour le suivi de la scolarité
|
# ScoDoc: un logiciel libre pour le suivi de la scolarité
|
||||||
|
|
||||||
|
|
||||||
ScoDoc est un logiciel libre créé par Emmanuel Viennet pour suivre la scolarité des étudiants universitaires. Il est principalement utilisé dans les IUT, mais aussi apprécié par plusieurs Écoles et Masters. Il fournit notamment:
|
ScoDoc est un logiciel libre créé par Emmanuel Viennet pour suivre la scolarité
|
||||||
|
des étudiants universitaires. Il est principalement utilisé dans les IUT, mais
|
||||||
|
aussi apprécié par plusieurs Écoles et Masters en France et à l'étranger. Il
|
||||||
|
fournit notamment:
|
||||||
|
|
||||||
- suivi précis de la progression des étudiants, évaluations formatives et certificatives;
|
- suivi précis de la progression des étudiants, évaluations formatives et
|
||||||
|
certificatives
|
||||||
- saisie et gestion des notes;
|
- saisie et gestion des notes;
|
||||||
- aide à la décision pour les jurys;
|
- aide à la décision pour les jurys;
|
||||||
- listes des étudiants (groupes, trombinoscopes, bordereaux divers);
|
- listes des étudiants (groupes, trombinoscopes, bordereaux divers);
|
||||||
- suivi de l'assiduité (saisie et visualisation des absences);
|
- suivi de l'assiduité (saisie et visualisation des absences);
|
||||||
- tableaux de bords, rapports statistiques sur la formation (suivis de cohortes, ...) utiles pour l'évaluation et le suivi des formations;
|
- tableaux de bords, rapports statistiques sur la formation (suivis de
|
||||||
|
cohortes, ...) utiles pour l'évaluation et le suivi des formations;
|
||||||
- édition des procès-verbaux, bulletins et autres documents liés à la scolarité.
|
- édition des procès-verbaux, bulletins et autres documents liés à la scolarité.
|
||||||
|
|
||||||
|
|
||||||
ScoDoc est un *logiciel libre*: vous pouvez [participer à son développement](Contribuer.md).
|
ScoDoc est un *logiciel libre*: vous pouvez [participer à son développement](Contribuer.md).
|
||||||
|
|
||||||
ScoDoc s'utilise sur un navigateur web standard, avec connexions sécurisées; pour obtenir un accès sur un *serveur de démo* (réservé aux IUT), contacter: <notes@listes.univ-paris13.fr> . Pour installer le logiciel sur votre serveur, voir le [guide d'installation sur Debian 10](GuideInstallDebianDix.md).
|
ScoDoc s'utilise sur un navigateur web standard: les utilisateurs n'ont rien à
|
||||||
|
installer. Les établissements ou écoles doivent configurer un serveur: voir le [guide
|
||||||
|
d'installation sur Debian 11](GuideInstallDebian11.md). La version ScoDoc 9 est
|
||||||
|
parue le 19 septembre 2021, la version 9.2 en avril 2022. Les mises à jour sont
|
||||||
|
appliquées régulièrement.
|
||||||
|
|
||||||
ScoDoc est utilisé dans de nombreux établissement français et étrangers, **dont au moins 58 IUT**: [liste des utilisateurs connus de ScoDoc](UtilisateursScoDoc.md).
|
ScoDoc est utilisé dans de nombreux établissement français et étrangers, **dont
|
||||||
|
au moins 58 IUT**: [liste des utilisateurs connus de
|
||||||
|
ScoDoc](UtilisateursScoDoc.md).
|
||||||
|
|
||||||
Depuis 2020, ScoDoc est soutenu par une [association à but non lucratif (1901)](AssociationScoDoc.md), à laquelle tous les départements ou établissements utilisateurs sont **invités à adhérer**. Bulletin d'adhésion à retourner à `Emmanuel.Viennet at gmail.com`.
|
Depuis 2020, ScoDoc est soutenu par une [association à but non lucratif
|
||||||
|
(1901)](AssociationScoDoc.md), à laquelle tous les départements ou
|
||||||
|
établissements utilisateurs sont **invités à adhérer**. Bulletin d'adhésion à
|
||||||
|
retourner à `Emmanuel.Viennet at gmail.com`.
|
||||||
|
|
||||||
## Présentation générale
|
## Présentation générale
|
||||||
|
|
||||||
@ -26,44 +40,94 @@ Depuis 2020, ScoDoc est soutenu par une [association à but non lucratif (1901)]
|
|||||||
|
|
||||||
- Quelques <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>
|
- Quelques <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>
|
||||||
|
|
||||||
- Présentation au colloque du [CRI-IUT](https://www.criiut.fr/) en 2013: [diapos en pdf](papers/presScoDocCRIIUT2013.pdf)
|
- Ancienne présentation au colloque du [CRI-IUT](https://www.criiut.fr/) en 2013: [diapos en pdf](papers/presScoDocCRIIUT2013.pdf)
|
||||||
- Un très ancien [article sur ScoDoc](papers/scodoc-reunion2007.pdf)
|
- Un très ancien [article sur ScoDoc](papers/scodoc-reunion2007.pdf)
|
||||||
|
|
||||||
|
|
||||||
## Communauté d'utilisateurs
|
## Communauté d'utilisateurs
|
||||||
|
|
||||||
|
- Le Discord des utilisateurs: assistance chat ou audio [rejoindre le salon](https://discord.gg/ybw6ugtFsZ)
|
||||||
- [Listes de diffusion e-mail](ListesDeDiffusion.md)
|
- [Listes de diffusion e-mail](ListesDeDiffusion.md)
|
||||||
- Vous pouvez signaler ici des bugs ou déposer des suggestions d'amélioration via les "tickets":
|
- Vous pouvez signaler ici des bugs ou déposer des suggestions d'amélioration via les "tickets":
|
||||||
* [Liste des tickets en cours](https://scodoc.org/git/viennet/ScoDoc/issues)
|
* [Liste des tickets en cours](https://scodoc.org/git/viennet/ScoDoc/issues)
|
||||||
* Déclarer un nouveau ticket: demander un compte sur la liste scodoc-devel (lien ci-dessus).
|
* Déclarer un nouveau ticket: demander un compte sur la liste `scodoc-devel` (lien ci-dessus).
|
||||||
- [Contribuer à ScoDoc](Contribuer.md)
|
- [Contribuer à ScoDoc](Contribuer.md)
|
||||||
|
|
||||||
## Actualités
|
## Actualités
|
||||||
### Quatre stagiaires (printemps 2021)
|
|
||||||
|
### Parution de ScoDoc 9
|
||||||
|
Version majeure, avec une architecture logicielle complètement remaniée. Cette
|
||||||
|
version modernise l'infrastructure logicielle (maintenant basée sur Python
|
||||||
|
3/Flask/postgresql) et propose de nombreuses améliorations, notamment pour la
|
||||||
|
gestion du *[Bachelor Universitaire de Technologie (BUT)](BUT.md)*.
|
||||||
|
|
||||||
|
### Contrats d'apprentissage
|
||||||
|
|
||||||
|
Deux étudiants ont été recrutés (LP IUT Orléans, et IUT Villetaneuse):
|
||||||
|
|
||||||
|
- développement d'une nouvelle API pour ScoDoc 9;
|
||||||
|
- développement d'un nouveau module de gestion des relations entreprises
|
||||||
|
(fichier, contacts, stages, alternance).
|
||||||
|
|
||||||
|
|
||||||
|
### Quatre stagiaires
|
||||||
|
|
||||||
- version spéciale pour mobiles, développée par un stagiaire de l'association;
|
- version spéciale pour mobiles, développée par un stagiaire de l'association;
|
||||||
- développements de tests unitaires et fonctionnels, par deux stagiaires, l'un avec l'association, l'autre à l'IUT de Lille.
|
- développements de tests unitaires et fonctionnels, par deux stagiaires, l'un
|
||||||
- affichage et édition des référentiels de BUT, avec un stagiaire de l'association.
|
avec l'association, l'autre à l'IUT de Lille.
|
||||||
|
- affichage et édition des référentiels de BUT, avec un stagiaire de
|
||||||
|
l'association.
|
||||||
|
|
||||||
### Nouveaux développeurs
|
### Nouveaux développeurs
|
||||||
Plusieurs développeurs volontaires, la plupart enseignants en IUT, ont rejoint l'équipe ces derniers mois.
|
Plusieurs développeurs volontaires, la plupart enseignants en IUT, ont rejoint
|
||||||
|
l'équipe ces derniers mois.
|
||||||
|
|
||||||
### Bachelor Universitaire de Technologie (BUT) et ScoDoc
|
### Bachelor Universitaire de Technologie (BUT) et ScoDoc
|
||||||
ScoDoc évolue pour intégrer la gestion du BUT, en approche par compétences, avec des situations d'apprentissage et d'évaluation (SAÉs) et des ressources pédagogiques. ScoDoc n'a pas vocation à devenir un portfolio APC, mais continuera à vous aider à suivre, évaluer et noter vos étudiants, au plus près de vos pratiques. Nous attendons le cadrage officiel du BUT pour publier le code de calcul des notes BUT.
|
ScoDoc évolue pour intégrer la gestion du BUT, en approche par compétences, avec
|
||||||
|
des situations d'apprentissage et d'évaluation (SAÉs) et des ressources
|
||||||
|
pédagogiques. ScoDoc n'a pas vocation à devenir un portfolio APC, mais
|
||||||
|
continuera à vous aider à suivre, évaluer et noter vos étudiants, au plus près
|
||||||
|
de vos pratiques. Voir [cette page pour plus d'informations](BUT.md).
|
||||||
|
|
||||||
Des formats de bulletins de notes adaptés seront proposés pour faciliter la compréhension des résultats par les étudiants et enseignants.
|
Des formats de bulletins de notes adaptés seront proposés pour faciliter la
|
||||||
|
compréhension des résultats par les étudiants et enseignants.
|
||||||
|
|
||||||
### ScoDoc et Pégase/PC-SCOL
|
### ScoDoc et Pégase/PC-SCOL
|
||||||
Nous sommes en contact avec l'équipe du projet Pégase/PC-SCOL, qui succédera dans certaines universités à Apogée. A court et moyen terme, ce nouvel outil ne rendra pas les mêmes services que ScoDoc. Nous étudions dès maintenant l'interfaçage des outils (via des API), qui a priori sera plus fluide et facile à mettre en œuvre qu'avec Apogée. ScoDoc et Pégase devraient cohabiter en bonne entente.
|
Nous sommes en contact avec l'équipe du projet Pégase/PC-SCOL, qui succédera
|
||||||
|
dans certaines universités à Apogée. A court et moyen terme, ce nouvel outil ne
|
||||||
|
rendra pas les mêmes services que ScoDoc. Nous étudions dès maintenant
|
||||||
|
l'interfaçage des outils (via des API), qui a priori sera plus fluide et facile
|
||||||
|
à mettre en œuvre qu'avec Apogée. ScoDoc et Pégase devraient cohabiter en bonne
|
||||||
|
entente.
|
||||||
|
|
||||||
### Feuille de route (roadmap)
|
### Feuille de route (roadmap)
|
||||||
Les prochaines versions de ScoDoc (*sous réserve !*):
|
Les prochaines versions de ScoDoc (*sous réserve !*):
|
||||||
|
|
||||||
- ScoDoc 9.0 : fin juin 2021 version remaniée en Python 3, avec version mobile.
|
|
||||||
|
|
||||||
- ScoDoc 9.1 : fin août 2021 gestion du bachelor (BUT)
|
- ScoDoc 9.3 : prévue en mai 2022
|
||||||
|
- tenue des jurys BUT et exports Apogée
|
||||||
- ScoDoc 9.2 : octobre 2021 nouvelles fonctionnalités liés au BUT.
|
- gestion des parcours (pour la mise en place des semestre)
|
||||||
|
|
||||||
|
|
||||||
|
- ScoDoc 9.2 : publiée en avril 2022 nouvelles fonctionnalités liées au BUT
|
||||||
|
- référentiels de compétences Orébut
|
||||||
|
- capitalisation des UE dans le BUT
|
||||||
|
- bonus/malus locaux
|
||||||
|
- bulletins BUT pdf
|
||||||
|
- nouveau module de gestion relations avec les entreprises
|
||||||
|
|
||||||
|
|
||||||
|
- ScoDoc 9.1 : décembre 2021 gestion du bachelor (BUT)
|
||||||
|
- type de formation BUT
|
||||||
|
- distinction SAE/ressources
|
||||||
|
- poids (coefs) des évaluations, affichage, édition
|
||||||
|
- coefs de modules (ressources, SAE): affichage et édition dans ScoDoc
|
||||||
|
- calculs moyennes modules et vérification conformité
|
||||||
|
- calcul des moyennes d'UE
|
||||||
|
- bulletin de note v1
|
||||||
|
|
||||||
|
- ScoDoc 9.0 : publiée le 19 sept. 2021, version complètement remaniée en
|
||||||
|
Python 3/Flask.
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
16
docs/javascripts/config.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
window.MathJax = {
|
||||||
|
tex: {
|
||||||
|
inlineMath: [["\\(", "\\)"]],
|
||||||
|
displayMath: [["\\[", "\\]"]],
|
||||||
|
processEscapes: true,
|
||||||
|
processEnvironments: true
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
ignoreHtmlClass: ".*|",
|
||||||
|
processHtmlClass: "arithmatex"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
document$.subscribe(() => {
|
||||||
|
MathJax.typesetPromise()
|
||||||
|
})
|
51
docs/misc/scodoc-repo.gpg.key
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mQINBGEkuIUBEAClK699yEifRP0TOVpslbEguSt59VMtTg8AYroPX5lalyB/ccdo
|
||||||
|
Z3hhFuzwTIQ/V7NG8P9OzFud/rKCH6gJLwlXum3a4/pHyg3Qj2naZsIRKEsy7SWp
|
||||||
|
YUmFS5MKWAynPVbUK1CuIdw1aU9/ENTL98FMBfDKA2l2vkFdDvYGDtZhJ243d1pW
|
||||||
|
7wq0nDuDCeNSh7QHS+sI9hNQ3loeIxGzvZD/89wTDJp5ihdcaw1tvU4EaCEqgAu2
|
||||||
|
hZ3luGsxsFcTqlbk0U26rWZlfDNhtHSmwtPobsHLD5p6OhjFgOhOiOJUe0Hp9VjQ
|
||||||
|
0Dkt6fyIxfU2UPZMEHhCByFsgHx2gfAZbi1orH6rmR0byVAJVbF58GEUXnuxNayq
|
||||||
|
sR1Bi+elWIoGxjs98Un4ho+LqBhZr0nSEqovYDMp9AgX8Rx+oAn8CB6EkDUHI8b6
|
||||||
|
BOrZFyGUt9UUQiIk7KkAH0VqdNxFtfqrwE1c1sc9RkEJcjxkLNaFPPyJKmpgtJfe
|
||||||
|
H4m2pX7EZH8NkvYhIMMRxSm5Jja6is2nJS+BLrLGiAjjYvGCqYq6Eurmjc+h6KKW
|
||||||
|
nLORHJCVkXwOYjJtX81fwos5cAcOmKz/QwoZPWU3QWvGq/KoAiTnFoQMwoagnVOA
|
||||||
|
55XhTLa1+V/3KpyrQupee4Uctj4doLeipZRuRXPcM/6A3z/XOMrucD6oUwARAQAB
|
||||||
|
tCdFbW1hbnVlbCBWaWVubmV0IDxlbW1hbnVlbEB2aWVubmV0Lm5ldD6JAjgEEwEI
|
||||||
|
ACIFAmEkuIUCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDm3l8G72kz3
|
||||||
|
Y2wP/R3lu/wYsIiO17ISbQfJyBSOArs/Rkbl+Y01p35Hb1HvQ4rmJHkPt/+NuIZk
|
||||||
|
iu0mR5B9f/3RRFZYvqraVWSXtbuputIXaClRiMRsk/xYfa+u5E+vFTcG/uM7yifF
|
||||||
|
rNT7zdr/064MDXewhAN6YZsaCJHOHL+Ga+vtc3NwDHdqPDAon4P6j4eDlZQ4heZ2
|
||||||
|
7DTXDiVsyqbf1UTSgDSmGyfNI6kCHh9LTYxnT3k3G5sKrGwqtfYOij3o35M3CvB4
|
||||||
|
e3YP2UFjCf33ymRgzJz/INiLMeJAMtGb1f0F0LeLNaeCrmUSS2/BZTNVE6h2CcR4
|
||||||
|
hGvWQKZSedvVaP2oZ34WxlcxDkwi84bVMX5W4lKxu26D2KjbPJhrgoVf7pt1yNKd
|
||||||
|
FeqsmP7r9uE5W/C/WdDxb6vvW4GN6gK8SzBz/iIAW3JPfxL4EUuRT8XMgkaaojZd
|
||||||
|
yWaxk9N2t08joWUnK7eI2LPX9zYNO2EZbPmXOoQyUH7O7KMMAvEQkWvIUtO3GERG
|
||||||
|
FeLktW6yI9UZ8tQ2H8IgPU0k+YoABJBnRy4PbfnzCTlza+E93VyyFgk5ZltdYHTP
|
||||||
|
jfSVx2GrWVGrURGMKrOIeDCgSDhrQzow3uj7AUtqLOP5zJM2nL131dJ4lNkeh7VL
|
||||||
|
banmZvZofhJFK0gAzhuJd0JTul3vesoVS8/frm9OfwI+kIRruQINBGEkuIUBEACz
|
||||||
|
USdULoaXJXB1LKsLM+6lXzywHWzgmA3B2aiikAsooedc1n7y/xR20FFpHkieDQbK
|
||||||
|
xUNPSF75dxrfLMMuG4QQYo+r1G3ujHgBrw6IfytP8h0fmPhIaZOYzlEKWF47eeOZ
|
||||||
|
18FBAMGRX+hA72cv/mARDlmPVh7K4Rdl9FAIANBuEftU70i0eNPKj+CBJ8/qE4JV
|
||||||
|
iCEvG3hfrmCI+Oe8dlJliKBVVW5L0oMLF777GLvHUuFdKG51TNRIeRcrz7F8/Aax
|
||||||
|
9CuY3SY5jezVGeDxH/ZiVZua5Y8b9kh8qDuQuAdGj7q9uQU6vNJ9BhfGD2ZUUX1V
|
||||||
|
/KmMBkv3nDg5Bkk9Puf+E2jc09mQkcOhuo3hSYmD1AWH/JFs+W6fYKVEMPinLGUC
|
||||||
|
v4l225Jdtu9Ah8N+SxsRrkg/tDuvXM1eka/Xyy/ppXmst8zodPLSDv3uGUvd4rmk
|
||||||
|
GKs047CZbfbiqd7OrqIHkdxGX50MzPoJ46eq5tKKwyZ24WgXW0MJ/2ML6iGVGsr5
|
||||||
|
0QK8JMMYpTYuDMgvfuo8P7LSqxVZ1wdyltCyDDqiE6TBPkvjTIE89f4BpAj54H4l
|
||||||
|
+h26tFisVR+Qmu1CAVvqFR1N7UD6s17K2GYcyQauDJpViMVRTla+I5aB6c3rJdZ4
|
||||||
|
MYLNxzbinD48nxlU6CiBrCQ3rU7HHGHUCsoGA4UK0QARAQABiQIfBBgBCAAJBQJh
|
||||||
|
JLiFAhsMAAoJEDm3l8G72kz38lAP/3GEKlJs1HYvMQ/UrZrORS+ykuEVaSmVQBVD
|
||||||
|
zONYzlgxgyYEFpdIf90+QEORk32KySV+2MnSnL5jeaAbFlBS8KQ2u7ldlA68esuo
|
||||||
|
T4HdNTLOa+XCDTF8AJzr7tmulPiU5k2EhUfYGdU5vOufF1wUc5vqqSWaoy+EXSc/
|
||||||
|
kymLObC7R/Bgr6rXEaXwIpxZQTmodUmQgHaVDL3PPABhEs8QD/pm3OM2Qk26+4+/
|
||||||
|
ICc+O0qmM59wbH73cmWP1CGKRrqp6l++oDG3I+LnxioGJ+uqcxH4FdSy3fqh30q3
|
||||||
|
RTFgknBRZKDmGOjvNiOrExXhM9MornNQ8bJQZGehuVi8iWmq1bgcJbFaFiCzYyL3
|
||||||
|
1dvhuMA4ql65KrgcCciJE3jCo0Lq5xXCEm/zhA/WNnYLOwBM+2au3QmyFlRjSJIf
|
||||||
|
9KFkpUG0psS6NI9DvnyaZrrvhz6sdspap7SY93Vllweg7yRYlI+vsTaxDjqs+WlN
|
||||||
|
+LSHZnC57Gssl9jwq6WBm7VlAoJZ2sipTqrwlYbD4VdcaMd9C8pLCsVa5etJKwlr
|
||||||
|
Pdg5l37Os2zgsP00NieX1P4HHmGzV1j1TsYrzaiCJ5g35h/lIqQV7z6ndvPX2TD2
|
||||||
|
eokuBieXFuxRPlscA+Diudyvl6jJ1ATJI48GUpcUg2sC7iM91IsG4tC9GGOrmAqV
|
||||||
|
LwbpXjdu
|
||||||
|
=MuGd
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
BIN
docs/papers/Adhesion-2022-2023-Association-ScoDoc.docx
Normal file
BIN
docs/papers/Adhesion-2022-2023-Association-ScoDoc.pdf
Normal file
BIN
docs/papers/SCODOC_import_notes_dans_apogee.pdf
Normal file
17
docs/samples/sample_departement-create.json.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
### departement-create
|
||||||
|
|
||||||
|
#### POST /departement/create
|
||||||
|
> `Content-Type: application/json`
|
||||||
|
>
|
||||||
|
> `{"acronym": "NEWONE" , "visible": true}`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"acronym": "NEWONE",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 6,
|
||||||
|
"visible": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
9
docs/samples/sample_departement-delete.json.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
### departement-delete
|
||||||
|
|
||||||
|
#### POST /departement/NEWONE/delete
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"OK": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
17
docs/samples/sample_departement-edit.json.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
### departement-edit
|
||||||
|
|
||||||
|
#### POST /departement/NEWONE/edit
|
||||||
|
> `Content-Type: application/json`
|
||||||
|
>
|
||||||
|
> `{"visible": false}`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"acronym": "NEWONE",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 6,
|
||||||
|
"visible": false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
56
docs/samples/sample_departement-etudiants.json.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
### departement-etudiants
|
||||||
|
|
||||||
|
#### GET /departement/TAPI/etudiants
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"civilite": "X",
|
||||||
|
"code_ine": "INE1",
|
||||||
|
"code_nip": "1",
|
||||||
|
"dept_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"nom": "COSTA",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"prenom": "SACHA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "2",
|
||||||
|
"code_nip": "NIP2",
|
||||||
|
"dept_id": 1,
|
||||||
|
"id": 2,
|
||||||
|
"nom": "NAUDIN",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"prenom": "SIMONE"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /departement/id/1/etudiants
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"civilite": "X",
|
||||||
|
"code_ine": "INE1",
|
||||||
|
"code_nip": "1",
|
||||||
|
"dept_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"nom": "COSTA",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"prenom": "SACHA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "2",
|
||||||
|
"code_nip": "NIP2",
|
||||||
|
"dept_id": 1,
|
||||||
|
"id": 2,
|
||||||
|
"nom": "NAUDIN",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"prenom": "SIMONE"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
130
docs/samples/sample_departement-formsemestres-courants.json.md
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
### departement-formsemestres-courants
|
||||||
|
|
||||||
|
#### GET /departement/TAPI/formsemestres_courants
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"block_moyennes": false,
|
||||||
|
"bul_bgcolor": "white",
|
||||||
|
"bul_hide_xml": false,
|
||||||
|
"date_debut": "01/09/2021",
|
||||||
|
"date_debut_iso": "2021-09-01",
|
||||||
|
"date_fin": "31/08/2022",
|
||||||
|
"date_fin_iso": "2022-08-31",
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"elt_annee_apo": null,
|
||||||
|
"elt_sem_apo": null,
|
||||||
|
"ens_can_edit_eval": false,
|
||||||
|
"etape_apo": "A1, A2, A3",
|
||||||
|
"etat": true,
|
||||||
|
"formation": {
|
||||||
|
"acronyme": "BUT R&T",
|
||||||
|
"code_specialite": null,
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"formation_code": "V1RET",
|
||||||
|
"formation_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"referentiel_competence_id": 1,
|
||||||
|
"titre": "BUT R&T",
|
||||||
|
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
|
||||||
|
"type_parcours": 700,
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"formation_id": 1,
|
||||||
|
"formsemestre_id": 1,
|
||||||
|
"gestion_compensation": false,
|
||||||
|
"gestion_semestrielle": false,
|
||||||
|
"id": 1,
|
||||||
|
"modalite": "FI",
|
||||||
|
"parcours": [],
|
||||||
|
"resp_can_change_ens": true,
|
||||||
|
"resp_can_edit": false,
|
||||||
|
"responsables": [],
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"semestre_id": 1,
|
||||||
|
"titre": "Semestre test",
|
||||||
|
"titre_formation": "BUT R&T",
|
||||||
|
"titre_num": "Semestre test semestre 1"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /departement/id/1/formsemestres_courants
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"block_moyennes": false,
|
||||||
|
"bul_bgcolor": "white",
|
||||||
|
"bul_hide_xml": false,
|
||||||
|
"date_debut": "01/09/2021",
|
||||||
|
"date_debut_iso": "2021-09-01",
|
||||||
|
"date_fin": "31/08/2022",
|
||||||
|
"date_fin_iso": "2022-08-31",
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"elt_annee_apo": null,
|
||||||
|
"elt_sem_apo": null,
|
||||||
|
"ens_can_edit_eval": false,
|
||||||
|
"etape_apo": "A1, A2, A3",
|
||||||
|
"etat": true,
|
||||||
|
"formation": {
|
||||||
|
"acronyme": "BUT R&T",
|
||||||
|
"code_specialite": null,
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"formation_code": "V1RET",
|
||||||
|
"formation_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"referentiel_competence_id": 1,
|
||||||
|
"titre": "BUT R&T",
|
||||||
|
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
|
||||||
|
"type_parcours": 700,
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"formation_id": 1,
|
||||||
|
"formsemestre_id": 1,
|
||||||
|
"gestion_compensation": false,
|
||||||
|
"gestion_semestrielle": false,
|
||||||
|
"id": 1,
|
||||||
|
"modalite": "FI",
|
||||||
|
"parcours": [],
|
||||||
|
"resp_can_change_ens": true,
|
||||||
|
"resp_can_edit": false,
|
||||||
|
"responsables": [],
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"semestre_id": 1,
|
||||||
|
"titre": "Semestre test",
|
||||||
|
"titre_formation": "BUT R&T",
|
||||||
|
"titre_num": "Semestre test semestre 1"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
18
docs/samples/sample_departement-formsemestres_ids.json.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
### departement-formsemestres_ids
|
||||||
|
|
||||||
|
#### GET /departement/TAPI/formsemestres_ids
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /departement/id/1/formsemestres_ids
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
18
docs/samples/sample_departement-logo.json.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
### departement-logo
|
||||||
|
|
||||||
|
#### GET /departement/TAPI/logo/demo
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Content-Disposition": "inline; filename=logo_demo.png",
|
||||||
|
"Content-Type": "image/png"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /departement/id/1/logo/demo
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Content-Disposition": "inline; filename=logo_demo.png",
|
||||||
|
"Content-Type": "image/png"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
18
docs/samples/sample_departement-logos.json.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
### departement-logos
|
||||||
|
|
||||||
|
#### GET /departement/TAPI/logos
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
"demo",
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /departement/id/1/logos
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
"demo",
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
24
docs/samples/sample_departement.json.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
### departement
|
||||||
|
|
||||||
|
#### GET /departement/TAPI
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /departement/id/1
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
11
docs/samples/sample_departements-ids.json.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
### departements-ids
|
||||||
|
|
||||||
|
#### GET /departements_ids
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
23
docs/samples/sample_departements.json.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
### departements
|
||||||
|
|
||||||
|
#### GET /departements
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acronym": "AA",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 2,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
2920
docs/samples/sample_etudiant-formsemestre-bulletin.json.md
Normal file
21
docs/samples/sample_etudiant-formsemestre-groups.json.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
### etudiant-formsemestre-groups
|
||||||
|
|
||||||
|
#### GET /etudiant/etudid/11/formsemestre/1/groups
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"bul_show_rank": false,
|
||||||
|
"formsemestre_id": 1,
|
||||||
|
"group_id": 1,
|
||||||
|
"group_name": null,
|
||||||
|
"groups_editable": true,
|
||||||
|
"id": 1,
|
||||||
|
"numero": null,
|
||||||
|
"partition_id": 1,
|
||||||
|
"partition_name": null,
|
||||||
|
"show_in_lists": true
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
2912
docs/samples/sample_etudiant-formsemestres-bulletin.json.md
Normal file
134
docs/samples/sample_etudiant-formsemestres.json.md
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
### etudiant-formsemestres
|
||||||
|
|
||||||
|
#### GET /etudiant/etudid/11/formsemestres
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"annee_scolaire": 2021,
|
||||||
|
"block_moyennes": false,
|
||||||
|
"bul_bgcolor": "white",
|
||||||
|
"bul_hide_xml": false,
|
||||||
|
"date_debut": "01/09/2021",
|
||||||
|
"date_debut_iso": "2021-09-01",
|
||||||
|
"date_fin": "31/08/2022",
|
||||||
|
"date_fin_iso": "2022-08-31",
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"elt_annee_apo": null,
|
||||||
|
"elt_sem_apo": null,
|
||||||
|
"ens_can_edit_eval": false,
|
||||||
|
"etape_apo": "A1, A2, A3",
|
||||||
|
"etat": true,
|
||||||
|
"formation": {
|
||||||
|
"acronyme": "BUT R&T",
|
||||||
|
"code_specialite": null,
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"formation_code": "V1RET",
|
||||||
|
"formation_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"referentiel_competence_id": 1,
|
||||||
|
"titre": "BUT R&T",
|
||||||
|
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
|
||||||
|
"type_parcours": 700,
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"formation_id": 1,
|
||||||
|
"formsemestre_id": 1,
|
||||||
|
"gestion_compensation": false,
|
||||||
|
"gestion_semestrielle": false,
|
||||||
|
"id": 1,
|
||||||
|
"modalite": "FI",
|
||||||
|
"parcours": [],
|
||||||
|
"resp_can_change_ens": true,
|
||||||
|
"resp_can_edit": false,
|
||||||
|
"responsables": [],
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"semestre_id": 1,
|
||||||
|
"session_id": "TAPI-BUT-FI-S1-2021",
|
||||||
|
"titre": "Semestre test",
|
||||||
|
"titre_court": "BUT R&T",
|
||||||
|
"titre_num": "Semestre test semestre 1"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /etudiant/ine/INE11/formsemestres
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"annee_scolaire": 2021,
|
||||||
|
"block_moyennes": false,
|
||||||
|
"bul_bgcolor": "white",
|
||||||
|
"bul_hide_xml": false,
|
||||||
|
"date_debut": "01/09/2021",
|
||||||
|
"date_debut_iso": "2021-09-01",
|
||||||
|
"date_fin": "31/08/2022",
|
||||||
|
"date_fin_iso": "2022-08-31",
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"elt_annee_apo": null,
|
||||||
|
"elt_sem_apo": null,
|
||||||
|
"ens_can_edit_eval": false,
|
||||||
|
"etape_apo": "A1, A2, A3",
|
||||||
|
"etat": true,
|
||||||
|
"formation": {
|
||||||
|
"acronyme": "BUT R&T",
|
||||||
|
"code_specialite": null,
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"formation_code": "V1RET",
|
||||||
|
"formation_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"referentiel_competence_id": 1,
|
||||||
|
"titre": "BUT R&T",
|
||||||
|
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
|
||||||
|
"type_parcours": 700,
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"formation_id": 1,
|
||||||
|
"formsemestre_id": 1,
|
||||||
|
"gestion_compensation": false,
|
||||||
|
"gestion_semestrielle": false,
|
||||||
|
"id": 1,
|
||||||
|
"modalite": "FI",
|
||||||
|
"parcours": [],
|
||||||
|
"resp_can_change_ens": true,
|
||||||
|
"resp_can_edit": false,
|
||||||
|
"responsables": [],
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"semestre_id": 1,
|
||||||
|
"session_id": "TAPI-BUT-FI-S1-2021",
|
||||||
|
"titre": "Semestre test",
|
||||||
|
"titre_court": "BUT R&T",
|
||||||
|
"titre_num": "Semestre test semestre 1"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
203
docs/samples/sample_etudiant.json.md
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
### etudiant
|
||||||
|
|
||||||
|
#### GET /etudiant/etudid/11
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"francais": null,
|
||||||
|
"id": 11,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "MADELEINE.FLEURY@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"fax": null,
|
||||||
|
"id": 11,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "INE11",
|
||||||
|
"code_nip": "11",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 11,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "FLEURY",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "MADELEINE",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /etudiant/ine/INE11
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"francais": null,
|
||||||
|
"id": 11,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "MADELEINE.FLEURY@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"fax": null,
|
||||||
|
"id": 11,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "INE11",
|
||||||
|
"code_nip": "11",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 11,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "FLEURY",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "MADELEINE",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /etudiant/nip/11
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"francais": null,
|
||||||
|
"id": 11,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "MADELEINE.FLEURY@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"fax": null,
|
||||||
|
"id": 11,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "INE11",
|
||||||
|
"code_nip": "11",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 11,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "FLEURY",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "MADELEINE",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
68
docs/samples/sample_etudiant_formsemestres.json.md
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
### etudiant_formsemestres
|
||||||
|
|
||||||
|
#### GET /etudiant/nip/11/formsemestres
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"annee_scolaire": 2021,
|
||||||
|
"block_moyennes": false,
|
||||||
|
"bul_bgcolor": "white",
|
||||||
|
"bul_hide_xml": false,
|
||||||
|
"date_debut": "01/09/2021",
|
||||||
|
"date_debut_iso": "2021-09-01",
|
||||||
|
"date_fin": "31/08/2022",
|
||||||
|
"date_fin_iso": "2022-08-31",
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"elt_annee_apo": null,
|
||||||
|
"elt_sem_apo": null,
|
||||||
|
"ens_can_edit_eval": false,
|
||||||
|
"etape_apo": "A1, A2, A3",
|
||||||
|
"etat": true,
|
||||||
|
"formation": {
|
||||||
|
"acronyme": "BUT R&T",
|
||||||
|
"code_specialite": null,
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"formation_code": "V1RET",
|
||||||
|
"formation_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"referentiel_competence_id": 1,
|
||||||
|
"titre": "BUT R&T",
|
||||||
|
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
|
||||||
|
"type_parcours": 700,
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"formation_id": 1,
|
||||||
|
"formsemestre_id": 1,
|
||||||
|
"gestion_compensation": false,
|
||||||
|
"gestion_semestrielle": false,
|
||||||
|
"id": 1,
|
||||||
|
"modalite": "FI",
|
||||||
|
"parcours": [],
|
||||||
|
"resp_can_change_ens": true,
|
||||||
|
"resp_can_edit": false,
|
||||||
|
"responsables": [],
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"semestre_id": 1,
|
||||||
|
"session_id": "TAPI-BUT-FI-S1-2021",
|
||||||
|
"titre": "Semestre test",
|
||||||
|
"titre_court": "BUT R&T",
|
||||||
|
"titre_num": "Semestre test semestre 1"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
212
docs/samples/sample_etudiants-clef.json.md
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
### etudiants-clef
|
||||||
|
|
||||||
|
#### GET /etudiants/etudid/11
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"francais": null,
|
||||||
|
"id": 11,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "MADELEINE.FLEURY@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"fax": null,
|
||||||
|
"id": 11,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "INE11",
|
||||||
|
"code_nip": "11",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 11,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "FLEURY",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "MADELEINE",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /etudiants/ine/INE11
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"francais": null,
|
||||||
|
"id": 11,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "MADELEINE.FLEURY@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"fax": null,
|
||||||
|
"id": 11,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "INE11",
|
||||||
|
"code_nip": "11",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 11,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "FLEURY",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "MADELEINE",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /etudiants/nip/11
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"francais": null,
|
||||||
|
"id": 11,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "MADELEINE.FLEURY@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 11,
|
||||||
|
"fax": null,
|
||||||
|
"id": 11,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "INE11",
|
||||||
|
"code_nip": "11",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 11,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "FLEURY",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "MADELEINE",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
162
docs/samples/sample_etudiants-courants.json.md
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
### etudiants-courants
|
||||||
|
|
||||||
|
#### GET /etudiants/courants
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"civilite": "X",
|
||||||
|
"code_ine": "INE1",
|
||||||
|
"code_nip": "1",
|
||||||
|
"dept_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"nom": "COSTA",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"prenom": "SACHA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "2",
|
||||||
|
"code_nip": "NIP2",
|
||||||
|
"dept_id": 1,
|
||||||
|
"id": 2,
|
||||||
|
"nom": "NAUDIN",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"prenom": "SIMONE"
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /etudiants/courants/long
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 1,
|
||||||
|
"francais": null,
|
||||||
|
"id": 1,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "SACHA.COSTA@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 1,
|
||||||
|
"fax": null,
|
||||||
|
"id": 1,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "X",
|
||||||
|
"code_ine": "INE1",
|
||||||
|
"code_nip": "1",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 1,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "COSTA",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "SACHA",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"admission": {
|
||||||
|
"anglais": null,
|
||||||
|
"annee": null,
|
||||||
|
"annee_bac": null,
|
||||||
|
"apb_classement_gr": null,
|
||||||
|
"apb_groupe": null,
|
||||||
|
"bac": null,
|
||||||
|
"boursier_prec": null,
|
||||||
|
"classement": null,
|
||||||
|
"codelycee": null,
|
||||||
|
"codepostallycee": null,
|
||||||
|
"commentaire": null,
|
||||||
|
"decision": null,
|
||||||
|
"etudid": 2,
|
||||||
|
"francais": null,
|
||||||
|
"id": 2,
|
||||||
|
"math": null,
|
||||||
|
"nomlycee": null,
|
||||||
|
"physique": null,
|
||||||
|
"qualite": null,
|
||||||
|
"rang": null,
|
||||||
|
"rapporteur": null,
|
||||||
|
"score": null,
|
||||||
|
"specialite": null,
|
||||||
|
"type_admission": null,
|
||||||
|
"villelycee": null
|
||||||
|
},
|
||||||
|
"adresses": [
|
||||||
|
{
|
||||||
|
"codepostaldomicile": null,
|
||||||
|
"description": null,
|
||||||
|
"domicile": null,
|
||||||
|
"email": "SIMONE.NAUDIN@example.com",
|
||||||
|
"emailperso": null,
|
||||||
|
"etudid": 2,
|
||||||
|
"fax": null,
|
||||||
|
"id": 2,
|
||||||
|
"paysdomicile": null,
|
||||||
|
"telephone": null,
|
||||||
|
"telephonemobile": null,
|
||||||
|
"typeadresse": "domicile",
|
||||||
|
"villedomicile": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"boursier": null,
|
||||||
|
"civilite": "F",
|
||||||
|
"code_ine": "2",
|
||||||
|
"code_nip": "NIP2",
|
||||||
|
"date_naissance": null,
|
||||||
|
"dept_acronym": "TAPI",
|
||||||
|
"dept_id": 1,
|
||||||
|
"dept_naissance": null,
|
||||||
|
"id": 2,
|
||||||
|
"lieu_naissance": null,
|
||||||
|
"nationalite": null,
|
||||||
|
"nom": "NAUDIN",
|
||||||
|
"nom_usuel": null,
|
||||||
|
"photo_filename": null,
|
||||||
|
"prenom": "SIMONE",
|
||||||
|
"scodoc7_id": null,
|
||||||
|
"statut": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
7
docs/samples/sample_evaluation-notes.json.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
### evaluation-notes
|
||||||
|
|
||||||
|
#### GET /evaluation/1/notes
|
||||||
|
```json
|
||||||
|
{}
|
||||||
|
```
|
||||||
|
|
1263
docs/samples/sample_formation-export.json.md
Normal file
1400
docs/samples/sample_formation-referentiel_competences.json.md
Normal file
26
docs/samples/sample_formation.json.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
### formation
|
||||||
|
|
||||||
|
#### GET /formation/1
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"acronyme": "BUT R&T",
|
||||||
|
"code_specialite": null,
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"formation_code": "V1RET",
|
||||||
|
"formation_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"referentiel_competence_id": 1,
|
||||||
|
"titre": "BUT R&T",
|
||||||
|
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
|
||||||
|
"type_parcours": 700,
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
29
docs/samples/sample_formations.json.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
### formations
|
||||||
|
|
||||||
|
#### GET /formations
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"acronyme": "BUT R&T",
|
||||||
|
"code_specialite": null,
|
||||||
|
"departement": {
|
||||||
|
"acronym": "TAPI",
|
||||||
|
"date_creation": "2022-08-20T12:00:00.000000+02:00",
|
||||||
|
"description": null,
|
||||||
|
"id": 1,
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
"dept_id": 1,
|
||||||
|
"formation_code": "V1RET",
|
||||||
|
"formation_id": 1,
|
||||||
|
"id": 1,
|
||||||
|
"referentiel_competence_id": 1,
|
||||||
|
"titre": "BUT R&T",
|
||||||
|
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
|
||||||
|
"type_parcours": 700,
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
10
docs/samples/sample_formations_ids.json.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
### formations_ids
|
||||||
|
|
||||||
|
#### GET /formations_ids
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|