Compare commits

..

4 Commits

Author SHA1 Message Date
ab48da84fd corrections et questions 2021-11-01 19:23:48 +01:00
39e5537121 modif page relations entreprires 2021-10-28 12:23:13 +02:00
138ea543c3 modif page relations entreprises 2021-10-27 19:18:59 +02:00
eb53123e96 ajout page relations entreprises 2021-10-26 10:42:43 +02:00
46 changed files with 1656 additions and 3459 deletions

3
.gitignore vendored
View File

@ -191,6 +191,3 @@ CVS
# MkDocs ScoDoc
site/
# Pycharm
.idea/

View File

@ -3,217 +3,32 @@
ScoDoc gère sa liste d'utilisateurs (enseignants, secrétaires) dans
une base de données SQL.
### Principes généraux
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 :
<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)
` En cas d'oubli de votre mot de passe cliquez ici pour le réinitialiser. `
### Base de données utilisateurs
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**.
#### Création d'un utilisateur (par formulaire)
La table **sco_users** contient:
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écidé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).
**Colonne** | **Type** || Contenu
---------- | ----- | -----
user_id | text | identifiant interne unique
user_name | text | nom de login
passwd | text | hash password
roles | text | liste des noms de rôles, séparés par des virgules
date_modif_passwd | date |
nom | text |
prenom | text |
email | text | adresse mail
dept | text | département de rattachement (exemple "RT")
<img src="/fig/GrapheUser.png" />
<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.
**SCODOC**.
La table **user** contient:
| **Colonne** | **Type** | Contenu | Modifié par |
|-------------------|-----------------------------|--------------------------------------------------------------|----------------|
| id | integer | identifiant interne unique | 1 |
| user_name | character varying(64) | nom de login | 1 |
| email | character varying(120) | adresse mail (unique dans la base) | 1, 6 |
|nom | character varying(64) | | 1, 6 |
|prenom | character varying(64) | | 1, 6 |
|dept | character varying(32) | département de rattachement (identifiant numérique) | 1, 6 |
|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).
Pour la signification des rôles et l'utilisation du département, voir [ConfigPermissions](ConfigPermissions.md).

View File

@ -38,7 +38,7 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
"""Un exemple simple de bulletin de notes en version PDF seulement.
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))
# En général, on veut définir un format de table spécial, sans changer le reste (titre, pied de page).

View File

@ -1,15 +1,5 @@
# 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.
# Le BUT
## UE, modules, évaluations
@ -53,7 +43,7 @@ niveaux) et UEs.
## Calcul des notes
Les rôles des SAÉ et ressources étant symétriques, on appellera dans la suite (et
Les rôles des SAÉ et ressources étant symétriques, on appellera dans al 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
@ -90,7 +80,7 @@ réduit d'apprentissages critiques:
La note (moyenne) d'un module (SAÉ ou ressource) se calcule à partir de ses
évaluations. Chaque évaluation est pondérée, par un poids $p$ est fixé par
l'enseignant. Ce poids joue le même rôle que le coefficient d'une évaluation
l'enseignant. ce poids joue le même rôle que le coefficient d'une évaluation
classique, mais peut se décliner en plusieurs valeurs, une par UE associée au
module.
@ -106,7 +96,7 @@ une UE $u$ *doit* être non nulle; si ce n'est pas le cas, le module sera décla
### Moyenne de module (SAÉ ou ressource)
La moyenne d'un étudiant dans un module est un vecteur, car on a une note moyenne par UE:
La moyenne d'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}}$$
@ -120,7 +110,7 @@ $$\mu_m = \frac{\sum_e (\sum_u p_{e,u}) \, n_e}{\sum_{u,e} \, p_{u,e}}$$
On va considérer les coefficients de modules et d'évaluations:
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{e,u}}$$
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{u,e}}$$
L'exemple suivant illustre ce mode de calcul:
@ -172,33 +162,14 @@ Les conditions de passages vers l'année suivante sont:
3. Cas particulier du passage en BUT 3: nécessité davoir validé toutes les UE
du BUT 1.
Note: La validation des deux UE du niveau dune compétence emporte la validation de
lensemble des UE du niveau inférieur de cette même compétence.
### Redoublements
La poursuite d'études dans un semestre pair dune 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 dUE ;
- et une moyenne égale ou supérieure à 8 sur 20 à chaque regroupement cohérent
dUE. 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.
TODO *à compléter suivant l'arrêté.*
> La validation des deux UE du niveau dune compétence emporte la validation de
> lensemble des UE du niveau inférieur de cette même compétence.
### Obtention du diplôme
Le diplôme de BUT est obtenu lorsque toutes les compétences du parcours suivi
sont validées.
TODO à rédiger à partir de l'arrêté.
### Modules "bonus" (sport, culture, LV2)

View File

@ -3,8 +3,6 @@
*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é:

View File

@ -7,38 +7,13 @@ Quelques indications pour développer avec ScoDoc 7.x, à adapter à vos goûts
Il est confortable de développer dans une VM (un container Docker ferait
aussi bien l'affaire).
## Conseils pour la machine virtuelle
## Conseils pour VirtualBox
[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](GuideInstallDebian11.md). XXX
[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).
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.
Sur les Macs anciens (processeurs Intel), VirtualBox fonctionne bien. Sur les
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).
### Configuration réseau
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.
@ -58,8 +33,7 @@ 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 )
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
@ -72,20 +46,13 @@ Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre
### Partage de fichiers
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).
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`.
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.
Une autre solution est de laisser le source (clone git) sur l'hôte, et de
partager ce répertoire avec la VM. Dans VirtualBox / config. VM / Dossiers
partagés, ajouter un partage. Par exemple, vous mettez vos sources sur l'hôte
dans `~/src`, et dans la VM sur `/src`.
Dans ScoDoc, `/opt/scodoc/Products/ScoDoc` est alors un lien symbolique vers
votre `src/ScoDoc`.
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
@ -108,7 +75,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
# Interaction avec ScoDoc 7 (ancien ScoDoc, avant l'été 2021)
# Interaction avec ScoDoc 7
ScoDoc 7 utilise Zope, et ce n'est pas un environnement commode pour débugguer.

View File

@ -17,8 +17,7 @@ L'avenir du logiciel dépend donc de vous: adhérez, ou incitez votre institutio
## Utilisation de ScoDoc
### Comment prendre en compte les notes de sport ou autres bonus ?
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).
Voir [CalculNotes](CalculNotes.md)
### Qui peut voir les notes, et quand ?
@ -101,39 +100,47 @@ 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).
Il faut (pour l'instant) être administrateur sur le serveur ScoDoc, et passer
par l'onglet "configuration" accessible aux admins sur la page d'accueil.
Les logos sont stockés dans le répertoire `/opt/scodoc-data/config/logos/` 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.
* Sur les bulletins de notes, c'est configurable (et on peut utiliser d'autres
logos), voir [ParametrageBulletins](ParametrageBulletins.md)
### Administration
### Quel système d'exploitation ?
ScoDoc est accessible depuis n'importe quel navigateur Web (Firefox, Chrome, ...).
Le serveur ScoDoc fonctionne sous Linux. Il n'est testé qu'avec Debian (stable).
Le script d'installation ([GuideInstallDebian11](GuideInstallDebian11.md))
Le 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.
ScoDoc. Une distribution sous forme de container Docker est envisagée.
### 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)".
Les mises à jour sont normalement automatiquement appliquées chaque semaine.
Voir aussi la page [MisesAJour](MisesAJour.md).

View File

@ -115,8 +115,9 @@ pour un semestre de formation.
Il s'agit d'un document PDF en format paysage, à imprimer sur
papier ordinaire A4.
Les logos (IUT en haut, université en pied de page) sont
paramétrables par l'utilisateur: voir [configuration des logos](GestionLogos.md).
Les logos (IUT en haut, université en pied de page) ne sont actuellement pas
paramétrables par l'utilisateur (il faut installer les images dans le sous-répertoire
`logos` du logiciel).
### Lettres d'avis individuelles

View File

@ -1,53 +0,0 @@
# 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>``<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".

View File

@ -11,6 +11,10 @@ Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de mac
* Migration d'un serveur ScoDoc 7 vers la nouvelle version Scodoc 9: [MigrationScoDoc7a9](MigrationScoDoc7a9.md)
(Les personnes ayant besoin d'installer l'ancienne version ScoDoc 7 peuvent se
référer à [GuideInstallDebianDix](GuideInstallDebianDix.md) ou
[GuideInstallDebianNeuf](GuideInstallDebianNeuf.md).)
## Mises à jour et sauvegardes
* [Mettre à jour du logiciel (nouvelles versions)](MisesAJour.md)
@ -19,20 +23,18 @@ Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de mac
## 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.
* [Paramétrage](PreferencesScoDoc.md): réglage des préférences
* [ Paramétrage](PreferencesScoDoc.md): réglage des préférences
## Autres problèmes
* [Problèmes configuration des envois mail](ProblemesMail.md)
* [Gestion des logos et fonds de documents](GestionLogos.md)
* [ProblemesEtBugs](ProblemesEtBugs.md) en cas d'ennuis.
## Utilisation avancée
* [Interfaçage avec Apogée](ScoDocApogee.md)
* [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications
* [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications
* [ServicesXml](ServicesXml.md) : web services XML pour interfaçage avec d'autres applications (obsolète).
* [AdminUsers](AdminUsers.md) : gestion des utilisateurs
* [InterrogationPortail](InterrogationPortail.md) : liaison avec portail

View File

@ -1,14 +1,15 @@
## Prise en main et paramétrage de ScoDoc 9
# Prise en main et paramétrage de ScoDoc 9
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Cette
page concerne la version ScoDoc 9, distribuée à partir de septembre 2021.
page concerne la version ScoDoc 9, distribuée à partir de septembre 2021. Pour l'ancienne
version, voir [cette page](GuideConfig7.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
# Administration en ligne de commande
Les opérations d'administration se résument à la création de départements, et l'installation
des logos, et la création d'utilisateurs "super admin", c'est à dire admin pour tous les
@ -31,30 +32,30 @@ Après quoi, vous pouvez utiliser les commandes décrites ci-dessous.
*Attention: le lancement de chaque commande est assez long (quelques secondes)
car toute l'application scodoc est initialisée à chaque fois.*
### Création d'un département
## Création d'un département
flask create-dept DEPT
`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
## 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
## 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:
ou un import excel. Pour créer un utilisateur depuis le terminal, lancer:
flask user-create LOGIN ROLE DEPT
`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
## 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.
@ -63,7 +64,7 @@ Il s'agit d'un utilisateur ayant tous les droits, comme s'il était
`admin2` est ici le pseudo du nouvel admin.
### Changement du mot de passe d'un utilisateur
## Changement du mot de passe d'un utilisateur
Cette opération peut s'effectuer via la page de gestion web des
utilisateurs, mais il est parfois commode de le faire depuis la
console:
@ -73,36 +74,22 @@ console:
`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
## 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":
Exemple: création d'une rôle "Observateur" ayant juste la persmision de "voir":
flask create-role Observateur ScoView
### Édition d'un rôle (ajout/retrait permissions)
## É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]
Exemple:
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
## 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.
@ -112,14 +99,14 @@ 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
### Comptes utilisateurs
Toujours migrer les comptes utilisateurs avant d'importer les
départements.
flask import-scodoc7-users
#### Départements
### Départements
Pour migrer un seul département:
flask import-scodoc7-dept DEPT DBNAME
@ -128,51 +115,29 @@ Exemple:
flask import-scodoc7-dept InfoComm DBINFOCOMM
### Liste des commandes Flask/ScoDoc
## 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
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 code...
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) users password
user-role Add or remove a role to the given user...
clear-cache Clear ScoDoc cache (currently Redis)
create-dept Create new departement
delete-dept Delete existing departement
edit-role Add [-a] and/or remove [-r] a permission to/from a role
import-scodoc7-dept Import département ScoDoc 7
import-scodoc7-users Import users defined in ScoDoc7 postgresql
sco-db-init Initialize the database.
user-create Create a new user
user-db-clear Erase all users and roles from the database !
user-password Set (or change) user's password
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 !
Usage: app user-create [OPTIONS] USERNAME ROLE DEPT
Create a new user
@ -181,22 +146,14 @@ Options:
-n, --nom TEXT
-p, --prenom TEXT
Usage: app user-delete [OPTIONS] USERNAME
Try to delete this user. Fails if its associated to some scodoc objects.
Usage: app user-password [OPTIONS] USERNAME
Set (or change) users password
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
@ -210,135 +167,76 @@ 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
Usage: app delete-dept DEPT
Delete existing departement
Options:
--yes
--help Show this message and exit.
Usage: app create-dept [OPTIONS] DEPT
Usage: app create-dept DEPT
Create new departement
Usage: app list-depts [OPTIONS] [DEPTS]...
Usage: app import-scodoc7-users
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
Import used 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
Usage: app import-scodoc7-dept 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 dune liste excel et dun zip avec les images.
Usage: app clear-cache [OPTIONS]
Usage: app clear-cache
Clear ScoDoc cache This cache (currently Redis) is persistent between
invocation and it may be necessary to clear it during upgrades, development
or tests.
invocation and it may be necessary to clear it during development or tests.
Options:
--sanitize / --no-sanitize
Usage: app dumphelp [OPTIONS]
Génère la page daide 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.
--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
## 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, voir la FAQ](/FAQ/#comment-changer-les-logos-sur-les-documents-pdf-pv)
Si vous êtes administrateur système, vous pouvez aussi placer vos images (fichiers JPEG ou PNG)
distribués. Pour les changer, placer vos logos (fichiers images JPEG ou PNG)
dans le répertoire
/opt/scodoc-data/config/logos
On peut fournir des images (logos, fond de pages) par département en créant des sous-répertoires
avec les noms `logo_header.jpg` (habituellement le logo de votre composante)
et `logo_footer.jpg` (habituellement le logo de votre université ou école).
On peut fournir des logos par département en créant des sous-répertoires
/opt/scodoc-data/config/logos/logo_<dept>/
Après quoi, redémarrez ScoDoc après avoir vidé les caches:
pour y placer les fichiers images `logo_header.jpg` et `logo_footer.jpg`.
<!-- Ensuite, éditez le fichier
/opt/scodoc-data/config/logos
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 après avoir vidé les caches:
flask clear-cache
sudo systemctl restart scodoc9
## Utilisation via le Web
# Utilisation via le Web
* Connectez-vous au site: `https://votre.site.fr/`

94
docs/GuideConfig7.md Normal file
View File

@ -0,0 +1,94 @@
# Prise en main et paramétrage de ScoDoc 7
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Cette page
concerne la version ScoDoc 7, et ne s'applique pas à la version ScoDoc 9 distribuée à partir de septembre 2021.
Pour ScoDoc 9, voir [cette page](GuideConfig.md).
Ce document suppose que le ScoDOc 7 a été installé suivant la procédure décrite dans [GuideInstallDebianDix](GuideInstallDebianDix.md).
## Procédure à suivre pour créer un département et son utilisateur administrateur
* 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).
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-data/config/logos
```
(en ScoDoc 7, c'était `/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-data/config/scodoc_local.py
```
(le créer s'il n'existe pas).
Ce fichier doit contenir un dictionnaire sous la forme suivante:
```
CONFIG = {
# Taille du l'image logo: largeur/hauteur
# W/H
CONFIG.LOGO_FOOTER_ASPECT = 326 / 96.0
# Taille dans le document en millimetres
CONFIG.LOGO_FOOTER_HEIGHT = 10
# Proportions logo (donné ici pour IUTV)
CONFIG.LOGO_HEADER_ASPECT = 549 / 346.0
# Taille verticale dans le document en millimetres
CONFIG.LOGO_HEADER_HEIGHT = 28
... autres variables de configuration locale
}
```
Adaptez les valeurs des variables `LOGO_FOOTER_ASPECT` et suivantes à votre cas
(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`).

View File

@ -9,7 +9,7 @@ Informations pour les développeurs souhaitant étendre ou modifier ScoDoc.
un serveur Discord ouvert sur invitation aux développeur actifs. Contacter Emmanuel.
* [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md)
* [Créer de nouveaux types de "parcours"](ApiCreationParcours.md)
* [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications
* [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications
* Notes diverses
* [Discussions pour la future gestion des absences](IdeesGestionAbsences.md)
* [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md)
@ -20,17 +20,17 @@ Informations pour les développeurs souhaitant étendre ou modifier ScoDoc.
Quelques conseils, indications et mémos pour les développeurs sur ScoDoc version 9.
### Installation d'un serveur de développement
[Quelques conseils pour configurer votre serveur de développement](ConseilServeurDev.md)
[Quelques conseils mouvants pour configurer votre serveur de développement](ConseilServeurDev.md)
### Style et formatage du code
L'ancienneté de la base de code a rendu le style un peu incohérent, mais cela
s'est nettement amélioré avec ScoDoc 9 (respect PEP 8).
s'est amélioré avec ScoDoc 9 (respect PEP 8).
Le code DOIT être formatté avec [`black`](https://black.readthedocs.io/) avant
Le code doit être formatté avec [`black`](https://black.readthedocs.io/) avant
tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement).
#### Documentation
On pourra adopter le style "Google": <https://google.github.io/styleguide/pyguide.html#383-functions-and-methods>
On adoptera le style "Google": <https://google.github.io/styleguide/pyguide.html#383-functions-and-methods>
Exemple:
"""Description résumée de la fonction
@ -56,18 +56,16 @@ Exemple:
### Git
Le dépôt est <https://scodoc.org/git/viennet/ScoDoc>
Le dépot est <https://scodoc.org/git/viennet/ScoDoc>
La branche `master` est celle de ScoDoc 9, d'où sont issues les paquets
distribués (*releases*). Les développements ont lieu sur d'autres branches
(`api`, `dev92`, `entreprises`, ...) avant d'être intégrés après tests.
La branche `Scodoc7` était l'ancienne (jusqu'à septembre 2021) version de ScoDoc.
La branche `master` est celle de ScoDoc 9. La branche `Scodoc7` est l'ancienne
(jusqu'à septembre 2021) version en production.
Ci-dessous quelques pense-bête qui peuvent servir.
#### Hot fixes (internes)
Pour les développeurs internes (écriture sur le dépôt master), un exemple
basique illustrant le cycle de développement:
basique:
# Créer une branche
# si besoin (travail en cours), utiliser git stash avant
@ -84,16 +82,12 @@ basique illustrant le cycle de développement:
# éventuellement: git stash pop
Dans la plupart des cas, on travaillera sur son propre dépot (clone du dépt
origine), et on proposera une *pull request* (PR, *demande d'ajout* en français).
#### Mettre à jour votre branche
Quand vous travaillez dans votre branche `ma_branche`, pour lui appliquer les
mises à jour de `master` (remote), faire:
```bash
Vous travaillez dans votre branche `ma_branche`. Pour lui appliquer les mises à
jour de `master` (remote):
git pull origin master
```
#### Commandes utiles, en vrac
@ -103,275 +97,29 @@ mises à jour de `master` (remote), faire:
#### Refactoring
Lint tous les fichiers modifiés:
```bash
git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E
```
Restore les modes au besoin (SAMBA les changent parfois):
```bash
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
```
Affiche les variables non définies dans un fichier:
```bash
pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \'
```
Prépare un sed pour renommer les variables non définies:
```bash
for f in *.py
do
pylint --disable=all -e E "$f" | grep undefined-variable | awk '{print "sed -i .bak s/"$4"/scu."$4"/ '$f'";}' | sort | uniq | tr -d \'
done
```
Note pour travailler sur VirtualBox:
addgroup scodoc vboxsf
### Préparation d'une PR (Pull Request)
#### Principes généraux
Les remarques de cette section visent à obtenir une relecture facile de votre
demande d'ajout (*pull request*, dite "PR"):
* Éviter les modifications de forme qui ne changent pas le sens du code. L'utilisation de
[`black`](https://black.readthedocs.io/) est obligatoire : elle permet de normaliser la présentation
du code. cela évite de générer des différences ne représentant que des
changements de mise en forme (indentation, passages à la ligne). Cela évite
aussi au développeur d'avoir à y réfléchir, autant de temps gagné !
* Avoir un nombre d'étapes de validation faible (idéalement un seul commit pour
les PR courantes - peu volumineuses).
* La PR doit toujours être énoncée par rapport au dernier commit de la branche
que vous visez (en général `master` du dépôt original).
#### Manipulations
Les manipulations sont décrites selon quatre phases du développement : l'installation,
la mise en place, le suivi et la livraison.
##### l'installation
Il est pratique d'avoir en ligne les deux dépôts git distants que vous pouvez
utiliser : votre dépôt personnel (`https://scodoc.org/git/<user>/<dépôt>.git`) et
le dépôt officiel (`https://scodoc.org/git/ScoDoc/ScoDoc.git`).
pour ajouter une référence (et lui donner un nom) vers un dépôt distant, entrez
la commande:
```bash
git remote add nom_remote https://scodoc.org/git/ScoDoc/<dépôt>.git
```
Par la suite vous aurez donc une référence vers votre dépôt personnel (`perso`)
et une référence vers le dépôt officiel (`officiel`). Si vous avez initialement
cloné l'un des deux dépôts, la référence vers le dépot d'origine existe et a pour nom
`origin`.
La commande vous exposant tous les dépôts connus est :
```bash
git remote -v
```
#### Mise en place
L'objectif de ce paragraphe est de créer une branche locale basée sur le master
du dépôt officiel et bien sur de lui donner un nom.
pour cela (**attention cela va écraser les éventuels fichiers modifiés**. Si vous souhaitez conserver les
modifications en cours, encadrez les lignes suivantes par `git stash` (avant) et `git stash apply` (après) :
```bash
git reset --hard officiel/master
git checkout -b ma_modif
```
À partir de là, vous pouvez modifier, tester, développer et commit votre travail.
#### Suivi
Si votre développement prend plusieurs jours, il est probable que la branche
principale évolue pendant ce temps.
Pour garder la cohérence, il est nécessaire de réintégrer en local les
modifications de la branche principale. Ceci peut se faire de deux façons.
- Une fusion (`merge`) applique toutes les modifications en un seul commit).
C'est la méthode couramment utilisée.
- Un `rebase` rejoue tous les commits de la nouvelle branche par dessus l'état
le plus à jour de la branche principale (il en résulte un historique plus
linéaire).
Les commandes git correspondantes :
```bash
git fetch officiel
git merge officiel/master
```
ou
```bash
git fetch officiel
git rebase officiel/merge
```
#### La livraison
Ça y est. Vous avez terminé le développement. IL n'y a plus qu'à demander
l'intégration. Ceci se fait en plusieurs étapes (vous êtes bien sûr toujours sur
la branche locale `ma_modif` et toutes vos modifications ont été commitées).
##### Étape 1 : faire l'inventaire des fichiers impliqués
```bash
git fetch officiel/master
git diff --name-only officiel/master
```
##### Étape 2 : passer black sur les fichiers modifiés
Cette étape est automatique avec les bons réglages sous VSCode (pas trouvé
l'équivalent sous *pyCharm*).
À défaut les lignes suivantes réalisent le même travail :
```bash
for fn in $(git diff --name-only officiel/master)
do
python3 -m black $fn
done
```
Faire une première lecture rapide pour vérifier qu'il ne reste pas de fichiers
modifiés accidentellement.
Pour obtenir la modification sur un fichier spécifique (`app/fichier.py` par exemple)
```bash
git diff officiel/master app/fichier.py
```
Utilisateurs Windows : Vérifiez bien que les réglages de fin de ligne suivent
bien les règles Linux (pas de retour chariot (noté CR ou `\r`) en fin de ligne mais un seul caractère line feed
(noté LF ou `\n`).
Le cas échéant, réglez votre IDE pour cela.
À ce niveau là de la procèdure, vous n'avez plus dans votre branche locale que les différences strictement
nécessaires à votre correctif.
##### Étape 3 : résumez tous les commits depuis le point de divergence en un seul commit
Repérez le point de divergence de votre branche locale avec officiel/master
(normalement `git merge-base HEAD officiel/master`)
Demander un `rebase` interactif depuis ce point :
```bash
git rebase -i $(git merge-base HEAD officiel/master)
```
*Explications*:
_Le rebase interactif permet d'enregistrer un suite de manipulation de commit dans un seul fichier texte._
_Le fichier texte qui reprend tels quels tous les commits concernés (et donc qui ne fait rien)_
_est préparé par la commande `-i` de la commande_ `git rebase`
_Vous pouvez ensuite modifier ce fichier dans votre editeur favori (ou pas) (à régler par `git config`) pour décrire_
_votre intention (réordonner, changer le message, fusionner, ...) sur l'ensemble des commits_
_Quand votre édition est terminée, git reprend la main est exécute chacune de vos opérations. Il est possible_
_(bien que très rare) que des conflits apparaissent à ce moment-là. Les_
_commandes habituelles de correction accompagnées des commandes :_
```bash
git rebase --continue # pour poursuivre le processus
git rebase --abort # pour tout abandonner
```
_vous permettront de résoudre ces problèmes exceptionnels_.
Application:
```bash
git rebase -i $(git merge-base HEAD officiel/master)
```
Vous devez obtenir dans un éditeur de texte la liste des commits opéré depuis le
début du développement sous cette forme (c'est un exemple : le nombre de lignes
peut varier) :
```bash
pick eb8cbec modif 1
pick 83eb79e modif 2
# Rebase 5ffd074..83eb79e onto 5ffd074 (2 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
# commit's log message, unless -C is used, in which case
# keep only this commit's message; -c is same as -C but
# opens the editor
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . create a merge commit using the original merge commit's
# . message (or the oneline, if no original merge commit was
# . specified); use -c <commit> to reword the commit message
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
```
Vous pouvez réorganiser tous les commits (changer l'ordre, fusionner) en
changeant la commande pick au début de chaque ligne. L'idée ici est de fusionner
toutes les lignes avec la première en remplaçant le 'pick' à partir de la ligne
2 par `fixup`. Optionnellement, vous pouvez reformuler le message de commit
(commande `reword` sur la première ligne).
Vous construirez par exemple :
```bash
reword eb8cbec Correctif: Api - gestion des formation
fixup 83eb79e modif 2
...
```
Quand vous sortez de l'éditeur, git effectue toutes les opérations demandées.
À ce niveau-là de la procédure :
* vous avez un seul commit pour l'ensemble du correctif proposé;
* toutes les différences entre officiel/master et votre branche locale sont
signifiantes.
##### Étape 4 :
Vous pouvez maintenant pousser votre branche locale sur votre dépôt personnel
(vers une branche de même nom):
```bash
git push --set-upstream perso ma_branche
```
Si vous avez déjà fait cette opération auparavant il est possible que le push
soit refusé (car le rebase a modifié des commits qui avaient déjà été poussés).
Dans ce cas l'option `--force` du push vous permette de passer outre, mais
assurez-vous avant d'être le seul à travailler sur cette branche.
##### Etape 5 : La dernière étape se passe sur le site [scodoc.org/git](https://scodoc.org/git/)
* Identifiez-vous
* Placez-vous sur la branche nouvellement créée
* À l'aide de l'interface du serveur, vous pouvez comparer l'état de votre
branche par rapport au master officiel, et si cela vous convient, il vous reste à formuler
une demande d'intégration (*pull request*). En remplissant les informations demandées.
## Tests et tests unitaires
### Tests
Voir [TestsScoDoc](TestsScoDoc.md)
@ -393,36 +141,6 @@ Au besoin, mémo:
- `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
Sujets **prioritaires** en 2021:

4
docs/GuideInstallDeb5.md Normal file
View File

@ -0,0 +1,4 @@
<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 !

View File

@ -57,7 +57,7 @@ Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.
- 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`);
votre politique);
- Les serveurs de mise à jour de Debian doivent être accessibles (en http,
voir `/etc/apt/sources.list`);
@ -105,38 +105,16 @@ Checklist minimale de votre système Linux Debian:
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'installation Debian. 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 :
@ -160,7 +138,6 @@ Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichie
ProtectKernelTunables=no
ProtectKernelModules=no
ReadWritePaths=
ReadOnlyDirectories=
Ensuite

View File

@ -0,0 +1,162 @@
# 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) 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)

View File

@ -0,0 +1,8 @@
# 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).

View File

@ -1,90 +0,0 @@
# 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
```

View File

@ -25,7 +25,7 @@ Le principe est donc:
## Marche à suivre détaillée
### Installation de Debian et ScoDoc
Voir les instructions ici: [GuideInstallDebian11](GuideInstallDebian11.md).
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é)

View File

@ -9,3 +9,140 @@ lancer une à tout moment avec la commande
apt update && apt-get upgrade
# Mises à jour de ScoDoc 7
**Les instructions ci-dessous concernent ScoDoc 7 uniquement.**
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 certains
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 (obsolète)
Obsolète, sauf si vous avez encore un serveur avec Debian 9...
Procédure raccourcie réservée aux personnes à l'aise avec linux. On met à jour
Debian mais on réinstalle ScoDoc proprement.
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)).

View File

@ -1,356 +0,0 @@
# Implémentation des parcours du BUT dans ScoDoc
Cette documentation est *destinée aux développeurs* et à tous ceux qui souhaitent
comprendre le fonctionnement du logiciel.
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` (**TODO**)
### 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` <-> ensemble de `ApcParcours`
- `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit`
- `FormSemestre` ||--o{ `ApcParcours` : choix sur la page
`formsemestre_editwithmodules`
- `Identite` }o--o{ `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 regroupements d'UE d'un étudiant
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:
- ...
### Validation du BUT
### 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 classiques 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 `APC` 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 classic | BUT AMUE | &nbsp;
----------|-----|-----
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) |
## 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
Etudiant }|..|{ 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"
```

View File

@ -9,3 +9,4 @@ 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.
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.

View File

@ -31,6 +31,7 @@ Toutes les préférences pour le semestre considéré (ou définies globalement)
Voir la liste complète sur [NomsPreferences](NomsPreferences.md).
### Informations sur le semestre
Variable | Valeur
---------|-------
@ -60,7 +61,7 @@ descr_demission || "Démission le 01/02/2000" ou vide si pas de démissio
decision_jury || "Validé", "Ajourné", ... (code semestre
descr_decision_jury| "Décision jury: Validé" (une phrase
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
|
**Absences:** |
@ -95,50 +96,12 @@ Le balisage XML est celui de [ReportLab](http://www.reportlab.com/) (intra-parag
### Logos
Une balise supplémentaire est interprétée par ScoDoc pour insérer des logos (images).
Les logos sont des images au format JPEG (extension `.jpg` ou `.jpeg`) ou PNG
(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).
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`.
Principes généraux :
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.
* 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.
### 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
### Exemple 1: Bulletins par défaut

View File

@ -10,32 +10,14 @@ 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)
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 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é.
L'image doit ensuite être enregistrée sur le serveur à un emplacement spécifique (seul l'administrateur du serveur peut faire cela):
Il ne reste plus qu'à activer l'option correspondante soit globalement dans le
paramétrage du département, soit (pour les bulletins) dans par le menu réglage
bulletin du semestre (qui a priorité):
- Pour les PV de jury (A4 paysage), sous le chemin `/opt/scodoc/var/scodoc/config/logos/pvjury_background.png`
- Pour les lettres individuelles (format A4 portrait), sous `/opt/scodoc/var/scodoc/config/logos/letter_background.png`
- 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
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** : 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.
**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.
## PV de Jury: textes, marges et autres paramètres
@ -49,11 +31,9 @@ Les paragraphes de texte utilisent un balisage identique à celui des bulletins
## Lettres individuelles
ScoDoc génère un document PDF contenant les lettres de tous les étudiants du semestre ou d'un groupe.
ScoDoc génère un docuement PDF contenant les letters 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,
comme 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, come indiqué plus haut. Le texte de la lettre est configurable dans les préférences.
<img src="/screens/LettresPreferences.png" width="50%">

View File

@ -1,25 +1,19 @@
# 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.
## 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.
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne pas.
1. Vérifier que votre serveur de messagerie est bien configuré: dans un
terminal, envoyez un message
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
```
mail mon_adresse@universite.fr
... 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
```
@ -35,19 +29,14 @@ Connected to localhost.
Escape character is '^]'.
220 nom_du_serveur ESMTP Postfix (Debian/GNU)
```
(quitter avec ctrl-] puis `quit`)
(quitter avec ctrl-] puis quit)
## Tests avec ScoDoc
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").
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
A ce moment, regarder le 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] sendEmail: ok
@ -62,17 +51,6 @@ 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:
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.
## 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 !

View File

@ -7,7 +7,7 @@ Pour communiquer aux étudiants leurs réultats, plusieurs solutions:
- Envoi des bulletins (pdf) par mail (c'est facile depuis le menu "Notes").
- Publication sur un autre site Web: typiquement l'ENT de l'établissement, ou un mini-site dédié.
- Pour interfacer un ENT, [voir l'API](ScoDoc9API.md).
- Pour interfacer un ENT, [voir l'API](ScoDocAPI.md).
- Plusieurs collègues ont développé des mini-sites pour publier les notes (accès protégé par CAS ou autre). Ces codes ne font pas stricto censu partie de ScoDoc. Quelques exemples en PHP sont distribués dans le répertoire `misc/PublicationBulletins` ([voir ici](https://scodoc.org/git/viennet/ScoDoc/src/branch/master/misc/PublicationBulletins)).
- Plus récemment (2020), des collègues de l'IUT de Mulhouse ont développé un mini-portail complet: [Scodoc_Notes](https://github.com/SebL68/Scodoc_Notes) (github), [historique](https://notes.iutmulhouse.uha.fr/maj.php).

View File

@ -8,7 +8,6 @@ Les utilisateurs interrogés insistent sur leur souhait d'avoir une interface si
## Principales fonctionnalités
L'application, intégrée à ScoDoc, fournira:
- Saisie et gestion des entreprises
- Saisie et gestion des offres de stage et d'apprentissage
- Envoi des offres aux responsables de formations
@ -34,7 +33,8 @@ Les entreprises possèderont chacune une fiche avec toutes leurs informations.
Lorsqu'un utilisateur souhaite indiquer une relation avec une entreprise ou
a été contacté par une entreprise, il pourra saisir les informations de
l'entreprise dans la base si elle n'existe pas encore.
Si l'entreprise existe mais que l'utilisateur veut ajouter ou corriger des infos ? Ou ajouter un "correspondant" ? Peut-être un lien vers la modification de cette entreprise.
XXX et si l'entreprise existe mais que l'utilisateur veut ajouter ou corriger
des infos ? Ou ajouter un "correspondant" ?
### Données sur l'entreprise:
@ -44,9 +44,8 @@ Si l'entreprise existe mais que l'utilisateur veut ajouter ou corriger des infos
- Adresse, Code postal, Ville, Pays
- Élements de contact (nom, prénom, numéro de téléphone, email)
Ces élements de contacts sont associés à une personne ou un service (par exemple "ressources humaine") au sein de l'entreprise. Il y en aura donc un nombre variable.
Une entreprise peut avoir plusieurs éléments de contact, il peut s'agir d'une personne physique, du service ressources humaines d'une entreprise ou d'un autre service selon la situation.
XXX ces élements de contacts sont associés à une personne ou un service (par exemple
"ressources humaine") au sein de l'entreprise. Il y en aura donc un nombre variable.
Les entreprises sont identifiés par leur SIRET (unique) pour éviter les duplications et doivent toujours posséder des éléments de contact sinon inexploitable par les utilisateurs.
@ -56,6 +55,8 @@ TODO: distinguer SIRET et SIREN, pour les grandes entreprises multi-sites voir h
(Les établissements avec le même SIREN sont présent sur la même fiche entreprise avec chacun leur adresse)
Une entreprise peut avoir plusieurs éléments de contact, il peut s'agir d'une personne physique, du service ressources humaines d'une entreprise ou d'un autre service selon la situation.
Un historique sur l'entreprise pour pouvoir savoir quel étudiant a déjà réalisé un stage ou un contrat d'alternance au sein de l'entreprise avec:
- identifiant de l'étudiant INE ou ScoDoc id (`etudid`)
- type de contrat
@ -109,8 +110,10 @@ Possibilités:
Permettre aux entreprises d'avoir accès au bordereau de stage afin qu'il puisse le remplir (s'il compte déjà prendre un stagiaire) ou de proposer une offre de stage.
Un lien pour télécharger un bordereau de stage ajouté par les utilisateurs de l'application pour les entreprises.
XXX accès des entreprises: avec quel compte (identifiant). Quand et par qui ce compte est-il créé ? Je ne sais pas encore.
XXX définir ce qu'est un "bordereau de stage". Sera-t-il généré par
l'application ?
XXX accès des entreprises: avec quel compte (identifiant). Quand et par qui ce
compte est-il créé ?
## Rôles et actions associées
@ -119,12 +122,12 @@ XXX accès des entreprises: avec quel compte (identifiant). Quand et par qui ce
Utilisateur possédant un rôle avec visibilité totale et toutes les actions possibles sur la base:
- le pôle des relations extérieures avec le responsable, son assistant et les chargés de relations entreprises;
- administrateur informatique.
- directeur de l'IUT?
Utilisateur possédant un rôle avec seulement une visibilité sur la base selon le département dont il appartient :
- les reponsables de formations
- les secrétariat pédagogiques
- les chefs de département
- directeur de l'IUT XXX pas accès complet ??
- le responsable administratif
@ -137,7 +140,7 @@ Liste des principaux processus métiers identifiés: à préciser et compléter
- Acteur: tout personnel autorisé (le responsable et l' assistant du pôle des relations extérieures et les chargés de relations entreprises).
- Quand: à tout moment.
- Action: saisie des données sur une nouvelle entreprise, avec un point de contact
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieures).
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieurs).
- Remarques: recherche d'entreprises ressemblantes pour éviter doublons.
### Modification d'une entreprise
@ -167,14 +170,14 @@ Liste des principaux processus métiers identifiés: à préciser et compléter
- Acteurs: tout personnel autorisé (le responsable et l' assistant du pôle des relations extérieures et les chargés de relations entreprises).
- Quand: à tout moment.
- Action: saisie des données sur une nouvelle offre.
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieures).
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieurs).
- Remarques: ...
### Validation d'une offre par un responsable de formation
- Acteur: les responsables de formation
- Quand: après la demande de validation d'une offre par le pôle des relations extérieures.
- Quand: après la demande de validation d'une offre par le pôle des relations extérieurs.
- Action: valide l'ajout d'une offre.
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieures).
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieurs).
- Remarques: si l'ajout d'une offre est non validé, elle peut être modifier par la suite
### Modification d'une offre
@ -188,7 +191,7 @@ Liste des principaux processus métiers identifiés: à préciser et compléter
- Acteurs: tout personnel autorisé (le responsable et l' assistant du pôle des relations extérieures et les chargés de relations entreprises).
- Quand: à tout moment.
- Action: suppression d'une offre expiré (peut-être dans d'autre cas à voir)
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieures).
- Déclenche: notification au chargés de relations entreprises (à toutes les personnes du pôle des relations extérieurs).
- Remarques: ...
### Envoie d'une offre à un responsable de formation
@ -244,3 +247,14 @@ Possibilité d'importer des données déjà existantes (Excel).
## Questions
Comment gérer lenvoi des offres par les responsables de formations aux étudiants non inscrits donc pas encore dans ScoDoc?
???
Quels données sur les offres? XXX entreprise + descriptif (texte ou pdf) + autre
données à préciser ??
Les informations du bordereau de stage doivent être sur la fiche entreprise? XXX
à mon avis oui, liste des bordereaux accessibles aux personnes autorisées depuis
la fiche entreprise

View File

@ -1,43 +1,23 @@
# 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...
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:
* 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.
* 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 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.
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
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.
### Dump des bases de données
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 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`).
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:
@ -54,21 +34,10 @@ et ajouter:
## 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.
### 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.
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``XXX` est concerné. Utiliser par
exemple `ls -lrt` pour visualiser les sauvegardes triées par date.
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/SCODOC-BACKUPS``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:
@ -83,44 +52,24 @@ comptes utilisateurs.
```
# en tant que root...
systemctl stop scodoc9 # arret du serveur
su - scodoc
su postgres
dropdb SCODOC # <<< votre base production
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
pg_restore -C -d scodoc /tmp/SCODOC_pgdump # <<<
exit # retour a l'utilisateur root
systemctl start scodoc9 # relance ScoDoc
systemctl start scodoc # relance ScoDoc
```
## Déplacement de toute une installation
Les scripts ci-dessus ne se chargent que de la base de données SQL.
Attention: s'il y a eu des mise à jour du logiciel entre temps, il peut arriver
que la base sauvegardée nécessite une migration. Arrêtez le sservice scodoc9,
puis, en tant qu'utilisateur `scodoc`, lancer les commandes suivantes:
cd /opt/scodoc
source venv/bin/activate
flask db upgrade
puis relancer le service (`systemctl start scodoc` comme root).
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).

File diff suppressed because it is too large Load Diff

View File

@ -914,7 +914,8 @@ Et un autre exemple en format JSON:
## En savoir plus
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.
Voir l'exemple complet d'utilisation de l'API JSON en Python, dans `misc/example-api-1.py`

View File

@ -28,7 +28,7 @@ lance l'ensemble des tests unitaires.
## Tests Selenium (web)
TODO (Aurélien, JMP) *ce projet est abandonné pour l'instant*.
TODO (Aurélien, JMP)
## Portail pour tests
@ -42,70 +42,6 @@ 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.

View File

@ -4,175 +4,150 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
## Établissements membres de l'association (2020-2021) [liste non à jour]
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr).
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr);
* [IUT de Besançon-Vesoul](http://iut-bv.univ-fcomte.fr), depuis 2013.
* [IUT de Besançon-Vesoul](http://iut-bv.univ-fcomte.fr), depuis 2013;
* [IUT de Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, MLT, GEA.
* [IUT de Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, GLT, GEA;
* [IUT de Cachan](http://www.iut-cachan.u-psud.fr), (Université Paris-Saclay, depuis 2009).
* [IUT de Cachan](http://www.iut-cachan.u-psud.fr) (Université Paris-Saclay, depuis 2009);
* [IUT de Cergy-Pontoise](http://www.iut.u-cergy.fr), tous les départements (GB, GCCD, GEII x 2, 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 Cergy-Pontoise](http://www.iut.u-cergy.fr) tous les départements (GB, GCCD, GEII x 2, GLT, QLIO, MMI, TC x 2), DUT, LP, années spéciales et FC : plus de 1600 étudiants en 2018, utilise ScoDoc depuis 2015;
* [IUT de Chartres](https://www.univ-orleans.fr/iut-chartres/).
* [IUT de Chartres](https://www.univ-orleans.fr/iut-chartres/);
* [IUT1 Grenoble - Alpes](https://iut1.univ-grenoble-alpes.fr), cinq départements (GMP, GTHE, GEII, RT, GCCD), déploiement en 2011.
* [IUT1 Grenoble - Alpes](https://iut1.univ-grenoble-alpes.fr): cinq départements (GMP, GTHE, GEII, RT, GCCD), déploiement en 2011;
* [IUT de Nantes](http://www.iutnantes.univ-nantes.fr/), départements Informatique, GEA, GEII, GMP, GTE, QLIO et SGM (DUT et Licences Pro, depuis 2008).
* [IUT de Nantes](http://www.iutnantes.univ-nantes.fr/), départements Informatique, GEA, GEII, GMP, GTE, QLIO et SGM (DUT et Licences Pro, depuis 2008);
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/), depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012).
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/) depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012);
* [IUT de Perpignan](http://www.iut-perpignan.fr), depuis 2013, départements GB, GEA, GIM, MLT sur Perpignan CJ et GCGP sur Narbonne et TC et STID sur Carcassonne.
* [IUT de Perpignan](http://www.iut-perpignan.fr) depuis 2013, départements GB, GEA, GIM, GLT sur Perpignan CJ et GCGP sur Narbonne et TC et STID sur Carcassonne;
* [IUT de Poitiers](http://iutp.univ-poitiers.fr/).
* [IUT de Poitiers](http://iutp.univ-poitiers.fr/);
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/), utilisateur depuis 2009, sur deux sites.
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/) utilisateur depuis 2009, sur deux sites;
* [IUT Sénart-Fontainebleau](http://www.iutsf.u-pec.fr).
* [IUT de Saint-Etienne](http://www.iut.univ-st-etienne.fr/).
* [IUT de Saint-Etienne](http://www.iut.univ-st-etienne.fr/);
### Départements membres de l'association (2020-2021)
* Département d'Informatique de l'IUT d'Aix en Provence.
* département Informatique de l'[IUT Grand Ouest Normandie](http://iut-caen.unicaen.fr/presentation/4-sites-geographiques/site-d-ifs-campus-iii/), site d'Ifs.
* Département d'Informatique de l'IUT d'Aix en Provence;
* département Génie Biologique de l'[IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/), (utilisateur depuis 2009).
* département Informatique de l'[IUT Grand Ouest Normandie](http://iut-caen.unicaen.fr/presentation/4-sites-geographiques/site-d-ifs-campus-iii/), site d'Ifs;
* département GEA de l'[IUT de Tours](http://iut.univ-tours.fr/).
* département Génie Biologique de l'[IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/) (utilisateur depuis 2009);
* départements GIM et GMP de l'[IUT de Mantes](http://www.iut-mantes.uvsq.fr), (Université de Versailles St Quentin en Yvelines).
* département GEA de l'[IUT de Tours](http://iut.univ-tours.fr/);
* département Informatique de l'[IUT de Montpellier-Sète](https://iut-montpellier-sete.edu.umontpellier.fr/dut-informatique/).
* départements GIM et GMP de l'[IUT de Mantes](http://www.iut-mantes.uvsq.fr) (Université de Versailles St Quentin en Yvelines).
* département Informatique de l'[IUT de Montpellier-Sète](https://iut-montpellier-sete.edu.umontpellier.fr/dut-informatique/)
### Autres membres
* [IUT de La Rochelle](http://www.iut-larochelle.fr/).
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/), (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005).
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/) (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005);
## É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).
* [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 dOpale (Université du Littoral).
## IUT utilisateurs
* [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii), (site de Salon).
* [IUT d'Amiens](http://www.iut-amiens.fr/) tous les départements (6, soit 1850 étudiants), depuis 2014;
* [IUT Aix-Marseille](http://iut.univ-amu.fr/), Mesures Physiques (depuis 2012) et Informatique.
* [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii) (site de Salon);
* [IUT d'Amiens](http://www.iut-amiens.fr/), tous les départements (6, soit 1850 étudiants), depuis 2014.
* [IUT Aix-Marseille](http://iut.univ-amu.fr/) Mesures Physiques (depuis 2012) et Informatique;
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr).
* [IUT de Belfort-Montbéliard](http://www.iut-bm.univ-fcomte.fr/) (MP, R&T), depuis 2013;
* [IUT de Belfort-Montbéliard](http://www.iut-bm.univ-fcomte.fr/), (MP, R&T), depuis 2013.
* [IUT de Béthune](http://www.iutbethune.org) (Université d'Artois), tous départements (Chimie, GCCD, GEII, GMP, QLIO et R&T);
* [IUT de Béthune](http://www.iutbethune.org), (Université d'Artois), tous départements (Chimie, GCCD, GEII, GMP, QLIO et R&T).
* [IUT de Béziers](http://www.iutbeziers.fr) depuis 2014 (RT, MMI, CS, TC);
* [IUT de Béziers](http://www.iutbeziers.fr), depuis 2014 (RT, MMI, CS, TC).
* [IUT de Blagnac](https://www.iut-blagnac.fr/fr/) CS, GIM, INFO, RT + 4 LP ; depuis 2017 ; environ 600 étudiants/an).
* [IUT de Blagnac](https://www.iut-blagnac.fr/fr/), CS, GIM, INFO, RT + 4 LP ; depuis 2017 ; environ 600 étudiants/an).
* [IUT de 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 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 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 Calais (détails?);
* [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 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 d'Evry Val dEssonne](http://www.iut-evry.fr), départements GMP, QLIO, SGM, GEA et GLT;
* [IUT de Colmar](http://www.iutcolmar.uha.fr), (Université de Haute Alsace), département R&T et GB (depuis 2006).
* [IUT de Kourou](http://iut.univ-ag.fr/) (Guyane, depuis 2011);
* [IUT d'Evry Val dEssonne](http://www.iut-evry.fr), départements GMP, QLIO, SGM, GEA et MLT.
* [IUT de l'Indre](http://www.univ-orleans.fr/iut-indre/): départements GEA, GEII, GLT, TC, depuis 2015;
* [IUT de Kourou](http://iut.univ-ag.fr/), (Guyane, depuis 2011).
* [IUT de Lannion](http://www.iut-lannion.fr/): 5 DUT et 5 LP, sur 4 départements;
* [IUT de l'Indre](http://www.univ-orleans.fr/iut-indre/), départements GEA, GEII, MLT, TC, depuis 2015.
* [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 Lannion](http://www.iut-lannion.fr/), 5 DUT et 5 LP, sur 4 départements.
* [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 Rochelle](http://www.iut-larochelle.fr/), 5 départements (généralisé en 2017): 1070 étudiants de DUT et 9 LP (180 étudiants).
* [http://www.iut.univ-littoral.fr](IUT du Littoral Côte d'Opale), tous les départements (2018);
* [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 Lorient](http://www-iutlorient.univ-ubs.fr) départements GTE, GIML, QLIO, GCGP, HSE;
* [IUT Le Havre](http://www-iut.univ-lehavre.fr/), 10 départements et 3 années spéciales, soit environ 1800 étudiants.
* [IUT de Marseille](http://iut.univ-amu.fr/) (depuis 2007) départements ?
* [IUT Le Mans](https://www-iut.univ-lehavre.fr/).
* [IUT de Metz](http://www.iut.univ-metz.fr) (depuis 2011), départements GMP, TC ;
* [IUT A de Lille](http://www-iut.univ-lille1.fr), (depuis 2010) 7 départements.
* [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/) (depuis 2014), départements GEA, GEII, GLT, GMP;
* [IUT du Littoral Côte d'Opale](http://www.iut.univ-littoral.fr), tous les départements (2018).
* [IUT de Nouvelle Calédonie](https://unc.nc/formation/formation-a-l-iut/linstitut-universitaire-de-technologie/);
* [IUT de Lorient & Pontivy](http://www-iutlorient.univ-ubs.fr), départements GTE, GIML, QLIO, GCGP, HSE.
* [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 Mantes](http://www.iut-mantes.uvsq.fr), départements GIM et GMP (Université de Versailles St Quentin en Yvelines).
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr) département Informatique, Année Spéciale, L3 Miage et un DU;
* [IUT de Marseille](http://iut.univ-amu.fr/), (depuis 2007) départements ?
* [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot) Mesures Physiques;
* [IUT de Metz](http://www.iut.univ-metz.fr), (depuis 2011), départements GMP, TC.
* [IUT de Rennes](https://iut-rennes.univ-rennes1.fr/) départements GEII, GMP, Chimie et Génie Civil Construction durable (2015);
* [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/), (depuis 2014), départements GEA, SGM, GEII, GMP, MMI, MLT.
* [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 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 Saint-Denis (Université Sorbonne Paris Nord)](https://iutsd.univ-paris13.fr): départements HSE, GIM, GMP, TC, depuis 2009;
* [IUT de Nouvelle Calédonie](https://unc.nc/formation/formation-a-l-iut/linstitut-universitaire-de-technologie/).
* [IUT de Saint-Dié des Vosges](http://www.iutsd.uhp-nancy.fr) (GEII, autres ?, depuis 2009);
* [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 Saint-Dié des Vosges](http://www.iutsd.uhp-nancy.fr/fr/accueil.html), département Informatique, depuis 2011;
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/), depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012).
* [IUT de 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 d'Orsay](https://www.iut-orsay.universite-paris-saclay.fr/).
* [IUT de Tours](http://iut.univ-tours.fr/): départements GEII et TC2A: 450 étudiants/an, 2 DUT, 4 Licences Pro, 1 année spéciale, (ScoDoc depuis 2012);
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr), département Informatique, Année Spéciale, L3 Miage et un DU.
* [IUT de Tremblay](http://www.iu2t.univ-paris8.fr/) (U. Paris 8, dépt. GIM, 2010);
* [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot), Mesures Physiques.
* [IUT de Valenciennes](https://www.uphf.fr/IUT) 9 départements (en FI, FA, FC) - DUT & 20 LP;
* [IUT de Perpignan](http://www.iut-perpignan.fr), depuis 2013, départements GB, GEA, GIM, MLT sur Perpignan CJ et GCGP sur Narbonne et TC et STID sur Carcassonne.
* [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 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 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-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/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 (MLT, GCCD, GIM, GCH, MP, TC) et 8 LP, 1400 étudiants, rentrée 2013. Et aussi Formation Continue, 1 DU PFST, 2 formations DUT par apprentissage (TC et GIM).
* [IUT de Tours](http://iut.univ-tours.fr/), départements GEII et TC2A : 450 étudiants/an, 2 DUT, 4 Licences Pro, 1 année spéciale, (ScoDoc depuis 2012).
* [IUT de Tremblay](http://www.iu2t.univ-paris8.fr/), (U. Paris 8, dépt. GIM, 2010).
* [IUT de Valenciennes](https://www.uphf.fr/IUT), 9 départements (en FI, FA, FC) - DUT & 20 LP.
* [IUT de Vannes](https://www.iutvannes.fr/), département Informatique (DUT et LP, 200 étudiants) depuis sept. 2014, et GEA (400 étudiants) et TC depuis 2016, STID depuis 2019.
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/), utilisateur depuis 2009, sur deux sites.
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/), (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005).
* [IUT de Villeurbanne (Lyon 1)](http://iut.univ-lyon1.fr/), département GEII, environ 220 inscrits/an.
* [IUT de Villeurbanne (Lyon 1)](http://iut.univ-lyon1.fr/) département GEII, environ 220 inscrits/an.
## Autres établissements utilisateurs (hors IUT)
* Licence de sciences (SPI) à L'Université de Bretagne Occidentale (UBO).
* Licence de sciences (SPI) à L'Université de Bretagne Occidentale (UBO);
* Masters de sciences, Institut Galilée, Université Sorbonne Paris Nord.
* Masters de sciences, Institut Galilée, Université Sorbonne Paris Nord;
* Master ISB, Université Sorbonne Paris Nord.
* Master ISB, Université Sorbonne Paris Nord;
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et gestion, AUF).
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et gestion, AUF);
* [Université Catholique d'Afrique Centrale](http://www.ucac-icy.net/), (UCAC, Yaoundé, Cameroun): Licences, Masters (2011).
* [Université Catholique d'Afrique Centrale](http://www.ucac-icy.net/) (UCAC, Yaoundé, Cameroun): Licences, Masters (2011);
* [École Supérieure des Sciences et Technologies de l'Ingénieur de Nancy](http://www.esstin.univ-lorraine.fr), (jusqu'en 2013).
* [École Supérieure des Sciences et Technologies de l'Ingénieur de Nancy](http://www.esstin.univ-lorraine.fr) (jusqu'en 2013);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

View File

@ -1,19 +1,14 @@
# 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 en France et à l'étranger. 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;
- aide à la décision pour les jurys;
- listes des étudiants (groupes, trombinoscopes, bordereaux divers);
- 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é.
@ -22,17 +17,11 @@ ScoDoc est un *logiciel libre*: vous pouvez [participer à son développement](C
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.
parue le 19 septembre 2021.
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
@ -40,37 +29,27 @@ retourner à `Emmanuel.Viennet at gmail.com`.
- 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>
- Ancienne présentation au colloque du [CRI-IUT](https://www.criiut.fr/) en 2013: [diapos en pdf](papers/presScoDocCRIIUT2013.pdf)
- 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)
## Communauté d'utilisateurs
- Le Discord des utilisateurs: assistance chat ou audio [rejoindre le salon](https://discord.gg/ybw6ugtFsZ)
- Le discord des utilisateurs: assistance chat ou audio [rejoindre le salon](https://discord.gg/ybw6ugtFsZ)
- [Listes de diffusion e-mail](ListesDeDiffusion.md)
- 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)
* 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)
## Actualités
### 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)*.
### Parution de ScoDoc 9.0
Version majeure, avec une architecture logicielle complètement remaniée. Dans un
premier temps, ScoDoc 9 n'offre presque pas de nouvelles fonctions par rapport à
l'ancien ScoDoc 7, mais son code permet des évolutions plus aisées.
### 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
### Quatre stagiaires (printemps 2021)
- 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
@ -103,32 +82,12 @@ entente.
### Feuille de route (roadmap)
Les prochaines versions de ScoDoc (*sous réserve !*):
- ScoDoc 9.3 : prévue en mai 2022
- tenue des jurys BUT et exports Apogée
- 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.
- ScoDoc 9.1 : octobre 2021 gestion du bachelor (BUT)
- ScoDoc 9.2 : décembre 2021 nouvelles fonctionnalités liées au BUT.
<br>

View File

@ -1,51 +0,0 @@
-----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-----

View File

@ -1,28 +0,0 @@
div.md-sidebar--secondary,
div.md-sidebar--secondary div {
background-color: rgb(217, 217, 217);
border-radius: 8px;
}
div.md-sidebar--secondary div.md-sidebar__scrollwrap {
margin-left: 0;
margin-right: 0;
}
.md-content h1,
.md-content h2,
.md-content h3 {
margin-block-start: 0px;
margin-top: 0px;
margin-bottom: 0px;
font-weight: bold;
}
.md-content ul {
margin-top: 0px;
}
.md-content h3+p {
margin-block-start: 0px;
margin-top: 0px;
}

View File

@ -1,46 +1,32 @@
site_name: ScoDoc
theme:
# name: mkdocs
name: material
name: mkdocs
navigation_depth: 3
features:
- navigation.tabs
- toc.follow
- navigation.top
palette:
primary: light blue
language: fr
logo: assets/images/android-chrome-192x192.png
extra_css:
- stylesheets/extra.css
nav:
- Accueil: index.md
- Documentation:
- "Guide utilisateur": GuideUtilisateur.md
- "Tutos vidéos": https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1
- "Responsables de formations": GuideAdminFormation.md
- "Le BUT": BUT.md
- "FAQ": FAQ.md
- 'Guide utilisateur': GuideUtilisateur.md
- 'Tutos vidéos': https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1
- 'Responsables de formations': GuideAdminFormation.md
- 'FAQ': FAQ.md
- Installation:
- "Guide administration": GuideAdminSys.md
- "Installation": GuideInstallDebian11.md
- "Mises à jour": MisesAJour.md
- "Interfaces SI": InterrogationPortail.md
- "Publication des notes": PublicationEtudiants.md
- "Export Apogée": ScoDocApogee.md
- 'Guide administration': GuideAdminSys.md
- 'Installation': GuideInstallDebian11.md
- 'Mises à jour': MisesAJour.md
- 'Interfaces SI': InterrogationPortail.md
- 'Publication des notes': PublicationEtudiants.md
- 'Export Apogée': ScoDocApogee.md
- 'API': ScoDocAPI.md
- Association:
- "Association 1901": AssociationScoDoc.md
- "Utilisateurs": UtilisateursScoDoc.md
- 'Association 1901': AssociationScoDoc.md
- 'Utilisateurs': UtilisateursScoDoc.md
- Développement:
- "Git": https://scodoc.org/git
- "Guide Développeurs": GuideDeveloppeurs.md
- "API (interfaçages autres logiciels)": ScoDoc9API.md
- 'Git': https://scodoc.org/git
- 'Guide Développeurs': GuideDeveloppeurs.md
- FAQ: FAQ.md
@ -59,11 +45,3 @@ extra_javascript:
markdown_extensions:
- pymdownx.arithmatex:
generic: true
- footnotes
- pymdownx.tasklist:
custom_checkbox: true
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format

View File

@ -31,4 +31,4 @@ EOF
(cd site && ln -s img/favicon.ico .)
# --- Publish
rsync -vaze ssh --delete site scodoc.org:/var/www/html
rsync -vaze ssh site scodoc.org:/var/www/html