diff --git a/.gitignore b/.gitignore index efb6541..99c1f0c 100644 --- a/.gitignore +++ b/.gitignore @@ -189,3 +189,5 @@ dmypy.json # Cython debug symbols cython_debug/ +# MkDocs ScoDoc +site/ diff --git a/README.md b/README.md index c4ecf72..c395e72 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,14 @@ -# DocScoDoc +# Documentation de ScoDoc, + +Documentation (Web) de ScoDoc, en [MkDocs](https://www.mkdocs.org/). + +La documentation de ScoDoc7, hébergée au LIPN sur une plate-forme +[Trac](https://trac.edgewall.org/), a été traduite en +[Markdown](https://www.markdownguide.org/basic-syntax/) en septembre +2020 et passée sous git. + +Le site est depuis hébergé sur [https://scodoc.org]. + + + -Documentation (Web) de ScoDoc, en MkDocs. \ No newline at end of file diff --git a/docs/.DS_Store b/docs/.DS_Store new file mode 100644 index 0000000..78fd3cc Binary files /dev/null and b/docs/.DS_Store differ diff --git a/docs/AdminUsers.md b/docs/AdminUsers.md new file mode 100644 index 0000000..ebc727b --- /dev/null +++ b/docs/AdminUsers.md @@ -0,0 +1,34 @@ + +## Gestion des utilisateurs dans ScoDoc +ScoDoc gère sa liste d'utilisateurs (enseignants, secrétaires) dans +une base de données SQL. + + +/!\ 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) + + +### 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**. + +La table **sco_users** contient: + + **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") + + +/!\ 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). + diff --git a/docs/ApiCreationParcours.md b/docs/ApiCreationParcours.md new file mode 100644 index 0000000..909b369 --- /dev/null +++ b/docs/ApiCreationParcours.md @@ -0,0 +1,38 @@ + + +# Parcours ScoDoc +Les cursus pédagogiques sont définis dans ScoDoc par des classes de "parcours" qui définissent les paramètres: nombre de semestres, modalités de validation des UE, etc. + +Plusieurs parcours sont définis dans ScoDoc, l'utilisateur choisi l'un d'entre eux pour chacun des programmes pédagogique (menu **Type de parcours**). +Les parcours existants incluent les suivants: + + * DUT (*Diplôme Universitaire de Technologie*, en quatre semestres) + * Licence Professionnelle + * Master (différents types) + * etc. + +Il est possible d'ajouter des parcours adaptés en ajoutant du code Python. Toutefois, afin de ne pas perturber les mises à jours et de garantir la pérennité des modifications, il est très recommandé de partager les modifications pour inclusion dans le code ScoDoc. Contacter pour cela la liste scodoc-devel ([listes de diffusion](ListesDeDiffusion.md)). + + +## Quelques indications pour les programmeurs +Les parcours sont définis dans le module `sco_codes_parcours.py`. Chaque parcours correspond à une sous-classe de `TypeParcours`, définissant des paramètres et quelques méthodes. + +Les paramètres (déclarés comme des variables de classe) sont les suivants: + +Nom | Type |   +--- | ---- | --- +TYPE_PARCOURS| `int` | id du parcours (un entier unique, à demander sur scodoc-devel) +NAME| `string` | nom du parcours présenté à l'utilisateur (requis) +NB_SEM| `int` | durée en semestres (1) +BARRE_MOY | `float` | seuil validation semestre (10/20) +BARRE_UE_DEFAULT | `float` | seuil moy UE pour valider semestre (8/20) +BARRE_UE | `dict { ue : seuil }`| seuil par UE (`{}`) +NOTES_BARRE_VALID_UE_TH | `float` | seuil validation UE (10./20) +ALLOW_SEM_SKIP| `bool` | passage: autorise-t-on les sauts de semestres ? (`False`) +SESSION_NAME| `string` | nom des sessions (`'semestre'`) +SESSION_ABBRV | `string` | `'S' -> S1, S2, ...` +UNUSED_CODES | `set` | ensemble des codes jury non autorisés dans ce parcours (`set()`) +UE_IS_MODULE| `bool` | un seul module par UE (si plusieurs modules, etudiants censéments inscrits à un seul d'entre eux) (`False`) +ECTS_ONLY| `bool` | parcours avec progression basée uniquement sur les ECTS (`False`) +ALLOWED_UE_TYPES | `set` | types d'UE autorisés dans ce parcours + diff --git a/docs/ApiGenerationBulletinsPdf.md b/docs/ApiGenerationBulletinsPdf.md new file mode 100644 index 0000000..3343a18 --- /dev/null +++ b/docs/ApiGenerationBulletinsPdf.md @@ -0,0 +1,437 @@ + +# Générer des bulletins en Python +Il est possible de coder de nouveaux styles de bulletins de notes (web et/ou PDF), pour répondre précisément aux besoins de votre établissement. + +Ce n'est pas très difficile, mais il faudra coder en langage Python avec pour le PDF la bibliothèque ReportLab (qui est bien documentée, [voir le guide](http://www.reportlab.com/software/opensource/rl-toolkit/guide/)). + +ScoDoc demande la création d'un bulletin pour un étudiant donné dans semestre donné (`formsemestre_id`). +Le bulletin doit être rendu sous forme d'une liste d'objets PLATYPUS (voir le chapitre 5 du "User Guide" de ReportLab cité plus haut). + +/!\ Attention (août 2011): nouvelle version, changement d'API: les informations ci-dessous s'appliquent à partir de la subversion 1047. + + +## Organisation +A minima, il vous faut créer un module python (fichier .py) qui se définira une classe chargée de générer vos bulletins. + +Ce fichier doit être placé dans le répertoire `/opt/scodoc/instance/Products/ScoDoc` + +Il faut aussi l'importer dans `sco_bulletins_generator.py` (voir tout à la fin de ce fichier). + +Voici un module minimal commenté (le fichier `sco_bulletins_example.py` est fournit avec ScoDoc): +``` +#!python +# -*- mode: python -*- +# -*- coding: iso8859-15 -*- + +"""Génération d'un bulletin de note style "Exemple" +(commentaire libre ici) +""" + +# Quelques modules [ScoDoc](ScoDoc.md) utiles: +from sco_pdf import * +import sco_preferences +from notes_log import log +import sco_bulletins_generator +import sco_bulletins_standard + +class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_standard.BulletinGeneratorStandard): + """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 + 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). + # Si on veut changer le reste, surcharger les méthodes: + # .bul_title_pdf(self) : partie haute du bulletin + # .bul_part_below(self, format=*) : infos sous la table + # .bul_signatures_pdf(self) : signatures + + def bul_table(self, format=*): + """Défini la partie centrale de notre bulletin PDF. + Doit renvoyer une liste d'objets PLATYPUS + """ + assert format == 'pdf' # garde fou + return [ + Paragraph( SU("L'étudiant %(nomprenom)s a une moyenne générale de %(moy_gen)s" % self.infos), + self.CellStyle # un style pdf standard + ) + ] + +# Déclarer votre classe à [ScoDoc](ScoDoc.md): +sco_bulletins_generator.register_bulletin_class(BulletinGeneratorExample) +``` + +Si l'on voulait générer aussi du HTML (pour la version web), il suffirait de le déclarer dans la liste `supported_formats` et que la méthode `bul_table()` renvoie une chaîne HTML si le paramètre format vaut `'html'`. + + +Pour modifier l'en-tête du bulletin PDF (partie au dessus de la table), il faut surcharger la méthode `bul_title_pdf` qui elle aussi renvoie une liste d'objets PLATYPUS: +``` +#!python + def bul_title_pdf(self): + ... +``` + +De même, les informations placées sous la table principale sont renvoyées par la méthode `gen_part_below`: +``` +#!python + def gen_part_below(self, format=*): + """Génère les informations placées sous la table de notes + (absences, appréciations, décisions de jury...) + Renvoie: + - en HTML: une chaine + - en PDF: une liste d'objets platypus + """ + ... +``` + +et les signatures (seulement sur le PDF) par `bul_signatures_pdf`. Toutes ces méthodes renvoient des listes d'objets PLATYPUS quelconques. + +Vous pouvez partir d'un format de bulletin existant et proche de ce que voulez obtenir et définir une sous-classe modifiant (surchargeant) seulement les méthodes qui génèrent les éléments que vous voulez modifier. + +/!\ Attention: ne pas modifier après coup le nom des classes de générateurs (ici `BulletinGeneratorExample`), car il va être stocké en base de données par ScoDoc. + + +## Accès aux informations +La plupart des informations nécessaires sont accessibles via des attributs de votre instance de générateur que ScoDoc aura positionné avant d'appeler vos méthodes. Notamment: + * `self.infos`: un (grand) dictionnaire python avec la plupart des informations préparée pour le bulletin à générer (voir plus loin); + * `self.version`: indique la version de bulletin demandée par l'utilisateur ("long" ou "short", vous pouvez en faire ce que bon vous semble); + * `self.context`: contexte ScoDoc, permettant l'accès à l'API complète. + + +## Le dictionnaire d'informations +L'attribut `infos` est un dictionnaire qui contient de très nombreuses informations. il doit être utilisé en **lecture seule** (il est possible que des informations soient partagées entre threads différents, aussi les modifier peut avoir des effets indésirables). . + + +### Paramètres (préférences) +Tous les paramètres du semestre sont accessibles via leur nom. Voir la liste sur la page [NomsPreferences](NomsPreferences.md). + +Exemple: `infos['SCOLAR_FONT_SIZE']` est un entier, `infos['UnivName']` est le nom de l'université. + + +### Informations sur le semestre +Un semestre est représenté par un dictionnaire avec les attributs +suivants: + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + int |semestre_id| Indice dans le parcours | 1 + string |titre| | 'DUT GEII' + string |titre_num| | 'DUT GEII, semestre 1' + string |titreannee| | 'DUT GEII, semestre 1 FI 2011' + string |titremois| | 'DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011)' + string |annee_debut| | '2011' + string |annee_fin| | '2011' + | anneescolaire| | '2010 - 2011' + string |date_debut| | '09/03/2011' + | date_debut_iso| | '2011-03-09' + | date_fin| | '31/07/2011' + | date_fin_iso| | '2011-07-31' + | dateord| | '2011-03-09' + | mois_debut| | 'Mars 2011' + int |mois_debut_ord| | 3 + | mois_fin| | 'Jul 2011' + int |mois_fin_ord| | 7 + string |modalite| | 'FI' + string |etape_apo| Code étape Apogée | 'V1TR2' + string |etape_apo2| Code étape Apogée (si 2 codes) | * + string |etat| verrouillé ('0') ou non ('1') | '1' + | formation_id| id interne de la formation | 'FORM14570' + | formsemestre_id| id interne du semestre | 'SEM15176' + string |gestion_compensation| | '0' + string |gestion_semestrielle| | '0' + string |responsable_id| | 'viennet' + int {0,1} |ens_can_edit_eval| | 0 + int {0,1}|resp_can_change_ens| | 0 + int {0,1} |resp_can_edit| | 0 + string |bul_bgcolor| | * + string |bul_hide_xml| | '0' + + +Pour le semestre à traiter, ces attributs sont directement dans `infos`. + +On trouve aussi dans `infos['etud']` tous les semestres par lesquels +est passé l'étudiant. + + +### Informations sur l'étudiant + +#### Identité + +Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + | string * | etudid | id ScoDoc de l'étudiant | 'EID15219' | + string | code_ine | | * + string | code_nip | | * + string | codepostaldomicile | | '75018' + | date_naissance | | * + | annee_naissance | | '1947' + | domicile | | * + | email | | * + | lieu_naissance | | * + | nationalite | | * + | ne | "e" si étudiante, vide sinon | * + | nom | | 'FOURIER' + | prenom | | 'JOSEPH' + | sexe | | 'M.' + | nomprenom | | 'M. Joseph Fourier' + | paysdomicile | | * + | telephone | | * + | telephonemobile | | * + | telephonemobilestr | | * + | telephonestr | | * + | typeadresse | | 'domicile' + | villedomicile | | * + | villelycee | | + + +#### Admission +Informations importées dans ScoDoc lors de la création de l'étudiant +(import des données d'admission): établissement d'origine, notes de +lycée, etc.) + +Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + | bac | Série de bac | 'S' + | specialite | Spécialité de bac | 'SVT' + | math | note math antérieure (en terminale ou au bac ou ...) | * + | physique | note physique antérieure | * + | francais | note francais (au bac en général) | * + | anglais | note anglais antérieure | * + | annee_bac | année d'obtention du bac | '2010' + | nomlycee | | * + | codelycee | | * + | codepostallycee | | * + | qualite | note de qualité du dossier attribuée par le jury d'admission | * + | rang | rang de cet établissement dans les voeux du candidat (si applicable) | * + | rap | | "Pas d'informations sur les conditions d'admission." + | rapporteur | pseudo du collègue chargé de l'examen de ce dossier | * + | score | Score calculé pour ce dossier à l'admission | * + | commentaire | Commentaire du jury d'admission| * + | decision | Décision du jury d'admission | 'ADMIS' + | description | Comment l'étudiant a été inscrit | '(creation individuelle)' + + +#### Inscription + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + int | annee | | 2011 + string | etatincursem | état (I=inscrit, D=démissionnaire) | 'I' + string | inscription | | 'DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011)' + string | situation | | 'inscrit en DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011) le 11/09/2011' + string | statut | ? | * + | descr_inscription | | 'Inscrit le 27/06/2011.' + +En outre, les attributs `sems`, `cursem` et `ins` apportent des informations +sur les semestres auxquels l'étudiant est ou a été inscrit. + +`etud['sems']`est une liste de dictionnaire représentants les +semestres auxquels est ou a été inscrit l'étudiant. + + +### Résultats (notes) de l'étudiant dans le semestre +Quelques infos sur les résultats. Le détail des notes est dans la +liste `infos['ues']` et ses sous-listes imbriquées (modules, evaluation). + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + string | moy_gen | moyenne générale de l'étudiant dans le semestre | '12.00' + string | bonus_sport_culture | bonus appliqué | 0 + string | moy_max | moyenne max promo | '12.00' + string | moy_min | moyenne min promo | '10.00' + string | moy_moy | moyenne des moyennes promo | '11.00' + int | nb_inscrits | nombre étudiants du semestre (incluant démissionnaires et défaillants) | 78 + int | nb_demissions | nombre de démissions dans le semestre | 3 + int | nb_defaillants | nombre de défaillants dans le semestre | 2 + int | nbabs | nombre de 1/2 journées d'absences | 0L + int | nbabsjust | idem, justifiées | 0L + string | rang | classement | '(attente)' + string | rang_txt | classement (avec titre) | 'Rang (attente) / 2' + list | ues | résultats dans les UE, voir ci-dessous | [ liste de dict ] + +Chaque élément de la liste `ues` représente les résultats de +l'étudiant dans une UE. + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + string | acronyme | | 'UE 1' + string | coef_ue_txt | Coefficient (chaîne) | '2' + string| cur_moy_ue_txt | Moyenne prise en compte pour cette UE | '12.00' + float | max | moyenne max promo | 12.0 + float | min | moyenne min promo | 10.0 + list | modules | détails notes dans les modules de l'UE | [ liste de dict] + list | modules_capitalized | | [] + float | moy | | 11.0 + string | moy_ue_txt | moyenne étudiant dans UE | '12.00' + int | nb_moy | nombre de moyenens calculées dans cette UE (inscrits, sans démissionnaires ni défaillants) | 76 + int | numero | rang tri UE | 1 + string | titre | | 'Formation Générale' + int | type | code type UE | 0 + string | ue_code | code dans programme formation | 'UCOD5' + string | ue_descr_html | rang ou autre info à afficher | '(attente)/2' + string | ue_descr_txt | rang ou autre info à afficher | '(attente)/2' + string | ue_id | id interne ScoDoc | 'UE14572' + dict | ue_status | statut de l'UE (voir ci-dessous)| { dict } + +**Statut d'une UE (champ `ue_status`):** + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + float | coef_ue | | 2.0 + | coefs_bonus_gen | | [] + | cur_coef_ue | | 2.0 + | cur_moy_ue | | 12.0 + string | expr_diag | infos erreur calcul formule utilisateur | {} + bool | is_capitalized | est-elle capitalisée? | False + | moy | | 12.0 + | nb_missing | | 1 + | nb_notes | | 1 + | notes_bonus_gen | | [] + | sum_coefs | | 2.0 + | was_capitalized | | False + + +**Résultats dans un module:** + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + | code | | * + | code_html | | * + | code_txt | | * + | computation_expr | | * + | ens | | [] + | evaluations | | [] + | formsemestre_id | | 'SEM15176' + | mat | | {'titre': 'Mathématiques' } + | mod_coef_txt | | '2' + | mod_descr_txt | | "Module Fondamentaux d'algèbre et de trigonométrie, coef. 2 (Béatrice DUPONT)" + | mod_eff | | 2 + | mod_moy_txt | | '12.00' + | mod_rang | | '(attente)' + | mod_rang_txt | | '(attente)/2' + | module | | {voir plus loin} + | module_id | | 'MOD14576' + | moduleimpl_id | | 'MIP15178' + | name | | 'Algèbre' + | responsable_id | id du responsable | 'dupont' + | stats | statistiques sur les notes du module | `{'moy': 9.576, 'nb_missing': 2, 'max': 16.5, 'min': 0.0, 'nb_notes': 39, 'nb_valid_evals': 1}` + +Le module (tel que décrit dans le programme de la formation) est représenté par: + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + string | titre | | "Fondamentaux d'algèbre et de trigonométrie" + string | abbrev | | 'Algèbre' + string | code | | 'M1' + float | coefficient | | 2.0 + | ects | | None + | formation_id | | 'FORM14570' + | heures_cours | | 0.0 + | heures_td | | 30.0 + | heures_tp | | 0.0 + | matiere_id | | 'MAT14574' + | module_id | | 'MOD14576' + | numero | | 10 + | semestre_id | | 1 + | ue_id | | 'UE14572' + + + +**Résultat dans une évaluation:** + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + | coef_txt | | '1' + | coefficient | | 1.0 + | descrheure | | ' ? 08h00' + | description | | * + | duree | | '2h' + | etat | | { voir plus loin } + | evaluation_id | | 'EVAL15226' + | evaluation_type | | 0 + | heure_debut | | '08h00' + | heure_fin | | '08h00' + | jour | | '01/07/2011' + | moduleimpl_id | | 'MIP15178' + | name | | 'le 01/07/2011' + | nb_abs | | 0 + | nb_att | | 0 + | nb_inscrits | | 2 + | nb_neutre | | 0 + | nb_notes | | 2 + | note_html | | '12.00' + | note_max | | 20.0 + | note_txt | | '12.00' + | notes | | { voir plus loin } + | publish_incomplete | | '0' + | visibulletin | | '1' + +**Etat d'une évaluation:** + +Le champ `etat` d'une évaluation ets un dict donnant des informations sur les résultats de la promo (et des groupes) dans cette évaluation: + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + bool | evalattente | | False + bool | evalcomplete | | True + | evaluation_id | id interne | 'EVAL15226' + list | gr_incomplets | | [] + list | gr_moyennes | | [] + list | groups | liste des groupes | {} + datetime | last_modif | | + string | median | note médianne promo | '11.00' + string | moy | note moyenne promo | '11.00' + | nb_abs | nb étudiants absents | 0 + | nb_att | nb notes en attente | 0 + | nb_inscrits | nb inscrits à ce module | 2 + | nb_neutre | nb notes neutralisées | 0 + | nb_notes | nb notes saisies | 2 + + +`gr_moyennes` est un dict: + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + | gr_median | | '11.00' + | gr_moy | | '11.00' + | gr_nb_att | | 0 + | gr_nb_notes | | 2 + | group_id | | 'G24919' + | group_name | | None + +**Notes dans une évaluation:** + +Le champ `notes` dans une évaluation est un dictionnaire dont les clés sont les `etudids`, et les valeurs des dictionnaires donnant les informations sur la note de l'étudiant dans cette évaluation: + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + string | comment | commentaire saisie note | * + datetime | date | date de saisie | + string | etudid | | 'EID15214' + string | evaluation_id | | 'EVAL15226' + string | uid | utilisateur ayant saisi la note | 'admin' + float | value | valeur de la note (sur 20) | 10.0 + + + +### Décisions de jury et autres informations + + Type | Nom | Description | Exemple de valeur + ----| --- | ---- | --- + | decision_sem | | None ou dict + string | decision_jury | décision du jury en clair (présent seulement si décision saisie) | 'Validé' + list | appreciations | | [] + list | appreciations_list | | [] + list | appreciations_txt | | [] + string | mention | texte de la mention calculée | 'Très bien' + | filigranne | texte en surimpression | 'Provisoire' + + + +## Note: la fonction log +Pour la mise au point, il peut être utile de recourir à la bonne vieille fonction log, qui envoie du texte dans le fichier de log courant, normalement `/opt/scodoc/instance/log/notes.log`. La date et le saut de ligne final sont automatiquement ajoutés. +``` +log("toto") +``` + diff --git a/docs/AssociationScoDoc.md b/docs/AssociationScoDoc.md new file mode 100644 index 0000000..4b51c78 --- /dev/null +++ b/docs/AssociationScoDoc.md @@ -0,0 +1,14 @@ +# Association 1901 ScoDoc + + +ScoDoc est un logiciel libre et gratuit, Open Source. + +Le développement du projet a été porté par son créateur, Emmanuel Viennet, professeur à l'université Sorbonne Paris Nord (ex Paris 13), plusieurs fois chef du département Réseaux et Télécommunications de l'IUT de Villetaneuse et Président de l'ACD R&T. Plusieurs collègues bénévoles ont contribué, corrigeant ou ajoutant des fonctions. Ils sont enseignants ou BIATSS dans les IUT de Colmar, Ville d'Avray, Grenoble, Le Havre, Lille, Nantes, pour ne citer que ceux-là. + +Le développement d'un logiciel de cette ampleur prend du temps et demande des moyens matériels : serveurs, machines de développement et de test. La possibilité de recruter des stagiaires, apprentis ou CDD pour travailler sur le projet a souvent été évoquée. Pour se donner ces possibilités et pérenniser le projet, nous avons créé début 2020 une association à but non lucratif (loi 1901). + +Les établissements ou départements qui utilisent ScoDoc sont encouragés à adhérer à l'association. Leur cotisation permettra de financer les actions de l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise à jour et support technique. + +Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion](papers/Adhesion-2020-Association-ScoDoc.pdf) ([version Word](papers/Adhesion-2020-Association-ScoDoc.docx)), à renvoyer à `emmanuel.viennet at gmail.com`. + +Je vous remercie de votre support qui rendra possible la pérennité du projet ScoDoc \ No newline at end of file diff --git a/docs/AvisPoursuiteEtudes.md b/docs/AvisPoursuiteEtudes.md new file mode 100644 index 0000000..03bd021 --- /dev/null +++ b/docs/AvisPoursuiteEtudes.md @@ -0,0 +1,248 @@ +## Jury et avis de Poursuites d'Etudes + +Partant d'un semestre sélectionné, l'onglet **Statistiques > Documents Avis de Poursuite d'Etudes** (ci-dessous appelé **outil PE**) propose une aide à la tenue du jury et à l'édition des avis de poursuites d'études pour les étudiants de DUT. + +### Les tags + +Les avis (demandés par les différents établissements post-DUT) attendent fréquemment des moyennes transverses aux modules voire aux +semestres du PPN : par exemple, moyenne sur les matières théoriques, les matières techniques, +moyenne en français, etc... + +L'outil PE permet le calcul de ces moyennes en utilisant des **tags** affectés aux modules dans le **Programme** de formation. +Tous les modules portant le même tag (attention à la casse et à l'accentuation) seront intégrés ensemble dans le calcul de la moyenne. + +Voici l'exemple du programme du DUT RT taggué (figure ci-dessous), où par exemple, le tag *mathématiques* est affecté à tous les +modules du programme en lien avec des maths. + +Les tags peuvent également faire mention d'un coefficient servant à la pondération des modules dans le calcul de la moyenne (cf. section coefficient). +Le tag sera alors de la forme : `nom_du_tag:coeff_entier`. + +Un tag *dut* reprenant la moyenne de l'étudiant à chaque semestre est automatiquement ajouté. + +![programmeRTtaggue.png](screens/programmeRTtaggue.png) + + +### Les moyennes + +#### Les moyennes intra et inter semestres + +Au delà du "thème" des moyennes, les avis attendent parfois que ces moyennes soient calculées sur plusieurs semestres : moyenne en 1ère année, en 2ème année +voire (pour le jury) sur l'ensemble du parcours de l'étudiant. 8 plages de calculs temporelles sont donc prévus pour ces moyennes : pour chaque tag, + + * le label **S1** (respectivement S2, S3, S4) désigne une moyenne sur ce tag calculée sur le **S1** (respectivement S2, S3, S4) - ou plus précisement sur les modules du **S1** (respectivement S2, S3, S4) ayant été associé au tag considéré + * le label **1A** (respectivement 2A) désigne une moyenne sur ce tag calculée sur la **première année** (respectivement la deuxième année) - ou plus précisement sur tous les modules **du S1 et du S2** (respectivement du S3 et du S4) ayant été associé au tag considéré + * le label **3S** (souvent utilisé dans un jury de poursuites d'études se tenant juste après le S3) désigne une moyenne sur ce tag calculée sur l'**ensemble du parcours allant du S1 au S3** (inclus) - ou plus précisement sur tous les modules **du S1, S2, S3** ayant été associé à ce tag. + * le label **4S** désigne une moyenne sur ce tag calculée sur l'**ensemble du parcours allant du S1 au S4** (inclus) - donc plus précisement sur tous les modules du programme ayant été associé à ce tag. + +#### Les coefficients de pondération + +Par défaut, les moyennes calculées sur les modules associés à un tag donné utilisent +les coefficients de pondération des modules dans le programme DUT, ramenés au total des +coefficients dans les semestres qui les concernent : partant d'un semestre \(i\), en notant : + + * \(m_{i,j}\) la note d'un étudiant à un module associé au tag dans le semestre \(i\) (\(j\) donnant donc le numéro du module au sein du semestre parmi les modules associés au tag), + * \(c_{i,j}\) le coefficient du module \(m_{i,j}\) dans le programme de formation + +alors la moyenne \(M_i\) associée au tag pour le semestre \(i\) est calculée avec : +$$ +M_i = \frac{ \sum_{j} c_{i,j} m_{i,j} }{ \sum_{j} c_{i,j} } +$$ + +En notant ensuite \(c_i\) la somme des coefficients des modules du semestre \(i\) associé au tag considéré (ici \(c_i = \sum_{j} c_{i,j}\)) +et \(C_i\) la somme des coefficients de tous les modules (y compris ceux n'étant pas associés au tag considéré) du semestre \(i\) (donc \(C_i \geq c_i\)), la +moyenne \(M\) associée au tag sur les 4 semestres de formation (donc de label **4S**) est calculée avec : +$$ +M = \frac{ \sum_{i} \frac{c_i}{C_i} M_i }{ \sum_{i} \frac{c_i}{C_i} } +$$ +Plus simplement, le poids des modules associés au tag au sein d'un semestre est conservé dans le calcul de la moyenne. + +L'outil PE offre la possibilité de recoefficienter les modules associés au tag dans le calcul de la moyenne en +leur joignant un (éventuel) coefficient de pondération supplémentaire entier \(p_{i,j}\) (voir section Les tags). + +Dans ce cas, la moyenne \(M_i\) associée au tag sur le semestre \(i\) est impactée avec : +$$ +M_i = \frac{ \sum_{j} p_{i,j} c_{i,j} m_{i,j} }{ \sum_{j} p_{i, j} c_{i,j} } +$$ +La somme des coefficients des modules dans le semestre \(c_i\) devient \(c_i = \sum_{j} p_{i,j} c_{i,j}\) mais la somme +des coefficients de tous les modules \(C_i\) reste inchangée. + +Plus simplement, l'idée de cette pondération est de conserver le poids des modules au sein du semestre +tout en accord plus d'importance (lorsque \(p_{i,j} > 1\)) à la note obtenue par l'étudiant. + +Le calcul des moyennes intra-semestres (1A, 2A ou 3S) est basée sur le même principe en n'utilisant que les semestres concernés. + +#### Cas des étudiants redoublants + +Dans le cas des étudiants redoublants (par exemple ayant fait 2 semestres S1), ne sont conservés que les notes obtenues dans les UE validées +par les décisions de jury : dans l'exemple, il s'agira (le plus souvent) des notes du S1 le plus récent, sauf pour un étudiant qui aurait capitalisé +une UE et dont une partie des notes proviendrait de son UE capitalisée. + +### Les classements et les statistiques + +Les avis demandent souvent le classement associé à la moyenne obtenue sur un tag et pour un temps donné (label 1A, 2A, ...) avec l'ambiguité +de la cohorte considérée. Ce classement peut aller de pair avec des données statistiques (nombre d'étudiants, note minimum, maximum, moyenne sur la cohorte). +L'outil PE propose deux cohortes et donc deux séries de classement/statistique par tag et label temporel. + +#### La "cohorte" filière + +Est appelé filière l'ensemble des étudiants inscrits dans le même semestre temporel que le dernier impliqué dans la moyenne calculée. Prenons l'exemple +d'une moyenne sur le tag mathématiques portant sur le label 3S (c'est à dire sur les semestres S1, S2, et S3). La filière sera l'ensemble des étudiants inscrits +dans le S3. Dans ce S3, pourront se trouver des étudiants de différents parcours comme : + + * des étudiants "standards" avec S1 validé, S2 validé, S3 validé (du premier coup) + * des étudiants redoublants avec (par exemple) un parcours de la forme S1 validé, S2 non validé, S3 non validé, S2 validé, S3 validé (dont étant entrés à l'IUT un an avant les étudiants "standards"). + +De fait, les notes prises en compte pour les étudiants standards et les étudiants redoublant pourront provenir de modules ne s'étant pas tenus +aux même universitaires. Les seuls modules communs garantis seront ceux du S3 (aka le dernier semestre de l'ensemble S1+S2+S3). + +#### La "cohorte" promo + +Est appelé promo 20XX l'ensemble des étudiants susceptibles de valider leur diplôme DUT en date de juillet 20XX quelque soit le programme de formation DUT +suivi. + +Par exemple, la promo 2017 inclut les étudiants qui valideront leur S4 en juillet 2017 ; ceux ayant validé leur S4 en juillet 2016 appartiennent à la promo 2016. +Parmi les étudiants de la promo 2017, on retrouve les étudiants "standards" étant entrés à l'IUT en septembre 2015 avec un parcours S1 validé, S2 validé, S3 validé et S4 validé. +On retrouve également les étudiants entrés à l'IUT en septembre 2014 et ayant redoublé 1 à 2 semestres donc validant leur S4 entre janvier et juillet 2017. Les étudiants +ayant démissionnés ou s'étant réorientés (aka. ne s'étant pas réinscrit dans un semestre DUT là où il aurait "du" le faire) sont exclus de la promo. + +Remarque: les calculs des étudiants de la promo fonctionnent à condition que les dates des semestres de début d'année universitaire s'étalent sur 2 années civiles (par exemple +S1 de septembre 2016 à janvier 2017) et que les dates des semestres de fin d'année universitaire sont limitées à une année civile (par exemple S2 de janvier à juillet 2017). + +#### Les classements + +Un élève au regard de sa moyenne à un tag, sur un laps de temps donné (label S1, 1A, 3S, ...) est donc classé soit sur sa filière soit sur la promo. Les statistiques +du groupe (que ce soit la filière ou la promo), plus précisément la note minimum, maximum et la moyenne du groupe sont également fournies. + +## L'export du tableur récapitulatif + +L'onglet PE renvoie une archive zip pour une promotion d'élèves diplômés en 20XX, +contenant notamment un fichier Jury_PE_20XXjurySyntheseDict_20XX_v2.xls. Ce fichier récapitule l'ensemble des moyennes, des classements et des statistiques +des élèves dont le S4 sera (prévisiblement) validé en 20XX. Le fichier contient un tab par tag saisi dans le programme. Par défaut, un tag est présent : +le tag dut. En plus des données numériques, on retrouve pour chaque élève la liste des semestres parcourues (colonne P1 à P6). + + + +## Les avis PE au format LaTeX + +L'archive zip contient également un export des données de poursuites d'études de la promotion d'élèves au format LaTeX (fichier .tex) pour permettre (après compilation latex à faire sur votre machine) de génerer des avis de poursuites d'études des étudiants "quasi prêts à l'emploi" (pour impression ou envoi par mail). + +### Arborescence LaTeX + +Les sources latex (fournies ici dans le fichier zip exporté par ScoDoc) s'articulent autour de l'arborescence suivante : +``` +avis.tex # Fichier principal point d'entrée du compilateur latex +avis_poursuite.tex # Fichier permettant d'inclure les avis des étudiants et fourni par ScoDoc +avis_poursuite_nom_prenom_identifiant.tex # Avis de poursuite d'études d'un étudiant généré suivant le template +avisPE.cls # Classe LaTex pour paramètrant la mise en page du document +README.txt # Informations de configuration pour les administrateurs de ScoDoc +logos # Répertoire contenant les figures (375 x 256 où toutes autres proportions équivalentes) + + logo_header.png # Le logo de l'établissement à adapter à vos besoins + + logo_footer.png # Un second logo pour le pied de page +modeles # Répertoire contenant des macros pour la mise en forme latex + + un_avis.tex # Modèle pour la génération de avis_poursuite_nom_prenom_EID0000.tex + + parcourstimeline.tex # Ligne temporelle retraçant le parcours d'un étudiant + + un_footer.tex # Modèle pour le pied de page des avis PE +``` + +La compilation pourra se lancer avec : `pdflatex avis.tex` + + +### Template LaTeX + +Les avis LaTeX sont générés à partir de deux *templates latex*, dont le contenu est fourni dans modeles/un_avis.tex et modeles/un_footer.tex de l'archive avis.zip. + +Ces templates sont livrés avec l'installation standard de ScoDoc. + +Vous pouvez également copier leur contenu dans les paramètres de ScoDoc, onglet **Paramétrage > Template LaTeX des avis** pour le modèle un_avis.tex et onglet **Paramétrage > Code LaTeX en fin d'avis** pour le modèle un_footer.tex. Vous pourrez ainsi par la suite les modifier à votre guise en respectant le format décrit ci-dessous. + +### Signataire des avis de PE + +Le nom du signataire qui sera apposé sur les avis de poursuites d'études est à saisir dans les paramètres de ScoDoc, onglet **Paramétrage > Nom du responsable des poursuites d'études**. + + +### Les sources LaTeX fournis par l'outil PE + +L'outil PE renvoie dans l'archive `Jury_PE_20XX.zip` de la promotion d'élèves diplômés en 20XX, où vous trouverez : + + 1. un fichier par étudiant de la promotion. Ce fichier est nommé sous la forme `avis_poursuite_nom_prenom_identifiant.tex` ; il synthétise les résultats et les moyennes de l'étudiant au cours de sa scolarité DUT en suivant les *templates latex* un_avis.tex et un_footer.tex. + + 2. un fichier `avis_poursuite.tex` qui liste tous les avis des étudiants à compiler (inclusion des fichiers latex de chaque étudiant). + + +#### Pour obtenir le document PDF + +1. Ouvrez l'archive zip renvoyée par ScoDoc dans votre *répertoire de travail*. + +2. Dans une invite de commande (cmd en Windows, terminal en linux) dont le répertoire courant est celui créé à l'ouverture de l'archive (commande `cd Jury_PE_...`), lancez la compilation des avis en exécutant la commande : +``` +pdflatex avis.tex +``` +Le résultat est le classeur **avis.pdf**. + +Cette compilation déclenche celle de `avis_poursuite.tex` qui elle-même lancera celle des avis par étudiants `avis_poursuite_nom_prenom_identifiant.tex` faisant partie de la promotion ciblée (on pourra commenter les avis des étudiants que l'on ne souhaite pas compiler en faisant débuter la ligne d'inclusion de leur avis dans `avis_poursuite.tex` d'un %). + +### Le rendu PDF du template proposé + +Le template proposé permet un résultat similaire à celui de la capture d'écran : + + * page1 : ![avis1.png](screens/avis1.png) + + * page2 : ![avis2.png](screens/avis2.png) + +En l'état, il fournit pour chaque étudiant : + + * son nom, son prénom, son âge; + * une frise temporelle décrivant tous les semestres DUT dans lesquels il a été inscrit (avec la nomenclature que vous avez choisi dans ScoDoc); + * un bilan synthétique de ses moyennes aux différents semestres (avec ses classements dans son groupe et dans sa promo - voir section "les classements et les statistiques" pour l'interprétation des cohortes); + * une zone d'annotation permettant un commentaire individualisé, l'annotation étant recherchée parmi les annotations du profil ScoDoc de l'étudiant (cf. section "L'annotation PE"). + +### L'annotation PE + +Lorsqu'on édite la fiche d'un étudiant, il est possible de saisir des annotations à son sujet. Ces annotations sont aussi utilisées ici pour saisir un commentaire individualisé à apposer sur l'avis de poursuites d'études au format LaTeX de l'étudiant. Pour distinguer ce commentaire des annotations plus standards, l'annotation doit débutée par un mot-clé (ici PE:) comme le montre la capture d'écran ci-dessous : + + ![annotation_PE.png](screens/annotation_PE.png) + + +Cette annotation sera alors automatiquement ajoutée à l'avis LaTeX de l'étudiant (cf. `avis_poursuite_nom_prenom_identifiant.tex`). + +L'annotation peut bien entendue être remodifiée (ou ajoutée si manquante) à la main dans le fichier `avis_poursuite_nom_prenom_identifiant.tex` avant compilation en pdf. + +Plusieurs annotations ayant trait à un commentaire PE peuvent également être mémorisées dans ScoDoc (à condition de les faire toutes précéder du tag "PE:"). Dans ce cas, seule la plus récente sera ajoutée à l'avis LaTeX de l'étudiant. + +Enfin, il est possible de modifier le tag (ici "PE:") identifiant les commentaires PE dans les annotations en allant dans l'onglet **Paramètrage > Tag désignant l'avis PE** et en y saisissant votre tag (éviter les caractères spéciaux propres au HTML, comme le ">"). + +### Personnaliser son template + +#### Les patterns de base + +Les templates d'avis (un_avis et un_footer) sont des codes LaTeX classiques que vous pouvez adaptez à loisir à vos besoins. + +Ils interprètent également une série de **patterns**, reconnaissables au fait qu'elles sont toutes encapsulées par deux séries de doubles * ; ces patterns sont traitées par ScoDoc pour accéder aux données de l'étudiant. Ainsi: + + * `**nom**` sera remplacé par le nom de l'étudiant + * `**prenom**` par le prénom + * `**age**` par son age (à la date de création des fichiers tex) + * `**sexe**` par son genre + +Plusieurs **patterns/macros** sont proposées : + + * `**parcourstimeline**` ajoute le code LaTeX pour retracer le parcours de l'étudiant (les différents semestres dans lesquels il a été inscrit) sous la forme d'une frise temporelle (cf. capture d'écran précédente) + * `**bilanParTag**` ajoute le code LaTeX d'un tableau, qui synthétise - pour tous les tags (sauf le tag *dut*) que vous avez affecté aux semestres de l'étudiant (cf. section Les tags) ses résultats aux différents aggrégats proposés (S1, S2, S3, S4, 1ère année, 2ème année, S1+S2+S3 et totalité du DUT) + +#### Les patterns personnalisées + +Tous les éléments calculés pour le jury de poursuite d'études sont également accessibles sous la forme *aggregat:cohorte:tag:critere** où : + + * aggregat est l'un des aggrégats parmi S1, S2, S3, S4, 1A, 2A, 3S ou 4S; + * cohorte est soit groupe soit promo (suivant la "cohorte" que l'on souhaite prendre en compte); + * tag est l'un des tags que vous avez déclarés dans ScoDoc (dut étant proposé par défaut); + * critere est l'un des calculs faits pour établir le jury parmi note (la note de l'étudiant), rang (le rang dans la cohorte), min, max, moy (le minimum, le maximum ou la moyenne de la cohorte). + +Par exemple, + + * **S2:groupe:mathématiques:note** sera remplacé par la note-moyenne de l'étudiant en mathématiques pour le S2; + * **4S:promo:dut:rang** sera remplacé par le rang de l'étudiant, calculé au sein de la promo, sur sa note moyenne de DUT (moyenne calculée sur les 4 semestres S1+S2+S3+S4); + * **1A:promo:physique:min** sera remplacé par la plus petite note de la promo obtenue en physique (moyenne de tous les modules tagués physique) sur toute la 1ère année (S1+S2). + + + diff --git a/docs/BulletinsNotes.md b/docs/BulletinsNotes.md new file mode 100644 index 0000000..dfc067a --- /dev/null +++ b/docs/BulletinsNotes.md @@ -0,0 +1,113 @@ + +# Edition des bulletins de notes + +Vous pouvez obtenir les bulletins de notes en différents formats: + + * page web + + * fichier PDF (dit "version papier", car très pratique pour l'impression) + + * données XML (pour interfaçage avec d'autres logiciels, comme par exemple le portail utilisé par les étudiants) + +Vous pouvez aussi générer des classeurs PDF, documents regroupant tous les bulletins des étudiants d'un semestre, c'est utile pour imprimer tous les bulletins ou les archiver. + + + +## Versions courtes, intermédiaires, longues +Les bulletins sont disponibles en trois versions: + + * **version courte**: montre les moyennes d'UE et de modules, mais pas les notes des évaluations. + + * **version intermédiaire**: montre les moyennes d'UE et de modules, et certaines évaluations (celles pour lesquelles l'option "Visible sur bulletins en version intermédiaire" est cochée. + + * **version longue**: montre les moyennes d'UE et de modules, et toutes les évaluations. + + + +## Informations sur les bulletins + +Voici un exemple de bulletin en version courte. Dans ce cas, vous constaterez que les noms abrégés des modules n'ont pas été choisis de façon très pertinente (ils sont redondants et peu compréhensibles). Les noms et codes de modules et d'UE peuvent être changés dans le programme pédagogique. + +![bulletin-info-short.png](screens/bulletin-info-short.png) + + +Le bulletin en version longue montre les notes obtenues aux différentes évaluations (contrôles et examens): + +![bulletin-info-long.png](screens/bulletin-info-long.png) + + +Les UE capitalisées (acquises lors des semestres redoublés, [[CapitalisationUE| voir explications ici]]) sont automatiquement prises en compte sur +les bulletins, comme on le voit dans cet exemple: + +![bulletin-ue-capitalisee-legend.png](screens/bulletin-ue-capitalisee-legend.png). + + + +## Choix des informations à afficher +Le choix des informations affichées sur les bulletins est effectué via des options s'appliquant à tous les bulletins d'un semestre. Seul le responsable du semestre (directeur des études) et les responsables supérieurs peuvent changer ces options. + +Utiliser le menu "Réglages bulletins" depuis le tableau de bord semestre. + +Les options sont: + + * *indiquer les absences* : indique le nombre d'absences + + * *faire figurer les décisions* : afficher la décision du jury. Il est conseillé de n'activer cette option qu'après le jury définitif. + + * *afficher codes des modules* + + * *afficher le classement dans chaque UE* + + * *afficher le classement dans chaque module* + + * *faire figurer les UE validées sur les bulletins* : code jury des UE + + * *publier le bulletin sur le portail étudiants*: contrôle l'export XML des bulletins, utilisé par le portail étudiant. Désactiver si vous ne voulez pas que les étudiants puisse lire leurs bulletins. + + * *Bannière "provisoire" sur les bulletins*: affiche la mention "Provisoire" (ou le message saisi) en filigrane + + * *Bannière "provisoire" si pas de décision de jury*: affiche la mention "Provisoire" en filigrane sur les bulletins quand il n'y a pas encore de décision de jury. + + * *Texte de la bannière "provisoire*: le texte à afficher en filigrane sur les bulletins provisoires. + + +## Mise en page des bulletins PDF et autres réglages +Vous pouvez agir sur la mise en page des bulletins PDF en passant par la page "Réglages des bulletins de notes": suivre en bas de cette page le lien *Réglage de la mise en page et envoi mail des bulletins*. + +Les paramètres réglables sont: + * marges additionnelles, exprimées en millimètres, étant entendu que le tableau de notes est toujours redimensionné pour occuper tout l'espace disponible entre les marges de la feuille, et tenir sur une page (c'est pourquoi un bulletin très long sera écrit plus petit qu'un bulletin court). + + * titre des bulletins (typiquement `Université Paris 13 - IUT de Villetaneuse - Département %(DeptName)s`). Le symbole `%(DeptName)s` est remplacé par le nom du département. + + * message texte accompagnant les bulletins envoyés par courrier électronique (mail). + +Les champs des bulletins de notes PDF peuvent être paramétrés assez finement, voir [ParametrageBulletins](ParametrageBulletins.md). +Les développeurs peuvent coder (en Python) de nouveaux formats de bulletins. Voir la documentation sur [ApiGenerationBulletinsPdf](ApiGenerationBulletinsPdf.md). + + +## Classeurs PDF +Pour générer un fichier PDF regroupant tous les bulletins (une page par bulletin), utiliser le menu "bulletins" du tableau de bord semestre. + + +## Expédition par mail +ScoDoc vous permet d'envoyer par courrier électronique un bulletin à un étudiant. Pour cela, l'adresse mail de l'étudiant doit avoir été renseignée et être valide (voir la [FicheEtudiant](FicheEtudiant.md)). + +Le mail contient un petit texte expliquant que le bulletin n'a pas de valeur officielle (seule la version distribuée après le jury fait foi), et le bulletin PDF en pièce jointe. + +Vous pouvez envoyer un bulletin via le menu "Autres opérations" de la page affichant le bulletin. + +Vous pouvez aussi envoyer tous les bulletins par mail (chaque étudiant du semestre reçoit seulement le sien), via le menu "Bulletins" du semestre. + +Voici un exemple du message envoyé aux étudiants avec leur bulletin: +``` +M. Pierre Dupont, + +vous trouverez ci-joint votre relevé de notes au format PDF. +Il s'agit d'un relevé indicatif. Seule la version papier signée par le responsable pédagogique de l'établissement prend valeur officielle. + +Pour toute question sur ce document, contactez votre enseignant ou le directeur des études (ne pas répondre à ce message). + +Cordialement, +la scolarité du département XXX. +``` +(le contenu de ce message est paramétrable, voir ci-dessus). diff --git a/docs/CalculNotes.md b/docs/CalculNotes.md new file mode 100644 index 0000000..1c643de --- /dev/null +++ b/docs/CalculNotes.md @@ -0,0 +1,95 @@ + +## Calcul des notes + +*Tout ce que vous avez toujours voulu savoir sur le calcul des moyennes...* + + +### En résumé: + +A chaque instant, ScoDoc prend en compte les notes des évaluations "complètes" (dans lesquelles toutes les notes ont été saisies ou bien signalées "en attente" avec le code ATT. Les évaluations partiellement saisies ne sont pas prises en compte, sauf si l'option "*prise en compte immédiate*" a été cochée sur l'évaluation. + +Les moyennes de modules sont obtenues en calculant dans chacun la moyenne pondérée des notes disponibles, en utilisant les coefficient des évaluations. + +Les moyennes d'UE et générale sont calculées à partir des moyennes de modules, en utilisant les coefficients du programme pédagogique (dénommé dans ScoDoc "formation"). + + +Plus de détails ci-dessous. + + +### Calcul des moyennes de modules + +Chaque évaluation produit des notes de différents types: + + * note numérique (positive ou nulle): sera normalisée entre 0 et 20 + + * note absente: considérée comme zéro + + * note en attente: non prise en compte + + * note excusée: non pris en compte + +Chaque étudiant a donc un nombre variable de notes à prendre en compte dans chaque module. Chaque note est associée à un coefficient: le coefficient de l'évaluation dans le module. + +La moyenne de module est la somme pondérée par le coefficient des évaluations des notes aux évaluations prises en compte, sauf si on a défini une formule spécifique. + + +#### Formules de calcul spéciales + +Il est possible de définir des formules de calcul spéciales pour calculer les moyennes. Ces formules sont alors utilisées par ScoDoc à la place de la moyenne pondérée standard. Voir [FormulesCalculUtilisateur](FormulesCalculUtilisateur.md) pour plus d'informations. + + +### Moyennes d'UE + +moyenne_ue = moyenne pondérée des moyennes de modules de l'UE (- malus) + +Seuls les modules auxquels l'étudiant est inscrit et dans lesquels il y a des notes sont considérés. + +Le malus appliqué à la moyenne d'UE est donné par la somme des notes du ou des modules de malus de cette UE (un type spécial de modules, voir [ModulesMalus](ModulesMalus.md)). + +Comme pour le calcul des moyennes de modules, il est possible de définir une formule ad-hoc pour le calcul de la moyenne d'UE (cela est toutefois rarement nécessaire, et il est recommandé de ne pas abuser de cette fonctionnalité: la présence de formules ralentit considérablement les calculs). +La syntaxe et les variables sont les mêmes que pour les modules; ici, le vecteur de notes est celui des moyennes de modules (et non des évaluations). Voir [FormulesCalculUtilisateur](FormulesCalculUtilisateur.md). + +La présence de formules d'UE est signalée sur le tableau de bord du semestre. + + +### Calcul de la moyenne générale + +moyenne = moyenne pondérée des moyennes d'UE + bonus sport/culture + +Le coef. d'une UE est par défaut la somme des coefs des modules qui la compose (et peut donc différer d'un étudiant à un autre, s'ils ne sont pas inscrits aux mêmes modules). + +Toutefois (depuis mai 2020), il est possible de spécifier un coefficient d'UE dans le programme pédagogique, et de l'utiliser pour calculer la moyenne générale (option "Utiliser les coefficients d'UE pour calculer la moyenne générale"). Dans ce cas, les coefficients des modules ne servent qu'à calculer les moyennes d'UE, qui sont ensuite affectée de leur propre coefficient. De cette façon, les UE pèsent le même poids pour tous les étudiants, quel que soit le nombre de modules auquel l'étudiant est inscrit (ce qui peut sembler étrange: bien réfléchir avant de choisir le mode de calcul adapté à sa formation). + +Les modules des UEs de type "Sport & Culture" ne sont évidemment pas pris en compte dans la moyenne pondérée: ils sont utilisés pour calculer le bonus, comme expliqué ci-dessous. + + +### Notes de rattrapage + +Dans chaque module, il est possible de définir une évaluation de "rattrapage". Lors de la création (ou modification) de l'évaluation, indiquer le type "Rattrapage": + +![CreateEvaluationRat.png](screens/CreateEvaluationRat.png) + +Pour chaque étudiant, la note obtenue à l'évaluation de rattrapage remplace la moyenne du module, seulement si elle est supérieure à celle-ci. + + + +### Bonus sport/culture + +Ce bonus s'applique directement sur la **moyenne générale**. + +Les notes des UEs de type spécial "Sport & Culture" sont utilisées pour calculer ce bonus. + +Pour qu'un étudiant bénéficie de ce bonus, il doit être inscrit à un module d'une UE de type "Sport&Culture". Cette UE et modules associés doivent donc être prévu dans le programme pédagogique. + +La règle par défaut, en vigueur à l'IUT de Villetaneuse, est la suivante: +*Les étudiants de l'IUT peuvent suivre des enseignements optionnels +de l'Université Paris 13 (sports, musique, deuxième langue, +culture, etc) non rattachés à une unité d'enseignement. Les points +au-dessus de 10 sur 20 obtenus dans chacune des matières +optionnelles sont cumulés et 5% de ces points cumulés s'ajoutent à +la moyenne générale du semestre déjà obtenue par l'étudiant. +* + +Mais la règle à appliquer dépend de l'établissement. Ainsi, l'Université de Haute Alsace applique le règlement suivant: *Les étudiants de l'IUT peuvent suivre des enseignements optionnels de l'U.H.A. (sports, musique, deuxième langue, culture, etc) non rattachés à une unité d'enseignement. Les points au-dessus de 10 sur 20 obtenus dans chacune des matières optionnelles sont cumulés dans la limite de 10 points. 5% de ces points cumulés s'ajoutent à la moyenne générale du semestre déjà obtenue par l'étudiant.* + +Si vous souhaitez changer la règle de calcul utilisée par ScoDoc, il faut modifier un fichier de configuration et éventuellement écrire une fonction pour calculer votre bonus. Regardez les fichier `config/scodoc_config.py` et éventuellement `bonus_sport.py`. diff --git a/docs/CapitalisationUE.md b/docs/CapitalisationUE.md new file mode 100644 index 0000000..4e2e0fa --- /dev/null +++ b/docs/CapitalisationUE.md @@ -0,0 +1,101 @@ + +## Capitalisation des UE + +Brève note explicant le système de capitalisation de UE dans le cadre des DUT. + + +### Principe + +***Arrêté d'août 2005*** + +**Article 19** - *Les unités d'enseignement sont définitivement acquises et +capitalisables dès lors que l'étudiant y a obtenu la moyenne. +L'acquisition de l'unité d'enseignement emporte l'acquisition +des crédits européens correspondants.* + +*Toute unité d'enseignement capitalisée est prise en compte dans le +dispositif de compensation, au même titre et dans les mêmes conditions +que les autres unités d'enseignement.* + +*Dans le cas de redoublement d'un semestre, si un étudiant ayant acquis +une unité d'enseignement souhaite, notamment pour améliorer les +conditions de réussite de sa formation, suivre les enseignements de +cette unité d'enseignement et se représenter au contrôle des +connaissances correspondant, la compensation prend en compte le +résultat le plus favorable pour l'étudiant.* + +(...) + +**Article 25** - *Les unités d'enseignement dans lesquelles la moyenne de +10 a été obtenue sont capitalisables en vue de la reprise d'études en +formation continue.* + + +#### Exemple (cas simple) + +Soit un étudiant qui suit un parcours S1, S2, S2D (redoublement en semestre décalé). En S2, il obtient 11.5 à l'UE 1. En S2D, il obtient 10.2 en UE 1: on calcule alors sa moyenne de S2D en remplaçant ce 10.2 par 11.5. + +ScoDoc prend automatiquement en compte la capitalisation des UE et l'indique sur les bulletins. + + +### UE capitalisées et inscriptions aux modules + +En général, les étudiants ayant capitalisé des UE et qui redoublent un ou deux semestres peuvent choisir de repasser ou non ces UE. ScoDoc conservera automatiquement la meilleure note moyenne. + +Si l'étudiant décide de ne pas repasser l'UE, il est préférable de ne pas l'inscrire aux modules correspondant du semestre qu'il redouble. Le menu "Inscription / Voir les inscriptions aux modules" permet de gérer facilement cela. + + +#### Cas des changements de programmes +Il arrive que le programme pédagogique change et que l'étudiant redoublant suive un programme différent de celui de l'UE qu'il a capitalisé. Ici, les textes sont flous et la jurisprudence fait défaut pour déterminer quelles UE sont capitalisables. En pratique, les responsables de formation (chefs de département) décident au cas par cas des équivalences entre UE de l'ancien programme et du nouveau. ScoDoc permet de faire cela en spécifiant un code d'UE qui sera identique (ou non) dans les deux programmes. Il convient d'être particulièrement attentif à ce point: dans le passé récent des IUT, il est arrivé dans certaines spécialités que l'UE 1 devienne l'UE 2 du nouveau programme. + + +### Calcul des coefficients + +Le calcul des coefficients des UE capitalisées pour le calcul de la moyenne générale est un peu compliqué. En effet: + + * les UE n'ont pas de coefficients propres: dans le programme pédagogique, les coefficients sont attribués aux modules et non aux UE; + + * le coefficient d'une UE est donc la somme des coefficients des modules qui la composent; + + * remarque: en cas d'absences excusées (notes neutralisées sur tout un module), le coef d'une UE peut fort bien varier d'un étudiant à l'autre (ou, pour un même étudiant, d'un semestre à l'autre s'il redouble). + + * en cas de capitalisation, ScoDoc calcule actuellement le coef. de l'UE capitalisée comme la somme des coefficients des modules de cette UE dans lesquels l'étudiant était inscrit *dans le programme du semestre durant lequel il a capitalisé l'UE* (changement en janvier 2016). Il est aussi possible de forcer manuellement le coefficient utilisé (via la page "modification du semestre"). + + +#### Exemple (cas compliqué) + +Soit un étudiant qui suit un parcours S1, S2, S2.2 (redoublement en semestre décalé) et capitalise l'UE 2.1 du S2. + + * en S2, moy. UE = 11.03, coef 8 + + * en S2,2, moy UE = 10.32, coef 5.7 car pas de notes en M322 et M324 + +Mais supposons que le programme de S2,2 ne soit *pas le même* que celui de S2 !. Par exemple on pourrait avoir: + + * En S2: UE2.1 = { M121, M221, M322, M324, AL2.1 } coef 8 + + * En S2.2: UE2.1 = { M121, M221, M322, M324, TH21, ESP21, ESPDEB21 } coef 9 + +ScoDoc prend le coef 9, afin que l'UE2.1 pèse la même chose pour tous +les étudiants de S2,2. + + + +#### Conclusion + +Les textes officiels étant muets sur cette question, il n'y a pas de consensus sur la meilleure façon de calculer le coefficient +affecté aux UEs capitalisées. Le mode de calcul par défaut de ScoDoc à l'avantage d'avoir les +mêmes coefficients d'UE pour tous les étudiants du semestre (sauf +absences et options), et l'inconvénient de voir la même UE affectée +de coefs différents dans des semestres successifs. + + +### Mise en œuvre dans ScoDoc + + * ScoDoc offre depuis le 21 janvier 2008 la possibilité de forcer les coefficients des UE capitalisées. Passer par "Modifier le semestre". + + * Pour entrer les moyennes d'UE capitalisées antérieurement (dans un semestre non géré par ScoDoc ou dans un autre établissement, etc), passer par le bulletin de note de l'étudiant, et dans le menu "Autres opérations", choisir ""Enregistrer une validation d'UE antérieure". + + + + diff --git a/docs/CompensationSemestre.md b/docs/CompensationSemestre.md new file mode 100644 index 0000000..9929733 --- /dev/null +++ b/docs/CompensationSemestre.md @@ -0,0 +1,17 @@ + +## Compensation des semestres +L'[arrêté du 3 août 2005](http://www.education.gouv.fr/bo/2005/31/MENS0501754A.htm) définit les modalités des parcours de DUT. + +L'article 20 (b) stipule "*Lorsque les conditions posées ci-dessus ne sont pas remplies, la +validation est assurée, sauf opposition de l'étudiant, par une +compensation organisée entre deux semestres consécutifs sur la base +d'une moyenne générale égale ou supérieure à 10 sur 20 et d'une +moyenne égale ou supérieure à 8 sur 20 dans chacune des unités +d'enseignement constitutives de ces semestres. Le semestre servant à +compenser ne peut être utilisé qu'une fois au cours du cursus.*". + + +ScoDoc propose automatiquement la compensation du semestre *n+1* avec le semestre *n* lorsque c'est possible: le code décision est alors ADC, et on mémorise que le semestre *n* a été utilisé pour compenser. + +/!\ cette possibilité n'est offerte que lorsque l'option "*proposer compensations de semestres (parcours DUT)*" (menu "*Modifier le semestre*") est activée (en effet, la règle de compensation est spécifique aux DUT et ne s'applique pas à toutes les formations LMD). + diff --git a/docs/ConfigPermissions.md b/docs/ConfigPermissions.md new file mode 100644 index 0000000..e43df1f --- /dev/null +++ b/docs/ConfigPermissions.md @@ -0,0 +1,83 @@ + +## Rôles définis dans l'installation standard +Voir aussi sur les rôles et leur utilisation la page [ConfigPermissionsDept](ConfigPermissionsDept.md) + +Les informations ci-dessous ne sont utiles que pour les développeurs ou pour des usages avancés de ScoDoc. + + +## Principales permissions et fonctions associées +### Liste des permissions Zope +Les permissions utilisées par ScoDoc ont des noms qui commencent par "Sco", de façon à les grouper dans l'interface de Zope (ZMI), qui est peu pratique. + +Pour changer ces permissions (plus précisément pour associer les permissions à des rôles), aller dans l'onglet "Security" du dossier "Dept" (celui qui *contient* l'instance de ScoDoc, habituellement nommée "Scolarite"). + +Voici les permissions utilisées: + + * **Sco View** : voir les pages de ScoDoc (à réserver aux enseignants et administratifs) + + * **Sco View Ens** : voir les parties réservées aux enseignants (à l'exclusion des secrétariats) + + * **Sco Modifier toutes notes** : modifier toutes les notes (dans tous les semestres) + + * **Sco Modifier toutes les evaluations** : créer/modifier/supprimer des évaluations dans tous les semestres (mais pas saisir des notes) + + * **Sco Change Formation** : créer/modifier/supprimer des formations (programmes pédagogiques) + + * **Sco Implement Formation** : mettre en place des semestres (sessions) de formation + + * **Sco Change Absences** : saisir des absences + + * **Sco Change Etud Address** : changer les adresses des étudiants + + * **Sco Change Etud Groups** : changer les groupes des étudiants + + * **Sco Inscrire Etud** : inscrire des étudiants + + * **Sco Etud Add Annotations** : ajouter des annotations sur les étudiants + + * **Sco View Entreprises** : accéder au fichier d'entreprises + + * **Sco Change Entreprises** : modifier le fichier d'entreprises + + * **Sco Users Manage** : voir et modifier les utilisateurs ScoDoc + + * **Sco Users View** : voir les utilisateurs ScoDoc + + * **Sco Change Preferences** : modifier les préférences du département + + * **Sco Super Admin** : réservé à l'administrateur (création de départements) + +Pour la liste à jour des permissions et leur nom complet, et les associations initiales rôles/permissions, voir le fichier `sco_permissions.py` dans les sources. + + +### Rôles associés à chaque permission dans chaque département +Les rôles listés ici sont ceux définis dans chaque département (`Admin` réfère donc à l'`AdminXXX` du département `XXX`, à ne pas confondre avec l'utilisateur `admin`). + +Permission | Rôles... | |   +-----------| ------- | -- | -- + **`ScoView`** | `Ens` | `Secr` | `Admin` + **`ScoEnsView`** | `Ens` | | `Admin` + **`ScoUsersView`** | `Ens` | `Secr` | `Admin` + **`ScoEtudAddAnnotations`** | `Ens` | `Secr` | `Admin` + **`ScoAbsChange`** | `Ens` | `Secr` | `Admin` + **`ScoEntrepriseView`** | `Ens` | `Secr` | `Admin` + **`ScoEntrepriseChange`** | | `Secr` | `Admin` + **`ScoEtudChangeAdr`** | | `Secr` | `Admin` + **`ScoChangeFormation`** | | | `Admin` + **`ScoEditAllNotes`** | | | `Admin` + **`ScoEditAllEvals`** | | | `Admin` + **`ScoImplement`** | | | `Admin` + **`ScoEtudChangeGroups`** | | | `Admin` + **`ScoEtudInscrit`** | | | `Admin` + **`ScoUsersAdmin`** | | | `Admin` + **`ScoChangePreferences`** | | | `Admin` + + +## Gestion des utilisateurs +Les utilisateurs sont associés à des rôles et à un département principal. + +Le fait d'être, ou non, associé à un département est important pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, *il ne pourra créer des utilisateurs que dans ce département* (c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département). + + +Plus d'informations techniques sur la page [AdminUsers](AdminUsers.md). + diff --git a/docs/ConfigPermissionsDept.md b/docs/ConfigPermissionsDept.md new file mode 100644 index 0000000..cc9938b --- /dev/null +++ b/docs/ConfigPermissionsDept.md @@ -0,0 +1,36 @@ + +## Rôles définis dans l'installation standard + +`XXX` désigne typiquement le nom du département ("RT" ou "GEA"). + + * `AdminXXX`: toutes opérations ScoDoc (chef de département, et éventuellement un ou deux collaborateurs de confiance); + + * `EnsXXX`: enseignant du département; + + * `SecrXXX`: secrétaire du département. + +L'installation standard défini aussi un utilisateur "*admin*", qui a le rôle "Manager", ce qui lui confère normalement tous les droits sur toutes les parties du site. L'usage de cet utilisateur particulier devrait être réduit à la création de nouveaux départements, et son mot de passe ne devrait pas être divulgué aux utilisateurs de ScoDoc. + +Les utilisateurs sont associés à des rôles et à un (et un seul) département principal. + +Un utilisateur peut avoir un nombre quelconque de rôles dans différents départements. + +Le département de rattachement est utile pour indiquer qui (quel administrateur) a le droit de modifier l'utilisateur (lui changer son mot de passe, etc), mais n'influe pas sur les permissions accordées à l'utilisateur (sauf pour les administrateurs). + +Le fait d'être, ou non, associé à un département est important pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, il ne pourra créer des utilisateurs que dans ce département (c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département). + + +## Permissions dépendantes du contexte +Outre les rôles associés à chaque utilisateur, le calcul des autorisations dépend du contexte de l'opération. Par exemple, un responsable de semestre a des droits particulier sur ce semestre, ou encore un responsable de module sur la saisie des notes dans ce module. + + +### Qui peut saisir des notes ? +Peuvent saisir des notes dans une évaluation située dans un module: + + * le ou les administrateurs (rôle `AdminXXX`, où `XXX` est le département); + * le responsable du semestre (directeur des études); + * le responsable du module; + * les enseignants "associés" au module (en général des collègues désignés par le responsable de module ou le directeur des études). + +---- +Voir aussi la page [ConfigPermissions](ConfigPermissions.md) pour plus de détails sur les permissions (pour les développeurs). diff --git a/docs/CreationEtudIndividuel.md b/docs/CreationEtudIndividuel.md new file mode 100644 index 0000000..da409ef --- /dev/null +++ b/docs/CreationEtudIndividuel.md @@ -0,0 +1,21 @@ +# Création manuelle d'un étudiant + +Le formulaire *créer un nouvel étudiant* permet de saisir +les informations concernant un étudiant. + +On réservera en général son usage à l'inscription tardive de nouveaux +étudiants isolés, ou à la gestion de formation d'effectifs réduits. +Si vous avez de nombreux étudiants, il est plus simple de passer par une feuille +excel, voir [ImportationEtuds](ImportationEtuds.md). + +Remplir les différents champs du formulaire. Seuls les champs suivants +sont obligatoires: + + * Code INE + * nom + * prénom + * genre + * groupe TD + +Les autres cases peuvent être laissées vides. + diff --git a/docs/DonneesAdmissions.md b/docs/DonneesAdmissions.md new file mode 100644 index 0000000..c8c238d --- /dev/null +++ b/docs/DonneesAdmissions.md @@ -0,0 +1,49 @@ +# Données d'admission des étudiants + +ScoDoc peut stocker et afficher des données sur la scolarité antérieure de l'étudiant (dites "données d'admission"). Ces données seront utilisées à titre de documentation et pour faire certaines statistiques (notamment les taux de réussite par type de bac). Seule la scolarité en lycée est considérée. + +Notons qu'il n'est actuellement pas possible d'intégrer dans ScoDoc des résultats de semestres effectués ailleurs (étudiants arrivant en cours de cursus): il faudra traiter ces cas à la main (capitalisation éventuelle d'UE). + +Actuellement, les données stockées sont: + +Champs | Contenu +-------|------- +**bac** | Série de bac (ex: "S" ou "STI") +**specialite** | Spécialité de bac (ex: "SVT M" ou "GENIE ELECTRONIQUE" +**annee_bac** | année d'obtention du bac +math | Note de math au Lycée (terminale ou bac) +physique | Note de physique +francais | Note de français (note de bac) +anglais | Note d'anglais +rapporteur | Nom du rapporteur ayant examiné le dossier +commentaire | Commentaire du rapporteur +**nomlycee** | Nom du Lycée d'origine +**villelycee** | Commune du Lycée +**codepostallycee** | Code postal du Lycée +**codelycee** | Code du Lycée d'origine (utilisé si nomlycee absent) + +Les champs indiqués en **gras** sont, lorsque c'est possible, importés du portail Apogée (voir [InterrogationPortail](InterrogationPortail.md)). +Les champs `nomlycee`, `villelycee` et `codepostallycee` peuvent être absents. ScoDoc utilise dans ce cas le `codelycee`, s'il est présent, pour déterminer ces informations (le `codelycee` est le code national de l'établissement, et ScoDoc utilise un fichier de correspondance (`config/etablissements.csv`). + + +Autres données, obsolètes (plus utilisées): + +| | | +|-|-| + rang | *obsolete* Rang de l'établissement dans les voeux + qualite | Note de "qualité" du dossier + decision | Décision jury admission + score | Score calculé lors de l'admission + + +Les notes ne sont pas utilisées par ScoDoc: vous pouvez convenir de garder la note que vous préférez (moyenne de terminale, note obtenue au bac, ...). + + +Il existe trois solutions pour saisir les données d'admission: + + 1. Individuellement, via le menu "Etudiant / Changer les données identité/admission" sur la fiche de l'étudiant. + + 2. En important les données pour tous les étudiants d'un semestre depuis une feuille Excel: à partir du tableau de bord d'un semestre, menu "Inscriptions / Importer les données admission". + + 3. Si ScoDoc est interfacé à un portail, les données en gras ci-dessus sont automatiquement récupérées lors de l'inscription. Voir détails techniques sur [InterrogationPortail](InterrogationPortail.md). + diff --git a/docs/ExemplesProgrammesPedagogiques.md b/docs/ExemplesProgrammesPedagogiques.md new file mode 100644 index 0000000..0df8305 --- /dev/null +++ b/docs/ExemplesProgrammesPedagogiques.md @@ -0,0 +1,76 @@ + +# Echanges de programmes pédagogiques entre établissements +ScoDoc permet d'exporter et d'importer des programmes pédagogiques, échangés sous forme de fichiers XML. + +Pour importer un programme, suivre le lien "Importer une formation" sur la page "Programmes". + +A titre d'exemple, quelques programmes de DUT, donnés sans aucune garantie d'exactitude ! Ces programmes peuvent être importés dans ScoDoc puis modifiés pour s'adapter à vos besoins. + + +## Diplôme Universitaire des Technologie (PPN DUT) (par ordre alphabétique) + + * DUT Carrières Sociales option AS (IUT du Havre, juillet 2013) : formation_CS_OptionAS.xml + version 2014: formation_exportCS_AS_LeHavre.xml (voir mise à jour plus bas) + + * DUT Carrières Sociales option ASSC (IUT du Havre, juillet 2013) : formation_CS_OptionASSC.xml + version 2014: formation_exportCS_ASSC_LeHavre.xml (voir mise à jour plus bas) + + * DUT GEA (IUT du Havre, juillet 2013) : formation_GEA.xml + version 2014: formation_exportGEA_LeHavre.xml (voir mise à jour plus bas) + + * DUT GEA (IUT Villetaneuse, 2010) : gea_iutv_v6.xml + + * DUT GEII (PPN été 2013). Version contribuée par J. Billoué, IUT de Tours: dut_geii_tours_2013.xml + version 2014 Le Havre: formation_exportGEII_LeHavre.xml + + * DUT GEII (PPN juillet 2008). Version utilisée par l'IUT de Lyon 1 (contribuée par Anthony Chaussat) : dut_geii_lyon_2010.xml + + * DUT Génie Chimique - Génie des Procédés (ppn 2013, IUT de Saint-Nazaire) : DUT GCGP S1S2 2013.xml + + * DUT Génie Civil (IUT du Havre, juillet 2013) : formation_GC2013.xml + + * DUT Génie Industriel et Maintenance (GIM) (IUT de Tremblay-en-France, sept. 2013): PPN_GIM-2013.xml Autre version contribuée par Roanne et Saint-Nazaire: formation_gim.xml + + * DUT Génie Mécanique et Productique (IUT du Havre, juillet 2013) : formation_GMP2013.xml + version 2014 formation_exportGMP_LeHavre.xml + + * DUT Gestion Logistique des Transports (IUT du Havre, juillet 2013) : formation_glt.xml + version 2014: formation_exportGLT_LeHavre.xml (voir mise à jour plus bas) + + * DUT Hygiène Sécurité Environnement (HSE) (IUT du Havre, sept 2013) : maquette_HSE2013.xml (voir mise à jour plus bas) + + * DUT InfoCom, option GIDO : maquette_Infocom2013_INFO.xml + + * DUT InfoCom, option Métiers du Livre et du Patrimoine (MLP) : maquette_Infocom2013_MLP.xml + + * DUT InfoCom, option Publicité (PUB) : maquette_Infocom2013_PUB.xml + + * DUT InfoCom, Le Havre, 2014: formation_exportINFOCOM_LeHavre.xml (voir mise à jour plus bas) + + * DUT Informatique (IUT du Havre, juillet 2013) : formation_INFO2013.xml + version 2014 Le Havre: formation_exportINFO_LeHavre.xml + + * DUT Informatique (version complétée par Vélizy, juillet 2013) : ppn-info-2013.xml + + * DUT Métiers du Multimédia et de l'Internet (IUT de Vélizy, juillet 2013) : ppn-dut-mim-2013.xml + + * DUT QLIO (IUT Evry, 2015) : ppn_qlio_evry.xml + + * DUT Réseaux et Télécommunications (PPN juillet 2013) : dut_rt_ppn2013_v1.xml + + * DUT Réseaux et Télécommunications (PPN juillet 2013, version tagguée pour avis de poursuite d'études, IUT de Grenoble) : formation_RT_PPN2013_tagguee.xml + + * DUT Réseaux et Télécommunications (PPN juillet 2008): DUT_RT_PPN2008_v4.xml + + * DUT Techniques de commercialisation (TC) (IUT du Havre, sept 2013) : maquetteS1_S2_TC2013.xml + +Et aussi: 11 programmes pédagogiques utilisés à l'IUT du Havre, à jour en mars 2015: HSE, TC, InfoCom, GEA, CS_AS, GC, GLT, GMP, INFO, GEII: PPN-LeHavre2015.zip (contribution Dominique Soudière) + + +## Licences Professionnelles + + * LP Energies Renouvelables et Gestion de l'Energie Electrique (J. Billoué, Tours) : lpro_ergee_tours_2012.xml + + * Electronique Analogique et Microélectronique (J. Billoué, Tours) lpro_eam_tours_2012.xml + + * Automatique et Informatique Industrielle, spécialité Systèmes Automatisés et Réseaux Industriels (J. Billoué, Tours) : lpro_a2i_sari_tours_2012.xml + + * Licence professionnelle Réseaux et Télécommunications, option Administration et Sécurité des Réseaux (ASUR) : lp_assur.xml: + +---- + +Dominique Soudiere (IUT du Havre) a développé une macro Excel pour faciliter la saisie des programmes pédagogiques: MaquetteVersion2017.xlsm + diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000..7c12691 --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,90 @@ + +## FAQ +En cours d'élaboration et en vrac... + + +### Utilisation de ScoDoc +#### Comment prendre en compte les notes de sport ou autres bonus ? +Voir [CalculNotes](CalculNotes.md) + + +#### Qui peut voir les notes, et quand ? +Tous les collègues (enseignants et administratifs) pouvant accéder au département peuvent voir les notes, en passant par la page du module concerné. + +Les notes n'apparaissent dans les bulletins et tableaux récapitulatifs que lorsqu'elles +sont prises en compte dans les moyennes: soit parce que toutes les notes des étudiants inscrits à cette évaluation sont saisies, soit parce qu'il s'agit d'une évaluation avec "prise en compte immédiate". + +Les **étudiants n'ont pas accès à ScoDoc**, et ne peuvent donc pas voir leurs notes, sauf si une interface spécifique est configurée ("portail", avec affichage sur leur ENT en général, cet affichage pouvant être désactivé depuis ScoDoc pour un semestre particulier). A défaut, il faut leur envoyer leurs bulletins par mail. + + +#### Comment supprimer une évaluation ? +1. Supprimer toutes les notes saisies dans cette évaluation, s'il y en a: +passer par la page "Saisie des notes" et suivre le lien "Effacer toutes les notes de cette évaluation". + +2. Lorsqu'il n'y a plus de notes, une croix rouge apparait sur le tableau de bord du module: cliquer dessus pour supprimer l'évaluation. + + +#### En IUT, comment gérer les licences professionnelles ? + * On peut créer un département regroupant les licences, ou bien rattacher chaque licence à un département existant. Cette dernière solution est préférable si des étudiants de DUT poursuivent en licence (ainsi, on a automatiquement accès à leur parcours complet). + + * La plupart des licences pro durent un an, mais sont gérées comme un seul semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans l'option "*Semestre dans la formation*" (page "*modification du semestre*"). + + +### Configuration +#### Comment changer les logos sur les documents PDF (PV...) +Ce n'est malheureusement pas encore simple. +Il faut (pour l'instant) être administrateur sur le serveur ScoDoc. +Les logos sont stockés dans le répertoire `/opt/scodoc/var/scodoc/config/logos/` (anciennement dans `/opt/scodoc/Products/ScoDoc`) et doivent être des images JPEG (extension `.jpg`). +Il faut aussi indiquer les tailles des images dans le fichier de configuration `config/scodoc_config.py`, variable `CONFIG.LOGO_FOOTER_HEIGHT` etc. + + * Sur les PV, `logo_header.jpg` est affiché en haut, et `logo_header.jpg` en bas de la page. + * 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 ( [GuideInstallDebianDix](GuideInstallDebianDix.md) ) assure l'installation de tout les éléments nécessaires au bon fonctionnement de ScoDoc. Une distribution sous forme de container Docker est prévue prochainement. + + + +#### Quand et comment mettre à jour le logiciel ? +Des améliorations et corrections sont fréquemment introduites. Les plus importantes sont annoncées sur la liste de diffusion "[scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces)". Appliquer les mises à jour assez souvent, en suivant les instructions données sur [MisesAJour](MisesAJour.md). + + + +#### Quelles sauvegardes des données ? +Voir [SauvegardesBases](SauvegardesBases.md). + + +#### Où sont les journaux (logs) ? +En cas de problème (bug, erreur de manipulation, suspicion de piratage), différents journaux peuvent être consultés. + + * Le journal du serveur Web Apache +``` +/var/log/apache2/scodoc_access.log +``` + + + * les opérations effectuées sur un étudiant sont accessibles via le menu "Etudiant" / "Voir le journal..." en haut de la fiche individuelle de l'étudiant. + + * le fichier `/opt/scodoc/log/notes.log` reçoit des messages de déboggage de ScoDoc. (c'est là que sont écrits les messages envoyés par la fonction `log()` dans le code de ScoDoc). + + * le fichier `/opt/scodoc/log/events.log` reçoit des messages de déboggage du serveur Zope (démarrages/arrêts, erreurs d'authentification, bugs liés à des problèmes d'installation, etc.) + + +#### Je n'ai pas de certificat SSL ! +Il est de plus en plus important d'installer un certificat SSL; les navigateurs Web sont de plus en plus méfiants et vos utilisateurs seront très gênés si votre ScoDoc n'a pas de certificat valide. +Si votre établissement (par exemple via RENATER) ne vous fournit pas de de certificat, je conseille de passer par Let's Encrypt dont l'utilisation est très simple et rapide. + +Pour vos tests en local, avec Chrome, modifier le paramétrage en réglant: `chrome://flags/#allow-insecure-localhost`. + + + +#### Comment supprimer un département ? +La suppression d'un département efface toutes les données: étudiants, notes, etc. Se connecter sur ScoDoc (Web) comme administrateur, suivre le lien `Administration de scodoc` sur la page d'accueil, et supprimer le département. Cette opération retire le département de l'application Web, mais ne supprime pas la base de données du serveur. Pour cela, se connecter (en ssh) en tant que `root` sur le serveur, aller dans le répertoire `/opt/scodoc/Products/ScoDoc/config` et lancer le script `./delete_dept.sh`. + + + diff --git a/docs/FicheEtudiant.md b/docs/FicheEtudiant.md new file mode 100644 index 0000000..ad8f3b3 --- /dev/null +++ b/docs/FicheEtudiant.md @@ -0,0 +1,3 @@ +# FicheEtudiant + +TODO diff --git a/docs/FormulesCalculUtilisateur.md b/docs/FormulesCalculUtilisateur.md new file mode 100644 index 0000000..cb336c7 --- /dev/null +++ b/docs/FormulesCalculUtilisateur.md @@ -0,0 +1,111 @@ + +## Formules utilisateurs pour le calcul des moyennes +Dans certains cas (assez rares), on veut calculer la note d'un module autrement qu'avec une simple moyenne des notes pondérée par les +coefficients des évaluations. Par exemple, on veut parfois prendre la meilleure note de deux évaluations. On peut alors définir une formule ad-hoc pour le calcul de la moyenne du module. + +Les formules sont aussi utilisable pour calculer la moyenne d'une Unité d'Enseignement (UE). + +/!\ Attention: l'utilisation de formules ralenti considérablement les traitements, et devrait être réservé à des cas exceptionnels. + + +### Détails +Le problème est compliqué par le fait que les notes à traitées ne sont pas toujours des nombres: absences, notes en attentes ou manquantes... + +La formule reçoit donc: + + * Un tableau (vecteur) de notes (noté "notes"), de taille fixe et égale au nombre d'évaluations définies. Dans ce tableau, les notes "manquantes" ou "neutralisée" sont remplacées par des zéros. Les valeurs sont toujours entre 0 et 20. Toutes les évaluations sont présentes, même celle des évaluation incomplètes (mais leurs notes sont mises à zéro, même celles des étudiants qui ont une note note). + + * Un tableau des coefficients de chaque évaluation, dans lequel les valeurs correspondants aux notes "manquantes" sont nulles. + +Dans ces tableaux, les évaluations sont ordonnées en fonction de leur place sur le tableau de bord du module: l'ordre des évaluation (par défaut par date) peut être modifié par l'utilisateur en utilisant les flèches. + +Ainsi, si on a pour un étudiant deux évaluations de coefficients 2 et +3 avec les notes (12/20 et 16/20), on aura: +``` +notes = [ 12., 20. ] +coefs = [ 2., 3. ] +``` + +Quelques fonctions sont définies: `abs, cmp, dot, len, map, max, min, pow, reduce, round, sum, ifelse`. + +Exemples: + + * Le max de deux évaluations: `max( notes[0], notes[1] )` (*voir une meilleure approche plus bas*) + * La moyenne classique: `dot( notes, coefs ) / sum(coefs)` (la fonction dot est le produit scalaire habituel) + * Ajouter 1 à la moyenne: `ifelse(moy_valid, min(moy_val + 1, 20), moy)` + * `ifelse(condition, valeur_si_vrai, valeur_si_faux)` + * on utilise `min` car le résultat ne doit en aucun cas dépasser 20 + * pour le calcul, on utilise la variable `moy_val` (un nombre) + * si la moyenne n'est pas valide, on renvoie la valeur `moy` (ce qui permet de garder le bon code) + * Le max de deux évaluations, en résistant aux notes manquantes: `ifelse(moy_valid, max(notes[0], notes[1]), moy)` + + +Autres variables définies dans les formules: + + * moy : la valeur de la moyenne calculée classiquement (somme pondérée) /!\ *attention, ce n'est pas forcément un nombre !* + * moy_val: la valeur de la moyenne (moy) (toujours un nombre, valant 0 si moyenne invalide) + * moy_valid: vrai si la moyenne (moy) est valide (numérique). Par exemple, si absence EXCusée, la moyenne n'est pas valide. + * cmask : un vecteur de 0/1, 0 si l'évaluation correspondante n'a pas de note, 1 sinon. + * nbabs : nombre d'absences de l'étudiant dans le semestre (en demi-journées) + * nbabs_just: nombre d'absences *justifiées* de l'étudiant dans le semestre (en demi-journées) + * nbabs_nojust : nombre d'absences *non justifiées* de l'étudiant dans le semestre (en demi-journées) + + +Attention: pour les conditions, on utilisera la fonction `ifelse`: comme pour tout appel de fonction python, les arguments cette dernière sont évalués avant l'appel, ce qui implique que les deux branches (vraie et faux) sont toujours évaluées. Ce détail est important si l'une d'entre elle déclenche une exception ! + + + +### Calcul des moyennes d'UE +Dans les formules de calcul des moyennes d'UE, on peut utiliser soit le vecteur de notes soit avec des indices numériques (comme ci-dessus, les moyennes de modules étant accessibles dans l'ordre sous lequel elle apparaissent dans les bulletins de notes), soit en utilisant le code du module. + +Ainsi, la moyenne du module `BD1` serait aussi accessible comme la variable `notes['BD1']`. + +Exemple: dans une UE, on veut ajouter la note du module SPORT (qui aurait été défini avec un coefficient nul dans le programme), on écrira: +``` +ifelse(moy_valid, min(moy_val+notes['SPORT'], 20), moy) +``` + + +### Traitement des erreurs +La formule doit ramener une valeur numérique entre 0 et 20, sans quoi +ScoDoc considère la note erronée et la remplace par le code 'ERR' (qui +se voit dans le tableau récapitulatif des notes et sur les bulletins). +Idem pour tout autre erreur de calcul pouvant se produire. +Si vous voyez des 'ERR', corrigez votre formule ! (message d'erreur affiché sur le tableau de bord du semestre) + + + +## Exemples de formules de calcul utiles +### Exemple (contribué par Cédric C., IUT de Bordeaux) + +*J'ai réussi à faire mon calcul de moyenne pour une évaluation ayant pour calcul :* `moyenne(DS5, TD4, moyenne(TP1,TP2,TP3))` + +*Si cela vous intéresse, voici le détail : * +``` +Moyenne des [TPs](TPs.md) +(notes[1]*coefs[1]+notes[2]*coefs[2]+notes[3]*coefs[3])/(coefs[1]+coefs[2]+coefs[3]) + +Somme des coefficients des [TPs](TPs.md) jamais nulle (avec prise en compte d’une excuse globale) +ifelse(max(max(cmask[1],cmask[2]),cmask[3]), coefs[1]+coefs[2]+coefs[3],1) + +Moyenne globale +(notes[5]*coefs[5]+notes[4]*coefs[4]+TP)/(coefs[5]+coefs[4]+CTP) + +Calcul du Coefficient de la moyenne TP pour moyenne globale + max(max(cmask[1],cmask[2]),cmask[3]) + +Il ne faut pas que le dénominateur puisse être nul donc on prend +max(coefs[5]+coefs[4]+CTP,1) + +Test global pour excuse +Ifelse(max(max(max(max(cmask[1], cmask[2]), cmask[3]), cmask[4]), cmask[5]),moncalcul,moy) + +Soit la formule finale de moyenne de production +ifelse(max(max(max(max(cmask[1], cmask[2]), cmask[3]), cmask[4]), cmask[5]), ((notes[5]*coefs[5]+notes[4]*coefs[4]+ (notes[1]*coefs[1]+notes[2]*coefs[2]+notes[3]*coefs[3])/( ifelse(max(max(cmask[1],cmask[2]),cmask[3]), coefs[1]+coefs[2]+coefs[3],1) +)))/max(coefs[5]+coefs[4]+max(max(cmask[1],cmask[2]),cmask[3]),1) ,moy) +``` + + +### Autres exemples +*à compléter, n'hésitez pas à envoyer vos exemples !* + diff --git a/docs/GestionAbsences.md b/docs/GestionAbsences.md new file mode 100644 index 0000000..a129c3f --- /dev/null +++ b/docs/GestionAbsences.md @@ -0,0 +1,66 @@ + +## Suivi des absences + +ScoDoc permet d'enregistrer les absences des étudiants. + +Les absences sont notées par demi-journées (matin ou après midi). + +Elles peuvent être "justifiées" ou non. + +Dans les pages concernant un étudiant, un cadre en bas à gauche permet de visualiser le compte d'absences (comptées en demi-journées) et de les visualiser sur un calendrier de l'année scolaire. On peut simplement ajouter, justifier ou supprimer une absence pour un étudiant. + +Une absence: + + * correspond à une demi-journée durant laquelle l'étudiant a été noté absent; + * peut être signalée plusieurs fois (ScoDoc ne la comptera qu'une fois). + +Un justificatif: + + * permet de signaler que l'absence est "excusée" (certificat médical...); + * peut être saisi à n'importe quel moment, avant ou après le signalement de l'absence. + +Les absences peuvent aussi être saisies pour tout un groupe d'étudiants via un formulaire adapté (voir le menu "Saisir absences" sur le tableau de bord du semestre). + +Le compte des absences peut ou non figurer sur les bulletins de notes, suivant les réglages choisis (voir le menu "Préférences du semestre"). + + +### Notification par mail des absences + +ScoDoc peut prévenir par email lorsqu'un étudiant a "trop d'absences". +Peuvent être prévenus: + + * le chef du département; + * le responsable du semestre concerné (direction des études en IUT); + * une autre adresse indiquée dans les paramètres (cela peut être une liste de diffusion, par exemple); + * le responsable du module concerné par une évaluation dans laquelle un étudiant est signalé absent (voir plus bas). + +Pour éviter d'inonder les utilisateurs de messages, plusieurs paramètres sont réglables: + + * notifier les absences au chef (oui/non); + * notifier les absences au dir. des études (oui/non); + * notifier les absences aux resp. de modules (oui/non); + * notifier les absences aux étudiants (individuellement); + * autre adresse vers laquelle notifier; + * fréquence maximale de notification N (un utilisateur ne recevra pas plus de 1 message tous les N jours, *par étudiant*); + * seuil de première notification: nombre d'absences tolérées avant premier envoi de notification (comptées en demi-journées); + * seuil notifications suivantes: une notifications toutes les *N* absences, après le premier seuil; + * message notification e-mail (template modifiable). + +Ces paramètres peuvent être spécifiés globalement ou par semestre (comme pour la plupart des paramètres ScoDoc, voir [PreferencesScoDoc](PreferencesScoDoc.md)). + + +*Absences aux évaluations*: lorsqu'une absence concerne potentiellement une évaluation, le responsable du module concerné peut être prévenu. Limitations: la résolution temporelle de l'absence est la demi-journée, une évaluation peut être plus courte; il appartient à l'enseignant de vérifier si l'étudiant était réellement absent lors de son évaluation (ou si la justification d'absence produite couvre bien sa plage horaire). Notons que ScoDoc se fonde sur la date de l'évaluation déclarée, pas sur l'emploi du temps (qui n'est pas géré par ScoDoc). + + +### Billets d'absences +Les "billets d'absences" sont issus d'une demande du département Informatique de l'IUT de Villetaneuse en 2009, et sont implémentés à titre expérimental. + +Le scénario d'utilisation est le suivant : + + * l'étudiant absent remplit un formulaire web (sur le portail étudiant, donc hors ScoDoc) indiquant les dates (début et fin) de son absence et sa raison; + * ce billet rempli est alors envoyé à ScoDoc et doté d'un numéro unique ; + * il l'imprime et va au secrétariat porter cette impression du formulaire (faisant apparaitre le numéro) et le justificatif correspondant; + * le secrétariat, quand il en a le temps, rentre le numéro de la fiche d'absence et a juste une case à cocher : justifié/non justifié. + +Voir détails techniques sur [ServicesXml](ServicesXml.md). + diff --git a/docs/GestionAdresses.md b/docs/GestionAdresses.md new file mode 100644 index 0000000..293f1b3 --- /dev/null +++ b/docs/GestionAdresses.md @@ -0,0 +1,22 @@ + +## Coordonnées des étudiants + +ScoDoc conserve dans sa base de données les informations concernant les +coordonnées des étudiants (adresse postale, téléphones, mail). + +Ces informations sont modifiables par les utilisateurs ayant le rôle +"secrétariat". + +Lors de la création des étudiants, ces informations sont souvent importées +d'une source externe: fichier Excel ou import Apogée. Dans ce dernier cas, +il est utile de conserver au cours du temps la synchronisation entre les informations +Apogée et celle conservées par ScoDoc. Cependant, il est rarement envisageable +de modifier automatiquement les informations Apogée lors des modifications locales +(problèmes de droits d'accès...). Nous offrons donc la possibilité d'émettre un message mail +à chaque modification des informations personnelles de l'étudiant (identité, coordonnées). + +Le réceptionnaire de ce mail est supposé mettre à jour (manuellement !) la source externe (Apogée). + +Si le besoin s'en faisait sentir, il serait envisageable d'écrire un connecteur chargé d'effectuer la mise à +jour. + diff --git a/docs/GestionJury.md b/docs/GestionJury.md new file mode 100644 index 0000000..ab14f4e --- /dev/null +++ b/docs/GestionJury.md @@ -0,0 +1,138 @@ + + + + +# Gestion des jurys DUT +La gestion des jury DUT s'est inspirée des travaux de J.F. Mazoin, de l'ADIUT (et en particulier du document présenté le 30 mai 2006). +Nous utiliserons les codes suivant pour représenter les décisions de jury: + +* **Codes d'état de semestre :** + + Code |   + -----|----- + ADM | semestre validé automatiquement + ADC | semestre validé par compensation avec un autre + ADJ | semestre validé par le jury + ATT | pas la moyenne, barres UE ok: décision en attente du semestre suivant + ATB | problème de barre: décision en attente du semestre suivant + ATJ | n'a pas respecté les condition d'assiduité: mis en attente + ATJ* | manque de note (attente jury “décalé) (non implémenté dans ScoDoc) + AJ | semestre ajourné (échec) + NAR | semestre ajourné, non autorisé à redoubler. + +***Note 1:*** le code ADM ne doit être utilisé que si l'étudiant satisfait strictement toutes les conditions: + + - moyenne générale supérieure ou égale à 10; + + - moyennes d'UE supérieures ou égales à 8; + + - assiduité satisfaisante; + + - semestres précédents tous validés. + +***Note 2:*** le code ADC ne doit s'utiliser que lorsqu'il y a compensation, au sens *strict*: + + - les UE des deux semestres ont des moyennes >= 8 + + - la moyenne des moyennes générales est supérieure à 8 + + - assiduité satisfaisante. + +(Chaque semestre ne pouvant n'en compenser qu'un seul autre, nous sommes conscients que cette règle +conduit à désavantager certains étudiants qui compensent, alors que le jury décide de valider le +semestre à des étudiants plus faibles qui ne peuvent pas compenser et conserve donc cette possibilité +pour la suite de leur parcours...). + +* **Codes d'état d'UE:** + +Code |   +-----|----- +ADM | UE validée automatiquement (moyenne UE >= 10) | +CMP | UE validée (moyenne UE < 10, mais semestre validé) | +AJ | UE ajournée (échec) | + +Notons que le jury n'intervient pas sur les décisions d'UE: elles sont toujours prises +*automatiquement* en fonction des notes (et enregistrées par ScoDoc lorsqu'on entre une +décision de semestre). + +* **Codes devenir:** (*internes à ScoDoc, donnés ici pour information*) + +Code |   +-----|----- +NEXT | passe au semestre suivant dans le cursus +REO | réorienté (dans une autre filière, “exclus”) +REDOANNEE | redouble annee (eg passe de S2 à S1) +REDOSEM | redouble semestre (eg passe de S1 à S1 "décalé") + + +La prise en compte de l'assiduité n'est pas automatique dans ScoDoc: le jury peut décider qu'un étudiant satisfait ou non aux obligations d'assiduité. La page de validation affiche pour chaque semestre le nombre de demi-jurnées d'absences non justifiées de l'étudiant. + +Pour chaque étudiant, ScoDoc propose sur une page les différentes décisions que peut prendre le jury +(ou la commission). + +Le jury conduit à prendre les décisions suivantes: + + - attribuer un code d'état au semestre courant (“Code SEM”); + + - attribuer un code à chaque UE du semestre courant (“Codes UE”); + + - éventuellement, attribuer un code au semestre précédent (si en attente) (“Code prev”); + + - décider du devenir de l'étudiant (passage, redoublement, réorientation) (“Devenir”). + + +## Compensation des semestres +Voir la page [CompensationSemestre](CompensationSemestre.md) + + +## Capitalisation des UE +Voir la [ note sur la capitalisation des UE](CapitalisationUE) + + +## Gestion des cas particuliers +Parcours du type: S1 (ADM), S2 (AJ), S3 (AJ), S3D (ATT), S2D + +Il faut tenir le jury de S2D, puis revenir sur le jury de S3D qui va, si S2D est validé, recevoir le code ADM et autoriser le passage en S4. + + + + +## Document de préparation du jury +Il s'agit d'une simple feuille Excel récapitulant les informations +essentielles pour tenir un jury: + identité, parcours, moyennes et décisions des 2 derniers semestres. + +Cette feuille excel peut être retouchée manuellement pour tenir compte +des cas rares (étudiants ayant effectué le début de leur scolarité ailleurs, +etc). + + +## Procès verbaux de jury +### PV de jury: récapitulatif complet des décisions de jury +Document signé par le directeur de l'IUT récapitullant l'ensemble des décisions +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) 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 +Courriers (papier) adressés aux étudiants pour les informer +des décisions du jury. + +Document PDF à imprimer sur papier à en-tête de l'IUT (A4, portrait, une +page par étudiant). + +Les feuilles sont le plus souvent destinées à être pliées en 3 pour mise sous enveloppe avec fenêtre +(la position de l'adresse est prévue à cet effet). + +L'adresse imprimée est pour celle de ScoDoc (il est possible d'importer au +préalable celle d'Apogée). + +On peut spécifier une image de la signature du responsable de formation pour +lui éviter de fastidieuses séances de paraphage. + diff --git a/docs/GestionPhotos.md b/docs/GestionPhotos.md new file mode 100644 index 0000000..3d9d459 --- /dev/null +++ b/docs/GestionPhotos.md @@ -0,0 +1,30 @@ + +## Gestion des photos des étudiants +Une photo de chaque étudiant peut être stockée par ScoDoc. On peut aussi utiliser des photos externes (portail). + + +### Associer une photo à l'étudiant +#### Individuellement +Passer par la fiche individuelle de l'étudiant: menu "*Etudiant / Changer la photo*" et télécharger un fichier image (jpeg, gif, png...). + +ScoDoc réduit automatiquement la taille de la photo (actuellement pour obtenir une taille verticale de 90 pixels). + + +#### Import de plusieurs photos +Si vous n'avez pas la possibilité d'interfacer ScoDoc à un service fournissant les photos (via le service de la Scolarité de votre Université, par exemple), vous pouvez importer les photos via un fichier Zip et un fichier Excel permettant d'associer à chaque étudiant le bon fichier image. + + +Le menu "Photo" de la page "Trombinoscope" offre pour cela une fonction "Charger des photos...": suivre les indications données sur la page. + + +### Afficher un trombinoscope +Suivre le lien "*Photos*" du groupe qui vous intéresse. + +Le menu en haut à droite de la page permet d'obtenir une version PDF du trombinoscope (pour impression ou distribution) et une archive zip avec tous les fichiers images. + +La fonction "*Copier les photos du portail*" permet de copier dans ScoDoc les photos externes publiées sur le portail. + + +### Photos externes +Lorsque ScoDoc ne possède pas de copie de la photo d'un étudiant et qu'il est configuré avec un portail, il place dans les pages un lien vers ```portal_url + '/getPhoto.php?nip=CODE_NIP```. Voir [InterrogationPortail](InterrogationPortail.md). + diff --git a/docs/GuideAdminFormation.md b/docs/GuideAdminFormation.md new file mode 100644 index 0000000..fb2aec1 --- /dev/null +++ b/docs/GuideAdminFormation.md @@ -0,0 +1,58 @@ + +# Guide ScoDoc pour le chef de département +Dans cette partie, nous allons apprendre à: + + * définir une formation (saisie du programme pédagogique définissant les modules) + + * mettre en place un semestre (ou session) de formation + + * inscrire des étudiants à un semestre de formation + + +## Définir un programme pédagogique +Le programme pédagogique d'une formation défini les unités d'enseignement; il est destiné à être utilisé par plusieurs sessions de formation (semestres). On doit apporter un soin particulier à la définition du programme, et éviter de le modifier une fois que des semestres sont créés (il est toutefois possible d'en créer de nouvelles *versions* pour permettre des modifications ultérieures sans affecter les semestres achevés: voir [VersionProgrammes](VersionProgrammes.md)). + +On définira en général dans le programme l'ensemble des enseignements d'un diplôme (les 4 semestres d'un DUT par exemple). C'est dans une phase ultérieure que l'on mettra en place les différents semestres. + +Les programmes pédagogiques ScoDoc sont structurés en Unités d'Enseignements (UE), Matières et Modules. +Un module appartient forcément à une matière, qui appartient elle même à une UE. Les modules représentent les cours ("mathématique", "anglais", ...) et sont associées à un volume horaire (cours/TD/TP) et à un coefficient: chaque module produit une note moyenne (en général obtenue à travers plusieurs *évaluations* ou contrôles). La note moyenne d'une UE est obtenue en calculant une moyenne pondérée par les coefficients des notes moyennes de modules. + +Les matières n'ont pas d'autre utilité que d'aider à structurer le programme. Par exemple, on pourrait définir dans un programme une matière "Sciences" réunissant les modules de "mathématiques" et de "physique". Les matières n'ont pas de coefficient. Si l'on ne souhaite pas utiliser de matière, il suffit d'en créer une pour chaque module avec le même nom, ou au contraire (plus simplement) de créer une matière par UE et d'y placer tous les modules. + +Les UE jouent un rôle particulier dans l'évaluation. En effet, selon les règles du LMD, les UE sont *capitalisables* (voir [CapitalisationUE](CapitalisationUE.md)). De plus, l'obtention de droit des semestres d'un DUT est soumise à une moyenne supérieure à 8/20 dans chacune des UE. + +Notons qu'une UE ne possède pas de coefficient. Le coefficient d'une UE n'est autre que la somme des coefficient des modules qui composent cette UE. Par conséquent, le coefficient d'UE est potentiellement variable d'un étudiant à l'autre, si les étudiants ne sont pas inscrits aux mêmes modules (options ou parcours). + +Vous trouverez plus d'informations sur la définition des programmes sur la page [VersionProgrammes](VersionProgrammes.md). + + +## Créer un semestre de formation +Pour créer un semestre de formation, on va partir d'un programme pédagogique donné et y choisir un (sous)ensemble de modules. Le semestre sera associé à une date de début, une date de fin, et un responsable (*directeur des études* dans le langage IUT). + + * Options de paramétrage d'un semestre: [ParametrageSemestre](ParametrageSemestre.md) + + + +## Inscrire des étudiants + * [ Importer des listes d'étudiants](ImportationEtuds.md) (en début d'année ou de semestre) + + * [ Synchroniser avec une étape Apogée](SynchroApogee.md) + + * [ Vérifier les codes NIP](VerifCodeNIP.md) + + * [ Associer des photos aux étudiants](GestionPhotos.md) + + * [ Données sur scolarité antérieure et admission](DonneesAdmissions.md) + + + +## Suivi de la Scolarité + * [ Récapitulatif des opérations en fin de semestre et début du suivant](TransitionSemestre.md) + + * [ Note sur la capitalisation des UE](CapitalisationUE.md) + + * [ Note sur la compensation des semestres](CompensationSemestre.md) (DUT) + + +## Echanges de programmes pédagogiques entre établissements +ScoDoc permet d'exporter et d'importer des programmes pédagogiques: voir des fichiers sur la page [ExemplesProgrammesPedagogiques](ExemplesProgrammesPedagogiques.md) diff --git a/docs/GuideAdminSys.md b/docs/GuideAdminSys.md new file mode 100644 index 0000000..3b133d3 --- /dev/null +++ b/docs/GuideAdminSys.md @@ -0,0 +1,38 @@ +# Guide pour les administrateurs système de ScoDoc + +ScoDoc est prévu pour fonctionner sur un serveur **Linux Debian 10 (Buster) ou 9 (Stretch)**. +L'installation sur tout autre système est peut-être possible avec (beaucoup de) travail et n'est **pas supportée**. +Utilisez un **serveur virtuel** ou un container Docker si vous n'avez pas de machine Debian dédiée. + +## Installation + + * Installation de ScoDoc: [GuideInstallDebianDix](GuideInstallDebianDix.md) (ou [GuideInstallDebianNeuf](GuideInstallDebianNeuf.md)) + * Migration installations Debian 7 ou 8 vers Debian 9: [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md) + * Migration installations Debian 6 vers Debian 7: [MigrationVersScoDocSept](MigrationVersScoDocSept.md) + + +## Mises à jour et sauvegardes + + * [Mettre à jour du logiciel (nouvelles versions)](MisesAJour.md) + * [Mise en place de sauvegardes des bases de données](SauvegardesBases.md) + +## Configuration et préférences + + * [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 + +## Autres problèmes + + * [Problèmes configuration des envois mail](ProblemesMail.md) + * [ProblemesEtBugs](ProblemesEtBugs.md) en cas d'ennuis. + +## Utilisation avancée + + * [Interfaçage avec Apogée](ScoDocApogee.md) + * [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 + +Voir aussi le [guide pour les développeurs](GuideDeveloppeurs.md) et la [FAQ](FAQ.md). + diff --git a/docs/GuideConfig.md b/docs/GuideConfig.md new file mode 100644 index 0000000..dc6c462 --- /dev/null +++ b/docs/GuideConfig.md @@ -0,0 +1,50 @@ + +# Prise en main et paramétrage de ScoDoc +Ce document suppose que le logiciel 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). + +/!\ 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/Products/ScoDoc/logos +``` +avec les noms `logo_header.jpg` (habituellement le logo de votre composante, mais faites comme vous voulez) et `logo_footer.jpg` (habituellement le logo de votre Université ou école). + +Ensuite, éditez le fichier +``` +/opt/scodoc/Products/ScoDoc/config/scodoc_config.py +``` +et changer les valeurs des variables `CONFIG.LOGO_FOOTER_ASPECT` et suivantes (ce n'est pas pratique, il faudrait modifier le code ScoDoc pour calculer ces valeurs à partir des fichiers images). + + +Enfin, redémarrez ScoDoc (`/etc/init.d/scodoc start`). + diff --git a/docs/GuideDeveloppeurs.md b/docs/GuideDeveloppeurs.md new file mode 100644 index 0000000..c28ead9 --- /dev/null +++ b/docs/GuideDeveloppeurs.md @@ -0,0 +1,16 @@ +# Documentation pour les développeurs ScoDoc + + +Informations pour les développeurs souhaitant étendre ou modifier ScoDoc. + + * S'abonner aux [listes de diffusion](ListesDeDiffusion.md) + * [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md) + * [Créer de nouveaux types de "parcours"](ApiCreationParcours.md) + * [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications + * Notes diverses + * [Discussions pour la future gestion des absences](IdeesGestionAbsences.md) + * [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md) + + + + diff --git a/docs/GuideInstallDeb5.md b/docs/GuideInstallDeb5.md new file mode 100644 index 0000000..b4e00c2 --- /dev/null +++ b/docs/GuideInstallDeb5.md @@ -0,0 +1,4 @@ + +/!\ '''Attention: document obsolète pour une version ancienne de Debian. Voir [GuideInstallDebianDix](GuideInstallDebianDix.md) pour l'installation normale de !ScoDoc ! + + diff --git a/docs/GuideInstallDebianDix.md b/docs/GuideInstallDebianDix.md new file mode 100644 index 0000000..938c5e9 --- /dev/null +++ b/docs/GuideInstallDebianDix.md @@ -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, stable) s'exécutant sur une machine intel-like **64bits** (architecture **AMD64**). Debian s'installe facilement en une quinzaine de minutes, sur une machine normale ou un serveur virtualisé. Il est **très déconseillé** de tenter l'installation sur une autre version, à moins de disposer de temps et de bonnes connaissances sur Linux et les paquetages Python. + +Merci de me signaler tout problème (emmanuel.viennet@gmail.com) + + +- Note 1: l'image du CD d'installation de Debian (amd64) peut se trouver ici: [https://www.debian.org/distrib/netinst](https://www.debian.org/distrib/netinst.md), choisir une version "petits CD" pour **amd64** (*Il est indispensable d'utiliser une version 64 bits ! *) + +- Note 2: si quelqu'un produit, teste et documente une image Docker, merci de la partager (écrire à scodoc-devel). + + +/!\ 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. +/!\ vous pouvez installer ailleurs que dans /opt, mais il faudra alors éditer plusieurs scripts (non recommandé). + + +/!\ 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. + +/!\ 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 firehol) + * 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 init.d). + +(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)". + +/!\ 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 +``` +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**: +``` + /etc/init.d/scodoc restart +``` +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) diff --git a/docs/GuideInstallDebianNeuf.md b/docs/GuideInstallDebianNeuf.md new file mode 100644 index 0000000..e550f38 --- /dev/null +++ b/docs/GuideInstallDebianNeuf.md @@ -0,0 +1,4 @@ +# GuideInstallDebianNeuf.md + +TODO + diff --git a/docs/GuideUtilisateur.md b/docs/GuideUtilisateur.md new file mode 100644 index 0000000..995a51e --- /dev/null +++ b/docs/GuideUtilisateur.md @@ -0,0 +1,44 @@ +# Utilisation de ScoDoc + +ScoDoc contrôle les opérations via un mécanisme de permissions facile à mettre en œuvre et permettant de bien répartir les rôles entre les utilisateurs: responsables, enseignants, secrétariats. + +## Pour le responsable de formation +La définition des programmes, l'inscripton des étudiants et certains paramétrages ne sont accessibles qu'au responsable de formation, ou chef de département. + +- [Guide pour le responsable de formation](GuideAdminFormation.md) + * [Modification d'un programme pédagogique et versions](VersionProgrammes.md) + * [Exemples et partages de programmes pédagogiques entre établissements](ExemplesProgrammesPedagogiques.md) + * [Importation des étudiants](ImportationEtuds.md) + * [Synchronisation des inscrits avec Apogée](SynchroApogee.md) + * [Procédure d'inscription des étudiants via Apogée](InscriptionsEtudApogee.md) + * [Données sur l'origine des étudiants](DonneesAdmissions.md) + * [Gestion des photos des étudiants](GestionPhotos.md) + * [Coordonnées des étudiants](GestionAdresses.md) + * [Opérations en fin de semestre (jury, ré-inscriptions, ...)](TransitionSemestre.md) + * [Export des résultats et décisions de jury vers Apogée](ScoDocApogee.md) + * [Utilisation des rôles et permissions](ConfigPermissionsDept.md) + +## Pour les enseignants et administratifs: + + * [Edition des bulletins de notes](BulletinsNotes.md) + * [paramétrage des bulletins pdf](ParametrageBulletins.md) + * Comment sont calculées les moyennes : [Calcul des notes](CalculNotes.md) + +## Tenue des jurys et commissions: + + * [Saisie des décisions](SaisieDecisionsJury.md) + * [Gestion des commissions et jurys, édition des PV](GestionJury.md) + * [Capitalisation des UE](CapitalisationUE.md) + * [Compensation automatique des semestres](CompensationSemestre.md) + +## Suivi de l'assiduité + + * [Suivi de l'assiduité des étudiants](GestionAbsences.md) + +## Rapports, avis et tableaux de bords + + * [Rapports, suivi de cohortes, parcours](RapportsStatistiques.md) + * [Génération des avis de poursuite d'études](AvisPoursuiteEtudes.md) + +## Questions fréquentes +Voir la [FAQ](FAQ.md) diff --git a/docs/IdeesGestionAbsences.md b/docs/IdeesGestionAbsences.md new file mode 100644 index 0000000..f454878 --- /dev/null +++ b/docs/IdeesGestionAbsences.md @@ -0,0 +1,179 @@ + +# Nouveau système de gestion des absences (mars 2014) +Page discutant les spécifications et l'implémentation d'un nouveau système de suivi des absences dans ScoDoc, basé sur le calendrier emplois du temps. + + +L'objectif est de remplacé le système actuel par une gestion: + * basée sur des "événements" d'absence (ou présence), de durée arbitraire. + + * liée aux emplois du temps, supposés disponibles en format ics quelque part (on indique à ScoDoc l'URL du calendrier de chaque semestre). + +(un fonctionnement sans emploi du temps sera bien entendu proposé: dans ce cas, le système ressemblera à l'actuel, avec la possibilité d'indiquer la durée de l'absence.) + + +## Vocabulaire + module:: + un module d'enseignement dans un semestre donné (un `moduleimpl`). + + EDT:: + l'emploi du temps, constitué d'un ensemble de *plages*. Obtenu au format ics (iCalendar) à partir d'un logiciel de gestion d'emploi du temps (GPU, CELCAT, HyperPlanning, ...). + + Plage (d'emploi du temps):: + aussi appelé "événement": un enseignement, avec heures de début et de fin, groupe d'étudiant concerné et (facultatif) module et enseignant. + + Absence:: + un événement, donnant l'absence d'un étudiant à une date et heure donnée. Peut être associé (ou non) à un module, enseignant (et groupe ?) + + Justificatif:: + la justification d'une absence (concrétisée par un certificat médical, par exemple). Etudiant, date, heure, durée, motif. + + + +# Fonctionnalités attendues par les utilisateurs +## Obtention d'information + +1.1 Afficher le nombre d'heures absences pour un étudiant + sur une période donnée, le nombre d'heures justifiées et non justifiées. + > Permissions: View + +1.2 Afficher, pour un étudiant, le nombre d'heures d'absence dans chaque module + > Permissions: View + +1.3 Visualiser les absences d'un étudiant sous forme de calendrier. + > Permissions: View + +1.4 Présenter à un enseignant les plages horaires qu'il peut (et doit) renseigner) + +1.5 Contrôle d'accès: interdire à un enseignant normal de saisir des absences en dehors de ses plages d'intervention; + +1.6 Lister les plages pour lesquelles les absences n'ont pas été renseignées. + + + +## Signalement des absences & justificatifs + +2.1 Signaler une absence de 'x' minutes à partir de telle jour et heure (dt) + avec ou sans spécifier le module et l'enseignant. + > Permissions: Admin, Secr, resp. semestre, ou 'enseignant dans le module concerné' (restriction paramétrable car impose forte contrainte, eg EDT à jour). + + NB: /!\ Attention aux chevauchements: si une absence existe déjà, la supprimer (?) + + *On peut avoir création de 3 absences: si absent sur [t0, t1] et qu'on ajoute [t2, t3] tel que t2 > t0 et t2 < t1 et t3 < t1. + L'ajout fera la vérification (=> verrouillage, plusieurs requêtes, écriture des absences, invalider les caches) + Objectif: garantir l'absence de chevauchements, pour calculer efficacement les heures.* + +2.2 Supprimer une absence (interface: proposer de noter une présence ?) + > Permission: Admin, Secr, responsable semestre, utilisateur ayant saisi l'absence (ou enseignant du module concerné ?) + + *Problème: retrouver le semestre: que faire si l'étudiant est à cette date inscrit à plusieurs semestres ?* (cas rare, on peut autoriser les responsables de chaque semestre ?) + + +2.3 Enregistrer un justificatif pour un étudiant, de dt0 à dt1 (en général, d'un jour à 0h pour n jours ou *m* demi-journées) + + voir comment on code les justificatifs (dt, durée avec presque toujours t=0h, et durée=24h ?) + > Permission: Admin, Secr. + + + +## Présences +Les présences ne sont actuellement pas enregistrées dans ScoDoc 7. +*Je crains que cela n'alourdisse l'interface utilisateur, pour un besoin assez rare.* +# > à implémenter dans un deuxième temps ? + +3.1 Signaler la présence d'un étudiant (mêmes infos qu'une absence) + > Permission: comme ajout absence + +3.2 Calculer le nombre d'heures de présence d'un étudiant, par module ou total du semestre. + > Permission: View + +3.3 Lister les modules d'un semestre qui n'ont pas eu de présents (pour le suivi des relevés) + > Permission: View + + + +# Notes sur l'implémentation +Absence: +Attributs d'une absence: +``` + dt : datetime (jour et heure) de début de l'evènement + durée: (en secondes) + etat: flag, present|absent + entry_date: date de saisie (timestamp) + entry_user: utilisateur ayant saisi + Champs optionnels: + description: texte libre + moduleimpl_id : module concerné par l'absence + ens_id: enseignant concerné par l'absence (= celui qui donnait le cours manqué) + module_code: le code (acronyme) du module (il peut arriver que l'on récupère ce code via l'EDT mais que l'on n'ait pas la correspondance dans les modules ScoDoc: c'est quand même compté pour le total d'heures d'absences. +``` + +Si "jour" entier d'absence: + t=0h, durée=24h (ou n*24h si plusieurs jours), moduleimpl_id, ens_id non renseignés. +Comment calculer les heures ? + si emploi du temps: prendre chaque groupe g auquel appartient l'étudiant, et sommer les heures. + (-> demander à l'EDT: liste de modules enseignés dur t0, t1 au groupe g) + + ok si l'EDT est bien renseigné, et que l'on a tous les groupes. Attention: chaque plage EDT ne doit concerner qu'un groupe. + +Le calcul est fait au moment de la saisie de l'absence: lire l'EDT et générer des événements, 1 par plage edt. + +Si on n'a pas d'EDT ? afin de retrouver le comportement antérieur de ScoDoc, on génère deux absences par jour (matin: 8h-12h, après-midi: 13h-17) (paramétrable). + +Afin de garantir le sérieux des informations saisies, on interdira la saisie d'absences dans le futur (on ne fait que constater les absences passées) + + * Calcul nombre d'heures d'absence sur [dt0, dt1]: +``` + select sum(durée) from absences where dt > t0 et dt < t1 et etudid=xxx +``` + + * Calcul nombre d'heures d'absence *non justifiées* sur [dt0, dt1]: +``` + - liste des absences pour cet etudiant sur [dt0, dt1] (caché par semestre) + - liste des justificatifs pour cet etudiant sur [dt0, dt1] (caché par semestre) + - calcul sur les intervalles de temps +``` + + + +# Spécification des fichiers Emplois du Temps (ics) +Un calendrier EDT est un ensemble d'évènements (date début, date fin, attributs). + +On donne utilise un seul calendrier ics par semestre, qui donne l'emplois du temps de tous le semestre (voir toute l'année, peu importe). +Les événements ics doivent avoir des attributs permettant de retrouver: + * les enseignants (login dit "`login_edt`", utilisé par le logiciel d'emplois du temps, et mis en correspondance avec le login ScoDoc) + * le groupe (ScoDoc offre une table de transcodage `groupe_edt <-> groupe_ScoDoc`, s'ils n'ont pas les mêmes noms dans les 2 logiciels) + * le code module (idéalement, le même que le module.code de ScoDoc, mais on pourait envisager transcodage) + +Les fonctions extrayant ces trois informations des événements ics pourront être définies par l'établissement utilisateur. A l'IUTV, les ics (extraits de GPU et retraités par EDT+) comprennent les champs: +`X-GROUP-ID`, `X-MODULE-CODE`, et `X-LOGIN-ENSEIGNANTS` + +*Attention: un évènement EDT ne peut concerner qu'un seul groupe d'étudiants, mais peut faire intervenir plusieurs enseignants.* + + + + +# TODO +* détailler permissions pour chaque opération (eg: saisie absence: seulement dans certains modules ?) + + +* options d'affichage (bulletins, PV): unité de compte (heures, 1/2 journées ou journées) + + +#### Interface utilisateur (anciennes remarques à revoir) +L'enseignant voit dans son tableau de bord semestre: + + * la liste de ses séances où ont été saisies des absences; + + * la liste des séances où il doit saisir des absences. + + * Pour le directeur d'étude/secrétariat : justification de l'absence avec un champ +commentaire pour le motif ou des cases type santé avec certificat médical, famille, +permis de conduire etc. + + * Les absences d'au moins deux jours consécutifs devrait être mémorisés tels quels pour affichage +ultérieur + + * Il faudrait que les absences aux contrôles soient reportés automatiquement dans le système +d'absence, les enseignants ne devraient pas avoir à faire une double saisie d'absence et dans +la case correspondant à la notes ABS. + diff --git a/docs/IdeesGestionPlannings.md b/docs/IdeesGestionPlannings.md new file mode 100644 index 0000000..095eb77 --- /dev/null +++ b/docs/IdeesGestionPlannings.md @@ -0,0 +1,84 @@ +# Notes sur les plannings + +Le but de cette page est de discuter les idées pour +une future gestion des plannings (intégrée ou non à !ScoDoc, mais +en tout cas interfaçable), de façon à avoir une idée d'un +ensemble minimal de spécifications. + +Précisons qu'il ne s'agit en l'état que de divagations (remontant à 2006), aucun projet concret de développement n'est à l'ordre du jour. + + +## Grandes fonctionnalités +* inventaire des salles existantes (et de leurs caractéristiques: nombre de place en configuration TD et en configuration examen, ressources particulières (ordinateurs, vidéoprojecteurs, accès handicapés...) + +* inventaire des enseignants (annuaire LDAP, source SQL ou autre); + +* structure en UFR (Institut) / Départements / formations (session ou semestre); + +* groupes d'étudiants: types de groupes, liste des groupes de chaque type pour chaque formation: importable d'une source externe (annuaire, !ScoDoc, ...). Les étudiants peuvent avoir des caractéristiques spécifiques en termes de ressources salles (handicapés) + +* export des résultats (plannings) en XML (affichages sur portails) et iCal (agendas personnels, etc) + +* interface utilisateur agréable (drag&drop des événements, différentes vues...) + +* gestion "souple" des contraintes: possibilité d'entrer des emplois du temps en conflits, système intégré d'avertissement et propositions de résolution via médiations humaines (indique qui contacter pour résoudre le conflit) + +* l'objet central est l'événement (meilleur nom ?), caractérisé par: + - date début, (précision = minute, gestion des fuseaux horaires) /!\ à la limite, un fuseau global suffit + + - durée en minutes + + - lieu: salle référencée (ou autre lieu "extérieur") + + - enseignants: liste des enseignants impliqués + + - étudiants: liste des étudiants (ou groupes ? mais si convoc pour un rattrapage de 3 étudiants ?) + + - description: texte + + - (optionnel) code module (code ScoDoc ou Apogée du module) + + - type activité ? cours, TD, TP, ... ??? + + - ressources nécessaires ??? (nb ordinateurs, vidéoprojecteur, matériel spécifique...) + +* système de gestion des occurrences: modifier un attribut d'une seule occurrence ou de toute la série. + + +## Notes diverses +Quelques idées de fonctionnalités à partir de mon expérience de directeur des études première année (Christophe Cérin) : + + * commencer un planning par associer, pour une matière, un enseignant avec un groupe (on constitue les équipes pédagogiques first). Avoir la possibilité de noms génériques Ens1, Ens22... lorsque les enseignants ne sont pas encore tous connus au moment de la rédaction du planning. Pouvoir ensuite remplacer en un clic Ens1 par M. X ou Mme Y. Dans cette première phase, on entre aussi les volumes horaires de C, TD, TP, l'enseignant responsable. Attention, dans mon cas, j'ai des modules de PPP, anglais, TEC avec 7 enseignants, des plages de 90min ou 180min, le lundi ou le jeudi ! + + * Avoir une interface qui permet de saisir globalement que W, X, Y et Z font le PPP en parallèle, le même jour, à la même plage horaire. C'est le logiciel qui fera les décompositions automatiques en 4 plages de quatre couleurs différentes. Au niveau structures de données, cela veut dire qu'on garde l'information comme quoi cet enseignement splité est dans le même sac que celui ci. L'idee c'est de pouvoir faire l'équivalent des fusions/explode de colonnes en Exel afin de pouvoir appliquer globalement des traitements (duplication série par exemple) + + * Pouvoir rentrer les jours sans enseignements (vacances), ou les plages horaires où les amphis par exemple ne sont pas disponibles (journées portes ouvertes, forum ceci et cela). Quand on rentre une "série" (duplication d'un enseignement d'une semaine sur l'autre), le logiciel détecte les conflits (non disponibilité de la salle) et propose simplement un décalage dans le temps (au prochain lundi libre par exemple si l'enseignement se fait le lundi). S'il n'y a pas de possibilité de shift comme précédemment, on met dans la réserve (au sens GPU). + + * A propos de "série" et de fusion/explode : dans le menu série, proposer éventuellement de regrouper/explode des enseignements avant d'appliquer la duplication temporelle. En fait, avoir qu'un seul menu permettant d'accéder aux plages horaires souhaités et leurs duplications temporelles. + + * A propos de copier/coller : graphiquement, il serait intéressant de pouvoir sélectionner un enseignement (y compris ceux dans la réserve, surtout ceux dans la réserve), d'en faire un CTLR-X puis un CTRL-V dans un autre créneau horaire. Derrière, il y a toutes les vérifications nécessaires sur les disponibilités de salles. + + * Prévoir qu'un enseignement peut voir un remplacement d'enseignant au dernier moment... ce qui peut conduire a dissocier (spliter) un groupe au sens précisé plus haut. + + * Prévoir également d'insérer dans le logiciel des salles prêtées par l'université pour une période donnée. + + +## Projets libres intéressants +Liste des projets éventuellement utilisables (comme simple source d'inspiration ou +pour utilisation) + + * http://www.zimbra.com webmail / gestion de calendriers ajax + + * http://schooltool.org The SchoolTool Project + Projet assez ambitieux (SchoolTool student information system) en cours de développement. + Python/ Zope, financé par Shuttleworth Foundation (Edubuntu etc). + [[http://www.zopemag.com/Issue010/Section_Articles/article_SchoolTool.html|article de Zope Mag]] + [[http://www.tectonic.co.za/view.php?id=482|article de Tectonic]] + + + * http://www.kiko.com + + * http://www.campussource.de/org/software/studip/ ? à voir (EV) ? + + + diff --git a/docs/ImportationEtuds.md b/docs/ImportationEtuds.md new file mode 100644 index 0000000..48a29b8 --- /dev/null +++ b/docs/ImportationEtuds.md @@ -0,0 +1,34 @@ + +## Importation d'étudiants (cas où l'on a pas de connexion directe à Apogée) +Les étudiants ne doivent être créés dans le système qu'une seule fois (lors de leur première inscription). Il sont ensuite suivi grâce à leur identifiant Apogée (ou à défaut leur code interne ScoDoc) qui ne varie pas. Insistons: les étudiants ne doivent être créés dans ScoDoc que lors de leur arrivée (premier semestre), ils sont ensuite suivis d'un semestre à l'autre. + +Il est possible de créer les étudiants un par un (voir [CreationEtudIndividuel](CreationEtudIndividuel.md)) mais cela +est rapidement fastidieux si l'on a plus d'une dizaine d'étudiants à inscrire. De plus, ce mode de fonctionnement tend à produire des erreurs de saisie et des doublons (le même étudiant créé deux fois dans des semestres différents, ce qui empêche le suivi de sa scolarité). Ces doublons posent de grandes difficultés et empêchent la gestion automatique des jurys: soyez vigilants lors des inscriptions. + +***On privilégiera donc l'import des étudiants depuis le portail (Apogée) à chaque fois que c'est possible. Voir [SynchroApogee](SynchroApogee.md).*** + +/!\ Le texte ci-dessous ne s'applique qu'aux établissement sans liaison ScoDoc-Apogée, et donc ***ne concerne pas l'IUT de Villetaneuse ! *** + +Si vous souhaitez importer une liste de nouveaux étudiants (inconnus de ScoDoc, même dans d'autres semestres) sans utiliser un portail Apogée, il suffit de créer un fichier tableur comportant +toutes les informations requises. Le lien "importer de nouveaux étudiants" +vous permet de télécharger une feuille Excel avec les colonnes. Une fois cette feuille remplie +(une ligne par étudiant), cette feuille doit être renvoyée vers le +logiciel (indiquer le nom du fichier et cliquer sur le bouton "Télécharger"). + +![imprtetud1.png](screens/imprtetud1.png). + +/!\ Vous devez *impérativement* utiliser la feuille excel proposée par le site pour +importer vos étudiants. Utiliser copier/coller pour remplir ses différentes colonnes. +Seules les colonnes dont le titre est en rouge sont obligatoires, les autres peuvent +être laissées vides, ou partiellement remplies. + + +Les étudiants importés vont être automatiquement inscrits dans le semestre choisi (et inscrits à tous les modules de ce semestre, sauf ceux de sport et culture). +Il est donc nécessaire de créer le semestre *avant d'importer les étudiants*. + +Le plus simple est de passer par le lien "importer des étudiants" présent en bas du **tableau de bord semestre**. + + +Autres remarques: + + * le champ 'SEXE' doit contenir ```MR``` (masculin) ou ```MLLE``` (féminin). diff --git a/docs/InscriptionsEtudApogee.md b/docs/InscriptionsEtudApogee.md new file mode 100644 index 0000000..81198be --- /dev/null +++ b/docs/InscriptionsEtudApogee.md @@ -0,0 +1,50 @@ + +# Inscription des étudiants via Apogée +Les informations données ici ne concernent que les établissement qui ont mis en place une interface entre ScoDoc et le logiciel d'administration Apogée, comme à l'IUT de Villetaneuse. +Cette interface repose sur l'utilisation d'un "portail" offrant les services décrits sur la page [InterrogationPortail](InterrogationPortail.md). + + + +## Généralités +On conserve la possibilité de créer les étudiants individuellement, ou +de les importer d'un tableau Excel. Cependant, il est plus rationnel d'importer directement les étudiants depuis Apogée (le logiciel utilisé par la scolarité centrale). + +Apogée identifie les sessions de formation (semestres) par un "code étape". Nous associons donc un code étape à chaque semestre ScoDoc. Lors de la création ou modification +d'un semestre, ScoDoc présente la liste d'étapes disponible (cette liste +peut être paramétrée dans ScoDoc via le fichier de configuration `config/default-etapes.txt` et/ou est fournie par le service `getEtapes` du portail. + +Note: Apogée réutilise les mêmes codes étapes pour les sessions d'années différentes, ces codes changent donc +rarement. + +/!\ certaines formations utilisent encore des codes Apogée *annuels* alors qu'elles sont semestrialisées. + +Une fois le code étape défini, ScoDoc peut interroger Apogée pour obtenir la liste des étudiants inscrits dans cette +étape. Les informations récupérées sont: + + * identité (nom, prénom, civilité); + + * adresse (et téléphone). + +Apogée ne conserve pas (en général) les informations de type "admission" (lycée d'origine, notes et type du bac, ...), +il faudra donc les importer séparément si on le souhaite (via le menu "Importer données admission"). + + +## Procédure à suivre pour le premier semestre (S1) +Listes Apogée presques complètes, faire l'import depuis le portail fin juillet, puis synchros courant septembre. Voir [SynchroApogee](SynchroApogee.md) + + * nouveaux etudiants, modifs données personnelles + + * import données admission (depuis fichier Excel) + + +## Réinscriptions +Les étudiants ont jusqu'à fin octobre pour se réinscrire, il est probable que les listes +Apogée ne soient pas à jour la semaine de la rentrée. On va donc utiliser le mécanisme de passage interne à ScoDoc, +et faire une synchro fin octobre. Voir [TransitionSemestre](TransitionSemestre.md) + + + + + + + diff --git a/docs/InterrogationPortail.md b/docs/InterrogationPortail.md new file mode 100644 index 0000000..75dc33f --- /dev/null +++ b/docs/InterrogationPortail.md @@ -0,0 +1,123 @@ + +# Interface avec un "portail" externe +ScoDoc peut interagir avec un "portail" donnant des informations sur les étudiants. +Ceci permet de synchroniser les données ScoDoc avec celles des applications +externes comme Apogée. Pour simplifier l'administration, nous avons fait le choix +d'intercaler entre ScoDoc et les applications type Apogée un "portail" +(centralisation des autorisations, etc). + +Le portail interroge aussi ScoDoc (en particulier pour la publication des bulletins et pour +effectuer l'export des décisions de jury vers Apogée). Voir les services offerts par ScoDoc +sur la page [ServicesXml](ServicesXml.md). + +L'adresse du portail est indiquée dans la préférence ```portal_url``` (voir [PreferencesScoDoc](PreferencesScoDoc.md)). + +Le code d'interface est dans le fichier source `sco_portal_apogee.py`. + +Les trois appels suivants sont utilisés: + + * `getEtud` : information sur un étudiant + + * `getEtapes` : liste des étapes Apogée + + * `getPhoto` : image de l'étudiant + +Ces appels sont détaillés dans les sections suivantes. + + +### Information sur un étudiant +Le portail doit fournir une méthode web `getEtud.php` qui accepte les paramètres suivants: + + - `nip` : code NIP + + - `ine` : code INE + + - `mail` : adresse e-mail + + - `nom` : nom de l'étudiant + + - `prenom` : prénom de l'étudiant + + - `etape` : code étape Apogée + +On peut spécifier un nombre quelconque de paramètres; `getEtud.php` recherche les étudiants +correspondant aux critères indiqués, et renvoie du code XML: +``` + + + Melanie BOURTON + 20600577 + V2TR + 2008 + BOURTON + MELANIE + F + 08/01/1990 + melanie.bourton@xxx.univ-yyy.fr +
11 Pierre Dupont
+ 93400 + Tokyo + France + 01 02 03 04 05 + + 0951722F + S-Scientifique + + 2007 + + true + +
+ + ... + + ... +
+``` + +Les champs `` (code du lycée), `` (intitulé du bac), ``, `` et `` sont optionnels. + +Le champ `` est un libellé, en général de la forme "ES-Economique et social". ScoDoc considère la première partie du libellé, jusqu'au caractère '-' comme la série du bac (uniquement si elle fait moins de 8 caractères). Le reste est alors considéré comme la "spécialité" du bac. Voir [DonneesAdmissions](DonneesAdmissions.md). + +Le champ `` (optionnel) vaut "true" ou "false" pour indiquer si l'étudiant a réglé ses frais d'inscription ou non. + + +### Liste des étapes Apogée +`getEtapes.php` (pas de paramètres) renvoie un doc XML décrivant les étapes Apogée en cours. L'URL est paramétrable dans les préférences de ScoDoc. +La structure est la suivante: +``` + + + + DUT CJ - Première Année + DUT CJ - Seconde Année + ... + + + DUT RT - Première Année + DUT RT - Seconde Année + ... + + ... + +``` +Le code département (cj ou rt dans l'exemple ci-dessous) est arbitraire et utilisé par ScoDoc pour ne présenter à l'utilisateur que les étapes de son département (voir la propriété *code du département sur le portail* dans les paramètres). + +On peut aussi présenter une liste sans section par département, comme ceci: (cocher la préférence indiquant le format dans ScoDoc) +``` + + + DUT CJ - Première Année + DUT CJ - Seconde Année + ... + +``` + +### Image de l'étudiant +`getPhoto.php` accepte le paramètre suivant: + + - `nip` : code NIP + +et renvoie une image de l'étudiant (dans l'un des formats supportés par les navigateurs web). +Si l'image ou l'étudiant n'existe pas, un code HTTP 404 peut être renvoyé. + diff --git a/docs/ListesDeDiffusion.md b/docs/ListesDeDiffusion.md new file mode 100644 index 0000000..f71d07f --- /dev/null +++ b/docs/ListesDeDiffusion.md @@ -0,0 +1,11 @@ +# Listes de diffusion mail pour ScoDoc + + +Les listes de diffusion mail sont le principal canal de communication entre les utilisateurs et entre les développeurs. + + * [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces) liste à très fable trafic, en lecture seule, seules des annonces importantes sont postées (quelques messages par an), tous les utilisateurs sont encouragés à s'y abonner. Indispensable aux administrateurs du logiciel. + + * [Notes](https://listes.univ-paris13.fr/mailman/listinfo/notes) discussions ou questions liées à l'utilisation du logiciel, entraide entre utilisateurs: vous pouvez y intervenir librement (les messages sont modérés pour éviter le spam). + + * [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel) échanges entre développeurs. Abonnez-vous si vous êtes intéressés par le développement du logiciel, souhaitez participer ou poser des questions techniques. + diff --git a/docs/MigrationDonneesScoDoc.md b/docs/MigrationDonneesScoDoc.md new file mode 100644 index 0000000..13eb922 --- /dev/null +++ b/docs/MigrationDonneesScoDoc.md @@ -0,0 +1,48 @@ + +# Migration d'une installation existante de ScoDoc +Marche à suivre pour transférer les données d'un serveur ScoDoc déjà existant vers un autre. Cas d'usage typiques: + + * changement de machine physique + * création d'un serveur de développement + * Mise à jour majeure du système d'exploitation (exemple: passage de Debian 9 à Debian 10). + + +Toutes les données seront copiées: bases SQL, configurations, photos, archives, logs. + + +## Principe +Au lieu de mettre à jour le système Debian, il est préférable de réinstaller complètement un nouveau serveur. En effet, ScoDoc utilise certains composants qui ne sont pas fournis dans les versions adéquates par Debian. +L'expérience montre qu'il est plus rapide de tout réinstaller sans se poser de questions. D'ailleurs, la plupart des installations étant sur des serveurs virtualisés, cette méthode est souvent plus simple et évite de toucher au serveur en production. + +Le principe est donc: + + 1. Installer un nouveau serveur Linux; + 2. Y installer ScoDoc ; + 3. Copier les données d'un serveur à l'autre. + 4. Tester, puis le cas échéant couper l'ancien serveur et le remplacer par le nouveau. + +Si vous maîtrisez les commandes Linux, connaissez Debian et souhaitez passer rapidement un serveur Debian 8 en Debian 9, vous pouvez essayer [UpgradeToDebNeuf](UpgradeToDebNeuf.md) + + + +## Marche à suivre détaillée +### Installation de Debian et ScoDoc + Voir les instructions ici: [GuideInstallDebianDix](GuideInstallDebianDix.md) (ou si votre système est encore en Debian 9: [GuideInstallDebianNeuf](GuideInstallDebianNeuf.md)) + + + +### Copie des données d'un serveur à l'autre +Il est important de suivre rigoureusement et pas à pas cette procédure: + + 1. S'assurer que le serveur de départ est à jour (pour avoir le bon script de sauvegarde!): [voir ici](https://trac.lipn.univ-paris13.fr/projects/scodoc/wiki/MisesAJour) + 1. Enregistrer les données sur le serveur d'origine: lancer le script `save_scodoc_data.sh` (en tant qu'utilisateur `root` dans `/opt/scodoc/instance/Products/ScoDoc/config`). Ce script crée une archive (tgz) qui contient toutes les informations: bases de données SQL, données utilisateurs, photos, archives des documents, fichier de configuration. + 1. Copier le fichier (`.tgz`) obtenu sur la machine destination (par exemple en utilisant ssh ou une clé USB). + 1. Mettre à jour votre installation de destination (`./upgrade.sh`) + 1. Sur la machine destination, sur laquelle ScoDoc vient d'être installé, lancer (en tant qu'utilisateur `root` dans `/opt/scodoc/instance/Products/ScoDoc/config`) le script `restore_scodoc_data.sh ` + 1. Mettre à jour votre installation de destination (`./upgrade.sh`) (oui, à nouveau, important pour assurer que les anciennes bases de données sont aussi mises à jour). + 1. Relancer ScoDoc (`/etc/init.d/scodoc start`) et tester. + + + + + diff --git a/docs/MigrationVersScoDocSept.md b/docs/MigrationVersScoDocSept.md new file mode 100644 index 0000000..ffb70bb --- /dev/null +++ b/docs/MigrationVersScoDocSept.md @@ -0,0 +1,43 @@ + +# Migration d'une installation existante de ScoDoc 6 vers ScoDoc 7 +La version ScoDoc 7 est une version adaptée au système Debian 7, 8, 9 ou 10, publiée en le 19 novembre 2013. Elle inclue aussi de nombreuses autres mises à jour, notamment le passage à Python 2.7. + +L'installeur pour Debian 10 est maintenant disponible. + +Pour moderniser un serveur ScoDoc très ancien, voici la marche à suivre. + + + +## Principe +Au lieu de mettre à jour le système Debian, il est préférable de réinstaller complètement un nouveau serveur. En effet, ScoDoc utilise certains composants qui ne sont pas fournis dans les versions adéquates par Debian. +L'expérience montre qu'il est plus rapide de tout réinstaller sans se poser de questions. D'ailleurs, la plupart des installations étant sur des serveurs virtualisés, cette méthode est souvent plus simple et évite de toucher au serveur en production. + +Le principe est donc: + + 1. Installer un serveur Debian (10); + 2. Y installer ScoDoc version 7; + 3. Copier les données d'un serveur à l'autre. + 4. Tester, puis couper l'ancien serveur et le remplacer par le nouveau. + + +## Marche à suivre détaillée +### Installation de Debian et ScoDoc + Voir les instructions ici: [GuideInstallDebianDix](GuideInstallDebianDix.md) + + + +### Copie des données d'un serveur à l'autre +Il est important de suivre rigoureusement et pas à pas cette procédure: + + 1. S'assurer que le serveur de départ est à jour (pour avoir le bon script de sauvegarde!): voir [MisesAJour](MisesAJour.md) + 1. Enregistrer les données sur le serveur d'origine: lancer le script `save_scodoc_data.sh` (en tant qu'utilisateur `root` dans `/opt/scodoc/instance/Products/ScoDoc/config`). Ce script crée une archive (tgz) qui contient toutes les informations: bases de données SQL, données utilisateurs, photos, archives des documents, fichier de configuration. + 1. Copier le fichier (`.tgz`) obtenu sur la machine destination (par exemple en utilisant ssh ou une clé USB). + 1. Mettre à jour votre installation de destination (`./upgrade.sh`) + 1. Sur la machine destination, sur laquelle ScoDoc vient d'être installé, lancer (en tant qu'utilisateur `root` dans `/opt/scodoc/instance/Products/ScoDoc/config`) le script `restore_scodoc_data.sh ` + 1. Mettre à jour votre installation de destination (`./upgrade.sh`) (oui, à nouveau, important pour assurer que les anciennes bases de données sont aussi mises à jour). + 1. Relancer ScoDoc (`/etc/init.d/scodoc start`) et tester. + + + + + diff --git a/docs/MisesAJour.md b/docs/MisesAJour.md new file mode 100644 index 0000000..c6cbd81 --- /dev/null +++ b/docs/MisesAJour.md @@ -0,0 +1,26 @@ + +# Mise à jour de ScoDoc +Il est recommandé de mettre à jour très régulièrement votre installation ScoDoc. + +Le système Linux doit être correctement maintenu (en particulier, les mises à jour de sécurité de Debian doivent être appliquées quotidiennement). + +ScoDoc est actuellement prévu pour fonctionner avec Linux Debian 10. + + * Les (rares) mises à jour majeures du logiciel ScoDoc sont annoncées sur la liste [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces). + * Les (fréquentes) mises à jour mineures (corrections de bugs, améliorations) sont annoncées sur la liste [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel). + +*Une mise à jour hebdomadaire (au moins) est recommandée* + +Pour appliquer une mise à jour de ScoDoc, se connecter en tant que `root` sur le serveur, puis faire: +``` + cd /opt/scodoc/Products/ScoDoc/config + ./upgrade.sh +``` +La première fois, il faudra accepter un certificat cryptographique, répondre "p (accept (p)ermanently)". + +/!\ Si un message d'erreur apparaît à la fin de la mise à jour, relancer `./upgrade.sh`. + +/!\ 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 (l'appliquer à ScoDoc 6 reste en ScoDoc 6, pour passer en ScoDoc 7, ce qui est recommandé, suivre [MigrationVersScoDocSept](MigrationVersScoDocSept.md)) + diff --git a/docs/ModulesMalus.md b/docs/ModulesMalus.md new file mode 100644 index 0000000..25f0fe4 --- /dev/null +++ b/docs/ModulesMalus.md @@ -0,0 +1,12 @@ + +# Notes de malus +Il est fréquent d'introduire des pénalités ou *malus* sur les moyennes calculées à partir des notes. Par exemple, dans certains établissements, l'absence de l'étudiant à des activités obligatoires peut entrainer des points de pénalités. Inversement, certaines activités facultatives pourraient donner lieu à des bonifications. + +Pour gérer cela ScoDoc propose de déclarer des modules de *malus*: les notes de malus sont directement *soustraites* à la moyenne générale. Contrairement aux notes ordinaires dans ScoDoc, les notes de malus sont toujours comprises entre -20 et +20. Une note de malus de 1 va diminuer la moyenne de l'UE de 1. Une note négative augmenterait cette moyenne. Les moyennes d'UE sont toujours comprises entre 0 et 20: si l'application du malus donne une note supérieure à 20 (ou inférieure à zéro), elle est ramenée à 20 (ou à zéro). + +Lors de la création d'un module dans un programme pédagogique, on peut spécifier son type. Il est aussi possible de créer directement un module malus par UE du programme, via le lien "Ajouter des modules de malus dans chaque UE" en bas du programme. + +Une fois le module créé (et ajouté à un semestre), on peut y déclarer une évaluation et saisir les notes de bonus/malus. +Ces notes sont toujours *à prise en compte immédiate*, il n'est donc pas nécessaire de saisir des notes de malus pour tous les étudiants. + + diff --git a/docs/NomsPreferences.md b/docs/NomsPreferences.md new file mode 100644 index 0000000..ef97468 --- /dev/null +++ b/docs/NomsPreferences.md @@ -0,0 +1,187 @@ + +## Préférences de ScoDoc +Ces variables sont modifiables globalement ou seulement pour un semestre spécifique (sauf pour certaines d'entre elles, qui n'ont de sens que globalement). Si un semestre défini une variable (via la page "Préférences du semestre" accessible dans le menu "Semestre"), sa valeur remplace, pour lui seulement, celle définie globalement (via la page "Paramétrage"). + +*Page générée à l'aide de la méthode* `doc_preferences` + + +## Générales + +Nom |   |   +---- | ---- | ---- +`DeptName` | Nom abrégé du département | +`DeptFullName` | Nom complet du département | inutilisé par défaut +`UnivName` | Nom de l'Université | apparait sur les bulletins et PV de jury +`InstituteName` | Nom de l'Institut | exemple "IUT de Villetaneuse". Peut être utilisé sur les bulletins. +`DeptIntranetTitle` | Nom lien intranet | titre du lien "Intranet" en haut à gauche +`DeptIntranetURL` | URL de l'"intranet" du département | lien "Intranet" en haut à gauche +`emails_notifications` | e-mails à qui notifier les opérations | adresses séparées par des virgules; notifie les opérations (saisies de notes, etc). (vous pouvez préférer utiliser le flux rss) + +## Divers + +Nom |   |   +---- | ---- | ---- +`use_ue_coefs` | Utiliser les coefficients d'UE pour calculer la moyenne générale | Calcule les moyennes dans chaque UE, puis pondère ces résultats pour obtenir la moyenne générale. Par défaut, le coefficient d'une UE est simplement la somme des coefficients des modules dans lesquels l'étudiant a des notes. Attention: changer ce réglage va modifier toutes les moyennes du semestre ! +`recap_hidebac` | Cacher la colonne Bac | sur la table récapitulative + +## Suivi des absences + +Nom |   |   +---- | ---- | ---- +`email_chefdpt` | e-mail chef du département | utilisé pour envoi mail notification absences +`work_saturday` | Considérer le samedi comme travaillé | +`handle_billets_abs` | Gestion de "billets" d'absence | fonctions pour traiter les "billets" déclarés par les étudiants sur un portail externe +`abs_notify_chief` | Notifier les absences au chef | Envoyer un mail au chef si un étudiant a beaucoup d'absences +`abs_notify_respsem` | Notifier les absences au dir. des études | Envoyer un mail au responsable du semestre si un étudiant a beaucoup d'absences +`abs_notify_respeval` | Notifier les absences aux resp. de modules | Envoyer un mail à chaque absence aux responsable des modules avec évaluation à cette date +`abs_notify_etud` | Notifier les absences aux étudiants concernés | Envoyer un mail à l'étudiant s'il a "beaucoup" d'absences +`abs_notify_email` | Notifier à: | utilisé pour envoi mail absences +`abs_notify_max_freq` | Fréquence maximale de notification | en jours (pas plus de X envois de mail pour chaque étudiant/destinataire) +`abs_notify_abs_threshold` | Seuil de première notification | nb minimum d'absences (en 1/2 journées) avant notification +`abs_notify_abs_increment` | Seuil notifications suivantes | nb minimum d'absences (en 1/2 journées supplémentaires) +`abs_notification_mail_tmpl` | Message notification e-mail | Balises remplacées, voir la documentation + +## Liaison avec portail (Apogée, etc) + +Nom |   |   +---- | ---- | ---- +`portal_url` | URL du portail | +`portal_timeout` | timeout | secondes +`portal_dept_name` | Code du département sur le portail | +`etapes_url` | URL listant les étapes Apogée | par defaut, selon l'api, getEtapes ou scodocEtapes sur l'URL du portail +`maquette_url` | URL maquettes Apogee | par defaut, scodocMaquette sur l'URL du portail +`portal_api` | Version de l'API | 1 ou 2 +`etud_url` | URL listant les étudiants Apogée | par defaut, selon l'api, getEtud ou scodocEtudiant sur l'URL du portail +`photo_url` | URL donnant la photo d'un étudiant avec argument nip= | par defaut, selon l'api, getPhoto ou scodocPhoto sur l'URL du portail +`xml_etapes_by_dept` | Etapes séparées par département | XML getEtapes structuré en départements ? +`notify_etud_changes_to` | e-mail à qui notifier les changements d'identité des étudiants | utile pour mettre à jour manuellement d'autres bases de données +`always_require_ine` | Impose la présence du code INE | lors de toute création d'étudiant (manuelle ou non) +`always_require_apo_sem_codes` | Impose la présence des codes Apogée | lors des créations de semestres +`export_res_etape` | Exporter résultat de l'étape | remplissage maquettes export Apogée +`export_res_sem` | Exporter résultat du semestre | remplissage maquettes export Apogée +`export_res_ues` | Exporter les résultats d'UE | remplissage maquettes export Apogée +`export_res_modules` | Exporter les résultats de modules | remplissage maquettes export Apogée +`export_res_sdj` | Exporter les résultats même sans décision de jury | si coché, exporte exporte étudiants même si pas décision de jury saisie (sinon laisse vide) +`export_res_rat` | Exporter les RAT comme ATT | si coché, exporte exporte étudiants en attente de ratrapage comme ATT (sinon laisse vide) + +## Mise en forme des documents PDF + +Nom |   |   +---- | ---- | ---- +`SCOLAR_FONT` | Police de caractère principale | pour les pdf +`SCOLAR_FONT_SIZE` | Taille des caractères | pour les pdf +`SCOLAR_FONT_SIZE_FOOT` | Taille des caractères pied de page | pour les pdf +`pdf_footer_x` | Position horizontale du pied de page pdf (en mm) | +`pdf_footer_y` | Position verticale du pied de page pdf (en mm) | + +## Procès verbaux de jury (documents PDF) + +Nom |   |   +---- | ---- | ---- +`DirectorName` | Nom du directeur de l'établissement | pour les PV de jury +`DirectorTitle` | Titre du "directeur" | titre apparaissant à côté de la signature sur les PV de jury +`ChiefDeptName` | Nom du chef de département | pour les bulletins pdf +`INSTITUTION_NAME` | Nom institution sur pied de pages PV | (pdf, balises <b> interprétées) +`INSTITUTION_ADDRESS` | Adresse institution sur pied de pages PV | (pdf, balises <b> interprétées) +`INSTITUTION_CITY` | Ville de l'institution | pour les lettres individuelles +`PV_INTRO` | Paragraphe d'introduction sur le PV | Balises remplacées: %(Univname)s = nom de l'université, %(DecNum)s = numéro de l'arrêté, %(Date)s = date de la commission, %(Type)s = type de commission (passage ou délivrance) +`PV_LETTER_DIPLOMA_SIGNATURE` | Signature des lettres individuelles de diplôme | %(DirectorName)s et %(DirectorTitle)s remplacés +`PV_LETTER_PASSAGE_SIGNATURE` | Signature des lettres individuelles de passage d'un semestre à l'autre | %(DirectorName)s et %(DirectorTitle)s remplacés +`pv_sig_image_height` | Hauteur de l'image de la signature | Lorsqu'on donne une image de signature, elle est redimensionnée à cette taille (en millimètres) +`PV_LETTER_TEMPLATE` | Lettre individuelle | Balises remplacées et balisage XML, voir la documentation +`PV_LETTER_WITH_HEADER` | Imprimer le logo en tête des lettres individuelles de décision | +`PV_LETTER_WITH_FOOTER` | Imprimer le pied de page sur les lettres individuelles de décision | +`pv_htab1` | marge colonne droite lettre | pour les courriers pdf +`pv_htab2` | marge colonne gauche lettre | pour les courriers pdf +`PV_FONTNAME` | Police de caractère pour les PV | pour les pdf + +## Réglages des bulletins de notes + +Nom |   |   +---- | ---- | ---- +`bul_title` | Titre des bulletins | %(DeptName)s est remplacé par le nom du département +`bul_class_name` | Format des bulletins | format de présentation des bulletins de note (web et pdf) +`bul_show_abs` | Indiquer les absences sous les bulletins | +`bul_show_abs_modules` | Indiquer les absences dans chaque module | +`bul_show_decision` | Faire figurer les décisions sur les bulletins | +`bul_show_ects` | Faire figurer les ECTS sur les bulletins | crédits associés aux UE ou aux modules, selon réglage +`bul_show_codemodules` | Afficher codes des modules sur les bulletins | +`bul_show_matieres` | Afficher les matières sur les bulletins | +`bul_show_all_evals` | Afficher toutes les évaluations sur les bulletins | y compris incomplètes ou futures +`bul_show_rangs` | Afficher le classement sur les bulletins | +`bul_show_ue_rangs` | Afficher le classement dans chaque UE sur les bulletins | +`bul_show_mod_rangs` | Afficher le classement dans chaque module sur les bulletins | +`bul_show_moypromo` | Afficher moyennes de la promotion sur les bulletins | +`bul_show_minmax` | Afficher min/max moyennes sur les bulletins | +`bul_show_minmax_mod` | Afficher min/max moyennes des modules sur les bulletins | +`bul_show_minmax_eval` | Afficher min/max moyennes des évaluations sur les bulletins | +`bul_show_coef` | Afficher coefficient des ue/modules sur les bulletins | +`bul_show_ue_cap_details` | Afficher détail des notes des UE capitalisées sur les bulletins | +`bul_show_ue_cap_current` | Afficher les UE en cours mais capitalisées sur les bulletins | +`bul_show_temporary_forced` | Bannière "provisoire" sur les bulletins | +`bul_show_temporary` | Bannière "provisoire" si pas de décision de jury | +`bul_temporary_txt` | Texte de la bannière "provisoire | +`bul_show_uevalid` | Faire figurer les UE validées sur les bulletins | +`bul_show_mention` | Faire figurer les mentions sur les bulletins et les PV | +`bul_show_date_inscr` | Faire figurer la date d'inscription sur les bulletins | +`bul_show_sig_left` | Faire figurer le pied de page de gauche (ex.: nom du directeur) sur les bulletins | +`bul_show_sig_right` | Faire figurer le pied de page de droite (ex.: nom du chef de département) sur les bulletins | +`bul_display_publication` | Indique si les bulletins sont publiés | décocher si vous n'avez pas de portal étudiant publiant les bulletins +`bul_pdf_title` | Bulletins PDF: paragraphe de titre | (balises interprétées, voir documentation) +`bul_pdf_caption` | Bulletins PDF: paragraphe sous table note | (visible seulement si "Faire figurer les décision" est coché) +`bul_pdf_sig_left` | Bulletins PDF: signature gauche | (balises interprétées, voir documentation) +`bul_pdf_sig_right` | Bulletins PDF: signature droite | (balises interprétées, voir documentation) +`bul_pdf_mod_colwidth` | Bulletins PDF: largeur col. modules | en cm (vide si auto) +`SCOLAR_FONT_BUL_FIELDS` | Police titres bulletins | pour les pdf + +## Marges additionnelles des bulletins, en millimètres + +Nom |   |   +---- | ---- | ---- +`left_margin` | Marge gauche | +`top_margin` | Marge haute | +`right_margin` | Marge droite | +`bottom_margin` | Marge basse | + +## Envoi des bulletins par e-mail + +Nom |   |   +---- | ---- | ---- +`email_copy_bulletins` | e-mail copie bulletins | adresse recevant une copie des bulletins envoyés aux étudiants +`email_from_addr` | adresse mail origine | adresse expéditeur pour les envois par mails (bulletins) +`bul_intro_mail` | Message d'accompagnement | %(DeptName)s est remplacé par le nom du département, %(nomprenom)s par les noms et prénoms de l'étudiant, %(dept)s par le nom du département, et %(webmaster)s par l'adresse mail du Webmaster. +`bul_mail_list_abs` | Indiquer la liste des dates d'absences par mail | dans le mail envoyant le bulletin de notes +`bul_mail_contact_addr` | Adresse mail contact "webmaster" | apparait dans le mail accompagnant le bulletin, voir balise "webmaster" ci-dessus. +`bul_mail_allowed_for_all` | Autoriser tous les utilisateurs à expédier des bulletins par mail | + +## Mise en forme des feuilles (Absences, Trombinoscopes, ...) + +Nom |   |   +---- | ---- | ---- +`feuille_releve_abs_taille` | Taille feuille relevé absences | Dimensions du papier pour les feuilles de relevés d'absences hebdomadaire +`feuille_releve_abs_format` | Format feuille relevé absences | Format du papier pour les feuilles de relevés d'absences hebdomadaire +`feuille_releve_abs_samedi` | Samedi travaillé | +`feuille_releve_abs_AM` | Créneaux cours matin | Nombre de créneaux de cours le matin +`feuille_releve_abs_PM` | Créneaux cours après-midi | Nombre de créneaux de cours l'après-midi +`feuille_placement_emargement` | Feuille d'émargement des contrôles - Signature étudiant | Hauteur de l'espace pour signer +`feuille_placement_positions` | Feuille des places lors des contrôles | Nombre maximum de lignes par colonne +`prepa_jury_nip` | Code NIP sur la feuille préparation jury | +`prepa_jury_ine` | Code INE sur la feuille préparation jury | +`anonymous_lst_code` | Code pour listes anonymes | à défaut, un code interne sera utilisé + +## Avis de poursuites d'études + +Nom |   |   +---- | ---- | ---- +`NomResponsablePE` | Nom du responsable des poursuites d'études | pour les avis pdf de poursuite +`pe_avis_latex_tmpl` | Template LaTeX des avis | préparez-le dans un éditeur de texte puis copier le contenu ici (en utf8). Sinon, le fichier un_avis.tex du serveur sera utilisé. +`pe_avis_latex_footer` | Code LaTeX en fin d'avis | +`pe_tag_annotation_avis_latex` | Tag désignant l'avis PE | ajoutez une annotation aux étudiants précédée du tag désigné ici pour qu'elle soit interprétée comme un avis de poursuites d'études et ajoutée aux avis LaTeX. + +## Connexion avec le logiciel d'emplois du temps + +Nom |   |   +---- | ---- | ---- +`edt_sem_ics_url` | Lien EDT | URL du calendrier ics emploi du temps du semestre (template) +`edt_groups2scodoc` | Noms Groupes | Transcodage: nom de groupe EDT ; non de groupe ScoDoc (sur plusieurs lignes) +`ImputationDept` | Département d'imputation | préfixe id de session (optionnel, remplace nom département) diff --git a/docs/NoteSportCulture.md b/docs/NoteSportCulture.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/ParametrageBulletins.md b/docs/ParametrageBulletins.md new file mode 100644 index 0000000..13d847b --- /dev/null +++ b/docs/ParametrageBulletins.md @@ -0,0 +1,216 @@ + +# Paramétrage des bulletins de notes +Ces réglages permettent de configurer la présentation des relevés de notes au format PDF. + +Le bulletin est constitué de plusieurs zones: + + * Le titre; + * le tableau des notes; + * les absences et appréciations (immédiatement sous le tableau des notes; les absences ne sont mentionnés que si la case "Indiquer les absences sur les bulletins" est cochée); + * la situation de l'étudiant (inscription, décision de jury, validations d'UE); + * la signature de gauche et celle de droite; + * le pied de page. + +Le contenu et la présentation des zones titre, situation et signatures sont paramétrables à l'aide de formats utilisant un balisage XML assez simple. + + +## Marges et position du pied de page +Les bulletins sont formattés pour du papier A4. + +Les marges sont réglables via les valeurs dans la section "Marges additionnelles des bulletins". Ces valeurs s'ajoutent aux marges par défaut qui sont assez étroites. + +Le pied de page (*Edité par ScoDoc le ...*) n'est pas affecté par le réglage des marges, et est positionné à l'aide des paramètres "Position horizontale du pied de page pdf" (resp. verticale) dans la section "Mise en forme des documents PDF". Ces valeurs affectent tous les documents PDF générés par ScoDoc. + + +## Valeurs remplacées +Dans les formats, les balises de la forme `%(X)s` sont remplacées par la valeur (texte) de la variable X si elle existe. Les variables définies apportent différentes informations: + + +### Préférences +Toutes les préférences pour le semestre considéré (ou définies globalement) sont utilisables par leur nom. +Voir la liste complète sur [NomsPreferences](NomsPreferences.md). + + + +### Informations sur le semestre +Variable | Valeur +---------|------- +titre_num | Le titre du semestre +titremois | idem avec dates début et fin +annee | L'année de début du semestre +anneescolaire | L'année scolaire (par ex. "2009 - 2010") +date_debut | 01/09/2008 +date_fin | 05/07/2009 +responsable | Nom du responsable du semestre (dir. des études) + + +### Informations sur l'étudiant +Variable | Valeur (exemple) +---------|------- +nom| DUPONT +prenom| PIERRE +sexe| M. +nomprenom| M. Pierre DUPONT +situation| phrase expliquant la situation de l'étudiant (inscription, décisions de jury) +demission| "DEMISSION" ou vide +inscription| phrase décrivant l'inscription ("ancien") +date_inscription| jj/mm/aaaa +date_demission || (vide si pas demission) +descr_inscription| "Inscrit" ou "Pas inscrit[e]" +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 +mention| Mention, calculée d'après la moyenne générale + | +**Absences:** | +nbabs| nombre d'absences (en demi-journées) +nbabsjust| nombre d'abs. justifiées + | +**Autres champs:**| +date_naissance | date, au format jj/mm/aaaa +lieu_naissance | format libre +domicile | adresse, format libre +codepostaldomicile | +codelycee | code national français + | +**Groupes:**| +groupes | indique les groupes auxquels appartient l'étudiant dans le semestre +group_0 | nom du groupe principal (1ère partition) +group_ | nom du group de la n-ième partition + + +### Autres informations +Variable |   +---------|------- +date_dmy | date courante, au format jj/mm/aaaa +date_iso | date courante, au format aaaa-mm-jj + + + +## Balises XML utilisées dans les formats +Le balisage XML est celui de [ReportLab](http://www.reportlab.com/) (intra-paragraph markup, voir page 70 du [guide utilisateur](http://www.reportlab.com/docs/reportlab-userguide.pdf)). La balise `` n'est pas utilisable. + + +### Logos +Une balise supplémentaire est interprétée par ScoDoc pour insérer des logos (images). + +Les logos doivent être des images au format JPEG (extension `.jpg` uniquement), placées dans le répertoire `.../logos/`, et nommées `logo_xxx.jpg`. + +La balise ``, 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. + +Voir un exemple d'utilisation plus bas. + + +## Exemples +### Exemple 1: Bulletins par défaut +Les bulletins édités par défaut sont obtenus avec: + + * Paragraphe de titre: +``` + +%(UnivName)s + + +%(InstituteName)s + + +RELEVÉ DE NOTES + + + +%(nomprenom)s %(demission)s + + + +Formation: %(titre_num)s + +Année scolaire: %(anneescolaire)s + +``` + + * Paragraphe sous table note: +``` +%(situation)s +``` + + * Signature de gauche +``` +La direction des études +
+%(responsable)s +
+``` + + * Signature de droite: +``` +Le chef de département +
+%(ChiefDeptName)s +
+``` + + + +### Exemple 2: ancien bulletins +Les bulletins édités par défaut avant le 20/9/2009 étaient obtenus avec: + + * Paragraphe de titre: +``` + +%(UnivName)s + +%(titre_num)s %(annee)s + +Relevé de notes de %(nomprenom)s %(demission)s + +``` + + * Paragraphe sous table note: +``` +%(situation)s +``` + + * Signature de gauche +``` +La direction des études +
+%(responsable)s +
+``` + + * Signature de droite: +``` +Le chef de département +
+%(ChiefDeptName)s +
+``` + + +### Exemple 3: en-tête avec logo +Même structure que le premier exemple, avec un logo. Notez que les dimensions du logo (en mm ou cm) doivent avoir le même rapport (hauteur/largeur) que l'image utilisée, sans quoi l'apparence est déformée. + + * Paragraphe de titre: +``` + +%(InstituteName)s + + +RELEVÉ DE NOTES + + + + +
+%(nomprenom)s %(demission)s +
+ + +Formation: %(titre_num)s + +Année scolaire: %(anneescolaire)s + +``` + diff --git a/docs/ParametrageSemestre.md b/docs/ParametrageSemestre.md new file mode 100644 index 0000000..b30db71 --- /dev/null +++ b/docs/ParametrageSemestre.md @@ -0,0 +1,42 @@ + +# Paramétrage d'un semestre +Les options présentées sur la page de paramétrage d'un semestre sont déterminées au moment de la mise en place du semestre (page "Programmes", "Mettre en place un nouveau semestre de formation...") et sont modifiables à tout moment (sauf si le semestre est verrouillé) via le menu "Semestre" / "Modifier le semestre". + +![ParametrageSemestre.png](screens/ParametrageSemestre.png) + + - **Dates**: Début et fin du semestre. Le choix est important pour la gestion correcte du passage des étudiants d'un semestre à l'autre. Elles ne doivent pas se chevaucher entre deux semestres consécutifs (le S2 doit commencer après le dernier jour du S1). + + - **Directeur des études**: Enseignant responsable de ce semestre, il aura des droits privilégiés (et son nom sera affiché sur les tableaux de bord). + + - **Nom du semestre**: Restez clair et concis, les dates et modalité (FC, Apprentissage) seront indiqués par ailleurs, ne les mettez pas dans le titre. !ScoDoc vous propose un titre par défaut que vous pouvez retrouver en utilisant le bouton voisin. + + - **Modalité**: Choisir dans le menu, Formation Initiale, Continue ou par Apprentissage. Utilisé uniquement pour regrouper les semestres sur les tableaux de bord, et pour les titres sur les bordereaux et PV. + + - **Semestre dans la formation**: Le nombre dépend du parcours (programme pédagogique) choisi. + + /!\ Attention: si votre parcours ne comporte pas de semestre (cas usuel pour les licences pro), indiquez "pas de semestre". Si votre "semestre" ScoDoc correspond en fait à *une année* d'un parcours (2 semestres), les choses se compliquent. C'est parfois le cas pour les formation en DUT en Apprentissage non semestrialisées (alors qu'elles devraient l'être selon les textes, pour s'insérer dans le LMD). Dans ce cas: + + * En début d'année, indiquer le numéro de semestre de *début* (par exemple "3" pour un deuxième année de DUT Apprentissage. Ceci permet d'inscrire facilement les étudiants qui viennet des semestres antérieurs. + * En fin d'année (en fait, dès que les inscriptions sont terminées et stabilisées), changer le numéro de semestre et indiquer celui de *fin* ("4" dans l'exemple précédent). C'est très important pour la bonne gestion des parcours. + + + - **Etape(s) Apogée**: + Important si vous avez un interfaçage avec Apogée. Indiquer les étapes Apogée correspondant à ce semestre (votre service Scolarité vous donnera les codes). + Dans certains cas, le même groupe (et semestre !ScoDoc) regroupe des étudiants inscrits dans des étapes différentes (par exemple, groupes mixtes Formation initiale et Continue). Spécifiez alors les deux ou trois codes correspondants. + + - **Jurys**: + * *Proposer compensations entre semestres*: application (ou non) des règles de compensation inter-semestres. Normalement, cocher pour les DUT et ne pas cocher pour les formations type Licence Pro ou autres sessions. + * *Formation semestrialisée*: cocher uniquement si vous avez des semestres "décalés", c'est à dire si vous pouvez proposer à un étudiant de redoubler immédiatement un semestre (passer de S1 en S1). + + - **Autorisations**: + Réglages (par l'administrateur ou chef de dept.) des droits donnés au directeur des étude de ce semestre et aux enseignants. + + - **Couleur fond bulletin**: + Couleur de fond pour les bulletins affichés par !ScoDoc en HTML. Peut permettre de distinguer visuellement un semestre d'un autre lors de certaines réunions... Indiquer un code de couleur HTML. + + - **Publication**: + Permet de bloquer la publication des bulletins via les exports XML utilisés pour les publications vers les étudiants (IUT de Villetaneuse et autres établissement ayant connecté leur ENT à ScoDoc). + + + + diff --git a/docs/PreferencesScoDoc.md b/docs/PreferencesScoDoc.md new file mode 100644 index 0000000..7c38790 --- /dev/null +++ b/docs/PreferencesScoDoc.md @@ -0,0 +1,32 @@ + +## Préférences +Les préférences sont des paramètres stockés dans la base de données d'un département. Les préférences s'appliquent à tout un département (tous les semestres), ou bien à un semestre particulier. Chaque département a son propre jeu de préférences (c'est parfois regrettable, car certaines préférences concernent tout l'établissement). + + +Si un semestre ne défini pas de valeur pour un paramètre (eg marge, police, paramétrage du bulletin de notes...), ScoDoc utilisera les préférences globales pour le département. + +Donc: + + * Pour affecter tous les semestres sauf ceux qui ont dit autrement: suivre le lien "Paramétrage" dans la marge gauche (visible uniquement si vous en avez la permission). + + * Pour affecter seulement un semestre: menu "Semestre", "Réglages bulletins" ou "Préférences du semestre". + +On accède aux préférences via le lien "Paramétrage", qui est présent dans la marge gauche seulement si l'on a le droit de modifier les préférences (la permission `Sco Change Preferences`, normalement associée au rôle `Admin` possédé par chef du département, voir [ConfigPermissions](ConfigPermissions.md)). + +On distingue plusieurs groupes de préférences: + + * Générales: nom de l'Université, du directeur, etc... + + * Absences: alarmes si beaucoup d'absences, statut des samedis... (voir détails sur [GestionAbsences](GestionAbsences.md)) + + * Liaison avec le portail: URL du portail, code du département, ... + + * Mise en forme des documents PDF: polices de caractères + + * Procès verbaux de jury: en-têtes, pieds de pages, signatures, polices... + + +Voir la liste des préférences sur la page [NomsPreferences](NomsPreferences.md). + +Note: les préférences et leurs valeurs par défaut sont définies dans le fichier `sco_preferences.py`. + diff --git a/docs/PresentationGenerale.md b/docs/PresentationGenerale.md new file mode 100644 index 0000000..d1d0347 --- /dev/null +++ b/docs/PresentationGenerale.md @@ -0,0 +1,5 @@ +# Présentation rapide de ScoDoc + +TODO + +![accueil](screens/accueil-old.png) diff --git a/docs/ProblemesEtBugs.md b/docs/ProblemesEtBugs.md new file mode 100644 index 0000000..5f5c8c5 --- /dev/null +++ b/docs/ProblemesEtBugs.md @@ -0,0 +1,24 @@ + +# En cas de problèmes avec [coDoc +Informations destinées aux administrateurs ayant un accès direct (ssh, root) au serveur. + + +## Récupération et envoi d'informations de diagnostic +Un script permet de générer quelques informations sur votre configuration pour les envoyer aux développeurs: logs, modifications du code source, version Linux installée etc. +Aucune information personnelle ou confidentielle exploitable n'est transmise. + +``` +# en tant que root sur le serveur: +cd /opt/scodoc/Products/ScoDoc/config +./diagnostic.sh +``` + +Ce script génère un fichier `tgz` et essaie de l'envoyer par mail aux développeurs. + +Si pour une raison ou une autre le serveur étudié n'est pas capable d'envoyer un mail vers l'extérieur, récupérer manuellement le fichier généré et l'envoyer. Ce fichier est dans /tmp et son nom exact est affiché par le script: +```ScoDoc diagnostic: informations about your system will be sent to emmanuel.viennet@univ-paris13.fr +and left in /tmp/scodoc-2016-09-05-1504631964 +``` + + + diff --git a/docs/ProblemesMail.md b/docs/ProblemesMail.md new file mode 100644 index 0000000..c816b73 --- /dev/null +++ b/docs/ProblemesMail.md @@ -0,0 +1,56 @@ + +# 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). + +Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne pas. + + +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 +``` +dpkg-reconfigure postfix +``` + + 2. Vérifiez que le serveur SMTP écoute bien en local sur le port 25: dans un terminal taper +``` + telnet localhost 25 +``` +Vous devez observer: +``` +Trying 127.0.0.1... +Connected to localhost. +Escape character is '^]'. +220 nom_du_serveur ESMTP Postfix (Debian/GNU) +``` +(quitter avec ctrl-] puis quit) + + 3. Si cela fonctionne, passer au test de ScoDoc: créer un étudiant bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un semestre, et lui envoyer son bulletin par mail. (sur la page web de son bulletin, petit menu "Autres opérations"). + +A ce moment, regarder le log +`/opt/scodoc/instance/log/notes.log` + +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 +``` + +Et d'autre part dans le log de postfix (`/var/log/mail.log`) +``` +Sep 7 11:37:42 xxxxxxxx postfix/smtp[31240]: ED1F62BAB22: +to=, relay=gmail-smtp-in.l.google.com[209.85.135.27]:25, delay=1.5, +delays=0.03/0/0.41/1, dsn=2.0.0, status=sent (250 2.0.0 OK 1220942550 y2si22647061mug.2) +``` + +Cela devrait permettre de savoir: + + 1. si ScoDoc tente d'envoyer un mail (notes.log) + 2. si le serveur SMTP arrive à traiter ce mail. + diff --git a/docs/RapportsStatistiques.md b/docs/RapportsStatistiques.md new file mode 100644 index 0000000..6c77408 --- /dev/null +++ b/docs/RapportsStatistiques.md @@ -0,0 +1,87 @@ + +# Rapports statistiques +ScoDoc permet de calculer et visualiser des indicateurs sur les parcours des étudiants. Ces fonctions sont précieuses pour analyser les flux d'étudiants, tenter de comprendre les causes d'échecs, et remplir les dossiers d'évaluations pour le ministère... + +Ces fonctions sont toutes accessibles à tous les utilisateurs (dans le paramétrage par défaut), et sont regroupées dans le menu "Statistiques" du tableau de bord semestre. + + +## Suivi de cohortes +Le tableau de suivi de cohortes se présente comme suit: + +![SuiviCohortes.png](screens/SuiviCohortes.png) + +La première ligne donne l'effectif dans le semestre origine (le semestre sélectionné). +ScoDoc suit les étudiants de ce semestre d'origine. Il crée une colonne par semestre (les semestres correspondant à chaque date sont listés en bas de la page). + +Les lignes suivantes donnent, pour chaque date, le nombre d'étudiants dans chaque semestre (S1, S2, S3, S4). + + * La ligne **Inscrits** donne le nombre d'étudiants de la cohorte encore présents à chaque date; + * la ligne **Démissions** donne le nombre d'étudiants ayant démissionnés durant la période correspondant à la colonne; + * la ligne **Echecs** donne le nombre d'étudiants *réorientés* à la fin de la période correspondant à la colonne; + * la ligne **Diplômes** donne le nombre d'étudiants *diplômés* à la fin de la période correspondant à la colonne. + +Les nombres peuvent être affichés en pourcentage (de l'effectif initial de la cohorte) ou bien en nombres bruts. + +Comme dans la plupart des tables affichées par ScoDoc, on peut trier les lignes de la table en cliquant sur un titre, et exporter la table aux formats PDF et tableur (Excel). + + +## Graphes des parcours +Ces graphes permettent de suivre les étudiants inscrits dans un semestre donné. Ils présentent à la fois l'origine et le devenir des étudiants de ce semestre. + +Le graphe permet de suivre les étudiants inscrits dans le semestre sélectionné (dessiné en vert). Chaque rectangle représente un semestre (cliquez dedans pour afficher son tableau de bord). Les flèches indiquent le nombre d'étudiants passant d'un semestre à l'autre (s'il y en a moins de 10, vous pouvez visualiser leurs noms en passant la souris sur le chiffre). + +/!\ Attention: seuls les étudiants inscrits dans le semestre sélectionné sont montrés sur le graphe. Les effectifs affichés dans chaque semestre correspondent donc aux étudiants de ce semestre qui sont aussi passé par le semestre sélectionné. + + +### Un exemple simple: +Le semestre sélectionné est ici le S1 du 9/2007 au 1/2008 (dessiné en vert). Les deux rectangles de gauche montrent les semestres d'où viennent des étudiants ayant redoublé pour retourner en S1. Le rectangle de droite (S2) nous indique que 41 étudiants sur 48 sont passés de S1 en S2. + +![GrapheParcours-1.png](screens/GrapheParcours-1.png) + +*(dans la version web, on obtient plus d'informations en passant le curseur sur les différents éléments du graphe)* + + +### Un exemple plus complexe: +Le graphe suivant montre le devenir des étudiants inscrits en S1, dans un département avec différentes options (les noms des options sont visibles dans la version web) et avec des semestres décalés (S1d, S2d, S3d, S4d). + +![GrapheParcours-2-small.png](screens/GrapheParcours-2-small.png) + + +## Statistiques +Cette page affiche une table donnant des informations sur les étudiants inscrits dans le semestre. + +Chaque étudiant possède des attributs: + + * **annee_naissance**: année de naissance + * **sexe** + * **annee_bac**: année d'obtention du bac + * **bac**: série de bac (ex: L, S, ...) + * **specialite**: spécialité du bac (ex: STI, STL, ...) + * **bac-specialite**: concaténation du champ bac et du champ specialite + * **villelycee**: ville du Lycée + * **etat**: état de l'étudiant (I si inscrit, D si démissionnaire) + * **qualite**: "qualité" du dossier (nombre renseigné lors de l'admission, non utilisé par ScoDoc, son l'interprétation est libre) + * **codedecision**: code décision jury (s'il a eu lieu) (ex: ADM, AJ, ATB, ...) + +/!\ ces attributs ne sont pas toujours renseignés, il faut avoir importé certains d'entre eux (données d'admission). + + +La table permet de croiser deux attributs. Par défaut, elle affiche les décisions de jury (en colonnes) versus la série de bac (en lignes). + +Exemple: + +![StatsBac.png](screens/StatsBac.png) + +On voit ici que, sur 163 étudiants inscrits, on a 12 bacs S (7,4%), dont 7 ont été admis (code ADM). + + +## Codes des parcours +Les codes de parcours permettent de visualiser rapidement les parcours des étudiants. + +On forme pour chaque étudiant un code constitué de la concaténation des numéros de semestres qu'il a suivi. +Un étudiant inscrit en S1, puis S2, puis S3 et S4 aura un code "1234". Les semestres "décalés" (par exemple un S1 commençant en février) sont repérés par la lettre "d". + +A la fin d'un parcours, l'étudiant peut obtenir son diplôme (code `:A`, comme "admis"), ou peut être réorienté (code `:R`), ou encore démissionner (code `:D`). + +ScoDoc indique dans un tableau le nombre d'étudiants du semestre dans chaque type de parcours. + diff --git a/docs/RoadMap.md b/docs/RoadMap.md new file mode 100644 index 0000000..cbe9978 --- /dev/null +++ b/docs/RoadMap.md @@ -0,0 +1,6 @@ + + +# Roadmap: projets en cours + + + diff --git a/docs/SaisieDecisionsJury.md b/docs/SaisieDecisionsJury.md new file mode 100644 index 0000000..35c1650 --- /dev/null +++ b/docs/SaisieDecisionsJury.md @@ -0,0 +1,16 @@ + +# Saisie des décisions de jury +ScoDoc guide les travaux de la commission (et/ou du jury) en présentant le parcours et +les résultats de chaque étudiant, et les différentes décisions possibles +(voir explications dans [GestionJury](GestionJury.md)). + + +## Saisie des décisions pour un étudiant +On accède à cette page soit via la fiche étudiant (menu **Scolarité** du semestre à considérer), +soit via la page **Saisie des décisions du jury** accessible depuis le tableau de bord du semestre. + +![ValidationSemestre.png](screens/ValidationSemestre.png) + + +(source de ce dessin: ValidationSemestre.dia) + diff --git a/docs/SauvegardesBases.md b/docs/SauvegardesBases.md new file mode 100644 index 0000000..6a1f17f --- /dev/null +++ b/docs/SauvegardesBases.md @@ -0,0 +1,65 @@ + +# Mise en place de sauvegardes des bases de données ScoDoc +Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde permettant de rétablir le service en minimisant les pertes de données à la suite d'un accident majeur mais probable comme: crash de disque dur, bug, vol du serveur, incendie... + +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 du système complet (et de ses disques durs): la forme dépend de l'environnement (machine virtuelle ou non...). Dans tous les cas, les données doivent être sauvegardées dans une salle (voire un bâtiment) différente de celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une sauvegarde quotidienne (nocturne) est suffisante. Le script `/opt/scodoc/instance/Products/ScoDoc/misc/backup_to_remote_server.sh` peut être utilisé pour cela. + +Notons que ScoDoc sauvegarde certaines informations sous le répertoire `/opt/scodoc` (en particulier les photos, les documents archivés et divers réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en plus des bases de données SQL. + + +### Dump des bases de données +Le script `backup_db` (ou bien `backup_db2`, fournis dans le répertoire `.../ScoDoc/misc`) peut être utilisé pour effectuer des sauvegardes automatisées des bases de données SQL. Les données sont extraites de la base et écrites sur le disque local du serveur, qui doit bien entendu être sauvegardé par d'autres moyens, comme indiqué ci-dessus. + +Le nouveau (mars 2014) script `backup_db2` permet de conserver des sauvegardes de chaque heure durant les 48 (par défaut) dernières heures, des sauvegardes quotidiennes des 40 derniers jours, hebdomadaires des 30 dernières semaines, et mensuelles des 200 derniers mois (tout ceci est paramétrable dans le script `.../ScoDoc/backup_rotation.sh`). + +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: +``` +# su postgres +# cd +# crontab -e +``` +et ajouter: +``` +10 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOUSERS +15 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOXXXX +20 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOYYYY +... +``` +Remplacer `SCOXXXX` et `SCOYYYY` par les noms des bases de vos départements (la commande `psql -l` permet de lister toutes les bases). + + + +### En cas de problème: restaurer la base à partir d'une sauvegarde +/!\ Attention, certaines informations sont stockées dans des fichiers et non dans la base de données: configuration du logiciel, photos des étudiants. Ce paragraphe ne traite que de la restauration à de la base de données. + + 1. Choisir la sauvegarde à utiliser, en fonction de la date à partir de laquelle on a fait une erreur (eg suppression non intentionnelle d'un semestre...). Le fichier se trouve sous `/var/lib/postgresql/SCOXXX-BACKUPS`où `XXX` est le département concerné. Utiliser par exemple `ls -lrt` pour visualiser les sauvegardes triées par date. (Note: la version précédente du script écrivait dans `/var/lib/postgresql/BACKUP-SCOXXX`). + + 1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple: + +``` + cp /var/lib/postgresql/SCOGEII-BACKUPS/backup.hourly/2014-03-04T05\:35/SCOGEII_pgdump.gz /tmp + gunzip /tmp/SCOGEII_pgdump.gz +``` + + 3. Recharger la base complète pour le département concerné. /!\ Attention, cette opération effacera et remplacera) le contenu de la base de données actuelle... +``` +# en tant que root... +/etc/init.d/scodoc stop # arret du serveur +su postgres +dropdb SCOXXX # <<< par exemple SCOGEII +pg_restore -C -d postgres /tmp/SCOXXX_pgdump # <<< changer le nom du fichier +exit # retour a l'utilisateur root +/etc/init.d/scodoc start # relance ScoDoc +``` + + + + + diff --git a/docs/ScoDocAPI.md b/docs/ScoDocAPI.md new file mode 100644 index 0000000..ff8fb87 --- /dev/null +++ b/docs/ScoDocAPI.md @@ -0,0 +1,882 @@ + +# API pour ScoDoc +L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux informations aux formats XML et JSON. +Cette API est encore incomplète: n'hésitez pas à demander de nouveaux accès en écrivant à la liste de diffusion. + +L'ancienne API, un peu désordonnée, est décrite sur [ServicesXml](ServicesXml.md). + +Chaque fonction d'accès (`*_list` et autres) prend un paramètre `format` qui indique le format de données désiré: `json` ou `xml` . + +Les objets ScoDoc manipulables sont identifiés par des id, garantis uniques au sein d'un même département (mais pas au delà, car chaque département a sa base de données séparée). + + * formation_id: un programme de formation (page "programmes"); + * ue_id: une UE dans un programme; + * matiere_id: une matière dans un programme; + * module_id: un module dans un programme. + + +L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/DEPT/Scolarite/Notes/fonction` où `DEPT`est le département et `fonction` la fonction appelée. + +Un exemple d'utilisation de l'API en PHP pour publier les bulletins de notes sur un site externe pour les étudiants est disponible ici: source:/trunk/misc/PublicationBulletins/ExemplePHP + + +## Fonctions d'accès aux données +### Programmes de formations + * **`formation_list`** + * Paramètres: `formation_id` (optionnel, si absent liste toutes les formations) + * Résultat: liste de formations. + + * **`formation_export`** + * Paramètres: `formation_id`, `export_ids` (défaut "faux") + * Résultat: la formation, avec UE, matières, modules (un arbre). + + +### Semestres de formation +Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`. + + * **`formsemestre_list`** + * Paramètres (tous optionnels): `formsemestre_id`, `formation_id`, `etape_apo`, `etape_apo2` + * Résultat: liste des semestres correspondant. + * Exemple: `formsemestre_list?format=xml&etape_apo=V1RT` + +Note sur les identifiants de sessions: le `session_id` peut être utilisé pour identifier de façon prévisible et (presque) unique une session dans un établissement, ce qui est utile notamment pour interfacer ScoDoc à d'autres logiciels (eg gestion d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué des informations suivantes: + + * Département (RT, GEII, INFO...) (= paramètre `DeptName`, en majuscules) + * Nom parcours: DUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME) + * Modalité: FI, FC, FA + * "Spécialité" : S1 (ou S1D pour les sem. décalés), ou le `code_specialite` si pas de semestres. Le code spécialité est un champ (libre) nouveau dans la "formation" (programme pédagogique). + * Année: année de début de l'année scolaire correspondante (eg 2014 pour une session appartenant à l'année scolaire 2014-2015, même si elle commence en mars 2015). + +Exemple: `INFO-DUT-FI-S1-2014` : semestre S1 d'un DUT informatique de 2014 en formation initiale (FI) + + + + +### Groupes et partitions +L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieurs partitions (types de groupes). Chaque partition est constituée d'un nombre quelconque de groupes d'étudiants. + + * **`formsemestre_partition_list`** + * Paramètres: `formsemestre_id` + * Résultat: + * Exemple: ici au format JSON +``` +[ + { + "formsemestre_id": "SEM12781", + "partition_id": "P23840", + "partition_name": "TD" + "group": [ + { + "formsemestre_id": "SEM12781", + "partition_id": "P23840", + "group_name": "A", + "group_id": "G23841", + "partition_name": "TD" + }, + { + "formsemestre_id": "SEM12781", + "partition_id": "P23840", + "group_name": "B", + "group_id": "G23843", + "partition_name": "TD" + }, + ], + }, + { + "formsemestre_id": "SEM12781", + "partition_id": "P23941", + "partition_name": "TP" + "group": [ + { + "formsemestre_id": "SEM12781", + "partition_id": "P23941", + "group_name": "A1", + "group_id": "G23942", + "partition_name": "TP" + }, + { + "formsemestre_id": "SEM12781", + "partition_id": "P23941", + "group_name": "A2", + "group_id": "G23943", + "partition_name": "TP" + }, + ], + }, + { + "formsemestre_id": "SEM12781", + "partition_id": "P22833", + "partition_name": null + "group": [ + { + "formsemestre_id": "SEM12781", + "partition_id": "P22833", + "group_name": null, + "group_id": "G22834", + "partition_name": null + } + ], + } +] +``` + * **`groups_view`** + * Paramètres: `formsemestre_id `ou `group_ids` (peut être répété), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I` + * Résultat: liste des étudiants dans un groupe. + * Exemple: ici au format XML avec `with_codes=1`: +``` + + + + + + + + + + + + + + + + + + + + + + +``` +Et un autre exemple en format JSON: +``` +[ + { + "etat":"I", + "emailperso":null, + "prenom":"Dalil", + "nom_disp":"CLINTO", + "email":"xxx@example.com", + "P62029":"A", + "P62032":null, + "P62031":"G1", + "P62030":"A1" + }, + { + "etat":"I", + "emailperso":null, + "prenom":"Georges", + "nom_disp":"BUSH", + "email":"bush@example.com", + "P62029":"A", + "P62032":null, + "P62031":"G1", + "P62030":"A1" + }, + ... +] +``` + + +### Etudiants + * **`etud_info`** + * Paramètres: `etudid` ou `code_nip` ou `code_ine` + * Résultat: informations sur cette étudiant et les semestres dans lesquels il est (ou a été) inscrit. + * Exemple: `etud_info?format=json&etudid=12345` +``` +{ + "nom": "Mutis", + "sexe": "M.", + "email": "alvaro.mutis@example.com", + "prenom": "ALVARO", + "nomprenom": "M. Alvaro MUTIS", + "insemestre": [ + { + "etat": "I", + "formsemestre_id": "SEM12781", + "date_fin": "2010-07-30", + "date_debut": "2010-01-25" + }, + { + "etat": "I", + "formsemestre_id": "SEM8396", + "date_fin": "2009-01-16", + "date_debut": "2008-09-01" + } + ], + "code_ine": "", + "etudid": "EID8768", + "code_nip": "10991002", + "photo_url": "/ScoDoc/static/photos/F13/RT_EID8768.h90.jpg", + + "domicile": "2 Rue Madame", + "villedomicile": "Paris", + "telephonemobile": "" + "fax": "", + + "annee_bac": "2010", + "bac": "S", + "specialite": "SCIENTIFIQUE", + + "nomlycee": "", + "villelycee": "", + "codelycee": "0950650R", + "codepostallycee": "", + +} +``` + + + +### Bulletins de notes + * **`Notes/formsemestre_bulletinetud`** + * Paramètres: `formsemestre_id`, `etudid`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`) + * Résultat: bulletin de notes + * Exemple: ici au format JSON, pour une version courte (`version=short`) +``` +{ + "rang": { + "ninscrits": 52, + "value": "1" + }, + "etape_apo2": "", + "etape_apo3": "", + "etape_apo4": "", + "etudiant": { + "nom": "BOLANO", + "prenom": "Roberto", + "sexe": "M.", + "code_ine": "", + "etudid": "EID9860", + "code_nip": "123456789", + "email": "roberto@santateresa.mx", + "photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg" + }, + "bonus_sport_culture": { + "value": 0 + }, + "absences": { + "nbabsjust": 0, + "nbabs": 1 + }, + "decision": { + "etat": "I", + "code": "ADM", + "compense_formsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */ + }, + "note": { + "max": "15.51", + "moy": "10.80", + "value": "15.51", + "min": "07.29" + }, + "etudid": "EID9860", + "decision_ue": [ + { + "acronyme": "UE11", + "code": "ADM", + "ects": "16.0", + "titre": "D\u00e9couverte m\u00e9tiers", + "numero": "11", + "ue_id": "UE21456" + }, + { + "acronyme": "UE12", + "code": "ADM", + "ects": "14.0", + "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", + "numero": "12", + "ue_id": "UE21478" + } + ], + "ue_capitalisee": [ + + ], + "publie": 1, + "autorisation_inscription": [ + { + "semestre_id": 2 + } + ], + "appreciation": [ + + ], + "note_max": { + "value": 20 + }, + "date": "2014-07-12T17:38:47.693262", + "rang_group": [ + { + "ninscrits": 26, + "value": "1", + "group_type": "TD", + "group_name": "B" + }, + { + "ninscrits": 13, + "value": "1", + "group_type": "TP", + "group_name": "B1" + }, + { + "ninscrits": 4, + "value": "1", + "group_type": "G", + "group_name": "G4" + }, + { + "ninscrits": "", + "value": "", + "group_type": "tutorat", + "group_name": "" + }, + { + "ninscrits": "", + "value": "", + "group_type": "App", + "group_name": "" + }, + { + "ninscrits": "", + "value": "", + "group_type": "sport", + "group_name": "" + } + ], + "formsemestre_id": "SEM12345", + "etape_apo": "V1RT", + "ue": [ + { + "acronyme": "UE11", + "rang": "1", + "code_apogee": "VRTU11", + "ects": "16", + "numero": "11", + "note": { + "max": "16.17", + "value": "16.17", + "min": "06.56" + }, + "module": [ + { + "coefficient": 3, + "rang": { + "value": "1" + }, + "code": "M1101", + "code_apogee": "VRT1101", + "numero": 1101, + "note": { + "moy": "08.94", + "nb_notes": 51, + "nb_missing": 0, + "max": "19.18", + "min": "03.70", + "nb_valid_evals": 3, + "value": "19.18" + }, + "abbrev": "R\u00e9seaux d'entreprises", + "effectif": { + "value": 51 + }, + "titre": "Initiation aux r\u00e9seaux d'entreprises", + "evaluation": [ + + ], + "id": "MIP27427" + }, + { + "coefficient": 2, + "rang": { + "value": "2" + }, + "code": "M1102", + "code_apogee": "VRT1102", + "numero": 1102, + "note": { + "moy": "12.58", + "nb_notes": 50, + "nb_missing": 1, + "max": "16.79", + "min": "02.50", + "nb_valid_evals": 2, + "value": "16.50" + }, + "abbrev": "Initiation \u00e0 la t\u00e9l\u00e9phonie", + "effectif": { + "value": 51 + }, + "titre": "Initiation \u00e0 la t\u00e9l\u00e9phonie d'entreprise", + "evaluation": [ + + ], + "id": "MIP27437" + }, + { + "coefficient": 1.5, + "rang": { + "value": "1" + }, + "code": "M1103", + "code_apogee": "VRT1103", + "numero": 1103, + "note": { + "moy": "08.26", + "nb_notes": 51, + "nb_missing": 0, + "max": "13.41", + "min": "00.94", + "nb_valid_evals": 2, + "value": "13.41" + }, + "abbrev": "Architecture des \u00e9quipements informatiques", + "effectif": { + "value": 51 + }, + "titre": "Architecture des \u00e9quipements informatiques", + "evaluation": [ + + ], + "id": "MIP27451" + }, + { + "coefficient": 2, + "rang": { + "value": "1" + }, + "code": "M1104", + "code_apogee": "VRT1104", + "numero": 1104, + "note": { + "moy": "10.77", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.90", + "min": "04.63", + "nb_valid_evals": 3, + "value": "17.90" + }, + "abbrev": "Principe et architecture des r\u00e9seaux", + "effectif": { + "value": 51 + }, + "titre": "Principe et architecture des r\u00e9seaux", + "evaluation": [ + + ], + "id": "MIP27431" + }, + { + "coefficient": 2, + "rang": { + "value": "1" + }, + "code": "M1105", + "code_apogee": "VRT1105", + "numero": 1105, + "note": { + "moy": "11.00", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.83", + "min": "04.98", + "nb_valid_evals": 2, + "value": "17.83" + }, + "abbrev": "Bases des syst\u00e8mes d'exploitation", + "effectif": { + "value": 51 + }, + "titre": "Bases des syst\u00e8mes d'exploitation", + "evaluation": [ + + ], + "id": "MIP27433" + }, + { + "coefficient": 1.5, + "rang": { + "value": "6" + }, + "code": "M1106", + "code_apogee": "VRT1106", + "numero": 1106, + "note": { + "moy": "13.05", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.79", + "min": "07.08", + "nb_valid_evals": 1, + "value": "16.25" + }, + "abbrev": "Initiation au d\u00e9veloppement Web", + "effectif": { + "value": 51 + }, + "titre": "Initiation au d\u00e9veloppement Web", + "evaluation": [ + + ], + "id": "MIP27449" + }, + { + "coefficient": 1.5, + "rang": { + "value": "9" + }, + "code": "M1107", + "code_apogee": "VRT1107", + "numero": 1107, + "note": { + "moy": "09.36", + "nb_notes": 51, + "nb_missing": 0, + "max": "14.21", + "min": "04.17", + "nb_valid_evals": 3, + "value": "11.66" + }, + "abbrev": "Initiation \u00e0 la mesure du signal", + "effectif": { + "value": 51 + }, + "titre": "Initiation \u00e0 la mesure du signal", + "evaluation": [ + + ], + "id": "MIP27440" + }, + { + "coefficient": 1.5, + "rang": { + "value": "7" + }, + "code": "M1108", + "code_apogee": "VRT1108", + "numero": 1108, + "note": { + "moy": "10.49", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.31", + "min": "05.39", + "nb_valid_evals": 4, + "value": "13.22" + }, + "abbrev": "Acquisition et codage de l'information", + "effectif": { + "value": 51 + }, + "titre": "Acquisition et codage de l'information", + "evaluation": [ + + ], + "id": "MIP27453" + }, + { + "coefficient": 1, + "rang": { + "value": "4 ex" + }, + "code": "M1109", + "code_apogee": "VRT1109", + "numero": 1109, + "note": { + "moy": "12.46", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.00", + "min": "09.00", + "nb_valid_evals": 1, + "value": "15.00" + }, + "abbrev": "PT : Recherche documentaire", + "effectif": { + "value": 51 + }, + "titre": "PT : Recherche documentaire", + "evaluation": [ + + ], + "id": "MIP27444" + } + ], + "effectif": "51", + "titre": "D\u00e9couverte m\u00e9tiers", + "id": "UE21456" + }, + { + "acronyme": "UE12", + "rang": "5", + "code_apogee": "VRTU12", + "ects": "14", + "numero": "12", + "note": { + "max": "15.20", + "value": "14.63", + "min": "07.94" + }, + "module": [ + { + "coefficient": 2, + "rang": { + "value": "3 ex" + }, + "code": "M1201", + "code_apogee": "VRT1201", + "numero": 10, + "note": { + "moy": "13.02", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.00", + "min": "10.00", + "nb_valid_evals": 1, + "value": "14.00" + }, + "abbrev": "Anglais", + "effectif": { + "value": 51 + }, + "titre": "Anglais g\u00e9n\u00e9ral de communication et initiation au vocabulaire technique", + "evaluation": [ + + ], + "id": "MIP27430" + }, + { + "coefficient": 2, + "rang": { + "value": "16 ex" + }, + "code": "M1202", + "code_apogee": "VRT1202", + "numero": 20, + "note": { + "moy": "12.74", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.75", + "min": "04.00", + "nb_valid_evals": 2, + "value": "14.00" + }, + "abbrev": "Expression", + "effectif": { + "value": 51 + }, + "titre": "EC: \u00c9l\u00e9ments fondamentaux de la communication", + "evaluation": [ + + ], + "id": "MIP27439" + }, + { + "coefficient": 1, + "rang": { + "value": "1 ex" + }, + "code": "M1203", + "code_apogee": "VRT1203", + "numero": 30, + "note": { + "moy": "NA", + "nb_notes": 0, + "nb_missing": 51, + "max": "-", + "min": "-", + "nb_valid_evals": 0, + "value": "-" + }, + "abbrev": "PPP: Connaitre son champ d'activit\u00e9", + "effectif": { + "value": 51 + }, + "titre": "PPP: Connaitre son champ d'activit\u00e9", + "evaluation": [ + + ], + "id": "MIP27436" + }, + { + "coefficient": 2, + "rang": { + "value": "6" + }, + "code": "M1204", + "code_apogee": "VRT1204", + "numero": 40, + "note": { + "moy": "10.66", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.35", + "min": "05.73", + "nb_valid_evals": 8, + "value": "14.09" + }, + "abbrev": "Mise \u00e0 niveau en num\u00e9ration et calculs", + "effectif": { + "value": 51 + }, + "titre": "Mise \u00e0 niveau en num\u00e9ration et calculs", + "evaluation": [ + + ], + "id": "MIP27454" + }, + { + "coefficient": 2, + "rang": { + "value": "23" + }, + "code": "M1205", + "code_apogee": "VRT1205", + "numero": 50, + "note": { + "moy": "10.37", + "nb_notes": 51, + "nb_missing": 0, + "max": "18.69", + "min": "05.01", + "nb_valid_evals": 5, + "value": "10.58" + }, + "abbrev": "Connaissances et Outils pour le signal", + "effectif": { + "value": 51 + }, + "titre": "Harmonisation des connaissances et des outils pour le signal", + "evaluation": [ + + ], + "id": "MIP27432" + }, + { + "coefficient": 2, + "rang": { + "value": "3 ex" + }, + "code": "M1206", + "code_apogee": "VRT1206", + "numero": 60, + "note": { + "moy": "11.22", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.76", + "min": "03.91", + "nb_valid_evals": 6, + "value": "15.12" + }, + "abbrev": "Circuits \u00e9lectroniques : mise \u00e0 niveau", + "effectif": { + "value": 51 + }, + "titre": "Circuits \u00e9lectroniques : mise \u00e0 niveau", + "evaluation": [ + + ], + "id": "MIP27435" + }, + { + "coefficient": 2, + "rang": { + "value": "1 ex" + }, + "code": "M1207", + "code_apogee": "VRT1207", + "numero": 70, + "note": { + "moy": "08.39", + "nb_notes": 51, + "nb_missing": 0, + "max": "20.00", + "min": "00.00", + "nb_valid_evals": 1, + "value": "20.00" + }, + "abbrev": "Programmation 1", + "effectif": { + "value": 51 + }, + "titre": "Bases de la programmation", + "evaluation": [ + + ], + "id": "MIP27445" + }, + { + "coefficient": 1, + "rang": { + "value": "1 ex" + }, + "code": "M1208", + "code_apogee": "VRT1208", + "numero": 80, + "note": { + "moy": "NA", + "nb_notes": 0, + "nb_missing": 51, + "max": "-", + "min": "-", + "nb_valid_evals": 0, + "value": "-" + }, + "abbrev": "M\u00e9thodologie Universitaire 1", + "effectif": { + "value": 51 + }, + "titre": "Adaptation et m\u00e9thodologie pour la r\u00e9ussite Universitaire", + "evaluation": [ + + ], + "id": "MIP27434" + } + ], + "effectif": "51", + "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", + "id": "UE21478" + }, + { + "acronyme": "UE 1S", + "rang": "1 ex", + "code_apogee": "", + "ects": "0", + "numero": "13", + "note": { + "max": "00.00", + "value": "00.00", + "min": "00.00" + }, + "module": [ + + ], + "effectif": "51", + "titre": "Sport &amp; Culture", + "id": "UE23716" + } + ], + "situation": "Inscrit le 02\/09\/2015. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s'inscrire en S2." +} +``` + + + +### Modules + * **`Notes/do_moduleimpl_list`** + * Paramètres: `[formsemestre_id, moduleimpl_id, module_id]` + * Résultat: liste de moduleimpl + + * **`Notes/do_moduleimpl_withmodule_list`** + * Paramètres: `[formsemestre_id, moduleimpl_id, module_id]` + * Résultat: liste triée de moduleimpl, avec l'attribut `module` + + +### En savoir plus +Voir l'exemple complet d'utilisation de l'API JSON en Python, dans `misc/example-api-1.py` + + + + + diff --git a/docs/ScoDocApogee.md b/docs/ScoDocApogee.md new file mode 100644 index 0000000..3816fee --- /dev/null +++ b/docs/ScoDocApogee.md @@ -0,0 +1,75 @@ + + + +# Interfaçage ScoDoc - Apogée +L'export des résultats de ScoDoc vers Apogée se fait après le jury. Pour les DUT classiques, on le fait deux fois par an: une première fois en janvier, une autre en juillet. + +L'export des notes finales (et des décisions de jury) vers le logiciel Apogée peut être fait de plusieurs façons: soit par remplissage automatique de maquettes Apogée, soit en passant par des fichiers Excel. + + +## Remplissage des fichiers maquette Apogée (CSV) +Solution intégrée à ScoDoc en juillet 2016. + +La démarche est la suivante: + + 1. S'assurer que les maquettes pédagogiques Apogée et ScoDoc sont cohérentes. Les éléments pédagogiques Apogée (UE, modules) ont des codes (comme `VRTU11`) qu'il faut reporter dans les programmes ScoDoc (champs "Code Apogée" dans les programmes pédagogiques. + 1. Exporter depuis Apogée le fichier CSV à remplir. + 1. Sélectionner l'ensemble des semestres (S2 ou S4 ou LP) à considérer. Le menu "Jury / Export vers Apogée" permet de remplir ce fichier. Il génère aussi plusieurs fichiers annexes, dont un résumé des décision commenté, et une liste des étudiants interdits de ré-inscription (les "NAR", pour Non Autorisés à Redoubler). + 1. Importer dans ScoDoc les fichiers maquette Apogée nécessaires (un par étape Apogée). + 1. Après tenue du jury ScoDoc, vérifier la cohérence des listes de ScoDoc avec celle d'Apogée et exporter les maquette remplies. + 1. Les fichiers remplis peuvent alors être importés dans Apogée. + +/!\ Bien que ScoDoc tente d'inférer de nombreuses informations, les résultats doivent impérativement être vérifiés avant clôture des opérations et édition des PV et attestations. + +Quelques détails ci-dessous. + + +### Saisie des codes Apogée dans ScoDoc +Les codes Apogée des éléments constitutifs (UE et modules de ScoDoc) doivent être saisis par le responsable de formation sur la page d'édition du programme pédagogique. En principe, le programme pédagogique ScoDoc est utilisé par de nombreux semestres. Afin de faciliter la gestion, il est possible d'éditer les codes Apogée des formations même si elles sont verrouillées, et cela peut se faire directement sur la page qui montre l'ensemble de la formation. Il suffit de cliquer sur un code Apogée, pour ouvrir un champ d'édition, comme on le voit ci-dessous: + +![SaisieCodeApoModule.png](screens/SaisieCodeApoModule.png) + +Par ailleurs, chaque semestre est associé à une étape Apogée (VET), et, en option, à un code d'élément annuel et un code d'élément semestre. Pour le deuxième semestre 5S2) du DUT R&T Villetaneuse, cela donne: + + * Code étape (VET): `V1RT` (l'étape est annuelle) + * Code année (ELP): `VRT1A` (cet élément contiendra exactement les mêmes informations que le VET) + * Code semestre (ELP): `VRTW2` (la note de ces élément sera la moyenne générale du semestre) + +Notez que la nomenclature est variable et souvent peu prévisible, même au sein d'un seul établissement. + +Les trois codes ci-dessus sont à entrer dans le semestre (et non sur la formation car elle est partagée par des semestres différents, qui ont parfois des codes variés): passer par le menu "Semestre / Modifier le semestre". + + +### Préparation de l'ensemble des semestres +Pour préparer un export des résultats, il faut définir l'ensemble des semestres que l'on veut considérer. Cet ensemble recouvre éventuellement plusieurs étapes Apogée. Chaque semestre ScoDoc peut en effet être associé à plusieurs étapes Apogée, ce qui est utile pour les formations accueillant différents types de publics (apprentis, FC, contrats de professionnalisation). D'autre part, plus rarement, les étudiants d'une étape Apogée peuvent être inscrits dans plusieurs semestres ScoDoc: c'est le cas pour certaines formations avec des parcours optionnels, dont il est préférable de séparer les suivis pédagogiques (cas du DUT CJ deuxième année à Villetaneuse: V2CJ recouvre deux options qui sont des promotions d'étudiants distinctes). + +La constitution de l'ensemble des semestres ScoDoc (semset) va définir l'ensemble des étapes Apogée à considérer (typiquement, on indique le S2 ou le S4, ScoDoc retrouvant automatiquement le semestre précédent). Traiter chaque année scolaire (par exemple S2 et S4) dans des ensembles séparés (chacune a son code étape). + +Chaque étape Apogée correspond à un fichier "maquette" spécifique, que ScoDoc va devoir importer et remplir. Ces fichiers devront ensuite être ré-importés dans Apogée. + + +### Précautions à prendre et remarques diverses + * Codage des fichiers: Apogée (du moins à l'Université Paris 13) exporte et importe des fichiers maquettes codés en latin-1 (ISO-8859-1). Les web services (portail Apogée), tout comme ScoDoc, travaillent en utf8. Pour faciliter les échanges, les fichiers maquettes importés et exportés de ScoDoc sont en latin-1 (sauf celui reçu du portail Apogée). + + * Etudiants démissionnaires: on note les démissions dans ScoDoc (sur la fiche de l'étudiant), mais en général pas dans Apogée. Le résultat Apogée sera DEF. Ne jamais désinscrire du semestre ScoDoc les démissionnaires ! + + * Exports à mi-année (après jurys de janvier): + Si periode==1 (jury de janvier), alors l'étape Apogée (annuelle) n'est pas terminée. + + Donc on ne remplit pas le code annuel (`elt_annee_apo`, comme `VRT1A`) ni le `VET` sauf si l'année est en fait validée grace à un semestre de l'an précédent: (voir r1525) + * jury de fin de S1: si le S2 est validé; + * jury de fin de S3: si le S4 est validé. + + + +---- + + +## Exports via fichiers Excel (maintenant déconseillé) +Une solution alternative et anciennement utilisée est de générer à partir de ScoDoc un fichier Excel que l'on importe ensuite dans Apogée. + +Dominique Soudière (IUT du Havre) a développé des macros Excel qui facilitent ce travail: à télécharger sur +Interface.xlsm et imp_exp.xls +(explications dans InterfaceScoDocVersApogee-Excel.pdf). + + diff --git a/docs/ServicesXml.md b/docs/ServicesXml.md new file mode 100644 index 0000000..05d6997 --- /dev/null +++ b/docs/ServicesXml.md @@ -0,0 +1,174 @@ + +# Services XML pour l'export des données +ScoDoc offre un certain nombre de services XML pour faciliter son intégration dans +d'autres composants (typiquement un portail de services pour étudiant, +comme le portail eSup CEVIF à l'IUT de Villetaneuse). + + +## Identification des étudiants +les étudiants peuvent être identifiés au choix par l'un des trois codes: + + - **`etudid`** : code interne ScoDoc, toujours disponible. + + - **`code_ine`** : code INE Apogée, s'il a été renseigné + + - **`code_nip`** : code NIP Apogée, s'il a été renseigné + + +## Listes des principaux points d'entrée +/!\ pour des raisons historiques, les noms des fonctions ne sont pas homogènes :-( + + * **`XMLgetEtudInfos`** + * Paramètre: etudid ou code_ine ou code_nip + * Donne des informations sur l'étudiant et les semestres où il est (ou a été) inscrit. + * Exemple: +``` + + + +... + +``` + + * **`XMLgetGroupsInPartition`** + * Paramètres: `partition_id=X` + * Donne la liste des étudiants dans un semestre, par groupes. + * Exemple: +``` + + + + + +... + + + +... + + + + +``` + + * **`XMLgetFormsemestres`** + * Paramètres optionnels: + * `formsemestre_id` code semestre ScoDoc + * `etape_apo` code étape Apogée + * Donne informations sur le ou les semestres sélectionnés (par défaut, sur tous les semestres). + * Exemple: +``` + + + +``` + + + * **`formation_export_xml`** + * Paramètre: `formation_id` + * Export XML du programme pédagogique complet (UE, matières, modules). Ce format XML est réimportable pour créer une nouvelle formation. + * Exemple: +``` + + + + +... +... +``` + + * **`formsemestre_bulletinetud`** + * Paramètres: `format=xml&formsemestre_id=XXX&etudid=YYYX` + * Paramètre optionnel: xml_with_decisions (force l'envoi des décisions même si elles ne doivent pas être montrées aux étudiants) + * Bulletin de notes de l'étudiant. Toutes les notes obtenues dans ce semestres et prises en compte pour le calcul des moyennes (intégralement saisies), et décisions du jury si elles sont affichées (voir réglage des options du semestre). + * Exemple: +``` + + + + + + + + + + + + + + + + +... +``` + +Si les décisions du jury sont publiées, on a un élément: +``` + +``` +et le cas échéant dans la décision une autorisation d'inscription (passage à un autre semestre) sous la forme: +``` + +``` + +Le bulletin comporte aussi le décompte des absences enregistrées au cours de ce semestre (comptées en nombre de demi-journées): +``` + +``` + + * **`formsemestre_recapcomplet`** + * Paramètres: `formsemestre_id=XXXX&tabformat=xml` + * Paramètre optionnel: xml_with_decisions (force l'envoi des décisions même si elles ne doivent pas être montrées aux étudiants) + * L'ensemble des bulletins de toutes la promotion d'étudiants (au même format que `formsemestre_bulletinetud`). + * Exemple: +``` + + + + + + +... +``` + + +## Absences + * **`XMLgetAbsEtud`** + * Paramètres: etudid ou code_ine ou code_nip, beg_date, end_date (au format ISO 2009-11-04) + * La liste des absences entre les dates indiquées (inclues): +``` + + + + +``` + + * Les billets d'absences sont entrés via l'appel **`AddBilletAbsence`**: + * Paramètres: etudid ou code_ine ou code_nip, begin, end, description + * Résultat: XML contenant l'ID du billet créé. + + * **`XMLgetBilletsEtud`** + * Paramètre: etudid ou code_ine ou code_nip + * Les "billets" d'absence reçus pour cet étudiant (`etat` vaut 0 si le billet n'a pas été traité, 1 sinon, et `description` est la raison déclarée de l'absence). + * Exemple (1 row par billet): +``` + + + + + + + + +
+``` + diff --git a/docs/SynchroApogee.md b/docs/SynchroApogee.md new file mode 100644 index 0000000..f5ac3ae --- /dev/null +++ b/docs/SynchroApogee.md @@ -0,0 +1,27 @@ +La page **Synchroniser avec étape Apogée** est accessible depuis le tableau de bord du semestre (via le menu **Inscriptions**). Elle permet de vérifier et modifier les inscriptions au semestre en utilisant l'étape Apogée (les inscriptions dans Apogée sont normalement gérées par le service de la Scolarité, cette opération ne concerne donc que les étudiants régulièrement inscrits). + +![MenuSynchroEtape.png](screens/MenuSynchroEtape.png). + +/!\ Cette opération ne fonctionnera que si vous avez correctement renseigné le code étape du semestre (menu **Modifier le semestre**). + +ScoDoc peut rencontrer quatre cas de figure pour chaque étudiant: + + 1- étudiant présent dans Apogée et inscrit dans le semestre ScoDoc (*tout va bien*) + + 2- étudiant dans Apogée, dans ScoDoc, mais pas inscrit dans le semestre (*non incrit, on devrait l'inscrire*) + + 3- étudiant dans Apogée et pas dans ScoDoc (*on devrait l'importer et l'inscrire*) + + 4- étudiant inscrit dans le semestre ScoDoc, mais pas trouvé dans Apogée (sur la base du code NIP) (*peut être pas encore inscrit, ou bien une erreur de saisie ?*) + +Ces quatre cas sont présentés dans des cadres différents. + +Le bouton **Importer et Inscrire** permet de traiter les étudiants du cas 3 (cas rencontré normalement en début de semestre). + +Le lien **inscrire ces étudiants**, en bas du cadre **Etudiants non inscrits dans ce semestre**, permet d'inscrire les étudiants dans le cas 2. + +S'il reste, quelques semaines après la rentrée, des étudiants dans le cas 4 et que le code étape du semestre est correct, contactez votre service Scolarité pour élucider la situation. + + +Voir aussi [ Vérifier les codes NIP](VerifCodeNIP), [ Guide pour le chef de département](GuideAdminFormation). + diff --git a/docs/TransitionSemestre.md b/docs/TransitionSemestre.md new file mode 100644 index 0000000..7ba2895 --- /dev/null +++ b/docs/TransitionSemestre.md @@ -0,0 +1,4 @@ +# TransitionSemestre + +TODO + diff --git a/docs/UpgradeToDebNeuf.md b/docs/UpgradeToDebNeuf.md new file mode 100644 index 0000000..b4f6069 --- /dev/null +++ b/docs/UpgradeToDebNeuf.md @@ -0,0 +1,82 @@ + +# Procédure rapide de mise à jour de Debian 8 vers Debian 9 + +/!\ Réservée aux personnes averties, maîtrisant le shell UNIX et les principes de Debian (notamment la commande apt). + +(* Je n'ai pas testé de Debian 9 à Debian 10 Buster, mais la même procédure pourrait bien fonctionner*) + +Si votre système Debian 8 est à jour et que vous souhaitez conservez vos éventuelles configurations système, il peut être plus rapide de le mettre à jour directement. + +En cas de problème, vous pourrez repartir de la sauvegarde ScoDoc et remonter un serveur neuf. + + +1) Mettre à jour votre système et ScoDoc +cd /opt/scodoc/Products/ScoDoc/config +./upgrade.sh + +2) Tout sauvegarder soigneusement + +3) Copier les données ScoDoc +Lancer le script save_scodoc_data.sh (en tant qu'utilisateur root dans /opt/scodoc/Products/ScoDoc/config). Ce script crée une archive (tgz) qui contient toutes les informations: bases de données SQL, données utilisateurs, photos, archives des documents, fichier de configuration. +Copier le fichier (.tgz) obtenu sur une autre machine (via ssh) ou un +clé USB. + +En cas de problème, vous pourrez repartir de ces données pour +reconstruire votre ScoDoc sur un nouveau système. + +4) Mettre à jour Debian: voir +https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html +En gros: + + 1. Vous assurer que vous avez assez d'espace dique (df -h) + 2. Changer les sources dans /etc/apt/sources.list (remplacer jessie + par stretch) + 3. Mise à jour des paquets +``` + apt-get update + apt-get upgrade + apt-get dist-upgrade + apt-get autoremove +``` + +5) Installer quelques paquets manquants: +``` +apt-get --purge remove postgresql-9.4 postgresql-client-9.4 postgresql-client-common postgresql-common + +apt-get -y install postgresql-9.6 postgresql-client-9.6 + +/opt/zope213/bin/pip install python-dateutil --upgrade + +apt-get -y install python-docutils python-beautifulsoup python-egenix-mxtools python-egenix-mxdatetime +``` + +6) Redémarrer: +``` +reboot +``` + +7) Recharger les bases de données: +Ouvrir l'archive créée à l'étape 3 +``` +cd /tmp +tar xvfz ...../XXXX.tgz +``` + +Le fichier `scodoc.dump.txt` contient les données SQL. +Le charger ainsi (après vous être placé dans le répertoire créé par +l'ouverture de l'archive): +``` +su postgres +psql -f scodoc.dump.txt postgres + +exit +``` + +8) relancer ScoDoc: +``` +/etc/init.d/scodoc start +``` + +Et tester... + + diff --git a/docs/UtilisateursScoDoc.md b/docs/UtilisateursScoDoc.md new file mode 100644 index 0000000..b054a2c --- /dev/null +++ b/docs/UtilisateursScoDoc.md @@ -0,0 +1,140 @@ + +# Etablissements utilisant ScoDoc +Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant libre, nous ne sommes pas en mesure de dresser une liste exhaustive. Si vous utilisez le logiciel, merci de compléter cette page (ou d'envoyer un mail à emmanuel.viennet@gmail.com). + + +## Etablissements contribuant à ScoDoc + * [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 Colmar](http://www.iutcolmar.uha.fr) (Université de Haute Alsace), département R&T et GB (depuis 2006, 160 étudiants suivis en 2012) + + * [IUT1 Grenoble - Alpes](https://iut1.univ-grenoble-alpes.fr), tous 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 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 Ville d'Avray](http://www.cva.u-paris10.fr/iut) (depuis 2008) 3 départements (GEII, Carrières Sociales et GEA) et 3 licences pro (350 étudiants/an, données de 2012). + + * [International Business School](http://www.iscid-co.fr/), Institut Supérieur de Commerce International de Dunkerque – Côte d’Opale (Université du Littoral) + + +## Autres établissements utilisateurs (IUT) + * [IUT d'Amiens](http://www.iut-amiens.fr/) tous les départements (6, soit 1850 étudiants), depuis 2014. + + * [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii) (site de Salon) + + * [IUT Aix-Marseille](http://iut.univ-amu.fr/) Mesures Physiques (depuis 2012) et Informatique. + + * [IUT d'Annecy](https://www.iut-acy.univ-smb.fr), départements GEA, TC, QLIO. + + * [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 Besançon-Vesoul](http://iut-bv.univ-fcomte.fr), depuis 2013. + + * [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 Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, GLT, GEA. + + * [IUT de Brest](http://www.iut-brest.fr) depuis 2009, 4 départements (DUT et licences pro) à Brest et 2 à Morlaix, environ 1350 étudiants suivis/an. + + * [IUT de Bourges](http://www.univ-orleans.fr/iut-bourges/) départements GEA, QLIO, MP, CS, 2 années spéciales et 2 licences pro. + + * [IUT de Cachan](http://www.iut-cachan.u-psud.fr) (Université Paris 11, depuis 2009), dépt. GEII1 et GEII2. + + * IUT de Calais (détails?) + + * [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/) département GEII + + * [IUT d'Evry Val d’Essonne](http://www.iut-evry.fr), départements GMP, QLIO, SGM, GEA et GLT. + + * [IUT de Grenoble](https://iut1.ujf-grenoble.fr/) : cinq départements (GMP, GTHE, GEII, RT, GCCD), déploiement en 2011. + + * [IUT de Kourou](http://iut.univ-ag.fr/) (Guyane, depuis 2011) + + * [IUT de l'Indre](http://www.univ-orleans.fr/iut-indre/): départements GEA, GEII, GLT, TC, depuis 2015. + + * [IUT de Lannion](http://www.iut-lannion.fr/): 5 DUT et 5 LP, sur 4 départements. + + * [IUT de La Rochelle](http://www.iut-larochelle.fr/): 5 départements (généralisé en 2017): 1070 étudiants de DUT et 9 LP (180 étudiants). + + * [IUT de La 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 A de Lille](http://www-iut.univ-lille1.fr) : après tests en 2009/2010 sur 2 départements, généralisation en 2010 aux 7 départements (note: en dept GB, édition à part des bulletins pour séparer théorie et pratique (2012)). + + * [http://www.iut.univ-littoral.fr](IUT du Littoral Côte d'Opale), tous les départements (2018). + + * [IUT de Lorient](http://www-iutlorient.univ-ubs.fr) départements GTE, GIML, QLIO, GCGP, HSE. + + * [IUT de Mantes](http://www.iut-mantes.uvsq.fr) (Université de Versailles St Quentin en Yvelines), départements GIM et GMP depuis 2017. + + * [IUT de Marseille](http://iut.univ-amu.fr/) (depuis 2007) départements ? + + * [IUT de Metz](http://www.iut.univ-metz.fr) (depuis 2011), départements GMP, TC ; + + * [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/) (depuis 2014), départements GEA, GEII, GLT, GMP; + + * [IUT de Nouvelle Calédonie](https://unc.nc/formation/formation-a-l-iut/linstitut-universitaire-de-technologie/); + + * [IUT de Nîmes](https://iut-nimes.edu.umontpellier.fr/) (depuis 2019, GEII, GMP, SGM, et [Polytech Montpellier](https://www.polytech.umontpellier.fr)) + + * [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/) depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012). + + * [IUT Paris Descartes](http://www.iut.parisdescartes.fr) département Informatique, Année Spéciale, L3 Miage et un DU. + + * [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot) Mesures Physiques + + * [IUT de Perpignan](http://www.iut-perpignan.fr) depuis 2013, départements GB, GEA, GIM, GLT sur Perpignan CJ et GCGP sur Narbonne et TC et STID sur Carcassonne. + + * [IUT de Poitiers](http://iutp.univ-poitiers.fr/) départements R&T, MP, GEII. + + * [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-Etienne](http://www.iut.univ-st-etienne.fr/) + + * [IUT de Saint-Nazaire](http://www.iut-sn.univ-nantes.fr/) tous les départements (GLT, GCCD, GIM, GCH, MP, TC) et 8 LP, 1400 étudiants, rentrée 2013. Et aussi Formation Continue, 1 DU PFST, 2 formations DUT par apprentissage (TC et GIM). + + * [IUT de Sénart](http://www.iutsf.u-pec.fr) départements GIM et GEII. + + * [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](http://www.iut-velizy.uvsq.fr) (département GEII, depuis sept. 2009, puis généralisé aux 7 départements (GEII, R&T, Info, SRC, GACO, TC, GCGP). + + * [IUT de Vélizy, site de Rambouillet](http://www.rambouillet.iut-velizy.uvsq.fr) (toutes formations depuis sept. 2010) + + * [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 (L1, L2, L3), Université Paris 13 (en projet); + + * Master ISB, Université Sorbonne Paris Nord; + + * [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). + + * [Ecole Supérieure des Sciences et Technologies de l'Ingénieur de Nancy](http://www.esstin.univ-lorraine.fr) (jusqu'en 2013) + diff --git a/docs/VerifCodeNIP.md b/docs/VerifCodeNIP.md new file mode 100644 index 0000000..1753283 --- /dev/null +++ b/docs/VerifCodeNIP.md @@ -0,0 +1,28 @@ + +## Vérification des codes NIP +Le code NIP est le code d'identification de l'étudiant utilisé par le service de la scolarité (logiciel Apogée) et qui apparait entre autre sur la carte d'étudiant. ScoDoc peut l'utiliser, ce qui est utile si le logiciel est interfacé à un portail qui le connecte à Apogée. Si vous utilisez ScoDoc seul, il n'est pas utile de saisir les codes NIP. + +Lorsqu'on importe un étudiant depuis le portail, il est naturellement associé à son code NIP. + +Ce n'est pas le cas si l'on a importé l'étudiant à la main (via un formulaire ou l'importation d'une feuille Excel). + +/!\ Le code NIP est utilisé par le portail pour identifer les étudiants: *si ScoDoc ne le connait pas, l'étudiant n'a pas accès à son bulletin de notes sur le web*. + + + +## Fixer le code NIP d'un étudiant +Pour renseigner à postériori le code NIP d'un étudiant, passer par sa fiche individuelle, menu Etudiant, **Changer les données identité/admission**. En bas de cette page, la section "Informations Apogée" vous montre toutes les informations retrouvées dans Apogée. + +Attention, dans la recherche est effectuée en utilisant le nom et le prénom. S'ils sont mal orthographiés (dans ScoDoc ou dans Apogée), elle peut échouer. Si on a des homonymes (cas fréquent), ScoDoc présente une liste d'étudiants d'Apogée pouvant correspondre à celui de ScoDoc: à vous de choisir. + +Vous pouvez facilement copier le code de l'étudiant qui correspond via le bouton **copier ce code**. +Cliquez ensuite sur le bouton **Modifier les données**. + + + +## Vérifier les codes de tous les étudiants d'un semestre +Vous pouvez vérifier les codes et adresses mail de tous les étudiants d'un semestre via la page **vérification des codes Apogée**. Cette page est accessible via un lien en bas de la page **Synchroniser avec une étape Apogée**. + + +Voir aussi: [ Synchroniser avec une étape Apogée](SynchroApogee.md), [ Guide pour le chef de département](GuideAdminFormation.md). + diff --git a/docs/VersionProgrammes.md b/docs/VersionProgrammes.md new file mode 100644 index 0000000..364c799 --- /dev/null +++ b/docs/VersionProgrammes.md @@ -0,0 +1,57 @@ + +## Modification d'un programme pédagogique et versions + + +Un programme pédagogique définit notamment les coefficients des modules qui le composent. Les semestres qui se réfèrent à ce programme utilisent ces coefficients pour calculer leurs notes. De même, les noms de UE et modules qui apparaissent sur les bulletins viennent du programme. Il faut être particulièrement vigilant lors des modifications du programme pédagogique + +Dans la configuration par défaut, seul le chef de département (rôle Admin) peut modifier les programmes pédagogiques. + +(voir aussi des exemples de programmes en bas de la page [GuideAdminFormation](GuideAdminFormation.md)). + + +### Points importants + + + +#### Unités d'Enseignement (UE) + +Les UE sont destinées à être *capitalisées* (voir [CapitalisationUE](CapitalisationUE.md)). Par conséquent, une formation en plusieurs semestres devrait normalement avoir un jeu d'UE différent dans chaque semestre. + + * Il est parfois désirable de capitaliser au sein d'un parcours des UE appartenant à deux programmes ScoDoc différents (par exemple, on peut avoir changé de version du programme entre deux semestres, comme expliqué plus loin). Dans ce cas, il faut attribuer aux programmes le même code de formation (via le lien "modifier" sur la page d'accueil des programmes), et aussi attribuer les mêmes codes aux UE (via le lien "modifier l'UE" sur la page "programme détaillé et semestres"). + + * Les UE peuvent être de type "normal" ou "Sport&Culture". Ces dernières ne sont utilisées que pour les notes optionnelles (activités culturelles et sportives) utilisée dans certains établissements. Elles se voient attribuer une règle de calcul spécifique qui dépend généralement de l'établissement (il n'y à pas de règle nationale pour la prise en compte de snotes de sport et culture). Typiquement, la note des UE de ce type spécial agit directement sur la moyenne générale de l'étudiant. + + +#### Modules + + + * Le *code* du module va apparaitre sur les bulletins et certains tableaux récapitulatifs. Il comporte habituellement quelques caractères (comme "MATH", ou "SPO"). Si la version officielle de votre programme pédagogique n'utilise pas de codes de ce genre, inventez des codes à la fois courts (pas plus de 4 ou 5 caractères) et évocateurs du nom du module. + + * Le *titre* du module apparaitra sur le tableau de bord du semestre et sur les bulletins. + + * L' *abréviation* est une version courte du titre. Si le titre n'est pas trop long (3 ou 4 mots), copier le. Sinon, inventer une abréviation en quelques mots qui soit lisible. + + * Les volumes horaires ne sont présents que pour information et ne sont actuellement pas du tout utilisés par ScoDoc: il est donc facultatif de les indiquer. + + * Le coefficient est utilisé pour le calcul de la moyenne d'UE et de la moyenne générale. Il s'agit d'un nombre réel positif ou nul. + + * Choisir dans le menu la *matière* à laquelle appartient le module. + + * Le semestre est un nombre indiquant dans quel semestre de la formation se place habituellement ce module. Il arrive que l'on décline la même formation selon différentes modalités (formation initiale, continue) avec des placements différents: dans ce cas, indiquer le semestre dans la modalité "habituelle"; lors de la mise en place d'un semestre, on peut choisir manuellement des modules de tous les semestres. + + +#### Ordre d'affichage des UE, matières et modules + + +Chaque élément (UE, matières et modules) possède un attribut *numéro* qui est un nombre entier utilisé pour le classement des éléments de même niveau dans la hiérarchie dans les tableaux et bulletins. + +Il est conseillé d'attribuer les numéros de 10 en 10 afin de pouvoir plus facilement insérer un nouvel élément entre deux éléments existants. Par exemple, si l'on a dans une matière trois modules MA, MB, MC, on va leur attribuer les numéros 10, 20 et 30. + + +### Verrouillage et versions + +Lorsque au moins l'un des semestres qui se réfèrent à ce programme est *verrouillé*, il devient impossible de modifier le programme (la page de présentation du programme ne comporte alors aucun lien). Deux cas peuvent se présenter: + + * il s'agit d'une modification mineure (intitulé d'un module, ...) ne risquant pas affecter les notes existantes, et il y a peu de semestres verrouillés: dans ce cas, il est possible d'aller déverrouiller un à un les semestres concernés, puis d'effectuer la modification du programme avant de reverrouiller les semestres. + + * il s'agit d'une modification conséquente, on ne ne veut pas affecter les semestres existants: on crée alors une nouvelle *version* du programme. La version crée est une copie à l'identique du programme existant, que l'on peut modifier à sa guise. diff --git a/docs/attachments/.DS_Store b/docs/attachments/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/docs/attachments/.DS_Store differ diff --git a/docs/attachments/DUT GCGP S1S2 2013.xml b/docs/attachments/DUT GCGP S1S2 2013.xml new file mode 100644 index 0000000..c34a4ca --- /dev/null +++ b/docs/attachments/DUT GCGP S1S2 2013.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/DUT_RT_PPN2008_v4.xml b/docs/attachments/DUT_RT_PPN2008_v4.xml new file mode 100644 index 0000000..cf65186 --- /dev/null +++ b/docs/attachments/DUT_RT_PPN2008_v4.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/Interface.xlsm b/docs/attachments/Interface.xlsm new file mode 100644 index 0000000..a62d896 Binary files /dev/null and b/docs/attachments/Interface.xlsm differ diff --git a/docs/attachments/InterfaceScoDocVersApogee-Excel.pdf b/docs/attachments/InterfaceScoDocVersApogee-Excel.pdf new file mode 100644 index 0000000..16c7797 Binary files /dev/null and b/docs/attachments/InterfaceScoDocVersApogee-Excel.pdf differ diff --git a/docs/attachments/MaquetteVersion2017.xlsm b/docs/attachments/MaquetteVersion2017.xlsm new file mode 100644 index 0000000..6bcac22 Binary files /dev/null and b/docs/attachments/MaquetteVersion2017.xlsm differ diff --git a/docs/attachments/PPN-LeHavre2015.zip b/docs/attachments/PPN-LeHavre2015.zip new file mode 100644 index 0000000..c6fe8fb Binary files /dev/null and b/docs/attachments/PPN-LeHavre2015.zip differ diff --git a/docs/attachments/PPN_GIM-2013.xml b/docs/attachments/PPN_GIM-2013.xml new file mode 100644 index 0000000..847baa1 --- /dev/null +++ b/docs/attachments/PPN_GIM-2013.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/ValidationSemestre.dia b/docs/attachments/ValidationSemestre.dia new file mode 100644 index 0000000..5e734f1 Binary files /dev/null and b/docs/attachments/ValidationSemestre.dia differ diff --git a/docs/attachments/dut_geii_lyon_2010.xml b/docs/attachments/dut_geii_lyon_2010.xml new file mode 100644 index 0000000..3bff069 --- /dev/null +++ b/docs/attachments/dut_geii_lyon_2010.xml @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/attachments/dut_geii_tours_2013.xml b/docs/attachments/dut_geii_tours_2013.xml new file mode 100644 index 0000000..720920d --- /dev/null +++ b/docs/attachments/dut_geii_tours_2013.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/attachments/dut_rt_ppn2013_v1.xml b/docs/attachments/dut_rt_ppn2013_v1.xml new file mode 100644 index 0000000..a855554 --- /dev/null +++ b/docs/attachments/dut_rt_ppn2013_v1.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_CS_OptionAS.xml b/docs/attachments/formation_CS_OptionAS.xml new file mode 100644 index 0000000..3a41738 --- /dev/null +++ b/docs/attachments/formation_CS_OptionAS.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_CS_OptionASSC.xml b/docs/attachments/formation_CS_OptionASSC.xml new file mode 100644 index 0000000..0533817 --- /dev/null +++ b/docs/attachments/formation_CS_OptionASSC.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_GC2013.xml b/docs/attachments/formation_GC2013.xml new file mode 100644 index 0000000..5908c02 --- /dev/null +++ b/docs/attachments/formation_GC2013.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_GEA.xml b/docs/attachments/formation_GEA.xml new file mode 100644 index 0000000..2752d17 --- /dev/null +++ b/docs/attachments/formation_GEA.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_GMP2013.xml b/docs/attachments/formation_GMP2013.xml new file mode 100644 index 0000000..e7634cd --- /dev/null +++ b/docs/attachments/formation_GMP2013.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_INFO2013.xml b/docs/attachments/formation_INFO2013.xml new file mode 100644 index 0000000..1a35a27 --- /dev/null +++ b/docs/attachments/formation_INFO2013.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_RT_PPN2013_tagguee.xml b/docs/attachments/formation_RT_PPN2013_tagguee.xml new file mode 100644 index 0000000..9d39972 --- /dev/null +++ b/docs/attachments/formation_RT_PPN2013_tagguee.xml @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportCS_ASSC_LeHavre.xml b/docs/attachments/formation_exportCS_ASSC_LeHavre.xml new file mode 100644 index 0000000..428c959 --- /dev/null +++ b/docs/attachments/formation_exportCS_ASSC_LeHavre.xml @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportCS_AS_LeHavre.xml b/docs/attachments/formation_exportCS_AS_LeHavre.xml new file mode 100644 index 0000000..fe3c779 --- /dev/null +++ b/docs/attachments/formation_exportCS_AS_LeHavre.xml @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportGEA_LeHavre.xml b/docs/attachments/formation_exportGEA_LeHavre.xml new file mode 100644 index 0000000..0076bc3 --- /dev/null +++ b/docs/attachments/formation_exportGEA_LeHavre.xml @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportGEII_LeHavre.xml b/docs/attachments/formation_exportGEII_LeHavre.xml new file mode 100644 index 0000000..0a0a2ae --- /dev/null +++ b/docs/attachments/formation_exportGEII_LeHavre.xml @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportGLT_LeHavre.xml b/docs/attachments/formation_exportGLT_LeHavre.xml new file mode 100644 index 0000000..9e2dc5e --- /dev/null +++ b/docs/attachments/formation_exportGLT_LeHavre.xml @@ -0,0 +1,326 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportGMP_LeHavre.xml b/docs/attachments/formation_exportGMP_LeHavre.xml new file mode 100644 index 0000000..e5298b2 --- /dev/null +++ b/docs/attachments/formation_exportGMP_LeHavre.xml @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportINFOCOM_LeHavre.xml b/docs/attachments/formation_exportINFOCOM_LeHavre.xml new file mode 100644 index 0000000..2c5da3b --- /dev/null +++ b/docs/attachments/formation_exportINFOCOM_LeHavre.xml @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_exportINFO_LeHavre.xml b/docs/attachments/formation_exportINFO_LeHavre.xml new file mode 100644 index 0000000..94c2295 --- /dev/null +++ b/docs/attachments/formation_exportINFO_LeHavre.xml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/formation_gim.xml b/docs/attachments/formation_gim.xml new file mode 100644 index 0000000..c36ec2b --- /dev/null +++ b/docs/attachments/formation_gim.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/attachments/formation_glt.xml b/docs/attachments/formation_glt.xml new file mode 100644 index 0000000..be9e3f0 --- /dev/null +++ b/docs/attachments/formation_glt.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/gea_iutv_v6.xml b/docs/attachments/gea_iutv_v6.xml new file mode 100644 index 0000000..791ee36 --- /dev/null +++ b/docs/attachments/gea_iutv_v6.xml @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/imp_exp.xls b/docs/attachments/imp_exp.xls new file mode 100644 index 0000000..604f085 Binary files /dev/null and b/docs/attachments/imp_exp.xls differ diff --git a/docs/attachments/lp_assur.xml b/docs/attachments/lp_assur.xml new file mode 100644 index 0000000..d4cbaac --- /dev/null +++ b/docs/attachments/lp_assur.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/lpro_a2i_sari_tours_2012.xml b/docs/attachments/lpro_a2i_sari_tours_2012.xml new file mode 100644 index 0000000..e5dce23 --- /dev/null +++ b/docs/attachments/lpro_a2i_sari_tours_2012.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/lpro_eam_tours_2012.xml b/docs/attachments/lpro_eam_tours_2012.xml new file mode 100644 index 0000000..a08791e --- /dev/null +++ b/docs/attachments/lpro_eam_tours_2012.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/lpro_ergee_tours_2012.xml b/docs/attachments/lpro_ergee_tours_2012.xml new file mode 100644 index 0000000..02950bb --- /dev/null +++ b/docs/attachments/lpro_ergee_tours_2012.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/maquetteS1_S2_TC2013.xml b/docs/attachments/maquetteS1_S2_TC2013.xml new file mode 100644 index 0000000..c122a54 --- /dev/null +++ b/docs/attachments/maquetteS1_S2_TC2013.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/maquette_HSE2013.xml b/docs/attachments/maquette_HSE2013.xml new file mode 100644 index 0000000..e655dcd --- /dev/null +++ b/docs/attachments/maquette_HSE2013.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/maquette_Infocom2013_INFO.xml b/docs/attachments/maquette_Infocom2013_INFO.xml new file mode 100644 index 0000000..5600ba5 --- /dev/null +++ b/docs/attachments/maquette_Infocom2013_INFO.xml @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/maquette_Infocom2013_MLP.xml b/docs/attachments/maquette_Infocom2013_MLP.xml new file mode 100644 index 0000000..da55bc2 --- /dev/null +++ b/docs/attachments/maquette_Infocom2013_MLP.xml @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/maquette_Infocom2013_PUB.xml b/docs/attachments/maquette_Infocom2013_PUB.xml new file mode 100644 index 0000000..d3d9402 --- /dev/null +++ b/docs/attachments/maquette_Infocom2013_PUB.xml @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/ppn-dut-mim-2013.xml b/docs/attachments/ppn-dut-mim-2013.xml new file mode 100644 index 0000000..2e0025a --- /dev/null +++ b/docs/attachments/ppn-dut-mim-2013.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/ppn-info-2013.xml b/docs/attachments/ppn-info-2013.xml new file mode 100644 index 0000000..dba20a0 --- /dev/null +++ b/docs/attachments/ppn-info-2013.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/attachments/ppn_qlio_evry.xml b/docs/attachments/ppn_qlio_evry.xml new file mode 100644 index 0000000..2cccf54 --- /dev/null +++ b/docs/attachments/ppn_qlio_evry.xml @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/img/.DS_Store b/docs/img/.DS_Store new file mode 100644 index 0000000..513c2b1 Binary files /dev/null and b/docs/img/.DS_Store differ diff --git a/docs/img/alert.png b/docs/img/alert.png new file mode 100644 index 0000000..5bb87e3 Binary files /dev/null and b/docs/img/alert.png differ diff --git a/docs/img/favicon.ico b/docs/img/favicon.ico new file mode 100755 index 0000000..4555b60 Binary files /dev/null and b/docs/img/favicon.ico differ diff --git a/docs/img/favicon_io.zip b/docs/img/favicon_io.zip new file mode 100644 index 0000000..b5de74a Binary files /dev/null and b/docs/img/favicon_io.zip differ diff --git a/docs/img/favicon_io/.DS_Store b/docs/img/favicon_io/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/docs/img/favicon_io/.DS_Store differ diff --git a/docs/img/favicon_io/android-chrome-192x192.png b/docs/img/favicon_io/android-chrome-192x192.png new file mode 100755 index 0000000..24b7990 Binary files /dev/null and b/docs/img/favicon_io/android-chrome-192x192.png differ diff --git a/docs/img/favicon_io/android-chrome-512x512.png b/docs/img/favicon_io/android-chrome-512x512.png new file mode 100755 index 0000000..df7b68d Binary files /dev/null and b/docs/img/favicon_io/android-chrome-512x512.png differ diff --git a/docs/img/favicon_io/apple-touch-icon.png b/docs/img/favicon_io/apple-touch-icon.png new file mode 100755 index 0000000..9d50ea8 Binary files /dev/null and b/docs/img/favicon_io/apple-touch-icon.png differ diff --git a/docs/img/favicon_io/favicon-16x16.png b/docs/img/favicon_io/favicon-16x16.png new file mode 100755 index 0000000..da06df1 Binary files /dev/null and b/docs/img/favicon_io/favicon-16x16.png differ diff --git a/docs/img/favicon_io/favicon-32x32.png b/docs/img/favicon_io/favicon-32x32.png new file mode 100755 index 0000000..46e39ff Binary files /dev/null and b/docs/img/favicon_io/favicon-32x32.png differ diff --git a/docs/img/favicon_io/site.webmanifest b/docs/img/favicon_io/site.webmanifest new file mode 100755 index 0000000..45dc8a2 --- /dev/null +++ b/docs/img/favicon_io/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/docs/img/tube.png b/docs/img/tube.png new file mode 100644 index 0000000..abd405a Binary files /dev/null and b/docs/img/tube.png differ diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..87de43e --- /dev/null +++ b/docs/index.md @@ -0,0 +1,35 @@ +# ScoDoc: un logiciel libre pour le suivi de la scolarité + + +ScoDoc est un logiciel libre développé par Emmanuel Viennet pour le suivi de la scolarité des étudiants d'Université: suivi précis des étudiants (assiduité, notes). Son objectif est de faciliter le travail des enseignants et personnels (facilité de saisie des informations, éditions de bordereaux et de bulletins simplifiée). + +Les données conservées dans le logiciel peuvent être exportées dans une grande variété de formats (pages web, PDF, Excel, XML...) ce qui facilite tant son usage par des non informaticiens que son intégration dans d'autres logiciels (portails d'établissements, systèmes d'informations comme Apogée). + +ScoDoc est un *logiciel libre*. Vous pouvez participer à son développement. Visitez le [système de suivi (Trac)](https://www-lipn.univ-paris13.fr/projects/scodoc) pour signaler des problèmes ou demander des améliorations, ou écrivez à . + +ScoDoc est un logiciel purement web: tous les accès se font via un navigateur web standard, à travers Internet (connexions sécurisées); pour obtenir un accès sur un '''serveur de démo''' (réservé aux IUT), contacter: . Pour installer le logiciel sur votre serveur, voir le [guide d'installation sur Debian 10](GuideInstallDebianDix.md) (ou [sur Debian 9](GuideInstallDebianNeuf.md) au besoin). + +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`. + +## Présentation générale + + - [Présentation générale du logiciel avec copies d'écran](PresentationGenerale.md) + + - Quelques vidéos d'introduction sur YouTube + + - Présentation au colloque du [CRI-IUT](https://www.criiut.fr/) en 2013: [diapos en pdf](papers/presScoDocCRIIUT2013.pdf) + - Un [article (assez ancien) sur ScoDoc](papers/scodoc-reunion2007.pdf) + + +## Communauté d'utilisateurs + + - [Listes de diffusion e-mail](ListesDeDiffusion.md) + - Vous pouvez signaler ici des bugs ou déposer des suggestions d'amélioration via les "tickets" (*système en cours de rénovation*): + * [liste des tickets en cours](https://www-lipn.univ-paris13.fr/projects/scodoc/report/10) + * [déclarer un nouveau ticket](https://www-lipn.univ-paris13.fr/projects/scodoc/newticket) + +Page web de l'auteur: + + diff --git a/docs/papers/.DS_Store b/docs/papers/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/docs/papers/.DS_Store differ diff --git a/docs/papers/Adhesion-2020-Association-ScoDoc.docx b/docs/papers/Adhesion-2020-Association-ScoDoc.docx new file mode 100644 index 0000000..5db4e6e Binary files /dev/null and b/docs/papers/Adhesion-2020-Association-ScoDoc.docx differ diff --git a/docs/papers/Adhesion-2020-Association-ScoDoc.pdf b/docs/papers/Adhesion-2020-Association-ScoDoc.pdf new file mode 100644 index 0000000..2d9ce54 Binary files /dev/null and b/docs/papers/Adhesion-2020-Association-ScoDoc.pdf differ diff --git a/docs/papers/presScoDocCRIIUT2013.pdf b/docs/papers/presScoDocCRIIUT2013.pdf new file mode 100644 index 0000000..1f6b152 --- /dev/null +++ b/docs/papers/presScoDocCRIIUT2013.pdf @@ -0,0 +1,127 @@ + + + + + + + + + + + presScoDocCRIIUT2013.pdf dans WikiStart – Pièce jointe + – Projet ScoDoc + + + + + + + + + + + + + + + + + + + +
+ +
+

WikiStart: presScoDocCRIIUT2013.pdf

+ + + + + + + + + +
Pièce jointe presScoDocCRIIUT2013.pdf, + 4.4 MB + (ajoutée par eviennet, il y a 7 ans)
+

+Pres CRI-IUT +

+ +
+
+ +

+ L'aperçu HTML n'est pas disponible car la taille du fichier dépasse 262144 octets. + Essayez plutôt de télécharger le fichier. +

+ +
+
+
+
+ + +
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/papers/scodoc-reunion2007.pdf b/docs/papers/scodoc-reunion2007.pdf new file mode 100644 index 0000000..e6e6811 Binary files /dev/null and b/docs/papers/scodoc-reunion2007.pdf differ diff --git a/docs/screens/BulletinInter2012.png b/docs/screens/BulletinInter2012.png new file mode 100644 index 0000000..ef5a861 Binary files /dev/null and b/docs/screens/BulletinInter2012.png differ diff --git a/docs/screens/CalAbs.png b/docs/screens/CalAbs.png new file mode 100644 index 0000000..03513e7 Binary files /dev/null and b/docs/screens/CalAbs.png differ diff --git a/docs/screens/CreateEvaluationRat.png b/docs/screens/CreateEvaluationRat.png new file mode 100644 index 0000000..e98ebdf Binary files /dev/null and b/docs/screens/CreateEvaluationRat.png differ diff --git a/docs/screens/GrapheParcours-1.png b/docs/screens/GrapheParcours-1.png new file mode 100644 index 0000000..5ba75e8 Binary files /dev/null and b/docs/screens/GrapheParcours-1.png differ diff --git a/docs/screens/GrapheParcours-2-small.png b/docs/screens/GrapheParcours-2-small.png new file mode 100644 index 0000000..7ceba1a Binary files /dev/null and b/docs/screens/GrapheParcours-2-small.png differ diff --git a/docs/screens/GroupesDnD.png b/docs/screens/GroupesDnD.png new file mode 100644 index 0000000..7a5164e Binary files /dev/null and b/docs/screens/GroupesDnD.png differ diff --git a/docs/screens/InstallDebian6-1.png b/docs/screens/InstallDebian6-1.png new file mode 100644 index 0000000..78bfd5d Binary files /dev/null and b/docs/screens/InstallDebian6-1.png differ diff --git a/docs/screens/MenuSynchroEtape.png b/docs/screens/MenuSynchroEtape.png new file mode 100644 index 0000000..68ce2d0 Binary files /dev/null and b/docs/screens/MenuSynchroEtape.png differ diff --git a/docs/screens/NotesRecap2012.png b/docs/screens/NotesRecap2012.png new file mode 100644 index 0000000..c0239fd Binary files /dev/null and b/docs/screens/NotesRecap2012.png differ diff --git a/docs/screens/ParametrageSemestre.png b/docs/screens/ParametrageSemestre.png new file mode 100644 index 0000000..61ffe28 Binary files /dev/null and b/docs/screens/ParametrageSemestre.png differ diff --git a/docs/screens/SaisieCodeApoModule.png b/docs/screens/SaisieCodeApoModule.png new file mode 100644 index 0000000..96bafdc Binary files /dev/null and b/docs/screens/SaisieCodeApoModule.png differ diff --git a/docs/screens/SaisieDecisionsJury.png b/docs/screens/SaisieDecisionsJury.png new file mode 100644 index 0000000..6b85221 Binary files /dev/null and b/docs/screens/SaisieDecisionsJury.png differ diff --git a/docs/screens/StatsBac.png b/docs/screens/StatsBac.png new file mode 100644 index 0000000..c2cfa97 Binary files /dev/null and b/docs/screens/StatsBac.png differ diff --git a/docs/screens/SuiviCohortes.png b/docs/screens/SuiviCohortes.png new file mode 100644 index 0000000..fb96217 Binary files /dev/null and b/docs/screens/SuiviCohortes.png differ diff --git a/docs/screens/SuiviEntreprises.small.png b/docs/screens/SuiviEntreprises.small.png new file mode 100644 index 0000000..ee2a4ec Binary files /dev/null and b/docs/screens/SuiviEntreprises.small.png differ diff --git a/docs/screens/Trombi.small.png b/docs/screens/Trombi.small.png new file mode 100644 index 0000000..5ba91de Binary files /dev/null and b/docs/screens/Trombi.small.png differ diff --git a/docs/screens/ValidationSemestre.png b/docs/screens/ValidationSemestre.png new file mode 100644 index 0000000..3e11052 Binary files /dev/null and b/docs/screens/ValidationSemestre.png differ diff --git a/docs/screens/accueil-old.png b/docs/screens/accueil-old.png new file mode 100644 index 0000000..7a15d7a Binary files /dev/null and b/docs/screens/accueil-old.png differ diff --git a/docs/screens/accueil.png b/docs/screens/accueil.png new file mode 100644 index 0000000..7a15d7a Binary files /dev/null and b/docs/screens/accueil.png differ diff --git a/docs/screens/accueil_small.png b/docs/screens/accueil_small.png new file mode 100644 index 0000000..0f3ab67 Binary files /dev/null and b/docs/screens/accueil_small.png differ diff --git a/docs/screens/annotation_PE.png b/docs/screens/annotation_PE.png new file mode 100644 index 0000000..8a98267 Binary files /dev/null and b/docs/screens/annotation_PE.png differ diff --git a/docs/screens/avis1.png b/docs/screens/avis1.png new file mode 100644 index 0000000..7c87a09 Binary files /dev/null and b/docs/screens/avis1.png differ diff --git a/docs/screens/avis2.png b/docs/screens/avis2.png new file mode 100644 index 0000000..fd75731 Binary files /dev/null and b/docs/screens/avis2.png differ diff --git a/docs/screens/bulletin-info-long.png b/docs/screens/bulletin-info-long.png new file mode 100644 index 0000000..ea5c5f6 Binary files /dev/null and b/docs/screens/bulletin-info-long.png differ diff --git a/docs/screens/bulletin-info-short.png b/docs/screens/bulletin-info-short.png new file mode 100644 index 0000000..8f38968 Binary files /dev/null and b/docs/screens/bulletin-info-short.png differ diff --git a/docs/screens/bulletin-ue-capitalisee-legend.png b/docs/screens/bulletin-ue-capitalisee-legend.png new file mode 100644 index 0000000..e490430 Binary files /dev/null and b/docs/screens/bulletin-ue-capitalisee-legend.png differ diff --git a/docs/screens/ficheEtud2011.png b/docs/screens/ficheEtud2011.png new file mode 100644 index 0000000..22fc72e Binary files /dev/null and b/docs/screens/ficheEtud2011.png differ diff --git a/docs/screens/imprtetud1.png b/docs/screens/imprtetud1.png new file mode 100644 index 0000000..92d776d Binary files /dev/null and b/docs/screens/imprtetud1.png differ diff --git a/docs/screens/programmeRTtaggue.png b/docs/screens/programmeRTtaggue.png new file mode 100644 index 0000000..19a13fe Binary files /dev/null and b/docs/screens/programmeRTtaggue.png differ diff --git a/docs/screens/reglages-semestres-check.png b/docs/screens/reglages-semestres-check.png new file mode 100644 index 0000000..7932aea Binary files /dev/null and b/docs/screens/reglages-semestres-check.png differ diff --git a/docs/screens/tableaubord2011.png b/docs/screens/tableaubord2011.png new file mode 100644 index 0000000..73a659d Binary files /dev/null and b/docs/screens/tableaubord2011.png differ diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..1dd9328 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,15 @@ +site_name: ScoDoc +nav: + - Documentation: GuideUtilisateur.md + - Installation: GuideAdminSys.md + - Utilisateurs: UtilisateursScoDoc.md + - Association: AssociationScoDoc.md +# theme: readthedocs + +# Pour LaTex, juste faire pip install python-markdown-math +# dans l'environnement choisi (mkdocs) +extra_javascript: + - https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML + +markdown_extensions: + - mdx_math diff --git a/tools/trac2md.py b/tools/trac2md.py new file mode 100755 index 0000000..2e1b4e8 --- /dev/null +++ b/tools/trac2md.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +""" +Translate Trac wiki markup to Markdown + +Emmanuel Viennet for ScoDoc, Sept 2020 + +Nota: far from complete, based on a set of regexps +tables are *not translated*. + + += ... = +== ... == +=== ... === +==== +''...'' : *...* + +""" +import sys +import re + +SRC = sys.argv[1] + +f = open(SRC, encoding="utf-8") +data = f.read() + +EXPRS = ( + # Attachements: [[attachment:...]] + (r'\[\[attachment:(?P.*?)\]\]', r'\g', 0), + + (r'^====(.*?)====\s*\n', r'\n#### \1\n', re.MULTILINE), + (r'^===(.*?)===\s*\n', r'\n### \1\n', re.MULTILINE), + (r'^==(.*?)==\s*\n', r'\n## \1\n', re.MULTILINE), + (r'^=(.*?)=\s*\n', r'\n# \1\n', re.MULTILINE), + + (r'^====([^=]*?)$', r'#### \1', re.MULTILINE), + (r'^===([^=]*?)$', r'### \1', re.MULTILINE), + (r'^==([^=]*?)$', r'## \1', re.MULTILINE), + (r'^=([^=]*?)$', r'# \1', re.MULTILINE), + + # Links: [[...]] + (r'\[\[([A-Za-z0-9\s.:/]*?)\]\]', r'[\1](\1.md)', 0), + # Links [[ url | text ]] + (r"\[\[(?Phttp(s)?://[A-Za-z0-9\s.:/-]*?)\|(?P[\w\s-]*)\]\]", r'[\g](\g)', 0), # external link + (r"\[\[([A-Za-z0-9\s.:/-]*?)\|([\w\s-]*)\]\]", r'[\2](\1.md)', 0), # internal (.md) + # Les references intrawiki PascalCased (upper CamelCase) + (r'\s([A-Z]([A-Z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*)', r' [\1](\1.md)', 0), + # Pour Sco``Doc + (r'\`\`', '', 0), + # Blocks + (r'\{\{\{(.*?)\}\}\}', r'```\1```', re.DOTALL|re.MULTILINE), # {{{...}}} + # Images (dans /trunk/doc/images/ ou /branches/ScoDoc7/doc/images/) + (r'\[\[Image\(source:/.*?/doc/images/(?P.*?)(,.*?)?\)\]\]', r'![\g](screens/\g)', 0), + + # Tables + (r'^\|\|(.*?)\|\|(.*?)\|\|$', r'\1|\2', re.MULTILINE), + # /!\ + (r'/!\\', r'/!\', 0), + # bolds & italics: + (r"'''(.*?)'''", r'**\1**', re.DOTALL), # '''...''' bold + (r'\'\'(.*?)\'\'', r'*\1*', re.DOTALL), # ''...'' + (r'\s//(.*?)//', r'*\1*', 0), # //...// + +) + +for pattern, subst, flags in EXPRS: + data = re.sub( pattern, subst, data, flags=flags ) + +print(data) +