Compare commits

...

549 Commits

Author SHA1 Message Date
Jean-Marie Place 791299bfa4 terminaison 2023-07-30 15:21:15 +02:00
Jean-Marie Place a86e9065ce fix markdown lint 2023-07-29 08:39:14 +02:00
Jean-Marie Place 15139b62f7 typos 2023-07-29 08:35:44 +02:00
Jean-Marie Place f41ecf8485 typos 2023-07-29 08:29:21 +02:00
Jean-Marie Place 365f04374b typos 2023-07-29 08:27:56 +02:00
Jean-Marie Place 042c80387f Merge branch 'master' into bonus-malus 2023-07-29 08:14:11 +02:00
Jean-Marie Place e190e64e91 Ajout Bonus Sport-culture WIP 2023-07-29 08:11:11 +02:00
iziram ebe4e92639 Assiduites : samples justificatifs 2023-07-28 14:41:01 +02:00
iziram 8ce0af10e8 Assiduites: MAJ Doc API 2023-07-28 11:30:28 +02:00
Emmanuel Viennet beca815be2 Détails sur upgrade (clé gpg) 2023-07-28 09:55:18 +02:00
Emmanuel Viennet 9b290fe0fa Change version dans doc dev 2023-07-25 08:53:38 +02:00
Emmanuel Viennet 2082ae84ca détailssur upgrade 2023-07-24 22:40:03 +02:00
Emmanuel Viennet bcf99e292d add a link 2023-07-24 21:56:58 +02:00
Emmanuel Viennet 23a2609833 docs install ScoDOc 9.6 / Debian 12 2023-07-24 21:56:44 +02:00
Emmanuel Viennet 8ce4ca0f28 Ajout doc assiduités (Matthias) + corrections + liens avec upgrade 2023-07-20 10:41:49 +03:00
Emmanuel Viennet cf57787c45 compléments sur upgrade deb 12 2023-07-20 09:41:09 +03:00
Emmanuel Viennet d5ff90dc7f Instructions pour mise à jour vers ScoDoc 9.6 / Debian 12 2023-07-18 16:19:13 +03:00
Emmanuel Viennet 055a85e274 Explications sur référentiel de compétences et versions 2023-07-17 16:07:44 +03:00
Matthias HARTMANN 007987db88 Assiduites : Correction doc api 2023-07-11 21:36:36 +02:00
Matthias HARTMANN 70424eba78 Assiduites :Migrations 2023-07-10 18:17:34 +02:00
Emmanuel Viennet ed8c651df6 Explications jurys BUT 2023-07-04 15:59:43 +02:00
Emmanuel Viennet 23642a9910 Reprise de plusieurs pages / structure. 2023-06-09 15:45:16 +02:00
Matthias HARTMANN ad48bd04b6 Documentation page de saisie (journalière et différée) 2023-06-07 09:33:02 +02:00
Matthias HARTMANN c009fc95b2 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2023-06-07 09:31:25 +02:00
Emmanuel Viennet 7d27cf8bfa Améliore titres (permalink) 2023-06-07 08:18:51 +02:00
Emmanuel Viennet 085e5c35c1 Détails sur capitalisation UEs 2023-06-07 07:56:24 +02:00
Emmanuel Viennet dd968bac02 Ajouts divers et réorganisation pages BUT 2023-06-07 07:27:48 +02:00
Matthias HARTMANN 27a43efb5a Début Documentation Utilisateur Module Assiduité + ajout perma links) 2023-06-05 17:20:20 +02:00
Emmanuel Viennet 1b138b7b8d Merge pull request 'export en svg plutot que png' (#55) from jmplace/DocScoDoc:update_carte_API into master
Reviewed-on: viennet/DocScoDoc#55
2023-06-04 21:29:50 +02:00
Jean-Marie Place 514cb016fb export en svg plutot que png 2023-06-04 21:25:42 +02:00
Emmanuel Viennet 90d0f1b086 Merge pull request 'mise a jour carte syntaxique' (#54) from jmplace/DocScoDoc:update_carte_API into master
Reviewed-on: viennet/DocScoDoc#54
2023-06-04 21:16:31 +02:00
Jean-Marie Place 7e316463e6 mise a jour carte syntaxique 2023-06-04 08:57:09 +02:00
Emmanuel Viennet fb2adf40a6 API /api/evaluation/note/set 2023-06-04 08:10:53 +02:00
Emmanuel Viennet 65bc5d304c Précisions divers. Nouvelle API /api/etudiants/name. 2023-06-03 09:50:31 +02:00
Emmanuel Viennet 290f967e32 ajouts et corrections 2023-05-28 14:43:45 +02:00
Emmanuel Viennet 5c9c8e8947 Merge pull request 'Mise à jour de 'docs/ScoDoc9API.md'' (#52) from pascal.bouron/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#52
2023-05-16 12:23:11 +02:00
Emmanuel Viennet 7813a14bc7 Merge pull request 'compléments etat_civil + toilettage' (#53) from jmplace/DocScoDoc:etat_civil into master
Reviewed-on: viennet/DocScoDoc#53
2023-05-16 12:20:23 +02:00
Jean-Marie Place 5fdcc6f95e compléments etat_civil + toilettage 2023-05-16 05:56:03 +02:00
Emmanuel Viennet 81530905c0 Exemple BUT Info avec parcours. WIP 2023-05-13 18:41:24 +02:00
Emmanuel Viennet c0381cf0f9 Mise à jour modélisation BUT 2023-05-12 10:06:10 +02:00
Emmanuel Viennet f6cbeccd61 Page dédiée aux exports BUT > Apogée 2023-04-20 13:20:46 +07:00
Matthias HARTMANN 563edf93c1 Documentation des nouvelles routes API Assiduité
- Route assiduites-group (On donne une liste d'etudid et cela renvoie un objet avec comme clé les étudid et comme valeur la liste des assiduités)
- Route assiduites-create (On créer des assiduités pour des étudiants différents)
- Route assiduites-edit (On donne une liste d'assiduité à modifier)
2023-03-31 09:33:40 +02:00
Emmanuel Viennet 74fbd3f3f4 détails sur API avec CAS et routes départementales 2023-03-30 11:46:02 +02:00
Emmanuel Viennet c78fcad6e7 Documente versions de formation 2023-03-21 21:45:18 +01:00
Emmanuel Viennet 1a70fb6d37 révision / mise en forme 2023-03-10 11:32:27 +01:00
Emmanuel Viennet e55c67aa0a Ajout balsies BUT pour bulletins pdf 2023-03-08 22:57:22 +01:00
Emmanuel Viennet fe6d7a017d Améliore Guide de formation 2023-03-06 22:57:54 +01:00
Emmanuel Viennet 169b5749aa Améliore doc config CAS 2023-03-06 22:25:24 +01:00
Emmanuel Viennet 4948da5e84 - Documentattion du CAS;
- Remise en forme de plusieurs pages.
2023-03-01 19:05:21 +01:00
Emmanuel Viennet c5daabd018 Documente email 2023-02-28 19:47:11 +01:00
Emmanuel Viennet 73d57bf862 Ajout d'une précision 2023-02-28 17:45:29 +01:00
Emmanuel Viennet 6631a40891 Cosmétique et correction 2023-02-28 17:43:39 +01:00
Emmanuel Viennet 969143829e Supprimé doc ancienne API 2023-02-17 22:15:35 -04:00
Emmanuel Viennet 15c0c37a67 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2023-02-15 11:24:02 -04:00
Emmanuel Viennet 9ae95db666 Ajout option nosig à l'API bulletins 2023-02-15 11:22:13 -04:00
Hartmann Matthias 447d654928 samples assiduités justificatifs : début 2023-02-15 10:30:37 +01:00
Hartmann Matthias 0c171ae072 doc assiduité 2023-02-14 16:34:52 +01:00
Emmanuel Viennet ea5c3ae2ef Removed obsolete docs 2023-01-31 14:58:54 +01:00
Emmanuel Viennet 41bb94620d Removed obsolete docs 2023-01-31 14:58:54 +01:00
Emmanuel Viennet a5b7491772 cosmetic + remove export apo excel 2023-01-31 12:59:06 +01:00
Emmanuel Viennet f7db9bb0e2 cosmetic + remove export apo excel 2023-01-31 12:59:06 +01:00
pascal.bouron 6a774a7271 Mise à jour de 'docs/ScoDoc9API.md'
Erreur de lien sur departement-formsemestres-courants au lieu de departement-formsemestres_courants
2023-01-24 09:18:57 +01:00
Emmanuel Viennet 17a2883f11 Précision sur la moyenne indicative BUT 2023-01-10 15:07:26 -03:00
Emmanuel Viennet fab29cb3b0 Précision sur la moyenne indicative BUT 2023-01-10 15:07:26 -03:00
Emmanuel Viennet 435e160a69 Merge pull request 'regeneration_samples' (#51) from jmplace/DocScoDoc:regeneration_samples into master
Reviewed-on: viennet/DocScoDoc#51
2023-01-05 22:57:29 +01:00
Emmanuel Viennet 9aab5aeec5 Merge pull request 'regeneration_samples' (#51) from jmplace/DocScoDoc:regeneration_samples into master
Reviewed-on: viennet/DocScoDoc#51
2023-01-05 22:57:29 +01:00
Emmanuel Viennet 349b9ccd2e Précise URLs API: reprise de la PR 50 de Jean-Marie. 2023-01-04 09:40:25 -03:00
Emmanuel Viennet 228a5ef398 Précise URLs API: reprise de la PR 50 de Jean-Marie. 2023-01-04 09:40:25 -03:00
Jean-Marie Place a2dfb48aca regenerate samples 2022-12-27 10:14:05 +01:00
Jean-Marie Place 1427992bb1 regenerate samples 2022-12-27 10:14:05 +01:00
Jean-Marie Place b4a81ed5e2 Revert "essai de git"
This reverts commit 3acc723953.
2022-12-27 10:14:05 +01:00
Jean-Marie Place 783e4a86cf Revert "essai de git"
This reverts commit 6e8edd6fc6.
2022-12-27 10:14:05 +01:00
Jean-Marie Place 9ebf2f5423 essai de git 2022-12-27 10:14:05 +01:00
Jean-Marie Place 523477221a essai de git 2022-12-27 10:14:05 +01:00
Emmanuel Viennet 21bb497ca6 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-12-26 19:01:09 -03:00
Emmanuel Viennet fab31f928f Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-12-26 19:01:09 -03:00
Emmanuel Viennet 819a5f6551 Détails sur la programmation API 2022-12-26 19:00:47 -03:00
Emmanuel Viennet cedd37d4b4 Détails sur la programmation API 2022-12-26 19:00:47 -03:00
Jean-Marie Place ee621761ff Revert "essai de git"
This reverts commit 3acc723953.
2022-12-09 15:50:06 +01:00
Jean-Marie Place 8483c652ff Revert "essai de git"
This reverts commit 6e8edd6fc6.
2022-12-09 15:50:06 +01:00
Jean-Marie Place 3acc723953 essai de git 2022-12-09 15:46:23 +01:00
Jean-Marie Place 6e8edd6fc6 essai de git 2022-12-09 15:46:23 +01:00
Emmanuel Viennet 4f2f289129 Ajout page sur capitalisation des UE en BUT 2022-12-07 16:14:05 -03:00
Emmanuel Viennet 8934fe840d Ajout page sur capitalisation des UE en BUT 2022-12-07 16:14:05 -03:00
Emmanuel Viennet 9749c9eab3 API: formsemestre/bulletins au format long_mat. 2022-11-28 19:13:07 +01:00
Emmanuel Viennet 2bad43593e API: formsemestre/bulletins au format long_mat. 2022-11-28 19:13:07 +01:00
Emmanuel Viennet 6fce5863d3 Bulletins JSON avec matières (long_mat) et autres modifs 2022-11-27 23:39:48 +01:00
Emmanuel Viennet 6799937445 Bulletins JSON avec matières (long_mat) et autres modifs 2022-11-27 23:39:48 +01:00
Emmanuel Viennet 33077a8ec5 formattage markdown 2022-11-13 16:06:33 +01:00
Emmanuel Viennet 383ddb1b4f formattage markdown 2022-11-13 16:06:33 +01:00
Emmanuel Viennet 7c439f3b4f Merge pull request 'mise à jour API 9.4' (#49) from jmplace/DocScoDoc:maj_9.4 into master
Reviewed-on: viennet/DocScoDoc#49
2022-11-02 15:37:34 +01:00
Emmanuel Viennet b2c9042e14 Merge pull request 'mise à jour API 9.4' (#49) from jmplace/DocScoDoc:maj_9.4 into master
Reviewed-on: viennet/DocScoDoc#49
2022-11-02 15:37:34 +01:00
Jean-Marie PLACE b00b9626d1 mise à jour API 9.4 2022-11-02 11:28:18 +01:00
Jean-Marie PLACE a52e0da097 mise à jour API 9.4 2022-11-02 11:28:18 +01:00
Emmanuel Viennet 9906fd43ab corrige chemin scodoc.log 2022-10-31 14:45:52 +01:00
Emmanuel Viennet e24882b8c0 corrige chemin scodoc.log 2022-10-31 14:45:52 +01:00
Emmanuel Viennet 4f76da6a29 Formattage doc API 2022-10-29 09:16:14 +02:00
Emmanuel Viennet 0291669255 Formattage doc API 2022-10-29 09:16:14 +02:00
Emmanuel Viennet d2becdc962 API: formsemestres-query 2022-10-29 08:34:45 +02:00
Emmanuel Viennet 26096c09f3 API: formsemestres-query 2022-10-29 08:34:45 +02:00
Emmanuel Viennet 6057301482 minor reformatting 2022-10-26 10:26:53 +02:00
Emmanuel Viennet 23312d1540 minor reformatting 2022-10-26 10:26:53 +02:00
Emmanuel Viennet bc696dc817 Supprime éléments obsolètes 2022-10-10 10:47:56 +02:00
Emmanuel Viennet 3ba3c4723c Supprime éléments obsolètes 2022-10-10 10:47:56 +02:00
Emmanuel Viennet 92cda27fb6 Ajout screenshots 2022-10-07 22:31:07 +02:00
Emmanuel Viennet 3bc5664950 Ajout screenshots 2022-10-07 22:31:07 +02:00
Emmanuel Viennet 1f163557c6 Mises à jours diverses + reprise ModelisationParcoursBUT 2022-10-07 22:29:59 +02:00
Emmanuel Viennet d74ee8e1a2 Mises à jours diverses + reprise ModelisationParcoursBUT 2022-10-07 22:29:59 +02:00
Emmanuel Viennet 75abfab3e9 Merge pull request 'update_moduleimpl' (#48) from jmplace/DocScoDoc:update_moduleimpl into master
Reviewed-on: viennet/DocScoDoc#48
2022-09-21 13:28:53 +02:00
Emmanuel Viennet 9e74d9fad2 Merge pull request 'update_moduleimpl' (#48) from jmplace/DocScoDoc:update_moduleimpl into master
Reviewed-on: viennet/DocScoDoc#48
2022-09-21 13:28:53 +02:00
Jean-Marie PLACE 5bff08a24e update_moduleimpl 2022-09-21 13:22:43 +02:00
Jean-Marie PLACE 1da3702c1d update_moduleimpl 2022-09-21 13:22:43 +02:00
Emmanuel Viennet 6c13bfba6c Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-09-21 12:20:34 +02:00
Emmanuel Viennet f99cb26671 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-09-21 12:20:34 +02:00
Emmanuel Viennet cd81b110c7 Merge pull request 'mise a jour des exemples' (#47) from jmplace/DocScoDoc:update_formation_export_et_etat_evals into master
Reviewed-on: viennet/DocScoDoc#47
2022-09-21 12:18:34 +02:00
Emmanuel Viennet 8ff8dbe021 Merge pull request 'mise a jour des exemples' (#47) from jmplace/DocScoDoc:update_formation_export_et_etat_evals into master
Reviewed-on: viennet/DocScoDoc#47
2022-09-21 12:18:34 +02:00
Jean-Marie PLACE 07341ca6bb mise a jour des exemples 2022-09-21 06:01:21 +02:00
Jean-Marie PLACE 0a31b8e314 mise a jour des exemples 2022-09-21 06:01:21 +02:00
Emmanuel Viennet 7104185a44 ajout lien YT 2022-09-15 09:41:51 +02:00
Emmanuel Viennet 2312b1a38c ajout lien YT 2022-09-15 09:41:51 +02:00
Emmanuel Viennet 7d6184689a activation module entreprises 2022-09-15 09:32:18 +02:00
Emmanuel Viennet edb0ff825f activation module entreprises 2022-09-15 09:32:18 +02:00
Emmanuel Viennet 964547f914 précision sur le lancement des commandes 2022-09-15 09:03:46 +02:00
Emmanuel Viennet 618df31df5 précision sur le lancement des commandes 2022-09-15 09:03:46 +02:00
Emmanuel Viennet 61c28afdf3 Retire ancienne API: do_moduleimpl_list, do_moduleimpl_withmodule_list 2022-08-31 22:16:01 +02:00
Emmanuel Viennet 06a1691ce5 Retire ancienne API: do_moduleimpl_list, do_moduleimpl_withmodule_list 2022-08-31 22:16:01 +02:00
Emmanuel Viennet 58e422fc49 Merge pull request 'description modif formsemestre-etudiant' (#46) from jmplace/DocScoDoc:fix_2022-08-30 into master
Reviewed-on: viennet/DocScoDoc#46
2022-08-30 21:49:22 +02:00
Emmanuel Viennet 399624ebb6 Merge pull request 'description modif formsemestre-etudiant' (#46) from jmplace/DocScoDoc:fix_2022-08-30 into master
Reviewed-on: viennet/DocScoDoc#46
2022-08-30 21:49:22 +02:00
Jean-Marie PLACE f33fa0a66c description modif formsemestre-etudiant 2022-08-30 21:45:04 +02:00
Jean-Marie PLACE d70f30b6ec description modif formsemestre-etudiant 2022-08-30 21:45:04 +02:00
Emmanuel Viennet 5ae2d4576c Merge pull request 'correctifs mineurs' (#45) from jmplace/DocScoDoc:fix_2022-08-03 into master
Reviewed-on: viennet/DocScoDoc#45
2022-08-30 12:06:01 +02:00
Emmanuel Viennet c8b3bc724a Merge pull request 'correctifs mineurs' (#45) from jmplace/DocScoDoc:fix_2022-08-03 into master
Reviewed-on: viennet/DocScoDoc#45
2022-08-30 12:06:01 +02:00
Jean-Marie PLACE 8b0adc8e16 correctifs mineurs 2022-08-30 07:47:13 +02:00
Jean-Marie PLACE 3b536525cc correctifs mineurs 2022-08-30 07:47:13 +02:00
Emmanuel Viennet 8e31896876 Merge pull request 'ajout gestion des utilisateurs 9.3.28' (#44) from jmplace/DocScoDoc:ajuste_configPermission into master
Reviewed-on: viennet/DocScoDoc#44
2022-08-28 10:21:48 +02:00
Emmanuel Viennet 04c347e654 Merge pull request 'ajout gestion des utilisateurs 9.3.28' (#44) from jmplace/DocScoDoc:ajuste_configPermission into master
Reviewed-on: viennet/DocScoDoc#44
2022-08-28 10:21:48 +02:00
toto d41a4fa33a essai 2022-08-27 09:34:00 +02:00
toto 770ab19278 essai 2022-08-27 09:34:00 +02:00
Emmanuel Viennet a66b833895 essai 2022-08-26 18:24:17 +02:00
Emmanuel Viennet 8359c8c7fe essai 2022-08-26 18:24:17 +02:00
Jean-Marie PLACE fdf41d1ae4 ajout gestion des utilisateurs 9.3.28 2022-08-26 15:56:30 +02:00
Jean-Marie PLACE 1c8db01544 ajout gestion des utilisateurs 9.3.28 2022-08-26 15:56:30 +02:00
Emmanuel Viennet f40dc5e88d retire APIView 2022-08-26 10:03:21 +02:00
Emmanuel Viennet 5cc4c5ca2a retire APIView 2022-08-26 10:03:21 +02:00
Emmanuel Viennet 53cc633a16 Champs synchro etud XML 2022-08-26 08:19:13 +02:00
Emmanuel Viennet b58a62f77e Champs synchro etud XML 2022-08-26 08:19:13 +02:00
Emmanuel Viennet cf0f65f5ca Merge pull request 'ajout doc (permission, correctifs tableaux, formsemestre-programme, ...)' (#43) from jmplace/DocScoDoc:ajout_doc into master
Reviewed-on: viennet/DocScoDoc#43
2022-08-25 18:52:00 +02:00
Emmanuel Viennet 1c9e95cbab Merge pull request 'ajout doc (permission, correctifs tableaux, formsemestre-programme, ...)' (#43) from jmplace/DocScoDoc:ajout_doc into master
Reviewed-on: viennet/DocScoDoc#43
2022-08-25 18:52:00 +02:00
Jean-Marie PLACE 113a9c9219 ajout doc (permission, correctifs tableaux, formsemestre-programme, ...) 2022-08-25 18:47:45 +02:00
Jean-Marie PLACE de61535675 ajout doc (permission, correctifs tableaux, formsemestre-programme, ...) 2022-08-25 18:47:45 +02:00
Emmanuel Viennet f034b02feb Merge pull request 'mise a jour des deux liens erroné' (#42) from jmplace/DocScoDoc:fix_#477 into master
Reviewed-on: viennet/DocScoDoc#42
2022-08-24 07:47:47 +02:00
Emmanuel Viennet a9efe59bc5 Merge pull request 'mise a jour des deux liens erroné' (#42) from jmplace/DocScoDoc:fix_#477 into master
Reviewed-on: viennet/DocScoDoc#42
2022-08-24 07:47:47 +02:00
Jean-Marie PLACE bfd14250e8 mise a jour des deux liens erroné 2022-08-23 13:46:11 +02:00
Jean-Marie PLACE 09330a30e6 mise a jour des deux liens erroné 2022-08-23 13:46:11 +02:00
Emmanuel Viennet cad67b7305 Merge pull request 'remise a niveau exemples ; ajout user-password' (#41) from jmplace/DocScoDoc:doc_9.3.26 into master
Reviewed-on: viennet/DocScoDoc#41
2022-08-22 09:56:24 +02:00
Emmanuel Viennet 46f78590ac Merge pull request 'remise a niveau exemples ; ajout user-password' (#41) from jmplace/DocScoDoc:doc_9.3.26 into master
Reviewed-on: viennet/DocScoDoc#41
2022-08-22 09:56:24 +02:00
Jean-Marie PLACE 0a52852d17 remise a niveau exemples ; ajout user-password 2022-08-21 12:39:37 +02:00
Jean-Marie PLACE cd3767271b remise a niveau exemples ; ajout user-password 2022-08-21 12:39:37 +02:00
Emmanuel Viennet b764a3dbc8 Merge pull request 'ajout de quelques précisions + des exemples sur les logos' (#40) from jmplace/DocScoDoc:compl14 into master
Reviewed-on: viennet/DocScoDoc#40
2022-08-19 12:53:28 +02:00
Emmanuel Viennet 24a8f3e585 Merge pull request 'ajout de quelques précisions + des exemples sur les logos' (#40) from jmplace/DocScoDoc:compl14 into master
Reviewed-on: viennet/DocScoDoc#40
2022-08-19 12:53:28 +02:00
Jean-Marie PLACE 6512ac97d5 ajout de quelques précisions + des exemples sur les logos 2022-08-19 11:47:32 +02:00
Jean-Marie PLACE 4ebaf197e5 ajout de quelques précisions + des exemples sur les logos 2022-08-19 11:47:32 +02:00
Emmanuel Viennet c88e03db25 Merge pull request 'mise à jour carte syntaxique' (#39) from jmplace/DocScoDoc:compl13 into master
Reviewed-on: viennet/DocScoDoc#39
2022-08-17 18:55:06 +02:00
Emmanuel Viennet 25b72bff54 Merge pull request 'mise à jour carte syntaxique' (#39) from jmplace/DocScoDoc:compl13 into master
Reviewed-on: viennet/DocScoDoc#39
2022-08-17 18:55:06 +02:00
Jean-Marie PLACE 375c127568 mise à jour carte syntaxique 2022-08-17 10:14:07 +02:00
Jean-Marie PLACE 5ba29909eb mise à jour carte syntaxique 2022-08-17 10:14:07 +02:00
Emmanuel Viennet e8db6c836c Intro sur API 2022-08-14 10:21:35 +02:00
Emmanuel Viennet 60a315729e Intro sur API 2022-08-14 10:21:35 +02:00
Emmanuel Viennet 50463bf588 Merge pull request 'ajouts des exemples restants' (#38) from jmplace/DocScoDoc:compl11 into master
Reviewed-on: viennet/DocScoDoc#38
2022-08-14 10:20:34 +02:00
Emmanuel Viennet cbe2db880b Merge pull request 'ajouts des exemples restants' (#38) from jmplace/DocScoDoc:compl11 into master
Reviewed-on: viennet/DocScoDoc#38
2022-08-14 10:20:34 +02:00
Jean-Marie PLACE e73d40ce76 ajouts des exemples restants 2022-08-14 10:04:11 +02:00
Jean-Marie PLACE 5e567633c2 ajouts des exemples restants 2022-08-14 10:04:11 +02:00
Emmanuel Viennet 6f62493c17 Merge pull request 'ajout exemples générés automatiquement (GET)' (#37) from jmplace/DocScoDoc:comp10 into master
Reviewed-on: viennet/DocScoDoc#37
2022-08-11 18:30:07 +02:00
Emmanuel Viennet ecbf0fc514 Merge pull request 'ajout exemples générés automatiquement (GET)' (#37) from jmplace/DocScoDoc:comp10 into master
Reviewed-on: viennet/DocScoDoc#37
2022-08-11 18:30:07 +02:00
Jean-Marie PLACE 228858bca1 ajout exemples générés automatiquement (GET) 2022-08-11 18:19:20 +02:00
Jean-Marie PLACE a869d25c53 ajout exemples générés automatiquement (GET) 2022-08-11 18:19:20 +02:00
Emmanuel Viennet 07bde9e38b API: user, roles, ... 2022-08-11 15:41:20 +02:00
Emmanuel Viennet 67cf0163ed API: user, roles, ... 2022-08-11 15:41:20 +02:00
Emmanuel Viennet b085b9e1f7 Merge pull request 'preparation des enrées utilisateurs/roles/departement-create, ...' (#36) from jmplace/DocScoDoc:complements_9.docs into master
Reviewed-on: viennet/DocScoDoc#36
2022-08-11 14:01:28 +02:00
Emmanuel Viennet 3aac11a6dc Merge pull request 'preparation des enrées utilisateurs/roles/departement-create, ...' (#36) from jmplace/DocScoDoc:complements_9.docs into master
Reviewed-on: viennet/DocScoDoc#36
2022-08-11 14:01:28 +02:00
Jean-Marie PLACE 3af54b1209 preparation des enrées utilisateurs/roles/departement-create, ... 2022-08-11 11:47:38 +02:00
Jean-Marie PLACE ec7131fe5d preparation des enrées utilisateurs/roles/departement-create, ... 2022-08-11 11:47:38 +02:00
Emmanuel Viennet ae1dc39c84 Doc API: typos, changement route /formsemestre/etudiant. 2022-08-10 07:55:33 +02:00
Emmanuel Viennet d95f7c9fdb Doc API: typos, changement route /formsemestre/etudiant. 2022-08-10 07:55:33 +02:00
Emmanuel Viennet 9c6c04c936 sample_roles 2022-08-09 21:27:32 +03:00
Emmanuel Viennet 80cc8e6ca8 sample_roles 2022-08-09 21:27:32 +03:00
Emmanuel Viennet ec40a871ac Merge pull request 'Complements docs (evaluations, jury, ...) + carte syntaxique. maj des' (#35) from jmplace/DocScoDoc:complements_8.docs into master
Reviewed-on: viennet/DocScoDoc#35
2022-08-09 20:25:33 +02:00
Emmanuel Viennet 2707d452e3 Merge pull request 'Complements docs (evaluations, jury, ...) + carte syntaxique. maj des' (#35) from jmplace/DocScoDoc:complements_8.docs into master
Reviewed-on: viennet/DocScoDoc#35
2022-08-09 20:25:33 +02:00
Emmanuel Viennet 60eb22fe67 Complements docs (evaluations, jury, ...) + carte syntaxique. maj des
url
2022-08-09 08:55:55 +02:00
Emmanuel Viennet 1be533f48d Complements docs (evaluations, jury, ...) + carte syntaxique. maj des
url
2022-08-09 08:55:55 +02:00
Emmanuel Viennet 27b3a665d6 API /roles sample 2022-08-06 23:27:01 +03:00
Emmanuel Viennet e7b20625be API /roles sample 2022-08-06 23:27:01 +03:00
Emmanuel Viennet 363ce9198d modif détails config logos 2022-08-04 20:02:20 +03:00
Emmanuel Viennet 91aacaae77 modif détails config logos 2022-08-04 20:02:20 +03:00
Emmanuel Viennet a693e25f33 Merge pull request 'Mise à jour de 'docs/UtilisateursScoDoc.md'' (#23) from martin.murzeau/DocScoDocMM:master into master
Reviewed-on: viennet/DocScoDoc#23
2022-08-04 18:46:56 +02:00
Emmanuel Viennet dd837eff8c Merge pull request 'Mise à jour de 'docs/UtilisateursScoDoc.md'' (#23) from martin.murzeau/DocScoDocMM:master into master
Reviewed-on: viennet/DocScoDoc#23
2022-08-04 18:46:56 +02:00
Emmanuel Viennet 4b0e51534c Merge pull request 'complement formsemestre, partition, moduleimpl' (#34) from jmplace/DocScoDoc:complements_7.docs into master
Reviewed-on: viennet/DocScoDoc#34
2022-08-04 17:06:21 +02:00
Emmanuel Viennet 8d63f35593 Merge pull request 'complement formsemestre, partition, moduleimpl' (#34) from jmplace/DocScoDoc:complements_7.docs into master
Reviewed-on: viennet/DocScoDoc#34
2022-08-04 17:06:21 +02:00
Jean-Marie PLACE 0391de2d10 complement formsemestre, partition, moduleimpl 2022-08-04 17:01:30 +02:00
Jean-Marie PLACE 634b250330 complement formsemestre, partition, moduleimpl 2022-08-04 17:01:30 +02:00
Emmanuel Viennet 86fcd9fffb typos/détails 2022-08-04 14:13:33 +03:00
Emmanuel Viennet 8d5a62e211 typos/détails 2022-08-04 14:13:33 +03:00
Emmanuel Viennet 57b9f0dc4a Merge pull request 'dept et formation ok' (#32) from jmplace/DocScoDoc:complements_5.docs into master
Reviewed-on: viennet/DocScoDoc#32
2022-08-04 12:52:44 +02:00
Emmanuel Viennet 296c2e020c Merge pull request 'dept et formation ok' (#32) from jmplace/DocScoDoc:complements_5.docs into master
Reviewed-on: viennet/DocScoDoc#32
2022-08-04 12:52:44 +02:00
Jean-Marie PLACE aa571a3cca dept et formation ok 2022-08-04 12:19:39 +02:00
Jean-Marie PLACE a561fdd2ee dept et formation ok 2022-08-04 12:19:39 +02:00
Emmanuel Viennet f382df8ae3 API formsemestre: changement format annee_scolaire 2022-08-03 22:52:20 +03:00
Emmanuel Viennet 6dc304bbb2 API formsemestre: changement format annee_scolaire 2022-08-03 22:52:20 +03:00
Emmanuel Viennet dded9f775a modif carte API svg 2022-08-03 17:29:16 +03:00
Emmanuel Viennet 02c1d20a2c modif carte API svg 2022-08-03 17:29:16 +03:00
Emmanuel Viennet d7b6c9eb6d Ajoute plugin pour SVG 2022-08-03 17:17:13 +03:00
Emmanuel Viennet e6fa0ed8b6 Ajoute plugin pour SVG 2022-08-03 17:17:13 +03:00
Emmanuel Viennet fc3fc30222 Merge pull request 'fichiears manquants' (#31) from jmplace/DocScoDoc:complements_4.docs into master
Reviewed-on: viennet/DocScoDoc#31
2022-08-03 08:44:30 +02:00
Emmanuel Viennet d9935fed21 Merge pull request 'fichiears manquants' (#31) from jmplace/DocScoDoc:complements_4.docs into master
Reviewed-on: viennet/DocScoDoc#31
2022-08-03 08:44:30 +02:00
Jean-Marie PLACE 604c9672e4 fichiears manquants 2022-08-03 08:40:54 +02:00
Jean-Marie PLACE 8de14ea8bf fichiears manquants 2022-08-03 08:40:54 +02:00
Emmanuel Viennet 5cef80bbb4 Merge pull request 'ajouts exemples' (#30) from jmplace/DocScoDoc:complements_4.docs into master
Reviewed-on: viennet/DocScoDoc#30
2022-08-03 07:35:06 +02:00
Emmanuel Viennet 0d6a5b758a Merge pull request 'ajouts exemples' (#30) from jmplace/DocScoDoc:complements_4.docs into master
Reviewed-on: viennet/DocScoDoc#30
2022-08-03 07:35:06 +02:00
Jean-Marie PLACE 43b72dfe9a ajouts exemples 2022-08-02 20:58:45 +02:00
Jean-Marie PLACE 010573a672 ajouts exemples 2022-08-02 20:58:45 +02:00
Emmanuel Viennet eb3a0ed5ac API: résultats toujours code_ine et code_nip 2022-07-29 16:39:24 +03:00
Emmanuel Viennet 4955012dca API: résultats toujours code_ine et code_nip 2022-07-29 16:39:24 +03:00
Emmanuel Viennet 01f03cad35 API: résultats toujours code_ine et code_nip 2022-07-29 16:38:45 +03:00
Emmanuel Viennet 133f1663b9 API: résultats toujours code_ine et code_nip 2022-07-29 16:38:45 +03:00
Emmanuel Viennet 3bc96ead31 Merge pull request 'compléments docs (suite)' (#27) from jmplace/DocScoDoc:complements_2_docs into master
Reviewed-on: viennet/DocScoDoc#27
2022-07-29 09:45:04 +02:00
Emmanuel Viennet 8800b93cd7 Merge pull request 'compléments docs (suite)' (#27) from jmplace/DocScoDoc:complements_2_docs into master
Reviewed-on: viennet/DocScoDoc#27
2022-07-29 09:45:04 +02:00
Jean-Marie PLACE 3561c210b3 compléments docs (suite) 2022-07-29 09:37:20 +02:00
Jean-Marie PLACE 34afa7e9d1 compléments docs (suite) 2022-07-29 09:37:20 +02:00
Emmanuel Viennet 7e32dc6b88 API: permission et codes status. 2022-07-28 09:42:42 +03:00
Emmanuel Viennet f8a6c7f864 API: permission et codes status. 2022-07-28 09:42:42 +03:00
Emmanuel Viennet 2edd61fe51 Merge pull request 'complements (fichiers examples separes & maj carte' (#26) from jmplace/DocScoDoc:complements_doc into master
Reviewed-on: viennet/DocScoDoc#26
2022-07-28 08:36:07 +02:00
Emmanuel Viennet 2186f57a14 Merge pull request 'complements (fichiers examples separes & maj carte' (#26) from jmplace/DocScoDoc:complements_doc into master
Reviewed-on: viennet/DocScoDoc#26
2022-07-28 08:36:07 +02:00
Emmanuel Viennet ae99b0795a Ajout page pour Dev API 2022-07-27 10:05:37 +03:00
Emmanuel Viennet bccd7ac82e Ajout page pour Dev API 2022-07-27 10:05:37 +03:00
Jean-Marie PLACE 8dc2664f07 complements (fichiers examples separes & maj carte 2022-07-26 09:42:22 +02:00
Jean-Marie PLACE 3401b09701 complements (fichiers examples separes & maj carte 2022-07-26 09:42:22 +02:00
Emmanuel Viennet 1ae02d40b1 évite espaces dans noms fichiers 2022-07-25 14:38:11 +03:00
Emmanuel Viennet 99cfc106b9 évite espaces dans noms fichiers 2022-07-25 14:38:11 +03:00
Emmanuel Viennet 8d037c5f8e Merge pull request 'ajout carte_API' (#25) from jmplace/DocScoDoc:carte_API into master
Reviewed-on: viennet/DocScoDoc#25
2022-07-25 11:54:41 +02:00
Emmanuel Viennet c13a2deb38 Merge pull request 'ajout carte_API' (#25) from jmplace/DocScoDoc:carte_API into master
Reviewed-on: viennet/DocScoDoc#25
2022-07-25 11:54:41 +02:00
Jean-Marie PLACE e1d587bd49 ajout carte_API 2022-07-25 10:07:48 +02:00
Jean-Marie PLACE 9d8a468f5e ajout carte_API 2022-07-25 10:07:48 +02:00
Emmanuel Viennet e32f7479fa API: modif structure 2022-07-25 10:13:57 +03:00
Emmanuel Viennet 5f97c42dae API: modif structure 2022-07-25 10:13:57 +03:00
Emmanuel Viennet 337e35e48a API: WIP 2022-07-24 10:25:14 +03:00
Emmanuel Viennet e32095e114 API: WIP 2022-07-24 10:25:14 +03:00
Emmanuel Viennet ee47c234e5 list-roles 2022-07-24 10:24:04 +03:00
Emmanuel Viennet 38d103cfa7 list-roles 2022-07-24 10:24:04 +03:00
Emmanuel Viennet 6bb5d17741 Début de mise à jour doc API 2022-07-16 22:48:40 +03:00
Emmanuel Viennet f611923686 Début de mise à jour doc API 2022-07-16 22:48:40 +03:00
Emmanuel Viennet 403472ec50 Ignore vscode files 2022-07-16 15:02:23 +02:00
Emmanuel Viennet 6a07f6e5af Ignore vscode files 2022-07-16 15:02:23 +02:00
Emmanuel Viennet 2355c2cc55 Mise en forme + nom auteur 2022-07-13 20:04:20 +02:00
Emmanuel Viennet aa90c15bde Mise en forme + nom auteur 2022-07-13 20:04:20 +02:00
Emmanuel Viennet 4377f83d55 Nouvelle doc module relations entreprises par Arthur. 2022-07-13 19:55:06 +02:00
Emmanuel Viennet 458661543a Nouvelle doc module relations entreprises par Arthur. 2022-07-13 19:55:06 +02:00
Emmanuel Viennet 53a7deee41 précisision RCUE 2022-07-13 19:54:31 +02:00
Emmanuel Viennet 01e3c36b7a précisision RCUE 2022-07-13 19:54:31 +02:00
Emmanuel Viennet a3932cac50 Bulletins: nouveaux champs pour jury BUT 2022-07-08 18:04:47 +02:00
Emmanuel Viennet 443ff7a2c2 Bulletins: nouveaux champs pour jury BUT 2022-07-08 18:04:47 +02:00
Emmanuel Viennet 701aef91c4 modif bulletin adhésion 2022-07-05 17:41:11 +02:00
Emmanuel Viennet 8bd336bc08 modif bulletin adhésion 2022-07-05 17:41:11 +02:00
Martin Murzeau ae66a4866e Mise à jour de 'docs/UtilisateursScoDoc.md'
IUT Le Mans modif lien et ajout description
2022-06-29 09:57:00 +02:00
Martin Murzeau e06373d58f Mise à jour de 'docs/UtilisateursScoDoc.md'
IUT Le Mans modif lien et ajout description
2022-06-29 09:57:00 +02:00
Emmanuel Viennet c908e81edb Diverses précisions 2022-06-28 19:02:55 +02:00
Emmanuel Viennet 60abfeb3e8 Diverses précisions 2022-06-28 19:02:55 +02:00
Emmanuel Viennet 283e09790b Mise à jour liste utilisateurs 2022-06-28 19:02:13 +02:00
Emmanuel Viennet 2d77e8e358 Mise à jour liste utilisateurs 2022-06-28 19:02:13 +02:00
Emmanuel Viennet 30bae3a17c BUT: modélisation validations jury 2022-05-25 08:19:52 +02:00
Emmanuel Viennet 6448fb6a07 BUT: modélisation validations jury 2022-05-25 08:19:52 +02:00
Emmanuel Viennet 8931e68ede Détails modélisation parcours BUT 2022-05-21 23:49:31 +02:00
Emmanuel Viennet f56030422e Détails modélisation parcours BUT 2022-05-21 23:49:31 +02:00
Emmanuel Viennet 331f795c46 API: ajout annee_scolaire 2022-05-17 10:39:52 +02:00
Emmanuel Viennet 533a698a09 API: ajout annee_scolaire 2022-05-17 10:39:52 +02:00
Emmanuel Viennet c19ab2c98b Déatils config mail 2022-05-16 07:50:45 +02:00
Emmanuel Viennet f5c93d1a3f Déatils config mail 2022-05-16 07:50:45 +02:00
Emmanuel Viennet 19856695a7 API: wip 2022-05-13 12:20:13 -04:00
Emmanuel Viennet 591d622f07 API: wip 2022-05-13 12:20:13 -04:00
Emmanuel Viennet 8d768cf22c API: Modif /evaluations 2022-05-13 12:07:19 -04:00
Emmanuel Viennet 17b262178d API: Modif /evaluations 2022-05-13 12:07:19 -04:00
Emmanuel Viennet ac10953046 API: présentation des routes 2022-05-13 11:24:58 -04:00
Emmanuel Viennet 003158e9b5 API: présentation des routes 2022-05-13 11:24:58 -04:00
Emmanuel Viennet 6f67be1073 Evolution de l'API 2022-05-07 10:32:11 +02:00
Emmanuel Viennet 3e85d45f94 Evolution de l'API 2022-05-07 10:32:11 +02:00
Emmanuel Viennet 683e753b80 Evolution de l'API 2022-05-07 08:33:00 +02:00
Emmanuel Viennet e94061c214 Evolution de l'API 2022-05-07 08:33:00 +02:00
Emmanuel Viennet cfb63987f9 Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-05-06 17:46:07 +02:00
Emmanuel Viennet b56018283a Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-05-06 17:46:07 +02:00
Emmanuel Viennet c1e227cfe1 mise en forme 2022-05-06 17:40:08 +02:00
Emmanuel Viennet cbeb1fa945 mise en forme 2022-05-06 17:40:08 +02:00
Emmanuel Viennet 451594132e Doc tests API 2022-05-06 17:36:19 +02:00
Emmanuel Viennet 29bd44fc2e Doc tests API 2022-05-06 17:36:19 +02:00
leonard_montalbano 0aae272952 Mise à jour du 05/05/2022 2022-05-05 12:02:45 +02:00
leonard_montalbano a3e6d1f340 Mise à jour du 05/05/2022 2022-05-05 12:02:45 +02:00
leonard_montalbano b208e4a128 mise à jour des exemples de résutats 2022-05-04 16:31:52 +02:00
leonard_montalbano fba82c37c8 mise à jour des exemples de résutats 2022-05-04 16:31:52 +02:00
Emmanuel Viennet 2b56b6eb23 Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-05-03 19:54:59 +02:00
Emmanuel Viennet fcb30f02d9 Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-05-03 19:54:59 +02:00
leonard_montalbano a8a1ba1fbc correction d'exemples de résultats 2022-05-03 16:16:04 +02:00
leonard_montalbano 5fd83c918a correction d'exemples de résultats 2022-05-03 16:16:04 +02:00
Emmanuel Viennet 4622d5c95d Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-05-02 10:08:02 +02:00
Emmanuel Viennet eaf21b86f5 Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-05-02 10:08:02 +02:00
leonard_montalbano 4cedb04fa9 passage sous pretty print des parties Json 2022-05-02 09:41:45 +02:00
leonard_montalbano fd48c95888 passage sous pretty print des parties Json 2022-05-02 09:41:45 +02:00
Emmanuel Viennet 25a905ce12 Détails modélisation BUT 2022-05-02 08:25:12 +02:00
Emmanuel Viennet 16b9dbe6cb Détails modélisation BUT 2022-05-02 08:25:12 +02:00
Emmanuel Viennet 3c1be1c941 Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-04-28 12:20:13 +02:00
Emmanuel Viennet d2fab7f619 Merge branch 'master' of https://scodoc.org/git/leonard.montalbano/DocScoDoc 2022-04-28 12:20:13 +02:00
leonard_montalbano 5541cb594c mise à jour de la doc de la nouvelle api au 28/04/2022 2022-04-28 11:46:59 +02:00
leonard_montalbano 5bb2f166cc mise à jour de la doc de la nouvelle api au 28/04/2022 2022-04-28 11:46:59 +02:00
Emmanuel Viennet 1506a6d066 Qq précisions sur l'install 2022-04-27 22:31:31 +02:00
Emmanuel Viennet 8d9cb5fae7 Qq précisions sur l'install 2022-04-27 22:31:31 +02:00
leonard_montalbano 51e1884d1d mise à jour de la documentation api scodoc9 pour la partie departement et etudiant 2022-04-26 17:07:20 +02:00
leonard_montalbano 49bcfcee1c mise à jour de la documentation api scodoc9 pour la partie departement et etudiant 2022-04-26 17:07:20 +02:00
leonard_montalbano b4485429d1 merge origin master 2022-04-26 16:57:22 +02:00
leonard_montalbano 1b61d49d63 merge origin master 2022-04-26 16:57:22 +02:00
leonard_montalbano cda5a25a69 réctification de la doc pour la partie département et étudiant 2022-04-26 16:51:42 +02:00
leonard_montalbano a12c4fe885 réctification de la doc pour la partie département et étudiant 2022-04-26 16:51:42 +02:00
leonard_montalbano 87505e72d1 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-04-26 16:15:35 +02:00
leonard_montalbano 5c8de2b9f2 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-04-26 16:15:35 +02:00
Emmanuel Viennet f2b89431e4 Ajouts détails sur config. d'un utilisateur pour l'API 2022-04-26 13:48:25 +02:00
Emmanuel Viennet 5b1ad81249 Ajouts détails sur config. d'un utilisateur pour l'API 2022-04-26 13:48:25 +02:00
Emmanuel Viennet d020dbbe73 Correction Guide Config. 2022-04-24 23:19:00 +02:00
Emmanuel Viennet 42f4fe05ff Correction Guide Config. 2022-04-24 23:19:00 +02:00
Emmanuel Viennet edfd1266be Détail ssur parcours BUT 2022-04-24 22:43:36 +02:00
Emmanuel Viennet 044c213455 Détail ssur parcours BUT 2022-04-24 22:43:36 +02:00
Emmanuel Viennet 5c4ebfdffa Material Theme + styles custom 2022-04-24 16:32:20 +02:00
Emmanuel Viennet 9352de83b4 Material Theme + styles custom 2022-04-24 16:32:20 +02:00
Emmanuel Viennet d41c026dc6 détails 2022-04-24 16:31:39 +02:00
Emmanuel Viennet f26fdb2478 détails 2022-04-24 16:31:39 +02:00
Emmanuel Viennet ad317ea9f8 Modélisation parcours BUT 2022-04-23 13:18:39 +02:00
Emmanuel Viennet db7dc8cabc Modélisation parcours BUT 2022-04-23 13:18:39 +02:00
Emmanuel Viennet 0c23daf1e4 ajout précision sur config avec proxy 2022-04-13 11:17:23 +02:00
Emmanuel Viennet a9caa7625d ajout précision sur config avec proxy 2022-04-13 11:17:23 +02:00
Emmanuel Viennet fb063d7754 MAJ conseils dev. Suppression de qq docs obsolètes. 2022-04-02 08:23:13 +02:00
Emmanuel Viennet bc6b790bbf MAJ conseils dev. Suppression de qq docs obsolètes. 2022-04-02 08:23:13 +02:00
Emmanuel Viennet 60be4b7ad3 ajout clé publique repository 2022-03-01 23:29:22 +01:00
Emmanuel Viennet 24acf76dd4 ajout clé publique repository 2022-03-01 23:29:22 +01:00
Emmanuel Viennet 2e75f814c6 Petites corrections 2022-02-27 09:28:16 +01:00
Emmanuel Viennet 94ee633f11 Petites corrections 2022-02-27 09:28:16 +01:00
Emmanuel Viennet df44c23d78 Mise à jour doc logos, documents, PV 2022-02-27 09:19:20 +01:00
Emmanuel Viennet 53dc2982cb Mise à jour doc logos, documents, PV 2022-02-27 09:19:20 +01:00
Emmanuel Viennet 9fc2d9655b Merge pull request 'mise a jour doc fond de page' (#20) from jmplace/DocScoDoc:fond_de_page into master
Reviewed-on: viennet/DocScoDoc#20
2022-02-27 08:34:17 +01:00
Emmanuel Viennet 54dd4da541 Merge pull request 'mise a jour doc fond de page' (#20) from jmplace/DocScoDoc:fond_de_page into master
Reviewed-on: viennet/DocScoDoc#20
2022-02-27 08:34:17 +01:00
Jean-Marie PLACE 46dccc6ba0 mise a jour doc fond de page 2022-02-26 14:34:52 +01:00
Jean-Marie PLACE 1250f69535 mise a jour doc fond de page 2022-02-26 14:34:52 +01:00
Emmanuel Viennet 348d841951 Mise à jour liste commandes 2022-02-13 15:16:39 +01:00
Emmanuel Viennet e99a066894 Mise à jour liste commandes 2022-02-13 15:16:39 +01:00
Emmanuel Viennet 69d083cfb6 Merge pull request 'mention du reglage de SCODOC_MAIL_FROM par le .env' (#19) from jmplace/DocScoDoc:SCODOC_MAIL_FROM into master
Reviewed-on: viennet/DocScoDoc#19
2022-02-13 15:01:27 +01:00
Emmanuel Viennet d7bbb11113 Merge pull request 'mention du reglage de SCODOC_MAIL_FROM par le .env' (#19) from jmplace/DocScoDoc:SCODOC_MAIL_FROM into master
Reviewed-on: viennet/DocScoDoc#19
2022-02-13 15:01:27 +01:00
Jean-Marie PLACE c56bf80abf mention du reglage de SCODOC_MAIL_FROM par le .env 2022-02-13 14:56:40 +01:00
Jean-Marie PLACE d519723e02 mention du reglage de SCODOC_MAIL_FROM par le .env 2022-02-13 14:56:40 +01:00
Emmanuel Viennet 9208bac8c9 Note sur les caches 2022-02-12 12:02:21 +01:00
Emmanuel Viennet 110db52994 Note sur les caches 2022-02-12 12:02:21 +01:00
Emmanuel Viennet 232a93ab5f petites corrections 2022-02-02 08:27:06 +01:00
Emmanuel Viennet 9fadb97c9f petites corrections 2022-02-02 08:27:06 +01:00
Emmanuel Viennet a10943bb9c Merge pull request 'doc_users_v2' (#17) from jmplace/DocScoDoc:doc_users_v2 into master
Reviewed-on: viennet/DocScoDoc#17
2022-02-02 08:15:05 +01:00
Emmanuel Viennet aa2c349bb4 Merge pull request 'doc_users_v2' (#17) from jmplace/DocScoDoc:doc_users_v2 into master
Reviewed-on: viennet/DocScoDoc#17
2022-02-02 08:15:05 +01:00
Jean-Marie PLACE c39e4e067e complément sur doc AdminUsers.md 2022-02-02 07:59:29 +01:00
Jean-Marie PLACE fc6e6e72d2 complément sur doc AdminUsers.md 2022-02-02 07:59:29 +01:00
Jean-Marie Place de5071495c Mise à jour de 'docs/ScoDocApogee.md' 2022-02-02 06:18:42 +01:00
Jean-Marie Place 570b10ae9d Mise à jour de 'docs/ScoDocApogee.md' 2022-02-02 06:18:42 +01:00
Emmanuel Viennet 022e4b8b50 bonus dispos 2022-02-01 11:39:04 +01:00
Emmanuel Viennet f8b569e6e8 bonus dispos 2022-02-01 11:39:04 +01:00
Emmanuel Viennet 0a6a096172 active extension footnotes 2022-02-01 07:50:34 +01:00
Emmanuel Viennet c3065894b6 active extension footnotes 2022-02-01 07:50:34 +01:00
Emmanuel Viennet 79128cef47 note sur BUT 2022-02-01 07:10:59 +01:00
Emmanuel Viennet dfa1a388db note sur BUT 2022-02-01 07:10:59 +01:00
Emmanuel Viennet a512de5047 instructions restauration sauvegarde 2022-02-01 07:10:16 +01:00
Emmanuel Viennet 0ff8b9e869 instructions restauration sauvegarde 2022-02-01 07:10:16 +01:00
Emmanuel Viennet 7ae86ace1b WIP API 2022-01-08 14:33:21 +01:00
Emmanuel Viennet 46e633b129 WIP API 2022-01-08 14:33:21 +01:00
Emmanuel Viennet 6266e9f789 WIP API 2022-01-08 00:58:33 +01:00
Emmanuel Viennet bfdae65a39 WIP API 2022-01-08 00:58:33 +01:00
leonard_montalbano 1523440775 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-01-03 14:19:52 +01:00
leonard_montalbano 19b2f06a25 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-01-03 14:19:52 +01:00
Emmanuel Viennet 23457d7713 mise en forme 2021-12-31 14:39:21 +01:00
Emmanuel Viennet 8d33ce1758 mise en forme 2021-12-31 14:39:21 +01:00
leonard_montalbano 3ca7844772 ajout du .idea/ dans le gitignore 2021-12-31 14:24:59 +01:00
leonard_montalbano 3e56366f0c ajout du .idea/ dans le gitignore 2021-12-31 14:24:59 +01:00
leonard_montalbano 3564c0e59b correction de différents points sur la doc api 2021-12-31 12:07:36 +01:00
leonard_montalbano 56c02f6a6c correction de différents points sur la doc api 2021-12-31 12:07:36 +01:00
leonard_montalbano 52c829574f Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2021-12-31 11:59:12 +01:00
leonard_montalbano 29b4915ef5 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2021-12-31 11:59:12 +01:00
leonard_montalbano 4b0c3db2bd a 2021-12-31 11:58:45 +01:00
leonard_montalbano e452cbe2d6 a 2021-12-31 11:58:45 +01:00
leonard_montalbano 72e5d2401a correctifs sur différents points de la doc 2021-12-31 11:29:27 +01:00
leonard_montalbano ca20ff89e1 correctifs sur différents points de la doc 2021-12-31 11:29:27 +01:00
Emmanuel Viennet 7b87725f18 mise en forme 2021-12-30 13:40:30 +01:00
Emmanuel Viennet 7e32332f4c mise en forme 2021-12-30 13:40:30 +01:00
Emmanuel Viennet 7b1b33c8c4 Merge pull request 'typos + compléments' (#14) from jmplace/DocScoDoc:doc_PR#3 into master
Reviewed-on: viennet/DocScoDoc#14
2021-12-30 13:34:41 +01:00
Emmanuel Viennet f41ff469f8 Merge pull request 'typos + compléments' (#14) from jmplace/DocScoDoc:doc_PR#3 into master
Reviewed-on: viennet/DocScoDoc#14
2021-12-30 13:34:41 +01:00
Jean-Marie PLACE 630225f5b1 typos + compléments 2021-12-30 11:42:18 +01:00
Jean-Marie PLACE 126c034c58 typos + compléments 2021-12-30 11:42:18 +01:00
Emmanuel Viennet f38bbb5804 blocs de code: mode bash 2021-12-30 10:55:32 +01:00
Emmanuel Viennet e7ae9a6a91 blocs de code: mode bash 2021-12-30 10:55:32 +01:00
Emmanuel Viennet 84b812d911 mise en forme 2021-12-30 10:15:20 +01:00
Emmanuel Viennet ccb90ef8b9 mise en forme 2021-12-30 10:15:20 +01:00
Emmanuel Viennet c8d7cc4f0b ajouts et corrections 2021-12-30 09:58:58 +01:00
Emmanuel Viennet 78a51f8697 ajouts et corrections 2021-12-30 09:58:58 +01:00
Emmanuel Viennet 3dd03f9b7d Merge pull request 'complémennts pull_request' (#13) from jmplace/DocScoDoc:PR#2 into master
Reviewed-on: viennet/DocScoDoc#13
2021-12-30 09:48:50 +01:00
Emmanuel Viennet 6f032db036 Merge pull request 'complémennts pull_request' (#13) from jmplace/DocScoDoc:PR#2 into master
Reviewed-on: viennet/DocScoDoc#13
2021-12-30 09:48:50 +01:00
leonard_montalbano 5937dc8114 complémennts pull_request 2021-12-29 23:29:24 +01:00
leonard_montalbano c893c96b3b complémennts pull_request 2021-12-29 23:29:24 +01:00
Emmanuel Viennet b4ca05be55 Merge pull request 'modification suite à la réunion du 20/12/2021' (#11) from leonard.montalbano/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#11
2021-12-21 17:22:54 +01:00
Emmanuel Viennet 5ffd0749ea Merge pull request 'modification suite à la réunion du 20/12/2021' (#11) from leonard.montalbano/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#11
2021-12-21 17:22:54 +01:00
Emmanuel Viennet 73ce966baf maj liste commandes + détails internes 2021-12-21 17:12:58 +01:00
Emmanuel Viennet 4b9a044bb2 maj liste commandes + détails internes 2021-12-21 17:12:58 +01:00
leonard_montalbano 15f3da8b67 modification suite à la réunion du 20/12/2021 2021-12-21 15:56:23 +01:00
leonard_montalbano d7df642b71 modification suite à la réunion du 20/12/2021 2021-12-21 15:56:23 +01:00
Emmanuel Viennet 554ca6a39c Ajout commande user-role 2021-12-21 00:03:35 +01:00
Emmanuel Viennet 1f9a09c70c Ajout commande user-role 2021-12-21 00:03:35 +01:00
Emmanuel Viennet 499b423073 Merge remote-tracking branch 'origin' 2021-12-20 19:40:59 +01:00
Emmanuel Viennet bb1caaf32c Merge remote-tracking branch 'origin' 2021-12-20 19:40:59 +01:00
Emmanuel Viennet 17a2db23c3 début doc interne développeurs 2021-12-20 19:34:55 +01:00
Emmanuel Viennet 6d1e4d1ece début doc interne développeurs 2021-12-20 19:34:55 +01:00
Emmanuel Viennet 86d56f9316 Merge pull request 'complements_logos' (#9) from jmplace/DocScoDoc:complements_logos into master
Reviewed-on: viennet/DocScoDoc#9
2021-12-20 19:30:09 +01:00
Emmanuel Viennet 69c5ad9b23 Merge pull request 'complements_logos' (#9) from jmplace/DocScoDoc:complements_logos into master
Reviewed-on: viennet/DocScoDoc#9
2021-12-20 19:30:09 +01:00
Jean-Marie PLACE e179139f87 ajout api logos 2021-12-20 17:44:45 +01:00
Jean-Marie PLACE 4d56488159 ajout api logos 2021-12-20 17:44:45 +01:00
Jean-Marie PLACE 18ca7429a7 correctif mise en forme doc logo 2021-12-20 17:23:45 +01:00
Jean-Marie PLACE 6360782fb4 correctif mise en forme doc logo 2021-12-20 17:23:45 +01:00
Emmanuel Viennet 305561cc5e petites corrections 2021-12-18 14:39:55 +01:00
Emmanuel Viennet e62c81338d petites corrections 2021-12-18 14:39:55 +01:00
Arthur ZHU 09ddecf795 modif fiche relations entreprises 2021-12-18 14:39:55 +01:00
Arthur ZHU 0e79f99e1a modif fiche relations entreprises 2021-12-18 14:39:55 +01:00
Emmanuel Viennet d90f63ee9a corrections et questions 2021-12-18 14:39:55 +01:00
Emmanuel Viennet 7cd56f4059 corrections et questions 2021-12-18 14:39:55 +01:00
Arthur ZHU c600d219f2 modif page relations entreprires 2021-12-18 14:39:55 +01:00
Arthur ZHU 7f64c8c111 modif page relations entreprires 2021-12-18 14:39:55 +01:00
Arthur ZHU 258a5e86f9 modif page relations entreprises 2021-12-18 14:39:55 +01:00
Arthur ZHU bec9f78764 modif page relations entreprises 2021-12-18 14:39:55 +01:00
Arthur ZHU 70d12d31df ajout page relations entreprises 2021-12-18 14:39:55 +01:00
Arthur ZHU aed7133ab2 ajout page relations entreprises 2021-12-18 14:39:55 +01:00
Emmanuel Viennet 6238bb6b24 Merge pull request 'complément doc sur logos' (#8) from jmplace/DocScoDoc:complete_doc_logos into master
Reviewed-on: viennet/DocScoDoc#8
2021-12-13 12:42:05 +01:00
Emmanuel Viennet a039e71c06 Merge pull request 'complément doc sur logos' (#8) from jmplace/DocScoDoc:complete_doc_logos into master
Reviewed-on: viennet/DocScoDoc#8
2021-12-13 12:42:05 +01:00
Jean-Marie Place 504b324346 complément doc sur logos 2021-12-12 23:16:21 +01:00
Jean-Marie Place e76e441e90 complément doc sur logos 2021-12-12 23:16:21 +01:00
Emmanuel Viennet 8178c7679f ajout methode donnant les groupes d'un étudiant 2021-11-19 17:14:58 +01:00
Emmanuel Viennet 69e528a5bc ajout methode donnant les groupes d'un étudiant 2021-11-19 17:14:58 +01:00
Emmanuel Viennet 201817fee6 mise en page + qq remarques sur l'API 2021-11-19 16:36:03 +01:00
Emmanuel Viennet d409fd66a9 mise en page + qq remarques sur l'API 2021-11-19 16:36:03 +01:00
Emmanuel Viennet 2e44ff4f51 Documention future API REST 2021-11-19 11:18:02 +01:00
Emmanuel Viennet fe583938e0 Documention future API REST 2021-11-19 11:18:02 +01:00
Emmanuel Viennet e42bd3b0f5 Merge pull request 'master' (#6) from leonard.montalbano/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#6
2021-11-19 10:34:08 +01:00
Emmanuel Viennet 8be16fa32e Merge pull request 'master' (#6) from leonard.montalbano/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#6
2021-11-19 10:34:08 +01:00
leonard_montalbano ad538392e3 revision doc api scodoc9 2021-11-18 17:16:04 +01:00
leonard_montalbano ca7a2fe546 revision doc api scodoc9 2021-11-18 17:16:04 +01:00
leonard_montalbano b000106868 amélioration suite au retour du pdf 2021-11-16 15:17:07 +01:00
leonard_montalbano f280ecf541 amélioration suite au retour du pdf 2021-11-16 15:17:07 +01:00
leonard_montalbano de3ee056ab petit ajustement a droite a gauche de la doc api scodoc 9 2021-11-15 16:14:16 +01:00
leonard_montalbano 873c038640 petit ajustement a droite a gauche de la doc api scodoc 9 2021-11-15 16:14:16 +01:00
Emmanuel Viennet 6baa2dc981 Merge pull request 'enrichissement API scodoc9' (#4) from leonard.montalbano/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#4

(penser à virer le gitignore)
2021-11-12 10:15:50 +01:00
Emmanuel Viennet 3825e37fbb Merge pull request 'enrichissement API scodoc9' (#4) from leonard.montalbano/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#4

(penser à virer le gitignore)
2021-11-12 10:15:50 +01:00
leonard_montalbano 47cf43f418 ajout d'informations complémentaires sur la doc scodoc9 2021-11-10 13:22:10 +01:00
leonard_montalbano a176adf27b ajout d'informations complémentaires sur la doc scodoc9 2021-11-10 13:22:10 +01:00
Emmanuel Viennet 1eb7175bb8 ajout evaluation_listenotes et indique noms dans future API) 2021-11-09 22:24:57 +01:00
Emmanuel Viennet 2db0930bca ajout evaluation_listenotes et indique noms dans future API) 2021-11-09 22:24:57 +01:00
Emmanuel Viennet 018901e448 debut doc nouvelel API à reformatter 2021-11-09 21:37:37 +01:00
Emmanuel Viennet 2d4b651ec7 debut doc nouvelel API à reformatter 2021-11-09 21:37:37 +01:00
Emmanuel Viennet 61902296db roadmap 2021-11-09 21:36:36 +01:00
Emmanuel Viennet b125025eca roadmap 2021-11-09 21:36:36 +01:00
Emmanuel Viennet 994e6224e5 added groups_view 2021-11-01 19:06:52 +01:00
Emmanuel Viennet d5f2acd896 added groups_view 2021-11-01 19:06:52 +01:00
Emmanuel Viennet 6b70947645 modif page API 2021-10-28 10:23:28 +02:00
Emmanuel Viennet 6ed0ab6ab7 modif page API 2021-10-28 10:23:28 +02:00
Emmanuel Viennet f5fb9890fe Lien vers page BUT 2021-10-24 19:23:08 +02:00
Emmanuel Viennet c8b5c47c66 Lien vers page BUT 2021-10-24 19:23:08 +02:00
Emmanuel Viennet f9727c1057 Petit rafraichissement: structure menus, FAQ, ... 2021-10-24 19:18:57 +02:00
Emmanuel Viennet 89fe455235 Petit rafraichissement: structure menus, FAQ, ... 2021-10-24 19:18:57 +02:00
Emmanuel Viennet 62c921b183 ajout sections sur validation à compléter 2021-10-02 09:24:21 +02:00
Emmanuel Viennet 61db2b779f ajout sections sur validation à compléter 2021-10-02 09:24:21 +02:00
Emmanuel Viennet 6edeaf4013 typos 2021-10-01 21:12:41 +02:00
Emmanuel Viennet 6f336b2008 typos 2021-10-01 21:12:41 +02:00
Emmanuel Viennet c8f9e13fcd Merge pull request 'Mise à jour de 'docs/GuideInstallDebian11.md'' (#2) from joseph.maillardet/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#2
2021-10-01 21:09:06 +02:00
Emmanuel Viennet 2b92f0f608 Merge pull request 'Mise à jour de 'docs/GuideInstallDebian11.md'' (#2) from joseph.maillardet/DocScoDoc:master into master
Reviewed-on: viennet/DocScoDoc#2
2021-10-01 21:09:06 +02:00
Joseph Maillardet 06dc89793a Mise à jour de 'docs/GuideInstallDebian11.md' 2021-10-01 18:08:13 +02:00
Joseph Maillardet b2ad4cadf5 Mise à jour de 'docs/GuideInstallDebian11.md' 2021-10-01 18:08:13 +02:00
Emmanuel Viennet e1afcb9834 ajout exemple Lille 2021-10-01 16:05:32 +02:00
Emmanuel Viennet a54a0db0f1 ajout exemple Lille 2021-10-01 16:05:32 +02:00
Emmanuel Viennet fcb46caf01 ajout page BUT 2021-10-01 16:04:34 +02:00
Emmanuel Viennet e67b8690c1 ajout page BUT 2021-10-01 16:04:34 +02:00
Emmanuel Viennet 0092cf7a58 js pour pymdownx (équations LaTeX) 2021-09-30 20:50:50 +02:00
Emmanuel Viennet f4c423a808 js pour pymdownx (équations LaTeX) 2021-09-30 20:50:50 +02:00
Emmanuel Viennet a415fd76e9 info sur locale UTF-8 durant l'install 2021-09-30 20:09:10 +02:00
Emmanuel Viennet 970923d5e3 info sur locale UTF-8 durant l'install 2021-09-30 20:09:10 +02:00
Emmanuel Viennet 5facef1365 détails install 2021-09-30 16:11:55 +02:00
Emmanuel Viennet 206c90e7f5 détails install 2021-09-30 16:11:55 +02:00
Emmanuel Viennet bfc19cbab4 bulletins adhesions 2021-2022 2021-09-30 12:02:20 +02:00
Emmanuel Viennet 4748be09d8 bulletins adhesions 2021-2022 2021-09-30 12:02:20 +02:00
Emmanuel Viennet 1e75f3c551 détail ssur install ScoDoc 9 2021-09-24 20:31:25 +02:00
Emmanuel Viennet 503bfca6e2 détail ssur install ScoDoc 9 2021-09-24 20:31:25 +02:00
Emmanuel Viennet 4f63eb8951 infos sur ScoDoc 9 2021-09-14 12:31:16 +02:00
Emmanuel Viennet e713143096 infos sur ScoDoc 9 2021-09-14 12:31:16 +02:00
Emmanuel Viennet b8a7bd0e78 updates pour ScoDoc 9 2021-09-06 18:43:33 +02:00
Emmanuel Viennet f9c2ef5956 updates pour ScoDoc 9 2021-09-06 18:43:33 +02:00
Emmanuel Viennet 2d0679ed48 updates pour ScoDoc 9 2021-09-06 12:35:49 +02:00
Emmanuel Viennet d254eb46f8 updates pour ScoDoc 9 2021-09-06 12:35:49 +02:00
Emmanuel Viennet 9ff4f6a93c procedure de migration 2021-08-26 14:23:51 +02:00
Emmanuel Viennet 8e6a1e9fe1 procedure de migration 2021-08-26 14:23:51 +02:00
Emmanuel Viennet bd8ad68dc3 .env dans /opt/scodoc-data 2021-08-25 22:37:03 +02:00
Emmanuel Viennet c0bb9a6ba0 .env dans /opt/scodoc-data 2021-08-25 22:37:03 +02:00
Emmanuel Viennet b9c981eeeb nouvelle procedure d'install pour ScoDOc 9 2021-08-25 18:12:05 +02:00
Emmanuel Viennet 6b1da462e7 nouvelle procedure d'install pour ScoDOc 9 2021-08-25 18:12:05 +02:00
Emmanuel Viennet f0055b1531 Install ScoDoc 9 2021-08-24 19:51:54 +02:00
Emmanuel Viennet 46ea96bbba Install ScoDoc 9 2021-08-24 19:51:54 +02:00
Emmanuel Viennet f50767c832 début de mise à jour pour ScoDoc 9 2021-08-22 08:14:55 +02:00
Emmanuel Viennet 0053380c96 début de mise à jour pour ScoDoc 9 2021-08-22 08:14:55 +02:00
Emmanuel Viennet a952eebf0e Ajout document explications export Apogée 2021-06-29 16:39:07 +02:00
Emmanuel Viennet c829137d08 Ajout document explications export Apogée 2021-06-29 16:39:07 +02:00
Emmanuel Viennet d052cbae36 Doc sur tests, fix typo 2021-05-18 13:43:31 +02:00
Emmanuel Viennet b16550771e typos 2021-05-16 09:53:01 +02:00
Emmanuel Viennet 339a720b99 Proécure rapide de maj debian 2021-05-15 23:30:40 +02:00
Emmanuel Viennet 3ae0d97987 note sur maj old debians 2021-05-15 11:12:01 +02:00
Emmanuel Viennet 47fa8eb06d typos 2021-05-09 23:38:03 +02:00
Emmanuel Viennet 54268b527b rubrique actualités 2021-05-09 23:31:43 +02:00
Emmanuel Viennet 0bb3d3eeb2 Documentation API absences 2021-05-01 18:21:58 +02:00
Emmanuel Viennet 3c2c378bbd added list_dept 2021-05-01 14:54:44 +02:00
Emmanuel Viennet 7dfea680ba Add robots.txt and link to favicon 2021-04-25 21:43:21 +02:00
Emmanuel Viennet 3904b951f1 fixes 2021-04-22 21:51:06 +02:00
Emmanuel Viennet 3d0b4e791c maj adhérents 2021-02-18 08:52:07 +01:00
Emmanuel Viennet d4b8c0ba85 more examples 2021-02-18 08:36:22 +01:00
Emmanuel Viennet 52ce9f2ba2 config serveur dev ScoDoc 7 2021-02-01 19:55:50 +01:00
Emmanuel Viennet 85ee5db459 portail accès étudiants + fix doc systemd 2021-01-29 22:18:25 +01:00
Emmanuel Viennet 950a92ff18 Ajout infos développeurs 2021-01-29 13:41:40 +01:00
Emmanuel Viennet a59c0e9a41 typos 2021-01-28 15:24:02 +01:00
Emmanuel Viennet b947c03b69 Fix: liens tickets 2021-01-28 15:18:22 +01:00
Emmanuel Viennet 5427e91be4 navigation menus 2021-01-28 15:03:04 +01:00
Emmanuel Viennet 18cffea24d infos for developpers 2021-01-28 09:47:27 +01:00
Emmanuel Viennet c799edbe11 Presentation générale et transition semestre 2021-01-25 23:47:24 +01:00
Emmanuel Viennet c52bd8eaa5 More infos on dev 2021-01-24 21:08:18 +01:00
Emmanuel Viennet eeff51521f Mémo git etc. 2020-12-23 09:01:25 +01:00
Emmanuel Viennet 389aa3fb4e membres asso 2020-12-23 09:00:34 +01:00
Emmanuel Viennet 76570ea3bd IFS 2020-12-21 19:35:58 +01:00
Emmanuel Viennet 309f761515 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2020-12-15 23:41:07 +01:00
Emmanuel Viennet 33bc010572 Offre stage DUT 2020-12-15 16:49:01 +01:00
Emmanuel Viennet bd226b6c04 Merge pull request 'updated README' (#1) from testeur/DocScoDocTest:master into master
Reviewed-on: viennet/DocScoDoc#1
Merci.
2020-10-22 11:17:35 +02:00
viennet 755d9016a2 updated README 2020-10-22 11:13:36 +02:00
Emmanuel Viennet 43f10490fb added FAQ to toc 2020-10-22 10:57:45 +02:00
Emmanuel Viennet 04fd420c9e démissions 2020-10-21 16:09:27 +02:00
Emmanuel Viennet 93fccf77d6 lien asso 2020-10-21 15:09:58 +02:00
Emmanuel Viennet 7382e5210e utilisateurs 2020-10-21 15:06:19 +02:00
Emmanuel Viennet c17ce2ca05 documente PV jury et lettres 2020-10-14 00:02:21 +02:00
Emmanuel Viennet e0239f5dce Avertissement sur reinstallation Linux 2020-10-05 14:27:03 +02:00
Emmanuel Viennet ddc8dec69a publishing script. 2020-09-26 14:36:00 +02:00
Emmanuel Viennet 69089490ee Fix code example 2020-09-26 10:02:20 +02:00
Emmanuel Viennet 83e3634b3f Clarifie migrations/mises a jour 2020-09-25 15:53:01 +02:00
Emmanuel Viennet 6257424a25 - Added link to gitea;
- Removed extra files;
- gitignore MacOS files
2020-09-21 22:24:48 +02:00
Emmanuel Viennet ae90acb86d Initial 2020-09-21 16:30:27 +02:00
281 changed files with 32907 additions and 2548 deletions

7
.gitignore vendored
View File

@ -191,3 +191,10 @@ CVS
# MkDocs ScoDoc
site/
# Pycharm
.idea/
# VS Code
.vscode/
*.code-workspace

View File

@ -5,6 +5,7 @@ Documentation (Web) de ScoDoc, en [MkDocs](https://www.mkdocs.org/).
Version en ligne sur [scodoc.org](https://scodoc.org).
## Historique
L'ancienne 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
@ -12,6 +13,26 @@ L'ancienne documentation de ScoDoc7, hébergée au LIPN sur une plate-forme
Le site est depuis hébergé sur [https://scodoc.org].
## Installation mkdocs
Il est recommandé de créer un virtualenv:
```bash
python3.11 -m venv venv
source venv/bin/activate
```
puis d'y installer les composants suivants:
```bash
pip install mkdocs
pip install pymdown-extensions
pip install mkdocs-material
pip install mkdocs-plugin-inline-svg
```
Pour générer le site:
```bash
mkdocs build
```

View File

@ -1,34 +1,220 @@
# Gestion des utilisateurs dans ScoDoc
## Gestion des utilisateurs dans ScoDoc
ScoDoc gère sa liste d'utilisateurs (enseignants, secrétaires) dans
une base de données SQL.
ScoDoc gère sa propre base d'utilisateurs (enseignants, administratifs,
secrétaires). Rappelons que les étudiants ne sont pas des utilisateurs, ils
n'ont pas d'accès direct au logiciel.
## Principes généraux
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Il est prévu de développer un connecteur vers LDAP, mais ce n'est pas encore disponible (avis aux volontaires, voir https://www-lipn.univ-paris13.fr/projects/scodoc/ticket/140)
Les utilisateurs sont associés à:
- un identifiant unique (`user_name`), propre à ScoDoc;
- une adresse email;
- un ensemble de rôles;
- un département ScoDoc de rattachement (optionnel);
- un statut actif/inactif.
- d'autres attributs, comme l'identifiant CAS (voir [Configuration du CAS](ConfigCAS.md))
### 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**.
### Rôles et permissions
La table **sco_users** contient:
Les rôles sont eux-même associés à des permissions: on donne une permission (ex:
"enregistrer des absences") à un ou plusieurs rôles, et on associe chaque compte
utilisateur à un ou plusieurs rôles. Ce système est à la fois flexible et facile
à configurer. Plus de détails [sur la page dédiée](ConfigPermissionsDept.md).
**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")
Un rôle permet de grouper un ensemble de permissions nécessaire pour remplir des
tâches données (secrétariat, responsable de formation, intervenant enseignant,
...).
Un utilisateur peut être associé à un nombre quelconque de rôle, chaque
association étant valable pour un département donné (ou bien éventuellement
tous). Il peut ainsi être "Responsable" dans un département et "Enseignant" dans
un autre.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> encodage `utf-8`, sauf si vous avez modifié l'installation.
### Département de rattachement
Pour la signification des rôles et l'utilisation du département, voir [ConfigPermissions](ConfigPermissions.md).
Le département de rattachement est utilisé pour afficher rapidement la liste des
comptes d'un département (accès par un responsable de formation, chef de
département, ...). Certains comptes ne sont pas rattachés à un département
(administrateurs).
### Fermeture des comptes
En principe, on ne **supprime** pas de compte utilisateur s'ils ont déjà été
utilisés. En effet, afin de permettre la traçabilité des opérations, ScoDoc
conserve des références aux utilisateurs. Pour fermer un compte, on le rend
**inactif**. Un utilisateur inactif ne peut plus se connecter, et n'apparait pas
dans les listes par défaut.
## Opérations et cycle de vie des utilisateurs
Un compte utilisateur peut être modifié par 3 types d'utilisateurs :
- L'utilisateur lui-même;
- un administrateur du département de rattachement de l'utilisateur;
- le super administrateur.
Les opérations existantes sont :
- La création;
- la demande de renouvellement de mot de passe;
- la désactivation.
### Notes
- La suppression d'un utilisateur est impossible (nécessité de garder la trace
des anciens historiques), mais on peut le rendre inactif (il n'apparait alors
pas dans la liste).)
- Le mécanisme de changement de mot de passe de ScoDoc 7 (par envoi d'un nouveau
mot de passe par mail) a été remplacé par l'ajout de la mention suivante dans
le formulaire de connexion :
```text
En cas d'oubli de votre mot de passe cliquez ici pour le réinitialiser.
```
### Création d'un utilisateur (par formulaire)
La création d'un utilisateur peut être faite par un administrateur ou super
administrateur. Le lien `Ajouter un utlisateur` permettant cela se trouve dans
la page de gestion des utilisateurs (accessible par le menu latéral)
**Le mot de passe** peut être
- saisi par le créateur de l'utilisateur (il appartient alors au créateur de
communiquer ce mot de passe à l'utilisateur final);
- ou initialisé à une valeur non communiquée, à charge pour l'utilisateur final
de finaliser la création du mot de passe avant d'utiliser son accès (il y est
invité par un email qui lui est envoyé).
**Les options de création (mail)** permettent également de choisir parmi les 3
scenarii suivants :
1. un message d'accueil l'invitant à initialiser son mot de passe;
2. un message de bienvenue simple;
3. aucun message.
Une case à cocher `envoyer un mail d'accueil à l'utlisateur` permet de choisir
la troisième option (si décochée), sinon la case suivante `indiquer par mail de
changer le mot de passe initial` permet de choisir entre l'option 1 et l'option
Dans tous les cas les mails seront envoyés avec l'adresse de réponse précisée
par la valeur de la variable de configuration `email_from_addr`, qui peut être
spécifié au niveau général ou département par département (voir
[Configuration des envois d'emails](ConfigEmail.md))
**Le département d'appartenance** peut être choisi si le créateur est
administrateur pour plusieurs départements. Il aura alors le loisir
de sélectionner l'un des départements qu'il administre (liste déroulante).
### Création en masse (fichier xlsx)
Le super-administrateur (et lui seulement) peut également créer des comptes en
masse par téléversement d'un fichier au format `.xlsx` par le biais du lien
`importer des utilisateurs` de la même page de gestion des utilisateurs.
La page affichée lui permet d'importer un modèle qu'il doit compléter et re-soumettre à ScoDoc
selon le même schéma que la saisie de note par fichier Excel.
Les colonnes à remplir sont les suivantes :
- `user_name`: le nom de connexion de l'utilisateur; (obligatoire, unique dans scodoc)
- `nom`: le nom de l'utilisateur; (obligatoire)
- `prenom`: le prénom de l'utilisateur; (obligatoire)
- `email`: l'email de l'utilisateur; (obligatoire, unique dans scodoc)
- `roles`: le ou les rôles attribués à l'utilisateur séparés par des virgules (exemple `Admin_RT, Ens_GEII`)
- `dept`: le département de rattachement de l'utilisateur (acronyme, en lettres capitales).
- `cas_id`, ...: optionnel, voir [Configuration du CAS](ConfigCAS.md)
_Note_:
- Tous les utilisateurs sont créés ou bien aucun.
- Un mail est envoyé à chaque utilisateur nouvellement créé.
### Changement du mot de passe
Deux circonstances sont envisagées.
#### Oubli de mot de passe
Lorsqu'un utilisateur a perdu son mot de passe, il a la possibilité de retrouver
son accès sans intervention d'un administrateur. Il lui suffit de demander la
réinitialisation par le lien situé sur la page de connexion. Après renseignement
de son email (qui est maintenant identifiant dans scodoc), un mail lui est
envoyé. ce mail contient un lien comportant un jeton à durée limitée. Ce lien
renvoie vers la page permettant de redéfinir le mot de passe de l'utilisateur.
#### Édition du profil
Si l'utilisateur peut se connecter, il peut éditer son profil (et par là,
modifier son email et/ou son mot de passe). La barre latérale de l'écran
principal de scodoc affiche dans le coin supérieur gauche la version courante de
scodoc ainsi que l'identification de l'utilisateur actuel. Un clic sur le nom
permet à l'utilisateur d'éditer son profil.
### Activation/désactivation
Une fois créé, le compte utilisateur conserve son existence. Il peut cependant être rendu inactif:
- soit à l'expiration de la date de validité spécifiée à la création ou lors d'un modification
- soit directement par un administrateur.
Quelle que soit la procédure, le compte existe encore et conserve son email (il
n'est donc pas possible de créer un nouveau compte associé au même email). Il
est simplement impossible de se connecter ou de modifier le profil de ce compte
par l'utilisateur lui-même.
## Implémentation (pour les développeurs)
Le graphe d'état ci-dessous explicite les différents états que peux prendre un
compte utilisateur en fonction des opérations qu'il subit.
On notera:
1. Que la création (1) peut le placer initialement dans deux états différents
selon le mode de création choisi.
2. Que l'on peut demander le renouvellement du mot de passe plusieurs fois même
sans avoir complété la procédure.
3. Que les états `créé`et `créé + ticket`permettent la connexion (sous réserve
de la connaissance du mot de passe).
<img src="/fig/GrapheUser.png" />
**SCODOC**.
La table **user** contient:
| **Colonne** | **Type** | Contenu | Modifié par |
|-------------------|-----------------------------|--------------------------------------------------------------|----------------|
| id | integer | identifiant interne unique | 1 |
| user_name | character varying(64) | nom de login | 1 |
| email | character varying(120) | adresse mail (unique dans la base) | 1, 6 |
|nom | character varying(64) | | 1, 6 |
|prenom | character varying(64) | | 1, 6 |
|dept | character varying(32) | département de rattachement (identifiant numérique) | 1, 6 |
|active | boolean | | 1, 7, 9 |
|password_hash | character varying(128) | hash password | 1, 6 |
|password_scodoc7 | character varying(42) | deprecated (utilisé lors de la migration scodoc7 > scodoc9) | 1, 2, 4, 5, 6 |
|last_seen | timestamp without time zone | date de dernière connexion | 1, A |
|date_modif_passwd | timestamp without time zone | | 1, 2, 4, 5, 6 |
|date_created | timestamp without time zone | | 1 |
|date_expiration | timestamp without time zone | | 1 |
|passwd_temp | boolean | deprecated | |
|token | text | dernier token émis (changement de mot de passe) | 1a, 3 |
|token_expiration | timestamp without time zone | date d'expiration du dernier token émis | 1a, 3 |
(les champs utilisé pour le CAS ne sont pas mentionnés ici)
🚸 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).
!!! note "Voir aussi"
- [Configuration du CAS](ConfigCAS.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [Configuration des envois d'emails](ConfigEmail.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,38 +0,0 @@
# 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 | &nbsp;
--- | ---- | ---
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

View File

@ -38,7 +38,7 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
"""Un exemple simple de bulletin de notes en version PDF seulement.
Part du bulletin standard et redéfini la partie centrale.
"""
description = 'exemple (ne pas utiliser)' # la description doit être courte: elle apparait dans le menu de paramètrage
description = 'exemple (ne pas utiliser)' # la description doit être courte: elle apparait dans le menu de paramétrage
supported_formats = [ 'pdf' ] # indique que ce générateur ne peut produire que du PDF (la version web sera donc celle standard de [ScoDoc](ScoDoc.md))
# En général, on veut définir un format de table spécial, sans changer le reste (titre, pied de page).
@ -216,12 +216,12 @@ Type | Nom | Description | Exemple de valeur
Type | Nom | Description | Exemple de valeur
----| --- | ---- | ---
int | annee | | 2011
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.'
| 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.
@ -229,6 +229,14 @@ 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.
#### Parcours et référentiel BUT
Type | Nom | Description | Exemple de valeur
--------| ---------------------- | ---- | ---
string | parcours_titre | titre du parcours | "Cybersécurité"
string | parcours_code | code du parcours | "Cyber"
string | refcomp_specialite | code spécialité | "RT"
string | refcomp_specialite_long| spécialité | "Réseaux et Télécommunications"
### Résultats (notes) de l'étudiant dans le semestre
Quelques infos sur les résultats. Le détail des notes est dans la
@ -428,9 +436,13 @@ Le champ `notes` dans une évaluation est un dictionnaire dont les clés sont le
| 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.
Pour la mise au point, il peut être utile de recourir à la bonne vieille
fonction log, qui envoie du texte dans le fichier de log courant, normalement
`/opt/scodoc-data/log/scodoc.log`. La date et le saut de ligne final sont
automatiquement ajoutés.
```
log("toto")
```

261
docs/Assiduites.md Normal file
View File

@ -0,0 +1,261 @@
# Module "Assiduités"
Ce module de ScoDoc remplace l'ancien module de suivi des absences de Scodoc.
En plus de moderniser l'ancien module, le module assiduités met à disposition une API complète.
Ce projet a été développé en 2022-2023, par Matthias Hartmann, apprenti de l'IUT de
Lannion financé par l'Association ScoDoc.
**Ce module est disponible à partir de ScoDoc version 9.6**.
[Vidéo de présentation du module d'assiduités ](#) TODO EV à publier sur la chaîne YT
## Fonctionnalités
Le module fournit:
- Gestion des absences/présences/retards
- Précision des saisies (périodes déterminées par une heure de début et une
heure de fin au lieu de demi-journées)
- Gestion et sauvegarde de justificatifs (documents)
- Une [API complète](ScoDoc9API.md#api-assiduites)
## Guide d'utilisation
- [Module "Assiduités"](#module-assiduités)
- [Fonctionnalités](#fonctionnalités)
- [Guide d'utilisation](#guide-dutilisation)
- [Migration de l'ancien module](#migration-de-lancien-module)
- [Personnalisation du module](#personnalisation-du-module)
- [Saisie des Assiduités](#saisie-des-assiduités)
- [Saisie d'un groupe](#saisie-dun-groupe)
- [Saisie Journalière](#saisie-journalière)
- [Saisie différée](#saisie-différée)
### Migration de l'ancien module
Afin de favoriser la transition de l'ancien module au nouveau, un script de
migration a été développé: à l'installation de ScoDoc 9.6, les anciennes
données d'absences et justificatifs sont traduites pour ce module.
Voir détails dans [la documentation d'installation](UpgradeToDeb12Sco96.md) et
sur la [documentation des commandes de migration des absences](AssiduitesMigration.md).
### Personnalisation du module
Le module possède deux types de configuration, une générale et une par département/semestre.
**La configuration générale permet de configurer la ligne temporelle visible sur certaines pages de saisie d'assiduités.**
![Configuration de l'assiduité : Général](screens/config_assiduites_gen.png)
Route : `/ScoDoc/config_assiduites`
- `Début de la journée` : l'heure de début de la ligne temporelle (par défaut :
8h00)
- `L'heure de midi` : l'heure pivot qui sépare la matinée de l'après-midi (par
défaut : 13h00)
- `Fin de la journée` : l'heure de fin de la ligne temporelle (par défaut :
18h00)
- `Granularité` : La granularité de la ligne temporelle. (par défaut : 15 min)
**La configuration par département/semestre permet de configurer certaines actions liés à l'assiduité**
![Configuration de l'assiduité : département](screens/config_assiduites_dept.png)
Route : `/ScoDoc/<Dept>/Scolarite/edit_preferences`
- `Forcer la déclaration du module` : Forcer les utilisateurs de ScoDoc à
renseigner le module à chaque saisie d'assiduités.
- `Forcer l'appel des présents` : Force les utilisateurs à noter les
présences/absences/retard lors d'une saisie.
- `Durée par défaut d'un créneau` : Détermine la durée classique d'un cours. (Ce
sera la période préenregistrée sur la ligne temporelle)
- `Définir l'état par défaut` : Défini l'état par défaut qui sera appliqué aux
étudiants avant validation d'une saisie d'assiduité.
- `Jours non travaillés` : Défini les jours sur lesquels la saisie d'assiduités
ne sera pas possible.
- `Métrique de l'assiduité` : Défini l'unité de l'assiduité qui sera utilisé par
les autres modules de ScoDoc.
- `1/2 J.` : Demi-Journée
- `J.` : Journées
- `H.` : Heures
### Saisie des Assiduités
La saisie se fait soit sur un groupe soit sur un étudiant. Dans tous les cas il
y a deux façons de saisir l'assiduité. Une saisie `Journalière` et une saisie
`Différée`.
#### Saisie d'un groupe
Comme dans l'ancien système, pour saisir l'assiduité d'un groupe il faut se
rendre sur la page un semestre du département concerné.
![Page du semestre concerné](#)
Au bas de cette page vous retrouverez la liste des groupes du semestre. Si vous
avez la permission de modifier l'assiduité, vous observerez 3 boutons
supplémentaires sur chaque groupe vous permettant de voir ou saisir l'assiduité
du groupe.
#### Saisie Journalière
La première chose à faire lorsque vous êtes arrivés sur la page "Saisie
Journalière" c'est de compléter les informations de la séance :
![Capture des sélecteurs](#)
- Le ou les groupes sélectionnés (dans la plupart des cas, le groupe est déjà
présélectionné)
- Le module concerné (par défaut il n'est pas obligatoire de sélectionner un
module, cependant une configuration permet de forcer la sélection)
- La date de la saisie. Attention, seule les dates comprises dans le semestre
sont valides. (Un message d'erreur vous le signalera si la date n'est pas
valide)
Lorsque vous êtes sûr de vous, appuyer sur le bouton `Valider`.
**Attention : La validation est définitive, si vous avez fait une erreur il faudra recharger la page**
Après la validation, les champs précédents seront grisés.
Explication de l'interface
![Capture de l'interface](#)
1. La ligne temporelle (Timeline) sert à désigner la période de l'assiduité qui sera saisie.
Il est possible de la déplacer en maintenant le clic gauche dessus puis en
bougeant la souris.
Si la période n'est pas de la bonne taille, il est possible de l'agrandir ou
de la réduire en plaçant sa souris à l'extrémité droite.
Votre curseur devrait changer, à partir de ce moment là vous pouvez cliquer
puis bouger l'extrémité pour modifier la taille de la période.
Si la période bouge toujours alors que vous avez lâché le clic gauche,
cliquer à nouveau.
2. Les boutons d'actions de masse `Mettre tout le monde : `. Ces boutons
définirons le même état pour chaque étudiant sur la période sélectionnée.
En cliquant sur un bouton d'état, l'état sera mis pour chaque étudiant, pour
modifier cet état il faut appuyer sur un autre bouton d'état.
Si vous souhaitez retirer les assiduités, il faut cliquer sur le bouton
d'état ayant le même état que les étudiants.
3. Les lignes étudiants sont des lignes montrant les informations d'assiduité de
chaque étudiant. Chaque ligne est composée de 3 parties :
1. Le nom, le prénom et une photo de l'étudiant afin de le reconnaître
facilement
2. Une petite ligne temporelle montrant l'assiduité de l'étudiant sur la
journée.
Le carré au début de la ligne montre la dernière assiduité du jour
précédent.
En passant votre souris au dessus des couleurs, vous aurez accès à plus
d'informations sur l'assiduité de l'étudiant.
Cliquer sur une assiduité positionnera la ligne temporelle globale sur
la période de l'assiduité.
La période globale est représentée par un encadré bleu sur la ligne
temporelle.
Les assiduités justifiées et validés sont représentés par leur couleur
respective + un hachage bleu
Les assiduités justifiées mais non validées sont représentés par leur
couleur respective + un hachage rouge.
3. Les boutons d'assiduités individuels. Ces boutons permettent de déterminer l'état de l'étudiant.
Ils fonctionnent de la même façon que les boutons `mettre tout le monde :`.
Si la ligne de l'étudiant est rouge, cela signifie que la période
sélectionnée rentre en conflit avec les assiduités de l'étudiant.
Cliquer sur un bouton d'assiduité ne modifiera pas l'état de l'étudiant
mais ouvrira un menu de résolution de conflit.
![Résolution de conflit](#)
Les assiduités de la page sont enregistrées en temps réel. Lorsque la saisie est
terminée vous pouvez fermer la page.
#### Saisie différée
La page saisie différée a pour but de faciliter la saisie d'assiduités avec
plusieurs périodes.
![Page différée](#)
La page est composée d'un tableau et d'un bouton valider.
**Cette page ne sauvegarde pas automatiquement les modifications**
Explication du tableau :
- La colonne `Noms` : Vous y retrouverez tous les étudiants du groupe
sélectionné. En cliquant sur le titre de la colonne vous pourrez changer
l'ordre des étudiants (croissant ou décroissant)
- Les colonnes `Assiduités` : Lorsque vous arrivez sur la page, une seule
colonne d'assiduité est présente.
Si vous avez besoins d'autres colonnes, appuyer sur le bouton `+`.
Si vous souhaitez supprimer une colonne appuyer sur la `croix X` de la
colonne.
Il vous faudra remplir la colonne afin de pouvoir saisir l'assiduité des
étudiants :
1. La date de début : Sur la première colonne, la date par défaut sera la
date du jour, sur les nouvelles colonnes, la date par défaut sera la date
de fin de la colonne précédente.
2. La date de fin : La date de fin n'est pas renseignée par défaut,
cependant la première fois que vous changer la date de début de la
colonne, la date de fin sera automatiquement mise à jour de façon à
prendre la taille d'un créneau classique (configuration du
semestre/département).
3. Le module concerné par l'assiduité. Ce sélecteur n'est pas obligatoire
par défaut (configuration du semestre/département).
4. `Sélectionner une assiduité` permet de mettre tous les étudiants à un
certain état. Ce sélecteur n'est pas obligatoire.
- Chaque ligne du tableau correspond à un étudiant. Vous pouvez alors
sélectionner l'état de l'assiduité de chaque étudiant pour chaque colonne.
Après avoir rempli le tableau il faudra valider en cliquant sur `valider les assiduités`.
Après validation, toutes les colonnes seront désactivées, si besoins vous pouvez
les réactiver en cliquant sur `Activer` pour chaque colonne.
Il est possible que des erreurs apparaissent. Les erreurs sont gérées par
colonnes puis par étudiant. Cela signifie qu'une erreur de colonne (ex: une
mauvaise date) désactivera complètement la colonne alors qu'une erreur
d'étudiant (ex: l'étudiant possède déjà une assiduité sur cette période)
désactivera uniquement l'envoie de l'assiduité le concernant.
Vous pouvez obtenir plus d'informations sur l'erreur en plaçant votre souris au dessus du ``.
Il est possible de forcer la mise à jour des assiduités : **Attention, cela ne
fonctionnera que pour les assiduités ayant exactement la même période** (ceci
permet de corriger facilement les saisies où l'on aurait oublié d'indiquer le
module).
Chaque colonne possède un numéro distinctif qui est visible en laissant la
souris au dessus de l'entête de la colonne. Ce numéro est utilisé dans les
messages d'erreurs.
!!! note "Voir aussi"
- [Migration des absences vers les assiduités](AssiduitesMigration.md)
- [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
- [API et fichiers justificatifs](FichiersJustificatifs)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -0,0 +1,86 @@
# Migration des absences de ScoDoc 9.5 vers les assiduités 9.6
Lors du passage de ScoDoc 9.5 à 9.6, les anciennes données d'absences et
justificatifs sont traduites pour [le module assiduités](Assiduites.md).
## Script de Migration
Le script se nomme `migrate-abs-to-assiduites` et ne peut se lancer qu'en ligne
de commande:
```bash
su scodoc # au besoin
cd /opt/scodoc
source venv/bin/activate
flask migrate-abs-to-assiduites --help
```
Par défaut, la migration s'opérera sur l'ensemble des départements en utilisant
les préférences de ScoDoc.
Néanmoins le script possède 4 options pour modifier son comportement :
- `-d, --dept`
Permet de restreindre la migration à un département à l'aide de son acronyme.
Utilisation : `flask migrate-abs-to-assiduites -d <ACRONYME>`
- `-m, --morning`
Permet de définir l'heure de début des cours.
Utilisation : `flask migrate-abs-to-assiduites -m <hh:mm>`
exemple : `hh:mm` -> `08:30`
- `-n, --noon`
Permet de définir l'heure de fin du matin (= l'heure de début de l'après-midi).
Utilisation : `flask migrate-abs-to-assiduites -n <hh:mm>`
exemple : `hh:mm` -> `13:30`
- `-e, --evening`
Permet de définir l'heure de fin des cours.
Utilisation : `flask migrate-abs-to-assiduites -e <hh:mm>`
exemple : `hh:mm` -> `18:30`
Les options peuvent senchaîner : `flask migrate-abs-to-assiduites -d TEST -m 10:30 -n 14:50 -e 19:45`
Lors du lancement du script, une barre de progression apparaîtra. Celle si vous
indique l'avancée de la transformation des absences en assiduités.
Une fois arrivée à 100%, Un processus de validation et de justification des
assiduités se lancera. Celui-ci peut (suivant les configurations) prendre un
certain temps. Veuillez ne pas le stopper en cours de route.
Lorsque la migration sera finie, un fichier log de la migration sera généré pour
chaque département. Vous recevrez aussi des statistiques sur le nombre de
justificatif et d'assiduités générés.
## Script de Suppression
En cas de problème, ou si vous souhaitez purger la base de donnée, un script de
suppression des assiduités et des justificatifs est disponible.
Le script se nomme `downgrade-assiduites-module`.
Si vous lancer le script sans aucune option, il ne se passera rien.
Voici les options :
- `-d, --dept`
Permet de restreindre la suppression à un département à l'aide de son acronyme.
Utilisation : `flask downgrade-assiduites-module -d <ACRONYME>`
- `-a, --assiduites`
Provoque la suppression de toutes les assiduités
Utilisation : `flask downgrade-assiduites-module -a`
- `-j, --justificatifs`
Provoque la suppression de tous les justificatifs
Utilisation : `flask downgrade-assiduites-module -j`
Quelques exemples :
- Pour tout supprimer : `flask downgrade-assiduites-module -a -j`
- Pour supprimer un département : `flask downgrade-assiduites-module -d DEPT -a -j`
- Pour supprimer l'assiduité d'un département : `flask downgrade-assiduites-module -d DEPT -a`
- Pour supprimer les justificatifs d'un département : `flask downgrade-assiduites-module -d DEPT -j`
!!! note "Voir aussi"
- [Le module assiduités](Assiduites.md)
- [Mise à jour vers ScoDoc 9.6 / Debian 12](UpgradeToDeb12Sco96.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,14 +1,32 @@
# 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 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, Lyon, Mulhouse, Nantes, pour
ne citer que ceux-là.
Le développement d'un logiciel de cette ampleur prend du temps et demande des moyens matériels : serveurs, machines de développement et de test. La possibilité de recruter des stagiaires, apprentis ou CDD pour travailler sur le projet a souvent été évoquée. Pour se donner ces possibilités et pérenniser le projet, nous avons créé début 2020 une association à but non lucratif (loi 1901).
Le développement d'un logiciel de cette ampleur prend du temps et demande des
moyens matériels : serveurs, machines de développement et de test. La
possibilité de recruter des stagiaires, apprentis ou CDD pour travailler sur le
projet a souvent été évoquée. Pour se donner ces possibilités et pérenniser le
projet, nous avons créé début 2020 une association à but non lucratif (loi
1901).
Les établissements ou départements qui utilisent ScoDoc sont encouragés à adhérer à l'association. Leur cotisation permettra de financer les actions de l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise à jour et support technique.
Les établissements ou départements qui utilisent ScoDoc sont encouragés à
adhérer à l'association. Leur cotisation permettra de financer les actions de
l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise à
jour et support technique.
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion PDF](papers/Adhesion-2020-Association-ScoDoc.pdf) ([version Word](papers/Adhesion-2020-Association-ScoDoc.docx)), à renvoyer à <emmanuel.viennet@gmail.com>.
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion
PDF](papers/Adhesion-2023-2024-Association-ScoDoc.pdf) ([version
Word](papers/Adhesion-2023-2024-Association-ScoDoc.docx)), à renvoyer à
<emmanuel.viennet@gmail.com>. (note: toutes les informations nécessaires à la
"création fournisseur" sont sur le bulletin d'adhésion).
Je vous remercie de votre support qui rendra possible la pérennité du projet ScoDoc
Nous vous remercions de votre support qui rendra possible la pérennité du projet
ScoDoc.

372
docs/BUT.md Normal file
View File

@ -0,0 +1,372 @@
# Le Bachelor Universitaire de Technologie (BUT)
Formation en trois ans dispensées par les IUT français, introduite en 2021, et
basée sur une forme d'approche par compétences nécessitant un système
d'évaluation spécifique.
Cette page décrit les principaux éléments du BUT utiles à comprendre pour le
gérer avec ScoDoc. Vous trouverez ensuite un exemple de mise en place des
semestres d'un BUT ici: [Modélisation BUT: exemple de la spécialité
Informatique](BUTExempleInfo.md). Pour les curieux et les développeurs, la page
[modélisation des parcours BUT](ModelisationParcoursBUT.md) donne quelques
détails sur la façon dont ScoDoc organise les objets du BUT.
De nombreux aspects sont aussi décrits dans les
<a
href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1"
target="_blank">Tutoriels sur YouTube <img src="/img/tube.png" alt=""
style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
## UE, modules, évaluations
- UE : Unité d'Enseignement, associée à des crédits (ECTS) et validée (ou non)
en jury. Une UE est rattachée à une *formation*.
- Module: dans ScoDoc, un module désigne une dispositif pédagogique, évalué.
Dans les formations BUT, le module prend la forme d'une *ressource* ou d'une
SAE (*situation d'apprentissage et d'évaluation*). Un module est rattaché à
une (seule) UE.
Dans le BUT, un module est aussi associé à une ou ou plusieurs UE, cette
association étant affecté de *coefficients* (une valeur par UE associée).
- Évaluation: dispositif produisant une note pour les étudiants inscrits à un
module. L'évaluation est associée à des coefficients.
## Structure des formations par compétences de type BUT
L'architecture d'une formation BUT est définie par les éléments suivants:
- Compétence
- Niveau
- Composantes essentielles ("En respectant les règles métiers...")
- Situations professionnelles ("Surveillance de la qualité de la
production...")
- Niveaux de compétence: associés à une année. Attention, le niveau 1 commence
parfois en deuxième année.
- Numéro (1, 2, 3)
- Titre
- Apprentissages critiques (AC): "Identifier les dysfonctionnements du réseau local..."
Chaque niveau se décompose en deux UE (aka "regroupement cohérent d'UE"), en
semestres impair et pair d'une année scolaire.
La figure ci-dessous indique la correspondance entre compétences (découpées en
niveaux) et UEs.
<img src="/fig/but-competences-ues.png" width="70%">
## Calcul des notes
Les rôles des SAÉ et ressources étant symétriques, on appellera dans la suite (et
dans ScoDoc) *module* un objet de type SAÉ *ou* ressource.
Dans la suite, on considère les poids et coefficients toujours positifs ou
nuls (pas de coefficients négatifs).
### Coefficients des SAÉ et ressources
Les coefficients des modules (ressources et SAÉ) sont fixés par le PN (*adapté
localement*).
Traditionnellement, chaque module $m$ est noté par une note (moyenne de ses
évaluations) représentée par le nombre $\mu_m$. Si $c_{u,m}$ désigne le coefficient du
module $m$ dans l'UE $u$, la moyenne d'UE de l'étudiant est
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \mu_m$$
Mais pour le BUT, on souhaite avoir des évaluations associées à un
sous-ensemble de compétences (par exemple via des *apprentissages critiques*),
ce qui se traduit par une note envoyée vers certaines UE mais pas toutes, comme
on le voit dans exemples suivants:
L'exemple ci-dessous est un extrait du référentiel de compétence du BUT GEII. On
voit que les SAÉ et les ressources sont affectées de coefficients dans les deux
UE de ce semestre (S2), ici à parts égales sauf pour les SAÉs 2.1 et 2.2, dites
"mono-compétences", qui contribuent chacune à une seule UE.
<img src="/fig/but-ref-comp-ex-geii.jpg" width="70%">
Un autre exemple, cette fois avec des coefficients différents et un nombre plus
réduit d'apprentissages critiques:
![but-ref-comp-ex-commente](fig/but-ref-comp-ex-commente.png)
### Note d'un module
La note (moyenne) d'un module (SAÉ ou ressource) se calcule à partir de ses
évaluations. Chaque évaluation est pondérée, par un poids $p$ est fixé par
l'enseignant. Ce poids joue le même rôle que le coefficient d'une évaluation
classique, mais peut se décliner en plusieurs valeurs, une par UE associée au
module.
Soit $n_e$ la note à l'évaluation $e$ du module $m$, et $p_{e, u}$ son poids
vers l'UE $u$. La somme des notes d'un module pour l'UE $u$ est:
$$n_u = \sum_e p_{e,u} \, n_e$$
Chaque UE indiquée par le référentiel de formation doit être évaluée: si le
coefficient du module vers l'UE $u$ est non nul, la somme des poids vers
une UE $u$ *doit* être non nulle; si ce n'est pas le cas, le module sera déclaré
*non conforme* et le jury ne pourra pas être tenu.
### Moyenne de module (SAÉ ou ressource)
La moyenne d'un étudiant dans un module est un vecteur, car on a une note moyenne par UE:
$$\mu_{m, u} = \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{u,e}}$$
Toutefois, une moyenne *scalaire* (un nombre entre 0 et 20) est calculée à
titre indicatif (et sera éventuellement utilisée dans certaines fonctions de
ScoDoc conçues avant le BUT):
$$\mu_m = \frac{\sum_e (\sum_u p_{e,u}) \, n_e}{\sum_{u,e} \, p_{u,e}}$$
### Calcul moyenne d'UE
On va considérer les coefficients de modules et d'évaluations:
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{e,u}}$$
L'exemple suivant illustre ce mode de calcul:
<img src="/fig/but-exemple-calcul-notes.png" width="70%">
Par ailleurs, il est (parfois, peut-être) utile de calculer des moyennes par
pôles au sein de l'UE: pôle SAÉ, pôle ressource.
### Validation d'une UE
La validation ou non d'une UE dépend uniquement de la moyenne générale (et des
conditions habituelles d'assiduité et de défaillance spécifiées dans les
règlements des établissements):
<img src="/fig/but-validation-ue.png" width="50%">
Voir plus loin la gestion du parcours et les règles d'obtention du diplôme, qui
peuvent entrainer la validation d'UE a posteriori.
### Capitalisation
Les UE sont capitalisables, c'est à dire qu'un étudiant conserve les UEs
obtenues (avec moyenne > 10/20) s'il arrête temporairement ses études ou redouble un semestre.
En cas de redoublement, l'étudiant qui choisi de répéter une UE capitalisée conserve le
résultat antérieur sauf s'il obtient une meilleure moyenne.
### Moyenne générale
La validation du BUT ne considère pas de "moyenne générale": chaque
regroupement d'UE est considéré indépendamment (aucunes compensations entre UE
relevant de compétences différentes).
Cependant, ScoDoc calculera une moyenne générale indicative, utile pour
certaines opérations (tri de tableaux, création de groupe de niveaux semblables,
avis de poursuite d'études, etc.).
Cette moyenne sera calculée en utilisant les ECTS de chaque UE du semestre
considéré:
$$ g = \frac{1}{\sum_{u \in \cal S} \mbox{ects}_u} \sum_{u \in \cal S} \mbox{ects}_u \, \mu_u $$
Attention, les UEs sans notes sont ici considérées comme ayant une moyenne
nulle. En début d'année, la moyenne générale indicative sera donc souvent très basse.
### Passage d'une année à l'autre
Les conditions de passages vers l'année suivante sont:
1. Moyenne supérieure ou égale à 10/20 obtenue à plus de de la moitié des
regroupements cohérents dUE (niveaux de compétences). Ainsi, si l'année comporte 4
compétences, il faut en valider au moins 3.
2. Aucun regroupement cohérent dUE < 8.
3. Cas particulier du passage en BUT 3: nécessité davoir validé toutes les UE
du BUT 1.
Note: La validation des deux UE du niveau dune compétence emporte la validation de
lensemble des UE du niveau inférieur de cette même compétence.
### Redoublements
La poursuite d'études dans un semestre pair dune même année est *de droit* pour
tout étudiant. La poursuite détudes dans un semestre impair est possible si et
seulement si létudiant a obtenu :
- la moyenne à plus de la moitié des regroupements cohérents dUE ;
- et une moyenne égale ou supérieure à 8 sur 20 à chaque regroupement cohérent
dUE. La poursuite d'études dans le semestre 5 nécessite de plus la validation
de toutes les UE des semestres 1 et 2 dans les conditions de validation des
points 4.3 et 4.4, ou par décision de jury.
Durant la totalité du cursus conduisant au bachelor universitaire de
technologie, l'étudiant peut être autorisé à redoubler une seule fois chaque
semestre dans la limite de *4 redoublements*. Le directeur de l'IUT peut autoriser
un redoublement supplémentaire en cas de force majeure dûment justifiée et
appréciée par ses soins. Tout refus d'autorisation de redoubler est pris après
avoir entendu l'étudiant à sa demande. Il doit être motivé et assorti de
conseils d'orientation.
### Obtention du diplôme
Le diplôme de BUT est obtenu lorsque toutes les compétences du parcours suivi
sont validées.
### Modules "bonus" (sport, culture, LV2)
Les modules hors formation comme le sport ou les langues vivantes supplémentaires
sont traditionnellement intégrés sous forme de "points de bonus" appliqués sur
la moyenne générale. Le BUT, on l'a vu, n'utilise plus la moyenne générale: le
bonus pourra donc être appliqué au niveau des moyennes UE: soit sur toutes
(bonus fixe ajouté à chaque UE), soit sur un sous-ensemble des UE du semestre.
Les règles précises du calcul de ce bonus sont malheureusement variables d'un
établissement à l'autre: ScoDoc 7 proposait plus d'une douzaine de variantes. La
situation sera identique avec le BUT et ScoDoc 9, et la mise en place d'une
fonction spécifique dans ScoDoc demandera un paramétrage particulier.
## Éditer ou importer une formation
ScoDoc permet d'importer des programmes de formations créés par d'autres
applications, comme Orébut, puis de les modifier pour introduire une *adaptation
locale*.
TODO: voir si on offre la possibilité de voir/gérer le delta entre le PN et le local.
## Modules et évaluations
### Créer une évaluation
Pour fixer les poids des évaluations du module, on peut employer plusieurs méthodes:
- un nombre (poids de l'évaluation dans le module, sans préciser si cette
évaluation affecte plus un UE qu'une autre);
- cocher des apprentissages critiques (on rappelle que les AC sont associés à des niveaux de
compétences, donc à 2 UE consécutives);
- indiquer un poids par UE.
#### Coefficient et poids d'une évaluation
Afin de faciliter la tâche des enseignants, ScoDoc sépare le coefficient d'une
évaluation (qui donne sa place dans le module) et les poids (qui ajustent son
impact dans chaque UE). On introduit donc un coefficient $w_e$, et les poids
bruts $b_{e, u}$. Les vrais poids sont calculés comme
$$p_{e, u} = w_e \, \frac{b_{e,u}}{\sum_u b_{e,u}}$$
#### Dialogue création/édition évaluation
<img src="/fig/but-dialog-eval-create.png" width="50%">
- L'enseignant *doit* renseigner le coefficient de l'évaluation.
- Par défaut, les poids valent 1 (la contribution de l'évaluation vers les
différentes UE respecte alors le PN).
- Si on décoche un AC, les poids sont mis à jour, au prorata du nombre d'AC
dans chaque UE (compétence).
## Tableau de bord module
Fonctions de base, en plus de celles déjà présentes en ScoDoc 7:
- Vérification de la conformité (tous les AC cochés dans le PN sont évalués)
- Poids de chaque évaluation dans chaque UE et conformité au programme de la formation
En bas du tableau de bord du module on aura un tableau récapitulatif:
<img src="/fig/but-tableau-evals-module-ok.png" width="50%">
Dans le cas où les évaluations ne couvriraient pas toutes les UE (mauvais choix
des poids ou oubli d'une évaluation):
<img src="/fig/but-tableau-evals-module-ko.png" width="50%">
## Bulletins de notes
La quantité d'information à présenter rend la conception des bulletins de notes difficile.
### Modèle "Lillois"
Proposition de l'IUT de Lille:
- en ligne, les ressources, puis les SAÉ;
- en colonnes, les UE;
- dans chaque case, le coefficient et la note obtenue;
- on peut ajouter les évaluations (lignes);
- on pourrait ajouter les infos habituelles en colonnes: min/max/moy/rangs/...
Avantage: toutes les informations importantes sont présentées.
Inconvénients (?): beaucoup de cases vides, peu synthétique, pas évident à
exploiter pour un non spécialiste du BUT (poursuites d'études, employeurs).
<img src="/fig/but-bul-lille.png" width="50%">
### Modèle "Bordelais"
Cette proposition a été reçue sous différentes formes de plusieurs collègues.
L'idée est de présenter le bulletin en deux parties: d'abord les résultats de
chaque ressource et SAE, puis les résultats de chaque UE.
Un exemple préliminaire:
<img src="/fig/but-bul-bdx.png" width="50%">
## Tenue des Jury BUT
La tenue des jury BUT dans ScoDoc est en fait plus simple que celle des anciens DUTs, avec moins
de décisions ad-hoc (compensations plus simples, moins de cas de mise en
attente). Comme pour les formations LMD, il s'agit avant tout de constater ou
valider manuellement les Unités d'Enseignements (UEs) associées à des ECTS.
Avant de tenir un jury de BUT il est absolument indispensable que la formation
et les semestre soient bien paramétrés. Voir [l'exemple complet du paramétrage
d'un BUT](BUTExempleInfo.md).
On va enregistrer:
- Validations des UEs, comme pour toutes les formations LMD.
- Validation des années: spécifique BUT (BUT1, BUT2 ou BUT3)
- Validation des niveaux de compétences: ces derniers sont évalués grâce à la
constitution du couple de deux UEs associées au même niveau de compétence.
**Attention: un niveau ne peut être validé qu'une seule fois.** Cette
validation peut changer d'état, par exemple si un étudiant redouble.
Exemple: un étudiant commence en 2021-2022, puis redouble son BUT1 en 2022-2023.
Sa spécialité compte seulement deux UEs en BUT1, UE11 et UE21 en S1, puis UE12
et UE22 en S2:
| S1 | S2 |
| ---- | ---- |
| UE11 | UE12 |
| UE21 | UE22 |
Il ne valide pas ses UEs en BUT1 (tout `AJ`), ses RCUE1 et RCUE2 sont `AJ`.
En redoublant, il acquiert de nouveaux codes d'UE (disons `ADM`), et change ses
codes d'RCUE.
De même, les validations d'année BUT sont uniques: en cas de redoublement, on
met à jour sa validation de BUT1, qui peut passer (si tout va bien) de
`RED`(redoublement) à `ADM` (validée).
A la fin, les validations enregistrées pour cet étudiant sont:
- UE11/2021: AJ
- UE12/2021: AJ
- UE11/2022: ADM
- UE12/2022: ADM
- RCUE1: ADM
- Années BUT1 : ADM
!!! note "Voir aussi"
- [Modélisation BUT: exemple de la spécialité Informatique](BUTExempleInfo.md)
- [Guide utilisateur](GuideUtilisateur.md)
- [Guide du responsable de formation](GuideAdminFormation.md)
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
- [FAQ](FAQ.md)
- [Développeurs: Implémentation des parcours du BUT](ModelisationParcoursBUT.md)
- [Contacts](Contact.md)

51
docs/BUTApogee.md Normal file
View File

@ -0,0 +1,51 @@
# Exports des résultats BUT vers Apogée
Les exports des résultats du BUT vers Apogée (et dans le futur vers Pégase)
posent un certain nombre de problèmes spécifiques liés aux caractéristiques
atypiques du BUT. Nous listons ci-dessous quelques points qu'il est important
d'avoir à l'esprit.
## Compétences et référentiels
Avant toute chose, et avant de tenir un jury BUT, s'assurer que la formation est
bien configurée, liée à son référentiel de compétences et que chaque UE est bien
associée à un niveau de compétence (dans le bon parcours le cas échéant).
## Pas de moyennes générales en BUT
En BUT, les seules notes définies sans ambigüité sont:
- les moyennes d'UE dans chaque semestre;
- les moyennes de ressources et SAÉ *vers chaque UE* (une note par couple
UE/ressource ou UE/SAÉ);
- les notes d'évaluations.
En conséquence, aucune moyenne générale d'année ou de semestre ne devrait
logiquement figurer sur des documents officiels comme les procès verbaux de jury
ou les exports Apogée (utilisés en général pour éditer les diplômes).
Pour la même raison, il n'y a pas de classement par ordre de mérite en BUT (même
si ScoDoc propose moyennes indicatives et classements).
## Résultats semestriels et annuels
En général, les établissement ont l'habitude d'exporter les résultats de ScoDoc
vers Apogée en fin de semestre. Ce n'est pas strictement nécessaire en BUT après
les semestres impairs (S1, S3, S5), mais c'est possible.
Après un semestre impair, on peut donc exporter les résultats aux UEs (décisions
de jury et notes), ainsi bien entendu que les résultats plus fins (ressources,
évaluations).
Après les jurys de fin d'année scolaire (juillet), on peut exporter, outre les
résultats aux UEs:
- la décision annuelle (à l'étape): code jury (pas de note en BUT);
- les décisions RCUEs (niveaux de compétences) [**note: pas encore disponible en
ScoDoc 9.4.x** : personne ne l'a demandé !].
!!! note "Voir aussi"
- [Interfaces ScoDoc / Apogée](ScoDocApogee.md)
- [Le Bachelor Universitaire de Technologie (BUT)](BUT.md)
- [Contacts](Contact.md)

View File

@ -0,0 +1,79 @@
# Capitalisation des Unités d'Enseignement en BUT
## Principe général
Une formation est constituée d'une succession de semestres (dans ScoDoc un
"semestre" peut avoir une durée quelconque, mais pour le BUT ce sont de vrais
semestres), eux-mêmes divisés en Unités d'Enseignement (UEs).
Les UEs sont constituées de modules (ressources et SAÉs en BUT). Les UEs sont
*capitalisables* et associées à des crédits académiques (ECTS). Lorsqu'un
étudiant interrompt ses études ou redouble, il conserve ses UEs capitalisées.
ScoDoc prend en compte cela par différents mécanismes:
- lorsqu'un étudiant redouble dans la même formation, ses UEs capitalisées sont
automatiquement prises en compte. L'étudiant peut choisir de refaire une UE
capitalisée. Dans ce cas, ScoDoc prendra automatiquement en compte celle ayant
la meilleure note. Il peut aussi choisir de ne pas refaire cette UE (voir plus
loin).
- Il arrive que les programmes évoluent d'une année sur l'autre (changement de
version, réformes). ScoDOc permet d'indiquer si des UEs de différents
programmes sont équivalentes et peuvent se capitaliser.
- Enfin, ScoDoc permet d'enregistrer la validation d'une UE obtenue par ailleurs
(par exemple dans un autre établissement suite à un transfert, à l'étranger,
etc.).
## Formations ScoDoc et UEs
Chaque UE possède un code interne ScoDoc que l'on peut modifier via la page
d'édition des programmes:
<img src="/screens/ue-edit-code.png" width="70%"
alt="Modification du code interne d'une UE">
On peut utiliser un code quelconque, y compris celui donné dans un autre
logiciel comme Apogée. En bas de cette même page, ScoDoc affiche la liste des
UEs ayant le même code, afin de vérifier facilement la compatibilité:
<img src="/screens/ue-edit-code-equiv.png" width="70%"
alt="UEs partageant le même code">
Ne pas confondre ce code d'UE interne avec le code Apogée, qui n'est utilisé que pour
les exports de résultats.
## Exemple BUT avec UE capitalisée
Soit une formation BUT, ici R&T, avec 3 UE. Certaines ressources (comme R101) sont communes à
deux ou trois UEs.
<img src="/fig/but-uescap-coefs.png" width="25%">
L'étudiant "Mael REDOUBLE" a redoublé sa première année, mais avait capitalisé
l'UE 1 de S1. Son parcours s'affiche ainsi:
<img src="/fig/but-uescap-fiche.png" width="60%">
Son bulletin montre l'UE 1 actuelle (moyenne 8,32/20) et celle capitalisée
(moyenne 10,36/20):
<img src="/fig/but-uescap-bul-avant.png" width="70%">
Il décide de ne pas refaire cette UE1. Pour cela, on le désinscrit de l'UE (menu
**Inscriptions** / **Gérer les inscriptions aux UEs et modules**).
<img src="/fig/but-uescap-desincr.png" width="40%">
Maintenant, son UE1 capitalisée apparait seule sur son bulletin.
Dans cet exemple, la ressource `R101` (commune) est rattachée à l'UE 1 (mais ce
rattachement technique n'a pas de conséquences pratiques). L'étudiant reste bien
sûr inscrit à `R101` (et doit suivre ses cours), puisque cette ressource
intervient dans les autres UE non capitalisées.
S'il y a des ressources dont les notes ne contribuent qu'à l'UE1, l'étudiant
peut ne pas les suivre: il faut alors le désincrire sélectivement au niveau du
tableau de bord module.
C'est dans cet exemple le cas pour la SAÉ `SAE11`.
<img src="/fig/but-uescap-inscrmodule.png" width="30%">

211
docs/BUTExempleInfo.md Normal file
View File

@ -0,0 +1,211 @@
# Modélisation BUT: exemple de la spécialité Informatique
Le BUT Informatique possède quatre parcours basés sur six compétences. Les
parcours se différencient en BUT3 (S5/S6) par des approfondissements différents
de certaines compétences, comme on le voit ici:
<img src="/screens/but-info-niveaux-parcours.png" width="70%"
alt="Niveaux de compétences des parcours du BUT Informatique">
Les coefficients des ressources et SAÉs en BUT sont définis localement par les
établissement, ainsi que les crédits ECTS associés aux UE.
Cette page détaille un exemple de mise en place d'un BUT Info. Cette
configuration est plus complexe que le cas d'une spécialité typique de BUT: on
va supposer que les coefficients d'une même ressource varient suivant le
parcours suivi par l'étudiant, et que les ECTS d'une même UE dépendent parfois
du parcours.
Après mise en place de la formation, nous allons créer les semestres, y inscrire
les étudiants et ternir un jury.
## Saisir ou importer le programme de formation
Avant toute chose, il faut saisir le programme pédagogique de la formation. On
peut souvent l'importer en demandant à des collègues d'autres IUT sur le Discord
assistance ScoDoc, ou à son ACD. le fichier importé sera alors modifié pour
refléter son adaptation locale.
Ensuite, **associer ce programme au référentiel de compétence du BUT Info**:
## Associer la formation à son référentiel de compétences
<img src="/screens/but-info-assoc-refcomp.png" width="50%">
Les référentiels officiels sont fournis par ScoDoc:
<img src="/screens/but-choix-refcomp.png" width="50%">
## Associer les UE à des parcours
Une UE peut intervenir dans un ou plusieurs parcours. Par défaut, elle
intervient dans *tous les parcours*. Un étudiant inscrit à un parcours devra
valider toutes les UEs de celui-ci. Il est donc fondamental de bien indiquer dans
quels parcours intervient une UE.
Pour cela, passer par le formulaire d'édition de l'UE:
<img src="/screens/but-info-edit-ue.png" width="50%">
et cliquer sur le ou les parcours:
<img src="/screens/but-info-choix-ue-parcours.png" width="50%">
Ici l'UE 45, compétence *Conduire*, n'existe que dans les parcours C et D.
Faire de même pour toutes les UEs de la formation qui ne sont pas identiques
dans tous les parcours.
Pour le S4 du BUT Info, cela pourrait donner:
<img src="/screens/but-info-ues-S4.png" width="100%">
où l'on a dupliqué l'UE41 afin de lui affecter des coefficients différents dans
les parcours A et B. Notez que dans cet exemple, l'UE46 est commune et identique
dans tous les parcours.
De même, pour le S6, version simplifiée sans UE spécifiques:
<img src="/screens/but-info-ues-S6.png" width="100%">
## Remarque: nommer les UEs
!!! note "Bien nommer les UEs !"
Prenez soin de nommer correctement et uniformément vos UEs, c'est
important pour obtenir de beaux relevés de notes et PV de jurys.
- pas de redondance: le titre de l'UE ne doit pas reprendre
l'acronyme, et il est inutile d'indiquer le parcours ou autre infos déjà présentes par ailleurs;
- acronymes uniformes: `UE41` pour la première UE du S4;
- le plus simple en BUT est de reprendre le nom (éventuellement abrégé) de la compétence.
<img src="/screens/but-info-choisir-nom-ue.png" width="50%">
## Associer les UE et les niveaux de compétences
Chaque niveau de compétence (1, 2 ou 3) correspond à une année, donc à deux UEs
consécutives. Il faut indiquer à ScoDoc le niveau de compétence associé à
chacune des UEs.
Pour cela, cliquer sur un parcours:
<img src="/screens/but-info-choix-parcours.png" width="50%">
ce qui permet de visualiser l'ensemble des UEs et compétences du programme:
<img src="/screens/but-info-parcours-formation.png" width="75%">
et d'associer une UE à chaque niveau de compétence:
<img src="/screens/but-info-choix-ue-niveau.png" width="75%">
Le symbole <img src="/screens/but-info-symbole-tc.png" width="20px" alt="TC">
(TC) désigne les niveaux du tronc commun (c'est à dire présents dans tous les
parcours de la spécialité).
Notez qu'une UE ne peut être associée qu'à un seul niveau de compétences (mais
chaque niveau peut-être en relation avec plusieurs UE, de parcours ou programme
différents).
### Parcours A
Après édition, le parcours A ressemble à ceci:
<img src="/screens/but-info-parcours-A.png" width="75%">
Remarques:
- Pas d'UEs en compétences *Administrer*, *Gérer* et *Conduire* car dans ce
parcours elles s'arrêtent au niveau 2.
- UE5.2 et UE6.2 spécifiques au parcours A car on veut y indiquer des
coefficients et ECTS spécifiques: nous les avons nommées `UE5.2-A` et
`UE6.2-A`.
## Parcours B
On fait la même chose pour le parcours B.
Pour changer de parcours, cliquer sur les boutons au dessus:
<img src="/screens/but-info-but-parcours.png" width="30%">
Les niveaux de tronc commun sont déjà associés. Dans certains cas (UE
spécifiques à un parcours, on doit changer l'association). Bien vérifier
l'ensemble avant de poursuivre !
## ECTS par parcours
Dans la plupart des cas, le nombre de crédits ECTS d'une UE est constant. Néanmoins,
certaines spécialités ou établissement, on peut vouloir le faire varier selon le
parcours. Une solution serait de dupliquer l'UE (comme on le fait pour décliner
les coefficients), mais il est plus simple de déclarer les ECTS dans chaque
parcours:
<img src="/screens/but-info-ue-lien-ects.png" width="40%">
<img src="/screens/but-info-ects-parcours.png" width="40%">
## Coefficients des ressources et SAÉs
Imaginons qu'en S4, la ressource `R4.01` ait le coefficient 14 vers l'UE41 dans
le parcours A, mais le coefficient 23 dans le parcours B. Nous avons vu plus
haut que nous avions créé une UE par parcours, `UE41-A` et `UE41-B`. reste à
leur attribuer leurs coefficients via le formulaire habituel:
<img src="/screens/but-info-edit-coefs-S4.png" width="40%">
L'intérêt de cette approche est qu'on a une seule ressource pour les deux
parcours, ce qui simplifie la saisie et le suivi des évaluations et des notes.
Bien sûr, si la ressource était pédagogiquement distincte dans les deux parcours
(activités différentes, examens spécifiques...) il serait préférable de créer
deux versions de la ressources (par exemple `R4.01-A`et `R4.01-B`).
## Mise en place des semestres
La création des semestres ne présentent aucune particularité dans ce cas. Il
faut juste indiquer les parcours proposés dans le semestre. Dans notre exemple:
<img src="/screens/but-info-sem-parcours-A-B.png" width="50%">
Remarque: si la spécialité n'a que des compétences communes dans ce semestre
(tronc commun, fréquent en BUT1), *ne pas cocher de parcours*.
## Affectation des étudiants aux parcours
Nous supposons dans la suite que nous avons les deux parcours A et B dans notre
département, les étudiants des deux parcours étant dans les mêmes semestres
ScoDoc. Les ressources et coefficients proposés sont là pour illustrer et ne
correspondent pas à la réalité.
On affecte les étudiants aux parcours grâce à l'éditeur de groupes et partitions
(accessible via le menu **Groupes**): la partition nommée *parcours* est
spéciale et est utilisée par ScoDoc pour savoir à quel parcours appartient
l'étudiant.
Dans l'exemple ci-dessous, on a deux étudiants dans chaque parcours A et B:
<img src="/screens/but-info-groupes-parcours.png" width="75%">
## Inscriptions des étudiants aux modules de leurs parcours
Il faut que chaque étudiant soit inscrit aux modules (ressources ou SAÉs) de
tronc commun, à et à ceux spécifiques à son parcours. Pour cela, on passe par le
menu "**Inscriptions / Gérer les inscriptions aux UEs et modules**".
Dans chaque module, on peut régler les inscriptions:
<img src="/screens/but-info-inscr-module.png" width="30%">
!!! note "Voir aussi"
- [Le BUT: détails et calculs](BUT.md)
- [Guide du responsable de formation](GuideAdminFormation/md)
- [Programmes de formation](Formations.md)
- [Référentiel de compétence du BUT](BUTReferentielCompetences.md)
- [Guide utilisateur](GuideUtilisateur.md)
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -0,0 +1,70 @@
# Le référentiel de compétence du BUT
Chaque spécialité de BUT est définie par un référentiel de compétence et un
référentiel de formation. Ces documents sont publiés ici:
[https://www.enseignementsup-recherche.gouv.fr/fr/bo/21/Special4/ESRS2114777A.htm](https://www.enseignementsup-recherche.gouv.fr/fr/bo/21/Special4/ESRS2114777A.htm)
Le référentiel de compétence définit notamment les compétences et leurs niveaux
pour chaque parcours de la spécialité. Ce document publié par le ministère ne
peut pas être modifié par les universités: les adaptations portent uniquement
sur les modalités de formation (adaptations locales du référentiel de formation,
validées par le CFVU de chaque établissement).
ScoDoc propose de charger les référentiels de compétences, qui ont été publiés
en format XML par l'application Orébut de l'ADIUT.
Une fois chargées, ces données ne sont pas modifiables.
## Formation et référentiel de compétences
Rappel: dans ScoDoc, on appelle *formation* le programme pédagogique, qui
définit l'ensemble des UEs, ressources, SAÉs et leurs coefficients respectifs.
Voir détails [sur la page Formation](Formations.md).
Un formation de type BUT *doit* être associée à un référentiel de compétence.
Sans cela, ScoDoc ne sait pas quels UEs et RCUEs doivent être validés. Voir
détail de la configuration sur la page
[Modélisation BUT: exemple de la spécialité Informatique](BUTExempleInfo.md).
## Changement de versions du référentiel de compétences
Il peut arriver que le référentiel de compétences d'une spécialité soit mis à
jour: ainsi, en 2023 de nouvelles versions ont été publiées pour de nombreuses
spécialités, corrigeant certains détails (intitulés de parcours, ...).
Les étudiants ayant commencé dans un référentiel devraient en principe continuer
jusqu'au diplôme avec ce même référentiel.
Exemple de situation en Septembre 2023:
- S1 : formation v2, référentiel 2023
- S3 : formation v1, référentiel 2021
- S5 : formation v1, référentiel 2021
Ici "formation v2" aura été créé comme une nouvelle version de la formation v1,
puis associée au nouveau référentiel.
Si toutefois le S3 était associé à la v2, avec le nouveau référentiel, ScoDoc
considérait que les RCUEs du BUT1 ne sont pas valides pour la nouvelle version:
en effet, RCUEs et compétences sont liés à un référentiel donné.
Dans ce cas, il faudrait procéder, pour chaque étudiant, à la validation
manuelle de ses RCUEs du nouveau référentiel comme des validation de RCUEs
"antérieurs". C'est heureusement facile à faire sur la page de suivi de
l'acquisition des niveaux de compétences:
<img src="/screens/but-validation-rcues.png" width="50%">
!!! note "Voir aussi"
- [Le BUT: détails et calculs](BUT.md)
- [Guide du responsable de formation](GuideAdminFormation/md)
- [Programmes de formation](Formations.md)
- [Guide utilisateur](GuideUtilisateur.md)
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

235
docs/BonusMalus.md Normal file
View File

@ -0,0 +1,235 @@
# Composants de Bonus/Malus
Scodoc permet l'application de modificateurs de type bonus/malus sur les moyennes générales (formation non BUT) et/ou d'UE.
Il existe deux mécanismes complémentaires pour cela:
## Les bonus sport/culture
Le bonus sport/culture permet de calculer un modificateur sur la moyenne générale (formations non BUT) ou sur chacune des UE (BUT).
La valeur du bonus est calulée à partir d'un note sur 20 et au moyen d'une formula propre à chaque IUT.
## Les modules de malus
Les modules de type Malus peuvent être créés pour tout ou partie des UE. La valeur du modificateur est spécifiée dans la (ou les) évaluation(s) déclarées dans ce module.
On inscrira donc directement dans cette évaluation la valeur d'un malus (entre 0 et 20) ou d'un bonus (entre -20 et 0) souhaitée pour ce module.
Les modules de malus sont essentiellement prévus pour permettre d'affecter un malus (généralement un malus pour absences) spécifier dans les réglements locaux.
* A la différence du bonus sport/culture, ces modifications ne portent pas uniformément sur la totalité des UE.
Si on veut que le malus s'applique à plusieurs UE, il faudra créer plusieurs modules de malus.
* De plus, aucune formule n'est implémentée et on saisira directement la valeur du malus (ou bonus)
* Les valeurs saisies ne sont pas affichées telles quelles sur les bulletins. Seule la somme des modificateurs est affichée (à coté de l'UE sur laquelle elle porte)
* Il est possible de décrire plusieurs évaluations (donc plusieurs saisies) qui sont cumulatives
* Le modificateur saisi peut être négatif (et donnera alors un bonus); l'affichage est mis à jour en conséquence.
C'est donc la possibilité d'inclure un bonus donc la valeur n'est pas calculée par la formule configurée (cf. [Intégration de la formule](#intégration-de-la-formule)).
Le résumé de ce comparatif est détaillé dans le tableau ci-dessous:
| Critère | Bonus Sport/culture | Module de Malus |
|:-------------------------------------|:--------------------------------------------------|:-------------------------------------------|
| **Structure** | UE Spécifique et modules (type standard) attachés | Module spécifique (type malus) |
| **Valeur du bonus/malus** | Calculé à partir d'une note | Saisie directe |
| **Application sur toutes les UE** | Automatique (avec seule UE) | Autant de modules que d'UE modifiées |
| **Application sur une seule UE** | Impossible | Un module par UE modifiée | |
| **Modification** | Bonus seulement | Malus ou Bonus |
| **Affichage** | Affichage du bonus et du détail | Affichage du bonus/malus seulement |
| **Cumul de plusieurs modificateurs** | voir [les remarques](#remarques) | Déclarer une évaluation par type de modif. |
## Procédures
L'étape [Intégration de la formule](#intégration-de-la-formule) est à réalisé une fois pour toutes et pour tous les départements, seulement si le bonus sport/culture est utilisé.
L'étape [Ajout d'UE et de module Sport/Culture](#ajout-due-sportculture-etou-de-module-de-malus) doit être faite lors de la conception d'un programme, mais n'a pas a être réitérée lors de la création d'une nouvelle version d'un programe avec UE sport.
L'étape [Application à un semestre](#application-à-un-semestre) doit être faite à la création d'un semestre mais n'a pas à être réitérée lors du clonage d'un semestre
### Intégration de la formule
Il faut tout d'abord régler ScoDoc pour utiliser la formule propre à votre établissement.
Pour cela ml'administrateur du site (lui seul y est autorisé) doit aller sur la page de configuration de Scodoc (bandeau en haut de la page d'accueil)
![configuration](screens/BonusMalus_01.png)
puis section '`Calcul des "bonus" définis par l'établissement`' et sélectionner l'établissement dans le dans le menu déroulant.
![choix-bonus-sport](screens/BonusMalus_02.png)
Si l'établissement n'apparaît pas:
1. L'item '`Bonus "Direct"`' permet de saisir directement la valeur du modificateur (après un calcul préalable hors scodoc)
2. Vous pouvez demander la création de la formule spécifique à votre établissement sur le serveur discord en précisant:
* Le nom de votre établissement,
* l'extrait du règlement intérieur qui décrit cette bonification, (celui ci apparaîtra dans l'encadré explicatif)
* Quelques cas d'usages (pour les tests)
### Ajout d'UE Sport/culture et/ou de module de malus
#### Bonus sport/culture
L'opération suivante consiste à ajouter dans le programme l'UE Sport/Culture dans le semestre visé. Une méthode parmi d'autres est:
1. Entrer dans le semestre,
2. activer le menu `SEMESTRE > Voir la formation...` (ceci permet d'aller dans LE programme associé au semestre),
3. ajouter une UE 'Sport/Culture',
Donner un titre (en y incluant le semestre visé - toutes les UE d'une formation doivent avoir leur propre nom et il y aura aussi probablement des UE sport pour les autres semestres)
Idem pour l'acronyme
Choisissez le Type `Sport/Culture (points bonus)`
Indiquez 0 ECTS (obligatoire bien que cette valeur n'ait pas d'importance)
![ajout-UE-sport](screens/BonusMalus_03.png)
4. ajouter un module à l'UE sport et l'attacher à l'UE Sport du semestre
Attention ! ce module est un module standard (pas un module de malus, ni une ressource, ni une SAÉ)
![module-sport](screens/BonusMalus_04.png)
#### Ajout de module Malus
1. Entrer dans le semestre,
2. activer le menu `SEMESTRE > Modifier le semestre`
![modifier-le-semestre](screens/BonusMalus_05.png)
A ce niveau, vous pouvez soit:
* ajouter les modules malus en une seule fois pour toutes les UE par le lien `ajouter un module de malus dans chaque UE su S...`
![ajout-global-malus](screens/BonusMalus_11.png)
* Ou, si une des UE ne demande pas l'application d'un malus, ajouter seulement les modules nécessaires en les créant un par un:
![ajout-simple-malus](screens/BonusMalus_12.png)
en précisant le type `Malus` et en l'attachant à l'UE concernée.
![ajout-simple-malus-détail](screens/BonusMalus_13.png)
### Application à un semestre
Quel que soit le type de bonus utilisé, le semestre concerné doit intégrer le ou les modules créés précédemment,
que ce soit les modules appartenant à l'UE sport/culture ou les modules de malus.
Si la création du semestre est postérieur à la modification du programme,
ou si le semestre résulte du clonage d'un semestre déjà configuré,
les éléments de bonus/malus sont déjà pris en compte et on peut passer directement à la partie [inscription des étudiants](finaliser-linscription-des-étudiants-concernés-si-inscription-sélective)
Dans le cas contraire (le bonus n'avait pas été prévu au départ et doit être ajouté en cours de semestre) la manipulation suivante permet lapplication des éléments de bonus/malus aux au semstre existant:
#### Stratégies d'inscription
Dans tous les cas de figure, l'objectif est d'inscrire aux modules de bonus/malus au moins les étudiants qui en bénéficient.
On a deux stratégies possibles:
1. Inscription de tous les étudiants du semestres et attribuer la note `EXC`aux étudiants non concernés. à éviter pour le bonus sport/culture car ces notes `EXC` apparaissent sur le bulletin. (inscription générale)
2. N'inscrire que les étudiants concernés.(inscription sélective)
**Note**: si le bonus sport/culture peut résulter de plusieurs activités (par exemple sport et LV2) on peut tout de même être amené à placer des `EXC`
#### Application des modifications du programme à un semestre existant
1. Entrer dans le semestre,
2. activer le menu `SEMESTRE > Modifier le semestre`
![modifier-le-semestre](screens/BonusMalus_05.png)
3. Les éléments de bonus/malus apparaissent mais ne sont pas activés
![activation-module-sport](screens/BonusMalus_06.png)
4. Activer les modules utilisés et y affecter les étudiants selon la stratégie choisie (inscription générale: tous, inscription sélective: aucun)
4.Valider les modifications opérées
#### Finaliser l'inscription des étudiants concernés (si inscription sélective)
**Note**: cette finalisation peut être faite juste avant la saisie des notes de sport.
1. Se placer dans le module bonus/malus
![sélection-module-sport](screens/BonusMalus_07.png)
ou
![sélection-module-malus](screens/BonusMalus_14.png)
2. Affiner les inscriptions en cliquant sur le lien de modification:
![inscriptions-module-sport](screens/BonusMalus_08.png)
#### Saisie des notes
* Créer si besoin une évaluation dans le module courant
* Saisir les notes des étudiants.
* Pour un bonus sport/culture
Sauf application du `Bonus "direct"` (cf. [Intégration de la formule](#intégration-de-la-formule)), il s'agira d'un note traditionnelle (sur 20).
* Pour un module de malus
Saisir directement la valeur du malus (pour que l'étudiant bénéficie d'un bonus, entrer une valeur négative)
#### Remarques
* Le `Bonus "direct"` autorise des bonus de 0 à 20 mais plafonne les notes d'UE à 20
* On peut avoir plusieurs évaluations dans le module sport.
Dans ce cas ScoDoc calcul la note de module comme habituellement (y compris en prenant en compte les éventuels coefficients),
puis calcul la valeur du bonus à partir de cette note de module. On ne peut donc pas 'cumuler' (un bonus sport et un bonus LV2 par exemple) par ce biais.
* On peut avoir plusieurs modules attachées à l'UE sport.
Dans ce cas, ScoDoc calcule le bonus qui produirait chacun de ces modules et les additionne. Dans ce cas, les bonus sont cumulés, mais:
* Cette méthode n'est applicable que si les formules de calcul de chacun des bonus cumulés sont identiques.
* Les notes d'UE restent plafonnées à 20.
**Exemple**:
On a déclaré dans une UE sport 2 modules:
* `Sport` alimenté par 2 évaluations (Sport et Autre),
* `LV2` alimenté par une seule évaluation
Un étudiant participe aux deux activités et obtient les notes suivantes:
![notes-sport-exemple](screens/BonusMalus_09.png)
Le calcul effectué par ScoDoc est le suivant:
* Calcul de la moyenne du module `Sport` ( 13.00 (coef. 1) et 10.00 (coef. 2)): résultat : 11.00 soit un bonus de 1 pt x 5% (calcul Villetaneuse) = 0.05 pts
* Calcul de la moyenne `LV2`: 15.00 (une seule note) soit un bonus de 5 pts x 5% = 0.25 pts
* Le bonus total sera donc de 0.30 pts
* L'UE1 qui est de base à 19.80 sera donc amenée à 20 (plafond) grâce au bonus de 0.30
![notes-sport-exemple-UE1](screens/BonusMalus_10.png)
Les autres UE bénéficient du bonus de 0.30 pts
----------------------------------------------------------------------------------------------------------------------------------------------
La rubrique suivante n'est peut être pas utile.
## Affichages
La forme que prend cet affichage varie en fonction des circonstances:
* Aucun bonus/malus
* Cas 1: Bonus sport/culture seulement
* Cas 2: Malus
* Cas 3: Malus négatif (traité comme bonus)
Les bonus/malus sont affichés principalement sur:
### La table récapitulative des notes
Deux colonnes sont affichées pour chaque UE. pour indiquer le bonus sport/culture d'une part et le malus (ou bonus complémentaire) comme indiqué ci-dessous
![Table-des-notes](screens/BonusMalus_15.png)
### le relevé de notes web d'un étudiant (y compris sur la passerelle)
La description de l'UE inclut la valeur des bonus et malus (même si nulle) comme indiqué dans les exemple ci-dessous.
La moyenne avant altération figure en bas tandis que la valeur supérieure (en gras) affiche la moyenne après bonus/malus (plafonnée si besoin):
![relevé-web-cas1](screens/BonusMalus_16.png)
![relevé-web-cas2](screens/BonusMalus_17.png)
![relevé-web-cas3](screens/BonusMalus_18.png)
![relevé-web-cas4](screens/BonusMalus_19.png)
### le relevé de notes en version pdf
![relevé-pdf-cas1](screens/BonusMalus_20.png)
![relevé-pdf-cas2](screens/BonusMalus_21.png)
![relevé-pdf-cas3](screens/BonusMalus_22.png)
![relevé-pdf-cas4](screens/BonusMalus_23.png)

View File

@ -1,104 +1,133 @@
# Edition des bulletins de notes
# Édition des bulletins de notes
Vous pouvez obtenir les bulletins de notes en différents formats:
* page web
* page web
* fichier PDF (dit "version papier", car très pratique pour l'impression)
* fichier PDF (dit "version papier", car très pratique pour l'impression)
* données XML (pour interfaçage avec d'autres logiciels, comme par exemple le portail utilisé par les étudiants)
* données JSON ou XML (pour interfaçage avec d'autres logiciels, comme par
exemple la "passerelle" utilisée par les étudiants)
Vous pouvez aussi générer des classeurs PDF, documents regroupant tous les bulletins des étudiants d'un semestre, c'est utile pour imprimer tous les bulletins ou les archiver.
Vous pouvez aussi générer des classeurs PDF, documents regroupant tous les
bulletins des étudiants d'un semestre, c'est utile pour imprimer tous les
bulletins ou les archiver.
## Versions courtes, intermédiaires, longues
## Versions courtes, intermédiaires, longues
Les bulletins sont disponibles en trois versions:
* **version courte**: montre les moyennes d'UE et de modules, mais pas les notes des évaluations.
* **version courte**: montre les moyennes d'UE et de modules, mais pas les notes des évaluations.
* **version intermédiaire**: montre les moyennes d'UE et de modules, et certaines évaluations (celles pour lesquelles l'option "Visible sur bulletins en version intermédiaire" est cochée.
* **version intermédiaire**: montre les moyennes d'UE et de modules, et certaines évaluations (celles pour lesquelles l'option "Visible sur bulletins en version intermédiaire" est cochée.
* **version longue**: montre les moyennes d'UE et de modules, et toutes les évaluations.
* **version longue**: montre les moyennes d'UE et de modules, et toutes les évaluations.
## Informations sur les bulletins
## Informations sur les bulletins
Voici un exemple de bulletin en version courte. Dans ce cas, vous constaterez 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.
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)
**Note:** les exemples présentés ici correspondent à une version très ancienne
de ScoDoc !
Le bulletin en version longue montre les notes obtenues aux différentes évaluations (contrôles et examens):
![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
## 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.
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
* *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.
* *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 codes des modules*
* *afficher le classement dans chaque UE*
* *afficher le classement dans chaque UE*
* *afficher le classement dans chaque module*
* *afficher le classement dans chaque module*
* *faire figurer les UE validées sur les bulletins* : code jury des UE
* *faire figurer les UE validées sur les bulletins* : code jury des UE
* *publier le bulletin sur le portail étudiants*: contrôle l'export XML des bulletins, utilisé par le portail étudiant. Désactiver si vous ne voulez pas que les étudiants puisse lire leurs bulletins.
* *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" 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.
* *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.
* *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*.
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.
* 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).
* message texte accompagnant les bulletins envoyés par courrier électronique (mail).
* 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.
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).
* 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.
## 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)).
## 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.
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,
@ -110,4 +139,5 @@ Pour toute question sur ce document, contactez votre enseignant ou le directeur
Cordialement,
la scolarité du département XXX.
```
(le contenu de ce message est paramétrable, voir ci-dessus).

View File

@ -1,95 +1,183 @@
## Calcul des notes
# Calcul des notes
*Tout ce que vous avez toujours voulu savoir sur le calcul des moyennes...*
Pour les formations par compétences, voir aussi [la page dédiée au BUT](BUT.md).
### En résumé:
## En résumé
A chaque instant, ScoDoc prend en compte les notes des évaluations "complètes" (dans lesquelles toutes les notes ont été saisies ou bien signalées "en attente" avec le code ATT. Les évaluations partiellement saisies ne sont pas prises en compte, sauf si l'option "*prise en compte immédiate*" a été cochée sur l'évaluation.
À 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").
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
## 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 numérique (positive ou nulle): sera normalisée entre 0 et 20
* note absente: considérée comme zéro
* note absente: considérée comme zéro
* note en attente: non prise en compte
* note en attente: non prise en compte
* note excusée: non pris en compte
* note excusée: non pris en compte
Chaque étudiant a donc un nombre variable de notes à prendre en compte dans chaque module. Chaque note est associée à un coefficient: le coefficient de l'évaluation dans le module.
Chaque étudiant a donc un nombre variable de notes à prendre en compte dans
chaque module. Chaque note est associée à un coefficient: le coefficient de
l'évaluation dans le module.
La moyenne de module est la somme pondérée par le coefficient des évaluations des notes aux évaluations prises en compte, sauf si on a défini une formule spécifique.
### En formation classique (hors approches par compétences, BUT)
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
### En BUT
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.
Comme expliqué en détail sur [la page dédiée au BUT](BUT.md), chaque module
(ressource ou SAÉ) peut produire des notes différentes pour chaque UE. Le
programme pédagogique (adapté du Programme National publié au BO) défini des
coefficients permettant le calcul des moyennes d'UE.
De façon plus fine, chaque évaluation peut s'adresser à un sous-ensemble
d'apprentissages critiques, et donc être associée à une ou plusieurs UE avec des
pondérations différentes: les poids de l'évaluation.
### Moyennes d'UE
On a donc **pour chaque évaluation**:
- des poids, un par UE, qui sont par défaut égaux à 1 pour les UE concernées
(c'est à dire ayant un coefficient non nul);
- un coefficient.
Le calcul de la moyenne du module vers les UEs s'effectue en *multipliant* les poids par le coefficient.
## Moyennes d'UE
moyenne_ue = moyenne pondérée des moyennes de modules de l'UE (- malus)
Seuls les modules auxquels l'étudiant est inscrit et dans lesquels il y a des notes sont considérés.
Seuls les modules auxquels l'étudiant est inscrit et dans lesquels il y a des
notes sont considérés.
Le malus appliqué à la moyenne d'UE est donné par la somme des notes du ou des modules de malus de cette UE (un type spécial de modules, voir [ModulesMalus](ModulesMalus.md)).
Le malus appliqué à la moyenne d'UE est donné par la somme des notes du ou des
modules de malus de cette UE (un type spécial de modules, voir
[ModulesMalus](ModulesMalus.md)).
Comme pour le calcul des moyennes de modules, il est possible de définir une formule ad-hoc pour le calcul de la moyenne d'UE (cela est toutefois rarement nécessaire, et il est recommandé de ne pas abuser de cette fonctionnalité: la présence de formules ralentit considérablement les calculs).
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).
## Calcul de la moyenne générale
La présence de formules d'UE est signalée sur le tableau de bord du semestre.
### Calcul de la moyenne générale
### En formations classiques
moyenne = moyenne pondérée des moyennes d'UE + bonus sport/culture
Le coef. d'une UE est par défaut la somme des coefs des modules qui la compose (et peut donc différer d'un étudiant à un autre, s'ils ne sont pas inscrits aux mêmes modules).
Le coef. d'une UE est par défaut la somme des coefs des modules qui la compose
(et peut donc différer d'un étudiant à un autre, s'ils ne sont pas inscrits aux
mêmes modules).
Toutefois (depuis mai 2020), il est possible de spécifier un coefficient d'UE dans le programme pédagogique, et de l'utiliser pour calculer la moyenne générale (option "Utiliser les coefficients d'UE pour calculer la moyenne générale"). Dans ce cas, les coefficients des modules ne servent qu'à calculer les moyennes d'UE, qui sont ensuite affectée de leur propre coefficient. De cette façon, les UE pèsent le même poids pour tous les étudiants, quel que soit le nombre de modules auquel l'étudiant est inscrit (ce qui peut sembler étrange: bien réfléchir avant de choisir le mode de calcul adapté à sa formation).
Toutefois (depuis mai 2020), il est possible de spécifier un coefficient d'UE
dans le programme pédagogique, et de l'utiliser pour calculer la moyenne
générale (option "Utiliser les coefficients d'UE pour calculer la moyenne
générale"). Dans ce cas, les coefficients des modules ne servent qu'à calculer
les moyennes d'UE, qui sont ensuite affectée de leur propre coefficient. De
cette façon, les UE pèsent le même poids pour tous les étudiants, quel que soit
le nombre de modules auquel l'étudiant est inscrit (ce qui peut sembler étrange:
bien réfléchir avant de choisir le mode de calcul adapté à sa formation).
Les modules des UEs de type "Sport & Culture" ne sont évidemment pas pris en compte dans la moyenne pondérée: ils sont utilisés pour calculer le bonus, comme expliqué ci-dessous.
Les modules des UEs de type "Sport & Culture" ne sont évidemment pas pris en
compte dans la moyenne pondérée: ils sont utilisés pour calculer le bonus, comme
expliqué ci-dessous.
### Moyenne générale en BUT
### Notes de rattrapage
En BUT, on calcule des notes pour les Unités d'Enseignement, et la moyenne
générale n'est pas définie. Toutefois, ScoDoc calcule une *moyenne indicative*,
qui est la moyenne des moyennes des UE du semestre pondérée par leurs ECTS. Voir
détails [sur la page BUT](BUT.md#moyenne-generale)
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":
## 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.
Pour chaque étudiant, la note obtenue à l'évaluation de rattrapage remplace la
moyenne du module, seulement si elle est supérieure à celle-ci.
## Bonus sport/culture
### Bonus sport/culture
Ce bonus s'applique directement sur la **moyenne générale**.
Ce bonus s'applique directement sur la **moyenne générale** et/ou sur les
moyennes d'UE (notamment en BUT).
Les notes des UEs de type spécial "Sport & Culture" sont utilisées pour calculer ce bonus.
Pour qu'un étudiant bénéficie de ce bonus, il doit être inscrit à un module d'une UE de type "Sport&Culture". Cette UE et modules associés doivent donc être prévu dans le programme pédagogique.
Pour qu'un étudiant bénéficie de ce bonus, il doit être inscrit à un module
d'une UE de type "Sport&Culture". Cette UE et modules associés doivent donc être
prévu dans le programme pédagogique.
La règle par défaut, en vigueur à l'IUT de Villetaneuse, est la suivante:
*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.
*
La règle appliquée dépend de l'établissement. Par exemple, l'Université de
Haute Alsace appliquait 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.*
Mais la règle à appliquer dépend de l'établissement. Ainsi, l'Université de Haute Alsace applique le règlement suivant: *Les étudiants de l'IUT peuvent suivre des enseignements optionnels de l'U.H.A. (sports, musique, deuxième langue, culture, etc) non rattachés à une unité d'enseignement. Les points au-dessus de 10 sur 20 obtenus dans chacune des matières optionnelles sont cumulés dans la limite de 10 points. 5% de ces points cumulés s'ajoutent à la moyenne générale du semestre déjà obtenue par l'étudiant.*
L'administrateur peut changer la fonction de calcul du bonus sport via le
formulaire de configuration accessible (aux admin) depuis la page d'accueil. Si
vous souhaitez disposer d'une nouvelle règle, il faut contacter l'équipe de
développement en indiquant (en français) le règlement en vigueur dans votre
établissement. Le code correspondant sera ajouté via une mise à jour.
Si vous souhaitez changer la règle de calcul utilisée par ScoDoc, il faut modifier un fichier de configuration et éventuellement écrire une fonction pour calculer votre bonus. Regardez les fichier `config/scodoc_config.py` et éventuellement `bonus_sport.py`.
## Arrondis et affichages
ScoDoc calcule les notes en haute précision. On peut saisir des notes comme
`12,3456789 / 20` (convenons que c'est un peu ridicule, mais possible).
Les résultats sont en général affichés avec 4 chiffres (12,34/20), soit 1 millième de précision.
Le nombre de chiffres exportés vers Apogée (dans des fichiers textes) est paramétrable.
Les exports vers Excel conservent la précision maximale (types numériques).
Les décisions prises par ScoDoc (`ADM` automatique par exemple) sont calculées
avec une *tolérance* pour éviter que les étudiants ne soient victimes d'erreurs
d'arrondis: par exemple:
```text
Pour valider une RCUE, on vérifie que moy_rcue > sco_codes.BUT_RCUE_SUFFISANT
où est défini comme BUT_RCUE_SUFFISANT = 8.0 - NOTES_TOLERANCE.
avec
NOTES_TOLERANCE = 0.00499999999999
```
Donc un étudiant avec 7.996 (affichée `08.00` dans les tableaux) validera mais un autre avec 7.995 (affichée `07.99`) ne validera pas.
⚠️ Attention: il y a deux façon d'exporter vers Excel:
1- l'une est fournie par le navigateur (javascript) et part de la version
affichée. C'est commode et conserve la mise en forme du tableau affiché, mais on
n'a pas toute la précision.
2- la seconde est exportée par ScoDoc qui veille à conserver le maximum d'information.
![menu export excel](fig/menu-export-excel.png)
!!! note "Voir aussi"
- [Guide utilisateur](GuideUtilisateur.md)
- [Calculs spécifiques en BUT](BUT.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,87 +1,106 @@
# Capitalisation des UEs de DUT
## Capitalisation des UE
Brève note expliquant le système de capitalisation de UE dans le cadre des DUT.
Pour le Bachelor (BUT), voir [Capitalisation des Unités d'Enseignement en
BUT](BUTCapitalisationUE.md).
Brève note explicant le système de capitalisation de UE dans le cadre des DUT.
### Principe
## 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.*
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.*
*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.*
*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.*
**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)
#### 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.
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.
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.
### UE capitalisées et inscriptions aux modules
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.
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.
### Cas des changements de programmes
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.
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
#### 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.
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;
### Calcul des coefficients
* le coefficient d'une UE est donc la somme des coefficients des modules qui la composent;
Le calcul des coefficients des UE capitalisées pour le calcul de la moyenne générale est un peu compliqué. En effet:
* 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).
* les UE n'ont pas de coefficients propres: dans le programme pédagogique, les coefficients sont attribués aux modules et non aux UE;
* 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").
* 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é)
### 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, moy. UE = 11.03, coef. 8
* en S2,2, moy UE = 10.32, coef 5.7 car pas de notes en M322 et M324
* en S2,2, moy. UE = 10.32, coef. 5.7 car pas de notes en M322 et M324
Mais supposons que le programme de S2,2 ne soit *pas le même* que celui de S2 !. Par exemple on pourrait avoir:
* En S2: UE2.1 = { M121, M221, M322, M324, AL2.1 } coef 8
* En S2: UE2.1 = { M121, M221, M322, M324, AL2.1 } coef. 8
* En S2.2: UE2.1 = { M121, M221, M322, M324, TH21, ESP21, ESPDEB21 } coef 9
* En S2.2: UE2.1 = { M121, M221, M322, M324, TH21, ESP21, ESPDEB21 } coef. 9
ScoDoc prend le coef 9, afin que l'UE2.1 pèse la même chose pour tous
ScoDoc prend le coef. 9, afin que l'UE2.1 pèse la même chose pour tous
les étudiants de S2,2.
#### Conclusion
### Conclusion
Les textes officiels étant muets sur cette question, il n'y a pas de consensus sur la meilleure façon de calculer le coefficient
affecté aux UEs capitalisées. Le mode de calcul par défaut de ScoDoc à l'avantage d'avoir les
@ -89,13 +108,12 @@ 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
### 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".
* 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".

View File

@ -1,17 +1,24 @@
## 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.
# Compensation des semestres 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.*".
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.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> cette possibilité n'est offerte que lorsque l'option "*proposer compensations de semestres (parcours DUT)*" (menu "*Modifier le semestre*") est activée (en effet, la règle de compensation est spécifique aux DUT et ne s'applique pas à toutes les formations LMD).
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.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> cette possibilité n'est offerte que lorsque l'option "*proposer
compensations de semestres (parcours DUT)*" (menu "*Modifier le semestre*") est
activée (en effet, la règle de compensation est spécifique aux DUT et ne
s'applique pas à toutes les formations LMD).

167
docs/ConfigCAS.md Normal file
View File

@ -0,0 +1,167 @@
# Configuration de l'authentification CAS
*Cette page s'adresse aux administrateurs système en charge de ScoDoc.*
Le CAS, *Central Authentication Service* CAS est un système d'authentification
unique (SSO) très utilisé dans les universités. Il permet à l'utilisateur de
s'identifier sur un site unique (souvent appelé "ENT" en raccourci), pour
ensuite accéder aux différents services. Il évite de s'authentifier à
chaque fois qu'on accède à une application en mettant en place un système de
ticket.
Notons que le CAS peut introduire des faiblesses dans l'application:
- indisponibilité ou lenteur du service;
- vulnérabilité si le serveur CAS (ou l'annuaire sur lequel il s'appuie) venait
à être piraté.
Il est donc conseillé de s'assurer du bon fonctionnement et de la sécurisation de
son service CAS avant d'aller plus loin.
## Comptes utilisateurs ScoDoc et CAS
Rappel: voir [Gestion des utilisateurs](AdminUsers.md)
Pour simplifier, l'utilisateur va partir de ScoDoc, passer par le site CAS (redirection), puis
revenir si l'authentification réussi, avec un jeton et un identifiant CAS. À ce moment, ScoDoc cherche s'il a un
utilisateur ayant l'identifiant donné, dans le champ `cas_id`de sa base
utilisateur. Si oui, il ouvre une session pour cet utilisateur, avec ses rôles
et permissions.
## Paramètres spécifiques pour le CAS
### Configuration générale
Les pages de configuration générale de ScoDoc sont accessibles via la page
d'accueil, uniquement lorsqu'on est connecté comme super-admin.
![accès au panneau de config](fig/config-accueil.png)
De cette page, on accède à la page consacrée au CAS:
![config du CAS](fig/config-cas.png)
Page sur laquelle on va pouvoir spécifier:
- si on active le CAS (ce qui permet aussi de le désactiver globalement);
- si on force son utilisation;
- l'URL complète du serveur CAS (exemple: `https://mon.serveur.cas.fr:1234/cas/`);
- un attribut pour l'identification (laisser vide normalement);
- si on veut vérifier le certificat SSL (normalement oui, par sécurité, et
fournir le fichier certificat PEM dans le champ suivant).
Si l'option **Forcer l'utilisation du CAS** est activée, l'utilisateur qui tente
de se connecter sera immédiatement redirigé vers la page du CAS. Sinon, il aura
le choix via le formulaire classique, avec un lien en plus:
![login scodoc avec CAS](fig/config-cas-cnx.png)
🚸 Attention, le lien de réinitialisation du mot de passe ne concerne évidemment
pas le mot de passe du CAS, mais celui de ScoDoc. C'est ennuyeux.
À ce stade, CAS est utilisable, mais on n'a aucun utilisateur reconnu !
### Configuration des utilisateurs
ScoDoc doit connaitre l'identifiant CAS de ses utilisateurs. A défaut d'un
annuaire, il va falloir saisir ces identifiants pour chaque compte. On peut le
faire via le formulaire habituel de paramétrage du compte utilisateur, ou bien
par import Excel.
Cette configuration n'est accessible qu'au super-admin.
![form. config. utilisateur](fig/config-cas-user.png)
Ici trois champs nous intéressent:
- **Identifiant CAS**: nécessaire
- **Autorise connexion via CAS**: spécifie si ce compte peut ou non se connecter via CAS.
- **Autorise connexion via ScoDoc**: spécifie si cet utilisateur peut se connecter via
ScoDoc, sans CAS, lorsque le CAS est activé et forcé. Ceci est nécessaire par
exemple pour des comptes utilisés pour l'API, ou bien pour des personnes
extérieures à l'établissement et qui ne seraient pas (encore) dans le CAS.
En cas de besoin, les comptes "super-admin" peuvent toujours se connecter à ScoDoc sans CAS: si le
forçage est activé, il leur faut passer par une adresse spéciale:
```text
https://votre.serveur.scodoc.fr/auth/login_scodoc
```
(remplacer `https://votre.serveur.scodoc.fr` par le début de l'adresse de votre serveur).
🚸 **Attention**: en général, les **clients d'API** (et notamment la
"passerelle") n'utilisent pas le CAS: si vous forcez les utilisateurs à utiliser
le CAS, pensez à autoriser les comptes de l'API à se connecter sur ScoDoc sans
CAS.
## Sécurité: permissions et informations
L'utilisateur connecté via CAS a exactement les mêmes permissions que s'il
s'était connecté via ScoDoc.
### Permission
Le paramétrage CAS au niveau général nécessite la permission `Super Administrateur`.
Il est naturel de déléguer la création des comptes utilisateurs ScoDoc aux
responsables de département ou à leur représentant. Toutefois, le réglage CAS
pourrait créer des problèmes de sécurité (par exemple affecter à un département
un utilisateur CAS qui n'en fait pas réellement partie).
Le CAS ajoute une permission ScoDoc `ScoUsersChangeCASId` qui contrôle la
possibilité de changer l'identifiant CAS d'un compte. Cette permission peut ou
non être associée au rôle `Admin` d'un département, selon la politique de
l'établissement.
Les réglages par compte **Autorise connexion via CAS**
et **Autorise connexion via ScoDoc** sont réservés au `Super Administrateur`.
### Informations sur un utilisateur
Le super-administrateur (et elle seule) peut visualiser les dates de:
- dernière utilisation (date du dernier chargement de page);
- dernière connexion (login) via CAS.
dans les tables d'utilisateurs et sur la page de chaque compte:
![Informations sur un utilisateur](fig/config-user-view.png)
### Logs
Les connexions et tentatives de connexions via CAS sont logguées au niveau
`INFO`, qui arrive par défaut dans `/opt/scodoc-data/scodoc.log`.
Exemples:
- Connexion réussie:
```text
INFO: CAS: login user_name
```
- Tentative de connexion CAS réussie mais utilisateur non reconnu par ScoDoc:
```text
INFO: CAS login denied for cas_id=prenom.nom (unknown or inactive)
```
## Accès via l'API
L'authentification des clients de l'API utilise un jeton (*token*), qui est
demandé par l'appel `/ScoDoc/api/tokens` (qui lui même appelle
`User.get_token()`). Ce mécanisme ne passe jamais par le CAS, à condition que le
compte utilisateur utilisé par l'API soit "*Autorisé à se connecter via ScoDoc*"
(voir le formulaire plus haut, [configuration des
utilisateurs](#configuration-des-utilisateurs)).
!!! note "Voir aussi"
- [Gestion des utilisateurs](AdminUsers.md)
- [Rôles et permissions](ConfigPermissionsDept.md)
- [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [API pour ScoDoc 9](ScoDoc9API.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

42
docs/ConfigEmail.md Normal file
View File

@ -0,0 +1,42 @@
# Configuration des envois d'emails
ScoDoc envoie ou peut envoyer des emails, ou e-mails, ou courriels à de
nombreuses occasions, par exemple:
- comptes utilisateurs (réinitialisation mot de passe);
- envois de bulletins par mail aux étudiants;
- envois de notifications (notamment concernant l'assiduité);
- messages de diagnostic lors d'erreurs logicielles pour les développeurs.
Il est donc important de bien configurer le système de messagerie du serveur
ScoDoc. Ce point ne peut pas être documenté ici, car il dépend de
l'environnement local: relais de messagerie, politiques de filtrage, etc.
Par défaut, ScoDoc utilise le service SMTP Postfix, qui doit donc être configuré
pour relayer les messages vers la passerelle de l'établissement: voir la page
[envoi des courriers électroniques](ProblemesMail.md).
Une fois cela fait, l'utilisateur (administrateur) de ScoDoc a peu de réglages a
effectuer.
## Adresse d'origine (From)
On peut spécifier l'adresse d'origine (le champ `From`) de tous les mails émis.
![Réglage de l'adresse origine](fig/config-generale-mail.png)
Ce réglage peut être modifié au niveau de chaque département, via la page
**Paramétrage**:
![Réglage de l'adresse origine sur un département](fig/config-dept-mail.png)
## Notifications d'absences
Les notifications liées à l'absentéisme (fréquences, contenu) peuvent être
réglées via via la page **Paramétrage** de chaque département:
![Réglage des notifications](fig/config-dept-abs.png)
!!! note "Voir aussi"
- Configuration système: [Envoi des courriers électroniques](ProblemesMail.md)
- Installation, flux réseaux et configuration: [Guide d'installation](GuideInstallDebian11.md)
- [Contacts](Contact.md)

View File

@ -1,12 +1,16 @@
## Rôles définis dans l'installation standard
# Rôles définis dans l'installation standard
🚧 *cette page est ancienne et à revoir*.
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
## 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").
@ -39,7 +43,7 @@ Voici les permissions utilisées:
* **Sco Change Entreprises** : modifier le fichier d'entreprises
* **Sco Users Manage** : voir et modifier les utilisateurs ScoDoc
* **Sco Users Admin** : voir et modifier les utilisateurs ScoDoc
* **Sco Users View** : voir les utilisateurs ScoDoc
@ -53,31 +57,40 @@ Pour la liste à jour des permissions et leur nom complet, et les associations i
### Rôles associés à chaque permission dans chaque département
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... | | &nbsp;
-----------| ------- | -- | --
**`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`
Permission |  Rôles... | | &nbsp; |
-----------------------------|--------------|--------|---------|
**`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.
Les utilisateurs sont associés à un département principal et à des rôles.
Le fait d'être, ou non, associé à un département est important pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, *il ne pourra créer des utilisateurs que dans ce département* (c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département).
Le fait d'être, ou non, associé à un département est important:
* pour tous les utilisateurs: hormis le SuperAdmin, seuls les administrateurs du département d'appartenance sont habilités à modifier les caractéristiques principales (nom, prenom, email, mot de passe) de cet utilsateur
* pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, *il ne pourra créer des utilisateurs que dans ce département*
(c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département).
Pour la gestion des rôles, l'administrateur d'un département peut ajouter ou supprimer les rôles *de ce département* à n'importe quel utilisateur, y compris à ceux qui ne sont pas du même département
Exemple: si PAUL est du département GEII et a les rôles AdminGEII et AdminCJ
* Il pourra créer des utilisateurs uniquement dans le département GEII
* il pourra ajouter ou retirer les rôles EnsGEII, SecrGEII, AdminGEII à tout utilisateur de scodoc
* il pourra ajouter ou retirer les rôles EnsCJ, SecrCJ, AdminCJ à tout utilisateur de scodoc
Plus d'informations techniques sur la page [AdminUsers](AdminUsers.md).

View File

@ -1,13 +1,44 @@
# Rôles et permissions dans ScoDoc
## Rôles définis dans l'installation standard
ScoDoc défini par défaut quatre rôles principaux (d'autres sont prévus, notamment pour le module
relations entreprises):
- Administrateur
- Secrétariat
- Enseignant
- Observateur
Par ailleurs, le contexte d'utilisation donne certains privilèges (par exemple
la faculté de saisir des notes, de justifier des absences, de modifier la
définition des programmes, ...).
## Exemple
L'utilisateur 'Dupont' est responsable ScoDoc pour son département *RT* mais
intervient également en enseignement au département *GEII*.
On pourra lui attribuer les rôles `AdminRT` et `EnsGEII`, ce qui lui permettra :
- de gérer les utilisateurs du (seul) département RT :
Privilèges associés : `Gérer les utlisateurs (Sco Users Manage)`, `Changer les
formations (Sco Change Formation)`, ...
- d'accéder aux vues enseignant pour le département GEII :
Privilèges associés : `Voir les parties pour les enseignants (Sco View Ens)`,
`Saisir des absences (Sco Change Absences)`, ...
Pour une description plus fine des permissions, voir
[ConfigPermissions](ConfigPermissions.md).
## 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);
* `AdminXXX`: toutes opérations ScoDoc (chef de département, et éventuellement un ou deux collaborateurs de confiance);
* `EnsXXX`: enseignant du département;
* `EnsXXX`: enseignant du département;
* `SecrXXX`: secrétaire du département.
* `SecrXXX`: secrétaire du département.
L'installation standard défini aussi un utilisateur "*admin*", qui a le rôle "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.
@ -17,20 +48,26 @@ Un utilisateur peut avoir un nombre quelconque de rôles dans différents dépar
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).
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
## 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 ?
### 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).
* 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).
!!! note "Voir aussi"
- [ConfigPermissions](ConfigPermissions.md) pour plus de détails sur les permissions (pour les développeurs)
- [Gestion des utilisateurs](AdminUsers.md)
- [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,24 +1,54 @@
# Configuration d'un environnement de développement
Quelques indications pour développer avec ScoDoc 7.x, à adapter à vos goûts et outils.
Quelques indications pour développer avec ScoDoc, à adapter à vos goûts et outils.
Commencez par lire
[Installation du code pour les développeurs](https://scodoc.org/git/ScoDoc/ScoDoc#pour-les-d%C3%A9veloppeurs)
# Machine virtuelle
Il est confortable de développer dans une VM (un container Docker ferait aussi bien l'affaire, mais Docker a été créé bien après ScoDoc ! Les utilisateurs étant dans des VM, on a l'avantage d'être dans les mêmes conditions qu'eux).
Il est confortable de développer dans une VM (un container Docker ferait
aussi bien l'affaire).
## Conseils pour VirtualBox
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Mac, Linux ou Windows. Créer une VM avec Debian 10, et suivre la [procédure habituelle d'installation de ScoDoc](GuideInstallDebianDix.md).
## Conseils pour la machine virtuelle
En général, vous préférez développer sur la machine hôte pour disposer de votre éditeur préféré. Mais vous exécutez ScoDoc dans la VM.
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Linux ou
Windows. Créer une VM avec Debian 10, et suivre la [procédure habituelle
d'installation de ScoDoc](GuideInstallDebian11.md).
### Configuration réseau
La VM a besoin d'accéder à Internet pour l'installation, et aussi pour les mises à jour et peut-être certains tests que vous voudrez lancer. L'accès à la VM depuis l'hôte doit être possible via un réseau privé interne (car vous ne serez pas toujours conencté à Internet, et ne souhaitez pas que l'on accède à votre serveur de test de l'extérieur).
Sur les Macs anciens (processeurs Intel), VirtualBox fonctionne bien. Sur les
modèles "M1" (Apple Silicon), je conseille d'utiliser
[UTM](https://mac.getutm.app/) qui est facile à installer et très performant. On
installe alors une VM avec la distribution Linux Debian pour l'architecture
`arm64` (nous ne produisons pas de paquets Debian `arm64` pour ScoDoc 9, mais
l'installation est simple, ne pas hésiter à demander sur le Discord).
En général, vous préférez développer sur la machine hôte pour disposer de votre
éditeur préféré, mais exécutez ScoDoc dans la VM.
### Éditeur de texte / IDE
Si vous êtes expérimenté, vous avez vos outils préférés. Mais si vous débutez,
surtout pour un environnement de développement distant (le code développé tourne
dans une machine virtuelle ou réelle séparée de votre machine de bureau), nous
vous conseillons **VS Code** avec le module
[*Remote-SSH*](https://code.visualstudio.com/docs/remote/ssh). Ceci vous évite
de fastidieuses configurations de partage de fichiers entre les machines, il
suffit d'une connexion SSH fonctionnelle.
### Configuration réseau de VirtualBox
La VM a besoin d'accéder à Internet pour l'installation, et aussi pour les mises
à jour et peut-être certains tests que vous voudrez lancer. L'accès à la VM
depuis l'hôte doit être possible via un réseau privé interne (car vous ne serez
pas toujours connecté à Internet, et ne souhaitez pas que l'on accède à votre
serveur de test de l'extérieur).
Modifier la config réseau via l'UI graphique de VirtualBox, la VM étant éteinte.
- `Adapter 1` : accès à la VM depuis l'hôte: réseau privé hôte vboxnet0
- `Adapter 1` : accès à la VM depuis l'hôte: réseau privé hôte `vboxnet0`
- `Adapter 2` : accès à Internet depuis la VM, configurer un interface réseau NAT.
- `Adapter 2` : accès à Internet depuis la VM, configurer un interface réseau NAT.
Dans le Debian, j'utilise `/etc/network/interfaces`
@ -30,79 +60,27 @@ Dans le Debian, j'utilise `/etc/network/interfaces`
allow-hotplug enp0s3
iface enp0s3 inet dhcp
(le `enp0s3` désigne chez moi l'`Adapter 1`, mais c'est susceptible de changer. Normalement, l'installeur créé ce fichier )
(le `enp0s3` désigne chez moi l'`Adapter 1`, mais c'est susceptible de changer.
Normalement, l'installateur a créé ce fichier )
Pour lancer l'interface externe , quand on a besoin d'accéder à Internet depuis la VM (en fait assez rarement):
Pour lancer l'interface externe , quand on a besoin d'accéder à Internet depuis
la VM:
dhclient enp0s8
ici `enp0s8` correspond à l'`Adapter 2`. Si vous travaillez sur une machine fixe avec connexion permanente, vous pouvez dans Debian activer cette interface constamment (modifier `/etc/network/interfaces`).
ici `enp0s8` correspond à l'`Adapter 2`. Si vous travaillez sur une machine fixe
avec connexion permanente, vous pouvez dans Debian activer cette interface
constamment (modifier `/etc/network/interfaces`).
### Noms des machines
Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre VM, par exemple (adapter l'IP !):
Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre
VM, par exemple (adapter l'IP !):
192.168.12.10 scodoc scodoc.dev.net
### Partage de fichiers
Pour éditer votre code au chaud sur votre hôte, il y a plein de solutions. L'une consiste à laisser le code dans la VM, mais de monter un répertoire (par exemple `/opt`) sur l'hôte, par exemple via `sshfs`.
Une autre solution (que j'utilise sur mon MacBook), est de laisser le source (clone git) sur l'hôte, et de partager ce répertoire avec la VM.
Dans VirtualBox / config. VM / Dossiers partagés, ajouter un partage. Par exemple, vous mettez vos sources sur l'hôte dans `~/src`, et dans la VM sur `/src`.
Dans ScoDoc, `/opt/scodoc/Products/ScoDoc` est alors un lien symbolique vers votre `src/ScoDoc`.
Attention, VirtualBox gère mal les droits/permissions du répertoire partagé. les utilisateurs linux (dans la VM) doit être dans le groupe `vboxsf`:
usermod -a -G vboxsf root
Typiquement, les fichiers sources vus de la VM ont les droits
-rwxrwx--- 1 root vboxsf 129579 Feb 1 15:04 ZNotes.py
alors que le même fichier sera vu de l'hôte
-rw-r--r-- 1 viennet staff 127K Feb 1 15:04 ../ScoDoc/ZNotes.py
Compte-tenu de ces différences, je préfères utiliser git sur l'hôte.
Il arrive (?) que Virtual Box change les droits unix sur les fichiers partagés. Dans ce cas, j'utilise, sur l'hôte
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
# Interaction avec ScoDoc 7
ScoDoc 7 utilise Zope, et ce n'est pas un environnement commode pour débugguer.
Pour avoir un terminal interactif permettant de jouer avec ScoDoc, lancer
cd /opt/scodoc/Product/ScoDoc
scotests/scointeractive.sh DEPT
`DEPT` est un département existant.
Ce script lance ScoDoc et charge `debug.py`.
Vous pouvez lancer un script avant d'entrer en mode interactif, par exemple
scotests/scointeractive.sh -r DEPT scotests/test_capitalisation.py
(voir plus d'exemples dans le répertoire `scotests`).
## problèmes de verrous
Zope créé un verrou pour ne jamais avoir deux process accédant à sa base de données objet à la fois. Celà empêche de lancer les scripts intercatif si un serveur ScoDoc est lancé, ce qui est ennuyeux quand on debugue. On peut, sur une machine de développement seulement, contourner cela en hackant le code du serveur:
Éditer (après installation normale sur votre serveur de développement):
/opt/zope213/lib/python2.7/site-packages/zc/lockfile
Ligne 56, méthode `_lock_file`
ajouter juste
return
Pour éditer votre code au chaud sur votre hôte, il y a plein de solutions.
La plus simple, déjà mentionnée, consiste à passer par une connexion SSH (VS
Code propose un module dédié très simple et performant, mais tout montage de
type `sshfs`peut aussi faire l'affaire).

51
docs/Contact.md Normal file
View File

@ -0,0 +1,51 @@
# Contacter le projet ScoDoc
La plate-forme Discord est le principal canal de communication entre les
utilisateurs et entre les développeurs:
[rejoindre le discord ScoDoc Assistance](https://discord.gg/ybw6ugtFsZ)
Il existe aussi un autre salon Discord réservé aux développeurs, n'hésitez pas à
demander à le rejoindre.
## Liste de diffusion
* [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces) liste à très faible trafic, en lecture seule, seules des annonces importantes sont postées (quelques messages par an), tous les utilisateurs sont encouragés à s'y abonner. Indispensable aux administrateurs du logiciel.
## Signaler un problème (bug logiciel)
Tous les utilisateurs sont encouragés à signaler les erreurs qu'ils rencontrent,
afin qu'elles soient rapidement corrigées.
Pour cela, il existe un canal dédié sur le Discord: [🐞 bugs](https://discord.gg/BvAFnZU6UA)
Pour signaler un bug, il faut donner le maximum d'informations pour que nous
puissions le reproduire. Le mieux est d'envoyer les données d'assistance (lien
en bas de la page d'accueil du département) et d'indiquer quelle page ou
étudiant ou opération pose problème. Les données d'assistance ne contiennent pas
les noms, adresses et autres données personnelles: il faut donc indiquer
l'adresse de la page et jamais le nom d'un étudiant. Par exemple
`QLIO/Scolarite/Notes/formsemestre_bulletinetud?formsemestre_id=123&etudid=123456`
permet d'indiquer le semestre et l'étudiant à regarder.
![Envoi des données d'assistance](fig/envoi-assistance.png)
## Développeurs
Vous trouverez les sources du projet, les tickets (*issues*) et autres outils sur
* [gitea](https://scodoc.org/git/)
Vous pouvez demander un compte sur cette plate-forme pour ajouter des tickets,
proposer votre code (*pull requests*).
(Nous avons choisi le logiciel libre [Gitea](https://gitea.io) et non GitHub
afin de ne pas dépendre d'une plate-forme commerciale et de garder un contrôle
complet sur nos travaux).
## Anciennes listes de diffusion
Ces listes ne sont plus utilisées, remplacées par le Discord.
* [Notes](https://listes.univ-paris13.fr/mailman/listinfo/notes) discussions ou questions liées à l'utilisation du logiciel, entraide entre utilisateurs: vous pouvez y intervenir librement (les messages sont modérés pour éviter le spam).
* [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel) échanges entre développeurs. Abonnez-vous si vous êtes intéressés par le développement du logiciel, souhaitez participer ou poser des questions techniques.

View File

@ -1,17 +1,37 @@
# Contribuer à ScoDoc
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun peut aider, en améliorant la documentation (page, vidéos), en s'abonnant à la liste Notes (voir [listes de diffusion](ListesDeDiffusion.md)) pour y aider les collègues, ou en développant ou testant le logiciel.
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun
peut aider, en améliorant la documentation (page, vidéos), en rejoignant le
serveur Discord (voir [contacts](Contact.md)) pour y aider les
collègues, ou en développant ou testant le logiciel.
Le canal de communication entre développeurs est la liste de diffusion mail [scodoc-devel](ListesDeDiffusion.md). Là, vous pourrez demander un compte sur le [git du projet](https://scodoc.org/git), consulter/ajouter des tickets, proposer votre code (*pull requests*).
Les canaux de communication entre développeurs sont
[indiqués sur cette page](Contact.md). Vous pouvez demander un compte sur le [git du
projet](https://scodoc.org/git), consulter/ajouter des tickets, proposer votre
code (*pull requests*).
## Contribuer à la documentation
La documentation est constituée de deux parties:
- les vidéos postées sur [la chaîne YouTube](https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1). Proposez de nouvelles vidéos, c'est très facile à faire !
- les vidéos postées sur [la chaîne
YouTube](https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1).
Proposez de nouvelles vidéos, c'est très facile à faire !
- Les pages Web comme celle que vous lisez actuellement. La documentation est générée via `MkDocs, un système très simple basé sur le format [Markdown](https://www.markdownguide.org/basic-syntax/). Toutes les sources sont sur le [dépôt git DocScoDoc](https://scodoc.org/git/viennet/DocScoDoc).
- Les pages Web comme celle que vous lisez actuellement. La documentation est
générée via `MkDocs`, un système très simple basé sur le format
[Markdown](https://www.markdownguide.org/basic-syntax/). Toutes les sources
sont sur le [dépôt git DocScoDoc](https://scodoc.org/git/viennet/DocScoDoc).
## Contribuer au logiciel
Le [dépot principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).
Le [dépôt principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs
branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).
!!! note "Voir aussi"
- [Guide développeurs](GuideDeveloppeurs.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

130
docs/DevAPIPermissions.md Normal file
View File

@ -0,0 +1,130 @@
# Contrôle d'accès des fonctions de l'API
## Rappels
Dans ScoDoc, les permissions sont liées à des rôles. Un utilisateur a un ou plusieurs
rôles, dans un ou tous les départements (si le département est null, on
considère que le rôle est donnés dans tous les départements).
Dans ScoDoc Web, toutes les routes sont liées à des départements
```txt
/ScoDoc/<str:dept_acronym>/Scolarite/
```
sauf la page d'accueil (`/ScoDoc/index`), les pages de configuration générale
(`ScoDoc/configuration`) et les pages "entreprises" (`ScoDoc/entreprises/`).
L'API manipule des objets (formsemestres, modules, notes...) identifiés par leur
`id` qui est unique dans la base (note: les code INE et NIP ne sont pas des id,
et peuvent se retrouver dans plusieurs départements, notamment en cas de
transfert d'un étudiant d'un département à un autre).
## Contrôle des permissions par l'API et départements
Ainsi, une route API comme `/partition/<int:partition_id>` n'est pas ambigüe.
Toutefois, ScoDoc doit déterminer si l'utilisateur a le droit d'accéder (ou de
modifier) cet objet. Pour cela, ScoDoc a besoin de connaitre le département.
C'est généralement assez simple: dans cet exemple, l'objet `partition` a une
relation avec `formsemestre`, lui même lié à son département: on écrit
`p.formsemestre.departement.acronym`.
Cependant, le contrôle de l'accès est plus facile à exprimer (donc plus sûr,
moins de risque d'erreurs) avec un décorateur: on écrit typiquement les vues:
```py
@permission_required(Permission.ScoView)
def ma_vue( arg ):
...
```
Comme nous l'avons dit, pour les vues Web (voir sources dans `app/view/*.py`),
le département est dans la route (URL): ainsi le tableau de bord d'un
formsemestre est
```txt
ScoDoc/<str:dept_acronym>/Scolarite/Notes/formsemestre_status
```
La vue s'écrit
```py
@bp.route("/formsemestre_status")
@scodoc
@permission_required(Permission.ScoView)
def formsemestre_status(formsemestre_id:int):
...
```
Le décorateur `scodoc` (défini dans `app/scodoc/decorators.py`) récupère le
département présent dans la route et affecte deux attributs dans la requête
```py
g.scodoc_dept = "RT" # l'acronyme du dept
g.scodoc_dept_id = 5 # l'id du dept
```
Le décorateur suivant, `permission_required` peut ainsi vérifier que la
permission est bien accordée dans ce département.
Pour l'API, on a deux routes:
```py
/ScoDoc/api/partition/<int:partition_id>
```
Dans ce cas, le décorateur `scodoc` ne récupère pas de département
(`g.scodoc_dept`est mis à `None`), et `permission_required`exige alors que la
permission soit accordé dans *tous les départements* (`dept`à `None`).
Lorsque l'API est utilisée depuis une vue web de ScoDoc, donc par un utilisateur
ordinaire n'ayant de rôles que dans son (ou ses) départements, ce mécanisme
échoue. On propose donc une autre route, de la forme
```txt
/ScoDoc/<str:dept_acronym>/api/partition/<int:partition_id>
```
Les décorateurs fonctionnent alors bien.
## Écriture d'une vue API
Il reste à la charge des fonctions de l'API d'effectuer la vérification que les
objets demandés sont bien dans le département donné par la route (point de
vigilance: risque de fuite de données si mal codé). Dans la plupart des cas, il
faut pour cela ajouter une jointure. par exemple, pour demander une partition,
on écrira non pas
```py
p = Partition.query.get(partition_id)
```
mais plutôt
```py
p = Partition.query.filter_by(id=partition_id).join(FormSemestre).filter_by(dept_id=g.scodoc_dept_id)
```
Écriture d'une vue de l'API accessible en mode web et API:
```py
@api_bp.route("/api_function/<int:arg>")
@api_web_bp.route("/api_function/<int:arg>")
@login_required
@scodoc
@permission_required(Permission.ScoView)
def api_function(arg: int):
"""Une fonction quelconque de l'API"""
return jsonify({"current_user": current_user.to_dict(), "dept": g.scodoc_dept})
```
## Fonctionnement interne du contrôle d'accès ScoDoc
Les accès ScoDoc sont gérés avec `flask-login`. L'authentification est faite
soit par un cookie de session (web), soit par un jeton `jwt` (API).
Ce décodage/contrôle est fait par la fonction
`app.auth.logic.load_user_from_request()`.
En cas de refus (jeton ou cookie absent ou invalide), on a une redirection vers
la page de login (en mode web), ou un message d'erreur JSON 401 pour l'API
(voir `app.auth.logic.unauthorized_handler`).

48
docs/DevCursus.md Normal file
View File

@ -0,0 +1,48 @@
# Cursus ScoDoc
Les cursus pédagogiques sont définis dans ScoDoc par des classes de "cursus" qui
définissent les paramètres: nombre de semestres, modalités de validation des UE,
etc.
Plusieurs cursus sont définis dans ScoDoc, l'utilisateur choisi l'un d'entre eux
pour chacun des programmes pédagogique (menu **Type de parcours**). Les cursus
existants incluent les suivants:
* BUT (*Bachelor Universitaire de Technologie*, usuellement en 6 semestres)
* DUT (*Diplôme Universitaire de Technologie*, en quatre semestres)
* Licence Professionnelle
* Licence
* Master (différents types)
* etc.
Il est possible d'ajouter des cursus adaptés en ajoutant du code Python.
Toutefois, afin de ne pas perturber les mises à jours et de garantir la
pérennité des modifications, il est très recommandé de partager les
modifications pour inclusion dans le code ScoDoc. Contacter pour cela les
développeurs ([Contacts](Contact.md)).
## Quelques indications pour les programmeurs
Les parcours sont définis dans le module `codes_cursus.py`. Chaque parcours
correspond à une sous-classe de `TypeCursus`, définissant des paramètres et
quelques méthodes.
Les paramètres (déclarés comme des variables de classe) sont les suivants:
Nom | Type | &nbsp;
--- | ---- | ---
TYPE_PARCOURS| `int` | id du parcours (un entier unique, à demander sur scodoc-devel)
NAME| `string` | nom du parcours présenté à l'utilisateur (requis)
NB_SEM| `int` | durée en semestres (1)
BARRE_MOY | `float` | seuil validation semestre (10/20)
BARRE_UE_DEFAULT | `float` | seuil moy UE pour valider semestre (8/20)
BARRE_UE | `dict { ue : seuil }`| seuil par UE (`{}`)
NOTES_BARRE_VALID_UE_TH | `float` | seuil validation UE (10./20)
ALLOW_SEM_SKIP| `bool` | passage: autorise-t-on les sauts de semestres ? (`False`)
SESSION_NAME| `string` | nom des sessions (`'semestre'`)
SESSION_ABBRV | `string` | `'S' -> S1, S2, ...`
UNUSED_CODES | `set` | ensemble des codes jury non autorisés dans ce parcours (`set()`)
UE_IS_MODULE| `bool` | un seul module par UE (si plusieurs modules, étudiants censéments inscrits à un seul d'entre eux) (`False`)
ECTS_ONLY| `bool` | parcours avec progression basée uniquement sur les ECTS (`False`)
ALLOWED_UE_TYPES | `set` | types d'UE autorisés dans ce parcours

396
docs/DevGit.md Normal file
View File

@ -0,0 +1,396 @@
# Utilisation de git pour ScoDoc
Le dépôt est <https://scodoc.org/git/viennet/ScoDoc>
La branche `master` est celle de ScoDoc 9, d'où sont issues les paquets
distribués (*releases*). Les développements ont lieu sur d'autres branches
(`api`, `dev92`, `entreprises`, ...) avant d'être intégrés après tests. La
branche `Scodoc7` était l'ancienne (jusqu'à septembre 2021) version de ScoDoc.
Ci-dessous quelques pense-bête qui peuvent servir.
## Hot fixes (internes)
Pour les développeurs internes (écriture sur le dépôt master), un exemple
basique illustrant le cycle de développement:
```bash
# Créer une branche
# si besoin (travail en cours), utiliser git stash avant
git checkout master
git branch hotfix
git checkout hotfix
... dev, test ...
git add ...
git commit -m "fixed ..."
git checkout master
git merge hotfix
git branch -d hotfix
# publication
# éventuellement: git stash pop
```
Dans la plupart des cas, on travaillera sur son propre dépôt (clone du dépôt
origine), et on proposera une *pull request* (PR, *demande d'ajout* en français).
## Mettre à jour votre branche
Quand vous travaillez dans votre branche `ma_branche`, pour lui appliquer les
mises à jour de `master` (remote), faire:
```bash
git pull origin master
```
## Autre exemple
Vous travaillez sur un clone du dépôt principal ("origin"), obtenu par exemple via
```bash
git clone https://scodoc.org/git/ScoDoc/ScoDoc.git
```
remplacer par l'URL de votre dépôt sur gitea au besoin. Si vous avez votre
propre dépôt sur gitea, utilisez deux "remote": l'un pour votre dépôt gitea (ici
nommé `mon_origin`), l'autre pour le dépôt principal ScoDoc (ici nommé
`origin`).
```bash
git remote add origin https://scodoc.org/git/viennet/ScoDoc.git
git remote -v
mon_origin https://xxx.xxx (fetch)
mon_origin https://xxx.xxx (push)
origin https://scodoc.org/git/viennet/ScoDoc.git (fetch)
origin https://scodoc.org/git/viennet/ScoDoc.git (push)
```
Ensuite, tout est prêt, vous créez votre branche:
```bash
git checkout -b ma_branche
```
et la poussez sur votre dépôt: (remplacer `mon_origin`au besoin)
```bash
git push -u mon_origin ma_branche
```
Ajoutez au fur et à mesure vos commits comme d'habitude. Mais régulièrement
(chaque jour), mettez à jour pour éviter de diverger de la branche `master` (ou
autre suivant les cas) de ScoDoc:
```bash
git pull origin master
```
Vous pouvez alors à tout moment soumettre une PR propre.
## Commandes utiles, en vrac
- `git log -L:fonction_python:fichier.py`
- Commits locaux: `git log @{u}..`
### Refactoring
Lint tous les fichiers modifiés:
```bash
git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E
```
Affiche les variables non définies dans un fichier:
```bash
pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \'
```
Prépare un sed pour renommer les variables non définies:
```bash
for f in *.py
do
pylint --disable=all -e E "$f" | grep undefined-variable | awk '{print "sed -i .bak s/"$4"/scu."$4"/ '$f'";}' | sort | uniq | tr -d \'
done
```
Restore les modes au besoin (SAMBA les changent parfois):
```bash
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
```
Note pour travailler sur VirtualBox:
```text
addgroup scodoc vboxsf
```
## Préparation d'une PR (Pull Request) (niveau avancé)
### Principes généraux
Les remarques de cette section visent à obtenir une relecture facile de votre
demande d'ajout (*pull request*, dite "PR"):
- Éviter les modifications de forme qui ne changent pas le sens du code. L'utilisation de
[`black`](https://black.readthedocs.io/) est obligatoire : elle permet de normaliser la présentation
du code. Cela évite de générer des différences ne représentant que des
changements de mise en forme (indentation, passages à la ligne). Cela évite
aussi au développeur d'avoir à y réfléchir, autant de temps gagné !
- Avoir un nombre d'étapes de validation faible (idéalement un seul commit pour
les PR courantes - peu volumineuses).
- La PR doit toujours être énoncée par rapport au dernier commit de la branche
que vous visez (en général `master` du dépôt original).
### Manipulations
Les manipulations sont décrites selon quatre phases du développement : l'installation,
la mise en place, le suivi et la livraison.
#### L'installation
Il est pratique d'avoir en ligne les deux dépôts git distants que vous pouvez
utiliser : votre dépôt personnel (`https://scodoc.org/git/<user>/<dépôt>.git`) et
le dépôt officiel (`https://scodoc.org/git/ScoDoc/ScoDoc.git`).
pour ajouter une référence (et lui donner un nom) vers un dépôt distant, entrez
la commande:
```bash
git remote add nom_remote https://scodoc.org/git/ScoDoc/<dépôt>.git
```
Par la suite vous aurez donc une référence vers votre dépôt personnel (`perso`)
et une référence vers le dépôt officiel (`officiel`). Si vous avez initialement
cloné l'un des deux dépôts, la référence vers le dépôt d'origine existe et a pour nom
`origin`.
La commande vous exposant tous les dépôts connus est :
```bash
git remote -v
```
### Mise en place
L'objectif de ce paragraphe est de créer une branche locale basée sur le master
du dépôt officiel et bien sur de lui donner un nom.
pour cela (**attention cela va écraser les éventuels fichiers modifiés**. Si
vous souhaitez conserver les modifications en cours, encadrez les lignes
suivantes par `git stash` (avant) et `git stash apply` (après) :
```bash
git reset --hard officiel/master
git checkout -b ma_modif
```
À partir de là, vous pouvez modifier, tester, développer et commit votre travail.
### Suivi
Si votre développement prend plusieurs jours, il est probable que la branche
principale évolue pendant ce temps.
Pour garder la cohérence, il est nécessaire de réintégrer en local les
modifications de la branche principale. Ceci peut se faire de deux façons.
- Une fusion (`merge`) applique toutes les modifications en un seul commit).
C'est la méthode couramment utilisée.
- Un `rebase` rejoue tous les commits de la nouvelle branche par dessus l'état
le plus à jour de la branche principale (il en résulte un historique plus
linéaire).
Les commandes git correspondantes :
```bash
git pull officiel master
```
ou encore
```bash
git fetch officiel
git merge officiel/master
```
Pour un rebase (à éviter en temps normal):
```bash
git fetch officiel
git rebase officiel/merge
```
### La livraison
Ça y est. Vous avez terminé le développement. IL n'y a plus qu'à demander
l'intégration. Ceci se fait en plusieurs étapes (vous êtes bien sûr toujours sur
la branche locale `ma_modif` et toutes vos modifications ont été commitées).
#### Étape 1 : faire l'inventaire des fichiers impliqués
```bash
git fetch officiel/master
git diff --name-only officiel/master
```
#### Étape 2 : passer black sur les fichiers modifiés
Cette étape est automatique avec les bons réglages sous VSCode (pas trouvé
l'équivalent sous *pyCharm*).
À défaut les lignes suivantes réalisent le même travail :
```bash
for fn in $(git diff --name-only officiel/master)
do
python3 -m black $fn
done
```
Faire une première lecture rapide pour vérifier qu'il ne reste pas de fichiers
modifiés accidentellement.
Pour obtenir la modification sur un fichier spécifique (`app/fichier.py` par
exemple):
```bash
git diff officiel/master app/fichier.py
```
Utilisateurs Windows : Vérifiez bien que les réglages de fin de ligne suivent
bien les règles Linux: pas de retour chariot (noté CR ou `\r`) en fin de ligne
mais un seul caractère line feed (noté LF ou `\n`). Le cas échéant, réglez
votre IDE pour cela.
À ce niveau là de la procédure, vous n'avez plus dans votre branche locale que
les différences strictement nécessaires à votre correctif.
#### Étape 3 : résumez tous les commits depuis le point de divergence en un seul commit
**Rarement nécessaire, uniquement si vous avez de nombreux petits commits.**
Repérez le point de divergence de votre branche locale avec officiel/master
(normalement `git merge-base HEAD officiel/master`)
Demander un `rebase` interactif depuis ce point :
```bash
git rebase -i $(git merge-base HEAD officiel/master)
```
*Explications*: Le rebase interactif permet d'enregistrer un suite de
manipulation de commit dans un seul fichier texte. Le fichier texte qui reprend
tels quels tous les commits concernés (et donc qui ne fait rien) est préparé par
la commande `-i` de la commande_ `git rebase`.
Vous pouvez ensuite modifier ce fichier dans votre éditeur favori (ou pas) (à
régler par `git config`) pour décrire_ _votre intention (réordonner, changer le
message, fusionner, ...) sur l'ensemble des commits.
Quand votre édition est terminée, git reprend la main est exécute chacune de vos
opérations. Il est possible (bien que très rare) que des conflits apparaissent
à ce moment-là. Les commandes habituelles de correction accompagnées des
commandes :
```bash
git rebase --continue # pour poursuivre le processus
git rebase --abort # pour tout abandonner
```
*vous permettront de résoudre ces problèmes exceptionnels*.
Application:
```bash
git rebase -i $(git merge-base HEAD officiel/master)
```
Vous devez obtenir dans un éditeur de texte la liste des commits opéré depuis le
début du développement sous cette forme (c'est un exemple : le nombre de lignes
peut varier) :
```bash
pick eb8cbec modif 1
pick 83eb79e modif 2
# Rebase 5ffd074..83eb79e onto 5ffd074 (2 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
# commit's log message, unless -C is used, in which case
# keep only this commit's message; -c is same as -C but
# opens the editor
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . create a merge commit using the original merge commit's
# . message (or the oneline, if no original merge commit was
# . specified); use -c <commit> to reword the commit message
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
```
Vous pouvez réorganiser tous les commits (changer l'ordre, fusionner) en
changeant la commande pick au début de chaque ligne. L'idée ici est de fusionner
toutes les lignes avec la première en remplaçant le 'pick' à partir de la ligne
2 par `fixup`. Au besoin, vous pouvez reformuler le message de commit
(commande `reword` sur la première ligne).
Vous construirez par exemple :
```bash
reword eb8cbec Correctif: Api - gestion des formation
fixup 83eb79e modif 2
...
```
Quand vous sortez de l'éditeur, git effectue toutes les opérations demandées.
À ce niveau-là de la procédure :
- vous avez un seul commit pour l'ensemble du correctif proposé;
- toutes les différences entre officiel/master et votre branche locale sont
signifiantes.
#### Étape 4
Vous pouvez maintenant pousser votre branche locale sur votre dépôt personnel
(vers une branche de même nom):
```bash
git push --set-upstream perso ma_branche
```
Si vous avez déjà fait cette opération auparavant il est possible que le push
soit refusé (car le rebase a modifié des commits qui avaient déjà été poussés).
Dans ce cas l'option `--force` du push vous permette de passer outre, mais
assurez-vous avant d'être le seul à travailler sur cette branche.
#### Etape 5 : La dernière étape se passe sur le site [scodoc.org/git](https://scodoc.org/git/)
- Identifiez-vous
- Placez-vous sur la branche nouvellement créée
- À l'aide de l'interface du serveur, vous pouvez comparer l'état de votre
branche par rapport au master officiel, et si cela vous convient, il vous
reste à formuler une demande d'intégration (*pull request*). En remplissant
les informations demandées.

183
docs/DevInternals.md Normal file
View File

@ -0,0 +1,183 @@
# Développement ScoDoc: Introduction
## Composants logiciels
- le code est écrit en Python 3.9 (passage à 3.10 prévu avec Debian 12).
- le code doit être formatté par [black](https://pypi.org/project/black/) qui
est normalement intégré à votre éditeur (VSCode et PyCharm sont deux choix
judicieux).
- outre Python, les principaux composants logiciels sont:
- [Flask](https://flask-sqlalchemy.palletsprojects.com/en/2.x/): le
framework Web, dont on utilise notamment:
- l'ORM [SQLAlchemy](https://www.sqlalchemy.org/)
- les templates [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/)
- [Postgresql](https://www.postgresql.org/)
- [Redis](https://redis.io/) cache persistant
- [NGINX](https://www.nginx.com/) serveur Web frontal
- [gunicorn](https://gunicorn.org/) WSGI HTTP server
- et bien sûr Linux (Debian 11 en 2021-2022) et systemd.
## Principaux objets
Les objets manipulés par ScoDoc sont pour la plupart stockés en base postgres et
accédé soit directement en SQL (anciennes parties de ScoDoc), soit à travers
l'ORM SQLAlchemy (recommandé pour tout nouveau code).
Les modèles correspondant sont déclarés dans `/opt/scodoc/app/models/`.
Principales classes (les noms des classes Python sont en `CamelCase`).
- Étudiants (classe `Identite`): nom, codes INE/NIP, etc
- Formations: programmes pédagogiques, contenant
- Unités d'Enseignement (`UniteEns`);
- Matières et Modules (`Module`, avec son type standard, bonus, ressources
ou SAÉ).
- FormSemestre: instanciation d'une session de formation, avec un programme
pédagogique donné (Formation), les dates de début et fin, des étudiants
inscrits, des responsables, divers codes, et les ModuleImpl mis en œuvre.
- ModuleImpl: la mise en place d'un module pédagogique (le ModuleImpl est au
Module ce que le FormSemestre est à la Formation): lié à un module, avec un
enseignant responsable et des étudiants inscrits.
- Inscriptions: tables d'association avec codes et/ou état (démission,
défaillant): FormsemestreInscription ModuleImplInscription.
## Vues et décorateurs
Une vue ordinaire (Web) pourrait ressembler à cela. Noter la présence de
décorateurs:
- `@scodoc` récupère le département (présent dans l'URL) et initialise quelques
trucs, notamment `g.scodoc_dept` (l'acronyme du département courant) et
`g.scodoc_dept_id` (l'id du dépt. courant).
- `@permission_required`: permet de contrôler l'accès, en se basant sur les
permissions définies dans la classe `Permission`.
```
@bp.route("/un_exemple")
@scodoc
@permission_required(Permission.ScoChangeFormation)
def un_exemple():
# Récupérer le ou les arguments: exemple avec formation_id
formation_id = int(request.args["formation_id"])
# Charger le ou les objets utilies:
formation = models.Formation.query.get(
formation_id=formation_id
).first_or_404()
# Effectuer au besoin un traitement
resultat = ...
# Afficher le résultat
return render_template(
"exemple_template.html",
resultat=resultat, # par exemple
formation=formation,
... # etc
)
```
## Vues de l'API et permissions
L'API REST est documentée ici : [ScoDoc9API](ScoDoc9API.md).
Les fonctions de l'API sont donc accessibles via les routes de la forme
`https://scodoc.monsite.tld/ScoDoc/api/fonction`
et aussi `https://scodoc.monsite.tld/ScoDoc/api/<dept_acronyme>/fonction`.
La seconde forme précise un département.
La seconde forme est notamment utilisée par les pages web de ScoDoc. Elle permet
un calcul des permissions liées à un département: l'idée est de donner accès à
l'API à un utilisateur qui n'ait pas la permission (par ex. `ScoView`) dans tous les
départements, ce qui est en général le cas des utilisateurs Web, mais est aussi
utile pour sécuriser certains usages de l'API.
Une vue API (avec accès via token API et/ou cookie Web) se déclare donc ainsi:
```py
@bp.route("/formsemestres/query")
@api_web_bp.route("/formsemestres/query")
@login_required
@scodoc
@permission_required(Permission.ScoView)
def formsemestres_query():
...
```
Son usage par un utilisateur n'ayant accès qu'à un seul département passera par
la route départementale
`http://scodoc.monsite.tld:5000/ScoDoc/<dept_acronyme>/api/formsemestres/query`.
### Exemple complet d'usage
Création du rôle, de l'utilisateur, association à un département, requêtage.
```bash
flask create-role LecteurAPI2 # 2 car LecteurAPi était déjà pris sur mon serveur de test
flask edit-role -a ScoView LecteurAPI2
flask user-create lecteur_rt LecteurAPI2 RT # Seulement dans dept RT
flask user-password lecteur_rt
```
puis
```bash
http -a lecteur_rt:mot_de_passe POST 'http://localhost:5000/ScoDoc/api/tokens'
# récupérer le token...
http GET http://localhost:5000/ScoDoc/api/RT/formsemestres/query "Authorization:Bearer xxxxxxxxxxx"
# -> réponse ok
http GET http://localhost:5000/ScoDoc/api/formsemestres/query "Authorization:Bearer xxxxxxxxxxx"
# -> 401, "Non autorise (logic)"
```
### Côté programmation serveur
Reprenons le même exemple (voir app/api/formsemestres.py ligne 91,
<https://scodoc.org/git/ScoDoc/ScoDoc/src/branch/master/app/api/formsemestres.py#L91>):
```py
@bp.route("/formsemestres/query")
@api_web_bp.route("/formsemestres/query")
@login_required
@scodoc
@permission_required(Permission.ScoView)
def formsemestres_query():
...
formsemestres = FormSemestre.query
if g.scodoc_dept:
formsemestres = formsemestres.filter_by(dept_id=g.scodoc_dept_id)
...
```
En effet, `g.scodoc_dept` et `g.scodoc_dept_id` sont positionnés par le
décorateur si on a un appel via la route départementale.
Il est donc important, pour toutes les vues API, de prendre soin de ne pas
divulguer d'informations hors du département spécifié, en filtrant la ou les
requêtes si `g.scodoc_dept` est non `None`.
## Caches
Il est bon de savoir que les requêtes SQL de SQLAlchemy ne sont pas cachées: ni
la requête elle même (construction du SQL à partir des appels à l'ORM), ni son
résultat.
Le module `sco_cache.py` offre la possibilité de cacher des objets python
identifiés par un id unique dans le cache Redis. Ce cache est persistant, il
faut donc invalider les objets quand on écrit des données susceptibles de les
modifier, et penser à le vider quand on modifie le code.
Par exemple:
```bash
git pull
flask clear-cache
```
La commande `redis-cli FLUSHALL` permet aussi de vider le cache sans avoir à
lancer flask (plus rapide).
!!! note "Voir aussi"
- [Guide développeurs](GuideDeveloppeurs.md)
- [API ScoDoc 9](ScoDoc9API.md)
- [Modélisation du BUT](ModelisationParcoursBUT.md)
- [Contacts](Contact.md)

183
docs/DevJuryBUT.md Normal file
View File

@ -0,0 +1,183 @@
# Implémentation jurys BUT
*Quelques notes informelles sur la gestion des jurys BUT.*
Fichiers sources:
```txt
app/but/jury_but.py
app/but/cursus_but.py
```
## Validations enregistrées
- UEs : comme pour les formations classiques
- RCUE: `ApcValidationRCUE(etudid, formsemestre, ue1, ue2)`
- Le formsemestre est optionnel: c'est celui d'où a été émise la validation.
- Pour retrouver le niveau, passer par l'UE: `ue1.niveau_competence`
- Années BUT: `ApcValidationAnnee`
- liée au référentiel de compétence.
## La page saisie jury BUT (annuelle)
Partir de la liste des niveaux à valider pour cet étudiant dans sa scolarité,
selon le parcours de l'étudiant. Le parcours est donné par son inscription dans
le semestre courant (celui duquel on lance la saisie).
Chaque compétence forme une ligne, comme sur la fiche étudiant.
Le semestre courant donne l'année scolaire (2022, ...) et l'année BUT courante (1, 2, 3)
On affiche les colonnes suivantes (exemple d'un jury de BUT2 S4):
| BUT1 | BUT2 S2 | BUT2 S3 | BUT2 RCUE | autorisation | BUT3 |
|---------------|---------|---------|-----------|--------------|-------------|
| Compétence 1 | rcue | UE1.3 | UE1.4 | code | feu vert S5 |
| Compétence 2 | ... | ... | ... | ... | ... |
sur chaque code un popup explicatif (date de validation)
Actuellement (9.4), l'état du BUT1 (et BUT2 quand on sera en BUT3) n'est pas
rappelé sur cet affichage.
### Rappel sur les validations de jury
En BUT, on va utiliser 3 types de décisions de jury: sur les UEs, les RCUEs et
les années de BUT. Une décision sur une UE concerne l'UE d'un semestre, d'une
année scolaire donnée: on peut enregistre une décision AJ sur l'UE12 en 2022,
puis ADM sur l'UE12 d'an nouveau formsemestre en 2023. Ce n'est pas le cas pour
les décisions concernant le cursus BUT: on valide (ou non) l'année BUT1, puis
BUT2 puis BUT3. Un redoublant pour avoir son BUT1 en AJ, puis il passera en ADM
l'année suivante. Pareil pour les RCUEs. Autrement dit, le code d'une année BUT
ou d'un RCUE, pour un étudiant donné, est unique.
### Validations d'UE antérieures
Les validations d'UEs externes existaient avant ScoDoc 9.
Elles sont utilisées quand un étudiant arrive en transfert avec une UE validée
mais pas un semestre complet (ne pas confondre avec les "semestres extérieurs"
qui sont gérés comme des formsemestres ordinaires).
Les UE antérieures sont présentes dans les bulletins BUT.
### Tenue du jury
Le jury part d'un formsemestre (dit origine).
Dans ce formsemestre, `etud` est inscrit à un parcours (ou au tronc commun): on
sait quels niveaux il doit valider durant année.
Le jury (pour un niveau) peut éditer:
- l'UE du formsemestre origine (qui peut être déjà validée en cas de
modification)
- l'UE du formsemestre précédent si l'origine est impaire et que ce formsemestre
impair n'est pas verrouillé (sinon, affichée mais en lecture seule)
- le RCUE
#### Édition décision d'UE
Le menu jury (activé par défaut) pour une UE affichera:
- Si en cours: la moyenne courante, la décision recommandée basée sur cette note
- Si validée ailleurs que dans le semestre en cours: le code et la moyenne
enregistrés.
- Si pas en cours, menu désactivé, pas d'édition de la décision d'UE.
#### Édition décision de RCUE
Le menu RCUE est désactivé par défaut: calcul automatique en fonction des
décisions d'UE.
Le code enregistré (rappel: chaque RCUE n'a qu'un code enregistré, contrairement
aux UEs) est affiché (code couleur s'ile st différent d ecelui calculé).
La modification du code RCUE peut entrainer la modification des codes des UEs
qui le constituent: code RCUE `ADJ` => UEs non validante passées en `ADJR`
(géré par `DecisionRCUE.record` et en js dans `jury_but.js`). )
La modification de codes d'UE devrait ou pourrait modifier le code RCUE proposé,
mais ce n'est pas implémenté en 9.4.92.
### Classes
Ordre de construction:
- `DecisionsProposeesAnnee`
- `RegroupementCoherentUE`
- `DecisionsProposeesRCUE(rcue)`
- `DecisionsProposeesUE`
#### `RegroupementCoherentUE(etud, ApcNiveau, ues_pair, ues_impair)`
Modélise un couple d'UEs associées au même niveau de compétence du référentiel.
L'ancienne classe `RegroupementCoherentUE` (définie dans
`models/but_validation.py`) ne répondait pas au besoin car elle était construite sur
la base de deux formsemestres.
- On part de toutes les UEs de nos formations associées à ce niveau. On peut
avoir un nombre quelconque d'UEs paires et impaires associées à ce niveau.
- Les UEs associées à ce niveau peuvent être:
- validées (externes, ou dans un formsemestre connu), avec une moyenne enregistrée
- ou en cours: dans un formsemestre suivi par l'étudiant, avec une moyenne
d'UE calculable.
Notons qu'il peut arriver qu'aucune des UEs n'appartiennent au semestre origine
(capitalisations, validations antérieures). Dans ce cas, leurs décisions ne sont
pas toujours éditables, mais le RCUE l'est.
Pour chaque côté (impair, pair), on va chercher:
- l'UE en cours pendant l'année scolaire du formsemestre origine s'il y en a
une (ie cherche dans les formations des formsemestres de même année scolaire
que l'origine)
- la validation de jury enregistrée pour cette UE en cours
- la validation d'UE validante enregistrée (capitalisation ou antérieure, peu
importe)
NB: s'il y a plusieurs UEs en cours (double inscription, erreur): prend celle du
formsemestre commencé le plus récemment.
État d'un `RegroupementCoherentUE`:
- **complete** : False si on n'a pas les deux UEs
#### Opérations sur `RegroupementCoherentUE`
- init:
- Chercher l'UE en cours pour pair, impair: `ue_cur_pair`, `ue_cur_impair`, et
leurs validations `validation_ue_cur_pair`, `validation_ue_cur_impair`.
- Chercher pour pair, impair la meilleure validation d'UE enregistrée dans un
autre formsemestre. `validation_ue_best_pair`
- complete = les deux UEs validées ou en cours cette année
- moy_rcue: moyenne des moyennes d'UE
#### DecisionsProposeesAnnee
- `decisions_ues` : considérer les UEs associées aux niveaux et non celles des
semestres. Notez que même si l'étudiant n'est pas inscrit ("dispensé") à une UE
dans le formsemestre origine, elle doit apparaitre sur la page jury.
- `rcues_annee`: liste des `RegroupementCoherentUE`
- `decisions_rcue_by_niveau`
#### DecisionsProposeesRCUE
- `record`: modifie les codes d'UE en fonction du RCUE: *si le RCUE est `ADJ`,
les UEs non validées sont passées à `ADJR`.
- Les validations d'UEs antérieures ou capitalisées ne sont pas concernées car
déjà valides.
- Si le formsemestre contenant l'UE à modifier est verrouillé, on
modifie quand même et on émet un warning.
- Les RCUE/UE du niveau inférieur peuvent aussi être modifiées (c'est déjà le
cas, `ADSUP`).
#### DecisionsProposeesUE
L'objet peut représenter une validation capitalisée ou antérieure: il est alors
en lecture seule.
Pour chaque RCUE, on a les deux UEs à considérer dans `ue_1`, `ue_2`.
- Modifier affichage UE "en lecture seule"
- Ne pas restreindre la recherche aux UEs du formsemestre.
- Le calcul de la moyenne en utilisant `ResultatsSemestreBUT` n'est évidemment
utilisé que pour l'UE en cours.

53
docs/DonneesEtudiant.md Normal file
View File

@ -0,0 +1,53 @@
# Données personnelles pour l'étudiant
## Description d'un étudiant
La désignation d'un étudiant (classiquement civilité-nom-prenom) peut prendre différentes formes en fonctions des circonstances et des souhaits de l'étudiant.
On distingue les éléments suivants:
* `nom`: (obligatoire): le nom de l'étudiant (en usage dans l'établissement). Généralement (mais pas toujours) le nom d'état-civil de l'étudiant.
* `prenom`: (obligatoire): le prénom de l'étudiant
* `civilité`: (obligatoire): la civilité utilisée parmi les valeurs:
* `MR` (ou aussi `H` ou `M`)
* `MME` (ou aussi `F`)
* `X` décrit plus loin
* `nom_usuel`: si présent s'affiche à la place du `nom`.
* `prenom_etat_civil`: Si présent, indique le prénom qui doit être utilisé dans les documents officiels (PV et bulletin).
* `civilite_etat_civil` est associé au prénom d'état-civil (donc jamais utilisé si `prenom_etat_civil` n'est pas renseigné.
## Personalisations
L'étudiant peut:
* déclarer un nom d'usage qui remplacera le nom initial dans tous les documents
(par exemple par l'adoption d'un nom marital pour remplacer le patronyme)
Il faut dans ce cas remplir la donnée `nom_usuel` avec le nouveau nom souhaité.
* Demander la suppression de la civilité courante (`MR` ou `MME`). La valeur `X` peut être utlisée dans ce cas.
* demander l'utilisation d'un prénom d'usage ([1] et [2]).
Ce prénom, qui ne demande pas d'acte officiel (hormis une demande formelle à l'université d'appartenence) remplace le prénom initial dans tous les documents internes
sauf dans les documents officiels (procès-verbal et bulletin de notes). Ce changement peut être accompagné d'un changement de civilité.
Il faut dans ce cas:
* Reporter le prénom et la civilité initiaux dans les champs `prenom_etat_civil` et `civilite_etat_civil`
* Remplacer les champs `civilite` et `prenom` avec les valeurs souhaitées par l'étudiant.
## Dans le logiciel
Les données personnelles sont modifiables:
* Dans l'écran `Changer les données identité/admission` du menu `Étudiant` dans la fiche étudiant.
* Par la procédure d'importation par tableur (`Import/export des données d'admission` du menu `INSCRIPTIONS`)
Les civilités et prénom d'état-civil sont prises en compte:
* Automatiquement lors de la production du procés-verbal
* Dans l'édition du bulletin au format pdf (pas sur la passerelle étudiant) à condition que les descriptions spécifiées dans le paramètrage du département et/ou les réglages bulletin des semestres concernés mentionne
la balise `etat_civil` plutôt que la balise `nomprenom` (cf. [Paramètrage des bulletins / Valeurs remùplacées](https://scodoc.org/ParametrageBulletins/#valeurs-remplacees)).
Les données personalisées figurent toutes dans les données livrées par l'API.
## Références
[1] [Lettre ministre aux chefs d'établissement de l'enseignement supérieur](https://cache.media.enseignementsup-recherche.gouv.fr/file/Lutte_contre_les_discriminations/84/4/lettre_ministre_1117844.pdf)
[2] [Avis du conseil d'état](https://www.conseil-etat.fr/fr/arianeweb/CE/decision/2022-09-28/458403)

View File

@ -0,0 +1,170 @@
<!-- markdownlint-disable MD024 -->
# Document expérimental sur les données du module Assiduité de ScoDoc
Dans ce document je (Matthias Hartmann) détaillerais plusieurs méthodes pour enregistrer les données du module Assiduité et les utiliser. Je mettrai à jour ce document et je l'utiliserai lors de l'implémentation du cahier des charges.
> Pour la suite du document je nomme `plage` l'objet représentant une absence/présence sur une période donnée.
Dans les diagrammes:
> - les noms précédés par `?` sont des valeurs optionnelles.
> - les noms précédés par `#` sont des clés externes.
> - les noms précédés par `$` sont des clés primaires.
___
> dev note *(11/10/22)*: Les types des données ne sont pas forcément les bons, je n'ai pas encore regardé comment était organisée la BDD de ScoDoc
## Représentation d'une assiduité et d'un justificatif
> voir l'API ScoDoc -> [ScoDoc9 API](ScoDoc9API.md#api-assiduite)
## Représentation des données (Version 4)
```mermaid
classDiagram
class assiduites{
$assiduiteid : Integer
#etuid : Integer
date_debut : DateTime
date_fin : DateTime,
etat : String
#module?: Integer
}
class justificatifs{
$justifid : Integer
#etuid : Integer
date_debut : DateTime
date_fin : DateTime
fichier? : Integer
raison? : String
#etat : Integer DEFAULT=0
}
class etat_justificatif{
$etat_id : Integer
desc : String
}
justificatifs --> etat_justificatif
```
### Explications de la représentation
> - Dans cette version, les objets en base de données suivent la représentation fait en json (dans l'API)
> - Le fichier justificatif est toujours stocker sur le serveur et en base il est stocker sous la forme d'un identifiant unique.
> - le champs `etat` de la table `justificatif` est une clé étrangère vers la table `etat_justificatif` qui contient les différents états (attente, validé, modifié, en cours . . . ), Cette table permettra aux utilisateurs d'ajouter eux même des états en fonction de leurs besoins. (deux états seront obligatoires : 0[Non Validé] 1[Validé] mais leurs noms pourront être changés.)
## Représentation des données (Version 3)
```mermaid
classDiagram
class plage{
plage_id : Integer
date_debut : DateTime
date_fin : DateTime
#etuid : Integer
type : String
? #module_id : Integer
? #enseignant_id : Integer
}
class justificatif{
$#etuid : Integer
$date_debut : DateTime
$date_fin : DateTime
attachement : String
#etat : Integer DEFAULT=0
}
class etat_justificatif{
$etat_id : Integer
desc : String
}
justificatif --> etat_justificatif
```
### Explications de la représentation
> - Dans cette représentation, une plage est complètement dissociée d'une formation / département. Elle repose uniquement sur un étudiant en particulier. On peut néanmoins spécifier l'enseignant et le module concerné par l'absence dans le but de produire des statistiques.
> - Du coté des justificatifs, on a désormais un attribut `etat` plutôt qu'un booléen. Cet attribut est une clé étrangère lié à la table `etat_justificatif`. Cela permet alors d'avoir plusieurs états (Validé, Refusé, En Attente, Incomplet...) l'état `0` étant `Pas encore étudié` par exemple.
### Problèmes de la représentation
> - On utilise une nouvelle table pour stocker les différents états. A moins que cette table ne puisse être modifiée par les administrateurs de ScoDoc (ajouter des états pour des cas précis par IUT), on créer une table pour enregistrer des données statiques.
### Améliorations potentielles
> - A la place d'une table dans la BDD, on pourrait directement hard coder les états de justificatifs. Les états seront plus simple à accéder mais on perd l'aspect modification au cas par cas.
## Représentation des données (Version 2)
```mermaid
classDiagram
class plage{
id_plage : Integer
date_debut : DateTime
date_fin : DateTime
#id_dept : Integer
#formsemestre_id : Integer
#etuid : Integer
type : String
? #id_module : Integer
? #id_enseignant : Integer
}
class justificatif{
$#etuid : Integer
$date_debut : DateTime
$date_fin : DateTime
attachement : String
valide : bool DEFAULT=False
}
```
### Problèmes liés à la représentation
> - L'export de la base de donnée avec les justificatif devient plus complexe (car on doit aller chercher les fichiers du dossier justificatifs)
> - Même problème que la version 1 pour les requêtes
## Représentation des données ( Version 1)
```mermaid
classDiagram
class plage{
id_plage : Integer
date_debut : DateTime
date_fin : DateTime
#id_dept : Integer
#formsemestre_id : Integer
#etuid : Integer
type : String
? #id_module : Integer
? #id_enseignant : Integer
}
class justificatif{
#$id_plage : Integer
attachement : Blob
valide : bool DEFAULT=False
}
```
### Problèmes liés à la représentation
> - Quasiment l'ensemble des données sont stockées dans un même tuple\
> __Conséquence__ : chaque requête utilisant les données sera longue et lourde pour le gestionnaire de BDD
> - Le stockage sour la forme de blob est très lourd pour la bdd ( cf : [Benchmark des différentes méthode de stockage de fichier binaire sur progresql](https://www.cybertec-postgresql.com/en/binary-data-performance-in-postgresql/) )
> - Un justificatif doit être donné pour chaque absence (par exemple un arrêt maladie de plusieurs jours est présent dans la base autant de fois que l'étudiant a été absence à un cours )
### Avantages liés à la représentation
> - Peu ou pas de jointure à faire
> - Ensemble des données facilement accessibles
> - Une absence (`plage: type=absence`) est justifiée si un justificatif (`justificatifs : idPlage={idAbsence}`) est présent dans la base. Une absence peut être justifiée(par un étudiant par exemple) mais pas forcément validé par le corps enseignant / administratif. (`justificatifs : valide=Faux`)
> - l'objet justificatif permet de stocker un fichier / un texte servant de justification (`justificatifs : attachement={Blob}`). L'utilisation d'un __Blob__ permet de stocker virtuellement n'import quel type de fichier dans la bdd.
### Améliorations potentielles
> - Stocker les fichiers justificatifs dans un dossier sur le serveur plutôt que dans la base de donnée. On aurait alors une sauvegarde uniquement d'une chaîne de caractères (le chemin du fichier / la justification textuelle) au lieu de __Blob__ prenant beaucoup de place et étant lourds à traiter.\
> __Le problème est qu'on perd la facilité d'accès et les vérifications opérées automatiquement par le gestionnaire de base de donnée.__
> - Définir une durée de validité pour chaque justificatif au lieu de lier le justificatif à une plage. (et donc lier un justificatif à un étudiant)\
> __Le problème est qu'on perd de la simplicité de selection (utilisation de l'id de la plage dans un cas et utilisation de 2 *datetime* dans un autre) Mais au moins on a pas besoin d'entrer plusieurs fois un même justificatif.__

View File

@ -1,66 +1,80 @@
# 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.
# Échanges de programmes pédagogiques entre établissements
Pour importer un programme, suivre le lien "Importer une formation" sur la page "Programmes".
ScoDoc permet d'exporter et d'importer des programmes pédagogiques, échangés
sous forme de fichiers XML.
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.
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.
🚸 *S'il est possible, et nécessaire, de modifier localement les programmes de
formation, il est interdit de modifier les référentiels de compétences BUT, qui
sont publiés par le ministère et non adaptables.*
## Diplôme Universitaire des Technologie (PPN DUT) (par ordre alphabétique)
* DUT Carrières Sociales option AS (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_CS_OptionAS.xml" download>formation_CS_OptionAS.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportCS_AS_LeHavre.xml" download>formation_exportCS_AS_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT Carrières Sociales option AS (IUT du Havre, juillet 2013) : <a
class="attachment" href="/attachments/formation_CS_OptionAS.xml"
download>formation_CS_OptionAS.xml</a> + version 2014: <a class="attachment"
href="/attachments/formation_exportCS_AS_LeHavre.xml"
download>formation_exportCS_AS_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT Carrières Sociales option ASSC (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_CS_OptionASSC.xml" download>formation_CS_OptionASSC.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportCS_ASSC_LeHavre.xml" download>formation_exportCS_ASSC_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT Carrières Sociales option ASSC (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_CS_OptionASSC.xml" download>formation_CS_OptionASSC.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportCS_ASSC_LeHavre.xml" download>formation_exportCS_ASSC_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT GEA (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GEA.xml" download>formation_GEA.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGEA_LeHavre.xml" download>formation_exportGEA_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT GEA (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GEA.xml" download>formation_GEA.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGEA_LeHavre.xml" download>formation_exportGEA_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT GEA (IUT Villetaneuse, 2010) : <a class="attachment" href="/attachments/gea_iutv_v6.xml" download>gea_iutv_v6.xml</a>
* DUT GEA (IUT Villetaneuse, 2010) : <a class="attachment" href="/attachments/gea_iutv_v6.xml" download>gea_iutv_v6.xml</a>
* DUT GEII (PPN été 2013). Version contribuée par J. Billoué, IUT de Tours: <a class="attachment" href="/attachments/dut_geii_tours_2013.xml" download>dut_geii_tours_2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportGEII_LeHavre.xml" download>formation_exportGEII_LeHavre.xml</a>
* DUT GEII (PPN été 2013). Version contribuée par J. Billoué, IUT de Tours: <a class="attachment" href="/attachments/dut_geii_tours_2013.xml" download>dut_geii_tours_2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportGEII_LeHavre.xml" download>formation_exportGEII_LeHavre.xml</a>
* DUT GEII (PPN juillet 2008). Version utilisée par l'IUT de Lyon 1 (contribuée par Anthony Chaussat) : <a class="attachment" href="/attachments/dut_geii_lyon_2010.xml" download>dut_geii_lyon_2010.xml</a>
* DUT GEII (PPN juillet 2008). Version utilisée par l'IUT de Lyon 1 (contribuée par Anthony Chaussat) : <a class="attachment" href="/attachments/dut_geii_lyon_2010.xml" download>dut_geii_lyon_2010.xml</a>
* DUT Génie Chimique - Génie des Procédés (ppn 2013, IUT de Saint-Nazaire) : <a class="attachment" href="/attachments/DUT GCGP S1S2 2013.xml" download>DUT GCGP S1S2 2013.xml</a>
* DUT Génie Chimique - Génie des Procédés (ppn 2013, IUT de Saint-Nazaire) : <a class="attachment" href="/attachments/DUT GCGP S1S2 2013.xml" download>DUT GCGP S1S2 2013.xml</a>
* DUT Génie Civil (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GC2013.xml" download>formation_GC2013.xml</a>
* DUT Génie Civil (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GC2013.xml" download>formation_GC2013.xml</a>
* DUT Génie Industriel et Maintenance (GIM) (IUT de Tremblay-en-France, sept. 2013): <a class="attachment" href="/attachments/PPN_GIM-2013.xml" download>PPN_GIM-2013.xml</a> Autre version contribuée par Roanne et Saint-Nazaire: <a class="attachment" href="/attachments/formation_gim.xml" download>formation_gim.xml</a>
* DUT Génie Industriel et Maintenance (GIM) (IUT de Tremblay-en-France, sept. 2013): <a class="attachment" href="/attachments/PPN_GIM-2013.xml" download>PPN_GIM-2013.xml</a> Autre version contribuée par Roanne et Saint-Nazaire: <a class="attachment" href="/attachments/formation_gim.xml" download>formation_gim.xml</a>
* DUT Génie Mécanique et Productique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GMP2013.xml" download>formation_GMP2013.xml</a> + version 2014 <a class="attachment" href="/attachments/formation_exportGMP_LeHavre.xml" download>formation_exportGMP_LeHavre.xml</a>
* DUT Génie Mécanique et Productique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_GMP2013.xml" download>formation_GMP2013.xml</a> + version 2014 <a class="attachment" href="/attachments/formation_exportGMP_LeHavre.xml" download>formation_exportGMP_LeHavre.xml</a>
* DUT Gestion Logistique des Transports (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_glt.xml" download>formation_glt.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGLT_LeHavre.xml" download>formation_exportGLT_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT Gestion Logistique des Transports (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_glt.xml" download>formation_glt.xml</a> + version 2014: <a class="attachment" href="/attachments/formation_exportGLT_LeHavre.xml" download>formation_exportGLT_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT Hygiène Sécurité Environnement (HSE) (IUT du Havre, sept 2013) : <a class="attachment" href="/attachments/maquette_HSE2013.xml" download>maquette_HSE2013.xml</a> (voir mise à jour plus bas)
* DUT Hygiène Sécurité Environnement (HSE) (IUT du Havre, sept 2013) : <a class="attachment" href="/attachments/maquette_HSE2013.xml" download>maquette_HSE2013.xml</a> (voir mise à jour plus bas)
* DUT InfoCom, option GIDO : <a class="attachment" href="/attachments/maquette_Infocom2013_INFO.xml" download>maquette_Infocom2013_INFO.xml</a>
* DUT InfoCom, option Métiers du Livre et du Patrimoine (MLP) : <a class="attachment" href="/attachments/maquette_Infocom2013_MLP.xml" download>maquette_Infocom2013_MLP.xml</a>
* DUT InfoCom, option Publicité (PUB) : <a class="attachment" href="/attachments/maquette_Infocom2013_PUB.xml" download>maquette_Infocom2013_PUB.xml</a>
* DUT InfoCom, option GIDO : <a class="attachment" href="/attachments/maquette_Infocom2013_INFO.xml" download>maquette_Infocom2013_INFO.xml</a>
* DUT InfoCom, Le Havre, 2014: <a class="attachment" href="/attachments/formation_exportINFOCOM_LeHavre.xml" download>formation_exportINFOCOM_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT InfoCom, option Métiers du Livre et du Patrimoine (MLP) : <a class="attachment" href="/attachments/maquette_Infocom2013_MLP.xml" download>maquette_Infocom2013_MLP.xml</a>
* DUT Informatique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_INFO2013.xml" download>formation_INFO2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportINFO_LeHavre.xml" download>formation_exportINFO_LeHavre.xml</a>
* DUT InfoCom, option Publicité (PUB) : <a class="attachment" href="/attachments/maquette_Infocom2013_PUB.xml" download>maquette_Infocom2013_PUB.xml</a>
* DUT Informatique (version complétée par Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-info-2013.xml" download>ppn-info-2013.xml</a>
* DUT InfoCom, Le Havre, 2014: <a class="attachment" href="/attachments/formation_exportINFOCOM_LeHavre.xml" download>formation_exportINFOCOM_LeHavre.xml</a> (voir mise à jour plus bas)
* DUT Métiers du Multimédia et de l'Internet (IUT de Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-dut-mim-2013.xml" download>ppn-dut-mim-2013.xml</a>
* DUT Informatique (IUT du Havre, juillet 2013) : <a class="attachment" href="/attachments/formation_INFO2013.xml" download>formation_INFO2013.xml</a> + version 2014 Le Havre: <a class="attachment" href="/attachments/formation_exportINFO_LeHavre.xml" download>formation_exportINFO_LeHavre.xml</a>
* DUT QLIO (IUT Evry, 2015) : <a class="attachment" href="/attachments/ppn_qlio_evry.xml" download>ppn_qlio_evry.xml</a>
* DUT Informatique (version complétée par Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-info-2013.xml" download>ppn-info-2013.xml</a>
* DUT Réseaux et Télécommunications (PPN juillet 2013) : <a class="attachment" href="/attachments/dut_rt_ppn2013_v1.xml" download>dut_rt_ppn2013_v1.xml</a>
* DUT Métiers du Multimédia et de l'Internet (IUT de Vélizy, juillet 2013) : <a class="attachment" href="/attachments/ppn-dut-mim-2013.xml" download>ppn-dut-mim-2013.xml</a>
* DUT Réseaux et Télécommunications (PPN juillet 2013, version tagguée pour avis de poursuite d'études, IUT de Grenoble) : <a class="attachment" href="/attachments/formation_RT_PPN2013_tagguee.xml" download>formation_RT_PPN2013_tagguee.xml</a>
* DUT Réseaux et Télécommunications (PPN juillet 2008): <a class="attachment" href="/attachments/DUT_RT_PPN2008_v4.xml" download>DUT_RT_PPN2008_v4.xml</a>
* DUT QLIO (IUT Evry, 2015) : <a class="attachment" href="/attachments/ppn_qlio_evry.xml" download>ppn_qlio_evry.xml</a>
* DUT Techniques de commercialisation (TC) (IUT du Havre, sept 2013) : <a class="attachment" href="/attachments/maquetteS1_S2_TC2013.xml" download>maquetteS1_S2_TC2013.xml</a>
* DUT Réseaux et Télécommunications (PPN juillet 2013) : <a class="attachment" href="/attachments/dut_rt_ppn2013_v1.xml" download>dut_rt_ppn2013_v1.xml</a>
* DUT Réseaux et Télécommunications (PPN juillet 2013, version tagguée pour avis de poursuite d'études, IUT de Grenoble) : <a class="attachment" href="/attachments/formation_RT_PPN2013_tagguee.xml" download>formation_RT_PPN2013_tagguee.xml</a>
* DUT Réseaux et Télécommunications (PPN juillet 2008): <a class="attachment" href="/attachments/DUT_RT_PPN2008_v4.xml" download>DUT_RT_PPN2008_v4.xml</a>
* DUT Techniques de commercialisation (TC) (IUT du Havre, sept 2013) : <a
class="attachment" href="/attachments/maquetteS1_S2_TC2013.xml"
download>maquetteS1_S2_TC2013.xml</a>
Et aussi: 11 programmes pédagogiques utilisés à l'IUT du Havre, à jour en mars 2015: HSE, TC, InfoCom, GEA, CS_AS, GC, GLT, GMP, INFO, GEII: <a class="attachment" href="/attachments/PPN-LeHavre2015.zip" download>PPN-LeHavre2015.zip</a> (contribution Dominique Soudière)
## Licences Professionnelles
## Licences Professionnelles
* LP Energies Renouvelables et Gestion de l'Energie Electrique (J. Billoué, Tours) : <a class="attachment" href="/attachments/lpro_ergee_tours_2012.xml" download>lpro_ergee_tours_2012.xml</a>
@ -71,6 +85,3 @@ Et aussi: 11 programmes pédagogiques utilisés à l'IUT du Havre, à jour en ma
* Licence professionnelle Réseaux et Télécommunications, option Administration et Sécurité des Réseaux (ASUR) : <a class="attachment" href="/attachments/lp_assur.xml" download>lp_assur.xml</a>:
----
Dominique Soudiere (IUT du Havre) a développé une macro Excel pour faciliter la saisie des programmes pédagogiques: <a class="attachment" href="/attachments/MaquetteVersion2017.xlsm" download>MaquetteVersion2017.xlsm</a>

View File

@ -1,106 +1,197 @@
# FAQ / Questions fréquemment posées
## FAQ
En cours d'élaboration et en vrac...
## Le projet ScoDoc
### Le projet ScoDoc
#### Qui sont les développeurs ? Le projet est-il pérenne ?
### Qui sont les développeurs ? Le projet est-il pérenne ?
ScoDoc a été conçu et développé par Emmanuel Viennet, puis complété par plusieurs contributeurs, enseignants ou BIASTSS dans les IUT et universités. Son développement est toujours actif, voir le dépot git <https://scodoc.org/git>.
ScoDoc a été conçu et développé par Emmanuel Viennet, puis complété par
plusieurs contributeurs, enseignants ou BIATSS dans les IUT et universités. Son
développement est toujours actif, voir le dépôt git <https://scodoc.org/git>.
En 2020, une association a été crée pour soutenir et pérénniser le projet: par exemple pour acquérir services et équipements pour le développement informatique, recruter stagiaires, ou apprentis, ou mener une veille scientifique et technologique sur le sujet: voir [AssociationScoDoc](AssociationScoDoc.md). L'avenir du logiciel dépend donc de vous: adhérez, ou incitez votre institution (département IUT, Institut, Ecole) à le faire.
En 2020, une association a été créée pour soutenir et pérenniser le projet: par
exemple pour acquérir services et équipements pour le développement
informatique, recruter stagiaires, apprentis, ou mener une veille scientifique
et technologique sur le sujet: voir [AssociationScoDoc](AssociationScoDoc.md).
L'avenir du logiciel dépend donc de vous: adhérez, ou incitez votre institution
(département IUT, Institut, École) à le faire.
### Utilisation de ScoDoc
#### Comment prendre en compte les notes de sport ou autres bonus ?
Voir [CalculNotes](CalculNotes.md)
## Utilisation de ScoDoc
### Comment prendre en compte les notes de sport ou autres bonus ?
Voir [CalculNotes](CalculNotes.md), ou bien
[le tutoriel vidéo par Cédric C.](https://www.youtube.com/watch?v=SVbjuDpq-lI&list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1&index=13).
### 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.
#### 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é.
### En IUT, comment gérer les licences professionnelles ?
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".
* 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).
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.
* La plupart des licences pro durent un an, mais sont gérées comme un seul
semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans
l'option "*Semestre dans la formation*" (page "*modification du semestre*").
### Comment gérer les étudiants les démissionnaires ?
#### Comment 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".
Sur la fiche d'un étudiant, on peut choisir plusieurs options:
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.
* *Supprimer cet étudiant* : il sera totalement supprimé de la base, sans
remède. Cette option n'est en principe jamais utile, sauf pour corriger
une fausse manœuvre au moment des inscriptions.
Ou bien au niveau de son inscription dans un semestre, via le menu *Scolarité*:
#### 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).
* *Démission* : l'étudiant restera dans le semestre, mais sera indiqué comme
démissionnaire. C'est ce qu'il faut faire quand un étudiant signale son
abandon en cours d'année, passé le délai légal ou il peut se désengager
(typiquement, après le 15 octobre).
* 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*").
* *Désinscrire (en cas d'erreur)* : l'étudiant reste dans ScoDoc, ses
données (et ses notes) sont conservées, mais il n'est plus inscrit au
semestre et n'apparait plus dans les listes. C'est ce qu'il faut choisir
en début d'année, soit en cas d'erreur de manipulation, soit si l'étudiant
abandonne en tout début d'année (il ne sera alors pas compté dans les
inscrits).
#### Comment gérer les étudiants les démissionnaires ?
* Sur la fiche d'un étudiant, on peut choisir plusieurs options:
### Les ECTS ne s'affichent pas
* *Supprimer cet étudiant* : il sera totalement supprimé de la base, sans remède. Cette option n'est en principe jamais utile, sauf pour corriger une fausse manœuvre au moment des inscriptions.
Les ECTS sont attribués (ou pas) au moment de la saisie de la décision de jury
sur les UEs. Avant le jury, l'étudiant n'a jamais d'ECTS, quelles que soient ses
notes.
Ou bien au niveau de son inscription dans un semestre, via le menu *Scolarité*:
### Mes données sont erronées, que faire ?
* *Démission* : l'étudiant restera dans le semestre, mais sera indiqué comme démissionnaire. C'est ce qu'il faut faire quand un étudiant signale son abandon en cours d'année, passé le délai légal ou il peut se désengager (typiquement, après le 15 octobre).
* *Désinscrire (en cas d'erreur)* : l'étudiant reste dans ScoDoc, ses données (et ses notes) sont conservées, mais il n'est plus inscrit au semestre et n'apparait plus dans les listes. C'est ce qu'il faut choisir en début d'année, soit en cas d'erreur de manipulation, soit si l'étudiant abandonne en tout début d'année (il ne sera alors pas compté dans les inscrits).
En cas de problème (bug, erreur de manipulation, suspicion de piratage),
différents journaux peuvent être consultés.
### 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.
Les utilisateurs autorisés peuvent facilement voir:
* 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)
* les opérations effectuées sur un étudiant (inscriptions, saisies d'absences,
...), accessibles via le menu "Etudiant" / "Voir le journal..." en haut de sa
fiche individuelle.
* les différentes saisies de notes, via le formulaire de saisie de notes (toutes
les valeurs précédemment saisies sont conservées, ainsi que la date et
l'identité de l'utilisateur ayant effectué la saisie).
#### Administration
Les administrateurs (informaticiens) peuvent aussi consulter les journaux (logs)
du serveur, voir ["où sont les journaux"](#ou-sont-les-journaux-logs).
#### Quel système d'exploitation ?
ScoDoc est accessible depuis n'importe quel navigateur Web (Firefox, Chrome, ...).
### Comment signaler un problème ?
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.
Nous vous remercions de nous signaler tous les problèmes que vous rencontrez:
erreurs, comportement bizarre ou malcommode. Nous ne promettons pas de les
régler rapidement, ni même plus tard: le logiciel est fourni sans aucune
garantie. Mais nous faisons de notre mieux:
* si vous êtes utilisateurs, écrire à
[notes@listes.univ-paris13.fr](mailto:notes@listes.univ-paris13.fr).
ou joindre le canal Discord Assistance.
* si vous êtes informaticien et voulez évoquer un problème technique
(développement, installation), écrire à
[scodoc-devel@listes.univ-paris13.fr](mailto:scodoc-devel@listes.univ-paris13.fr).
#### 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).
## Configuration
### Comment changer les logos sur les documents PDF (PV...)
Il faut avoir un compte (web) administrateur sur ScoDoc, et passer
par l'onglet "configuration" accessible sur la page d'accueil.
Voir [la page sur la gestion des logos et images](GestionLogos.md).
### Administration
### Quel système d'exploitation ?
ScoDoc est accessible depuis n'importe quel navigateur Web (Firefox, Chrome, ...).
Le serveur ScoDoc fonctionne sous Linux. Il n'est testé qu'avec Debian (stable).
Le script d'installation ([GuideInstallDebian11](GuideInstallDebian11.md))
assure l'installation de tout les éléments nécessaires au bon fonctionnement de
ScoDoc.
### Quand et comment mettre à jour le logiciel ?
Les mises à jour sont normalement automatiquement appliquées chaque nuit,
assurant la sécurité et l'actualisation de ScoDoc.
Des améliorations et corrections sont fréquemment introduites. Les plus
importantes sont annoncées sur la liste de diffusion
"[scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces)".
Voir aussi la page [MisesAJour](MisesAJour.md).
### Quelles sauvegardes des données ?
#### Quelles sauvegardes des données ?
Voir [SauvegardesBases](SauvegardesBases.md).
### Où sont les journaux (logs) ?
#### Où sont les journaux (logs) ?
En cas de problème (bug, erreur de manipulation, suspicion de piratage), différents journaux peuvent être consultés.
Les administrateurs du serveur peuvent consulter:
* Le journal du serveur Web Apache
```
/var/log/apache2/scodoc_access.log
* Le journal du serveur Web (nginx)
```text
/var/log/nginx/scodoc*.log
```
* le fichier `/opt/scodoc-data/log/scodoc.log` reçoit des messages de déboggage
de ScoDoc.
* 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.
### J'ai installé ScoDoc mais je n'ai pas de certificat SSL !
* 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).
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 <a
href="https://letsencrypt.org/fr/">Let's Encrypt</a> dont l'utilisation est très
simple et rapide.
* 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.)
Pour vos tests en local, avec Chrome, modifier le paramétrage en réglant:
`chrome://flags/#allow-insecure-localhost` (et/ou taper "thisisunsafe" sur la
page bloquée).
### Comment supprimer un département ?
#### 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 <a href="https://letsencrypt.org/fr/">Let's Encrypt</a> dont l'utilisation est très simple et rapide.
Voir les commandes d'administration dans [GuideConfig](GuideConfig.md)
Pour vos tests en local, avec Chrome, modifier le paramétrage en réglant: `chrome://flags/#allow-insecure-localhost`.
### Comment contribuer au projet ?
[Voir la page "contribuer"](Contribuer.md).
!!! note "Voir aussi"
#### 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`.
#### Comment contribuer au projet ?
[Voir la page](Contribuer.md).
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [Guide du responsable de formation](GuideAdminFormation.md)
- [Guide utilisateur](GuideUtilisateur.md)
- [Contacts](Contact.md)
- <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Tutoriels sur YouTube <img src="/img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>

View File

@ -0,0 +1,119 @@
<!-- markdownlint-disable MD024 -->
# Gestions des fichiers justificatifs pour le module Assiduité
Le fonctionnement de l'importation / lecture des fichiers justificatifs est légèrement plus complexe que l'utilisation de l'API seule. Voici les différentes informations à savoir pour correctement utiliser les fichiers justificatifs.
Afin de bien comprendre les différentes informations, merci de lire d'abord la documentation de l'API Assiduité : [Documentation Assiduité](ScoDoc9API.md#api-assiduite)
## Importer un fichier
L'importation d'un fichier pour un justificatif se fait en deux temps :
* Créer un nouvel objet justificatif à l'aide de l'API
* Envoyer le fichier sur le serveur ScoDoc
### Envoyer le fichier sur le serveur ScoDoc
Dans un premier temps il faut créer un objet justificatif à l'aide de l'API.
Dans un second temps il faut envoyer le fichier sur le serveur à l'aide d'une requête `POST`.
#### Exemple en Python
##### Script d'envoi du justificatif
> `token` est le même token que pour le reste de l'API
```py
data = {
"etat": "attente",
"date_debut": "2022-10-27T08:00",
"date_fin": "2022-10-27T12:00",
}
# la route de l'api est : /justificatif/<etudid:int>/create
r = requests.post(API_URL + "/justificatif/123/create", json=data, headers=token)
print(r.json)
```
##### Réponse
```json
{
"justif_id" : 424242
}
```
##### Script d'envoi du fichier
> `token` est le même token que pour le reste de l'API
```py
with open('exemple.txt', 'rb') as f:
# la route pour importer est : api/justificatif/<justif_id:int>/import
r = requests.post(API_URL + "/justificatif/424242/import", files={"exemple.txt": f}, headers=token)
print(r.json)
```
##### Réponse
```json
{
"filename" : "exemple.txt"
}
```
Veillez à bien noter le nom de fichier renvoyé car c'est le nom coté "server", il sera à utiliser lors que vous souhaitez récupérer le fichier
ou lorsque vous voudrez le supprimer
## Télécharger un fichier
Pour télécharger un fichier de justificatif rien de plus simple
### Une simple requête POST
* **Méthode:** POST
* **Permission: `ScoView`**
* **Paramètres:**
* `justif_id`
* `filename`
* **Routes:** `/justificatif/<justif_id:int>/export/<filename>`
* **Exemple d'utilisation:** `/api/justificatif/424242/export/exemple.txt`
* **Résultat:** télécharge directement le fichier
## Supprimer un fichier
Pour supprimer un fichier il suffit d'envoyer une requête post sur le justificatif, avec un json correct
### Script de suppression du fichier
> `token` est le même token que pour le reste de l'API
```py
# la route pour supprimer est : api/justificatif/<justif_id:int>/remove
d = {
"remove": "list",
"filenames": [
"exemple.txt"
]
}
# ou
d = {
"remove": "al",
}
r = requests.post(API_URL + "/justificatif/424242/remove", data=d, headers=token)
print(r.json)
```
#### Réponse
```json
{
"response" : "removed"
}
```

221
docs/Formations.md Normal file
View File

@ -0,0 +1,221 @@
# Programmes pédagogiques et versions
Le programme pédagogique, appelé *formation* dans ScoDoc, défini les unités
d'enseignement; il est destiné à être utilisé par plusieurs sessions de
formation (semestres). On doit apporter un soin particulier à la définition du
programme, et éviter de le modifier une fois que des semestres sont créés (il
est toutefois possible d'en créer de nouvelles *versions* pour permettre des
modifications ultérieures sans affecter les semestres achevés: voir plus bas.
Le programme pédagogique définit notamment les coefficients des modules qui le
composent. Les semestres qui se réfèrent à ce programme utilisent ces
coefficients pour calculer leurs notes. De même, les noms de UE et modules qui
apparaissent sur les bulletins viennent du programme. Il faut être
particulièrement vigilant lors des modifications du programme pédagogique.
Dans la configuration par défaut, seul le chef de département (rôle Admin) peut
modifier les programmes pédagogiques.
(voir aussi des exemples de programmes en bas de la page
[GuideAdminFormation](GuideAdminFormation.md)).
## Structure d'un programme pédagogique
On définira en général dans le programme l'ensemble des enseignements d'un
diplôme (les 4 semestres d'un DUT par exemple). C'est dans une phase ultérieure
que l'on mettra en place les différents semestres.
Les programmes pédagogiques ScoDoc sont structurés en Unités d'Enseignements
(UE), Matières et Modules. Un module appartient forcément à une matière, qui
appartient elle même à une UE. Les modules (déclinés en *ressources*, *SAÉs* en
BUT) représentent les cours ("mathématique", "anglais", ...) et sont associés à
un volume horaire (cours/TD/TP) et à un coefficient: chaque module produit une
note moyenne (en général obtenue à travers plusieurs *évaluations* ou
contrôles). La note moyenne d'une UE est obtenue en calculant une moyenne
pondérée par les coefficients des notes moyennes de modules.
🚸 En BUT, c'est un peu différent, puisque les modules ont une note *pour chaque
UE*: la moyenne d'un module n'est pas définie. Voir [BUT](BUT.md)
### Unités d'Enseignement (UE)
Les UE jouent un rôle particulier dans l'évaluation. En effet, selon les règles
du LMD, les UE sont *capitalisables* (voir
[CapitalisationUE](CapitalisationUE.md)). De plus, l'obtention de droit des
semestres d'un DUT est soumise à une moyenne supérieure à 8/20 dans chacune des
UE.
Notons qu'une UE ne possède pas de coefficient. Le coefficient d'une UE n'est
autre que la somme des coefficient des modules qui composent cette UE. Par
conséquent, le coefficient d'UE est potentiellement variable d'un étudiant à
l'autre, si les étudiants ne sont pas inscrits aux mêmes modules (options ou
parcours).
Note: une formation en plusieurs semestres devrait normalement avoir des UEs
différentes dans chaque semestre.
* Il est parfois désirable de capitaliser au sein d'un parcours des UE
appartenant à deux programmes ScoDoc différents (par exemple, on peut avoir
changé de version du programme entre deux semestres, comme expliqué plus
loin). Dans ce cas, il faut attribuer aux programmes le même code de formation
(via le lien "modifier" sur la page d'accueil des programmes), et aussi
attribuer les mêmes codes aux UE (via le lien "modifier l'UE" sur la page
"programme détaillé et semestres").
* Les UE peuvent être de type "normal" ou "Sport&Culture". Ces dernières ne sont
utilisées que pour les notes optionnelles (activités culturelles et sportives)
utilisée dans certains établissements. Elles se voient attribuer une règle de
calcul spécifique qui dépend généralement de l'établissement (il n'y à pas de
règle nationale pour la prise en compte des notes de sport et culture).
Typiquement, la note des UE de ce type spécial agit directement sur la moyenne
générale de l'étudiant.
### Matières
Les matières n'ont pas d'autre utilité que d'aider à structurer le programme.
Par exemple, on pourrait définir dans un programme une matière "Sciences"
réunissant les modules de "mathématiques" et de "physique". Les matières n'ont
pas de coefficient. Si l'on ne souhaite pas utiliser de matière, il suffit d'en
créer une pour chaque module avec le même nom, ou au contraire (plus simplement)
de créer une matière par UE et d'y placer tous les modules.
Note: les matières ne sont pas utilisées en BUT.
### Modules
* Le *code* du module va apparaitre sur les bulletins et certains tableaux
récapitulatifs. Il comporte habituellement quelques caractères (comme "MATH",
ou "SPO"). Si la version officielle de votre programme pédagogique n'utilise
pas de codes de ce genre, inventez des codes à la fois courts (pas plus de 4
ou 5 caractères) et évocateurs du nom du module.
* Le *titre* du module apparaitra sur le tableau de bord du semestre et sur les
bulletins.
* L' *abréviation* est une version courte du titre. Si le titre n'est pas trop
long (3 ou 4 mots), copier le. Sinon, inventer une abréviation en quelques
mots qui soit lisible.
* Les volumes horaires ne sont présents que pour information et ne sont
actuellement pas du tout utilisés par ScoDoc: il est donc facultatif de les
indiquer.
* Le coefficient est utilisé pour le calcul de la moyenne d'UE et de la moyenne
générale. Il s'agit d'un nombre réel positif ou nul.
* Choisir dans le menu la *matière* à laquelle appartient le module.
* Le semestre est un nombre indiquant dans quel semestre de la formation se
place habituellement ce module. Il arrive que l'on décline la même formation
selon différentes modalités (formation initiale, continue) avec des placements
différents: dans ce cas, indiquer le semestre dans la modalité "habituelle";
lors de la mise en place d'un semestre, on peut choisir manuellement des
modules de tous les semestres.
### Ordre d'affichage des UE, matières et modules
Chaque élément (UE, matières et modules) possède un attribut *numéro* qui est un
nombre entier utilisé pour le classement des éléments de même niveau dans la
hiérarchie dans les tableaux et bulletins.
Il est conseillé d'attribuer les numéros de 10 en 10 afin de pouvoir plus
facilement insérer un nouvel élément entre deux éléments existants. Par exemple,
si l'on a dans une matière trois modules MA, MB, MC, on va leur attribuer les
numéros 10, 20 et 30.
## Verrouillage d'une formation
Lorsque au moins l'un des semestres qui se réfèrent à ce programme est
*verrouillé*, il devient impossible de modifier le programme (la page de
présentation du programme ne comporte alors aucun lien). Deux cas peuvent se
présenter:
* il s'agit d'une modification mineure (intitulé d'un module, ...) ne risquant
pas affecter les notes existantes, et il y a peu de semestres verrouillés:
dans ce cas, il est possible d'aller déverrouiller un à un les semestres
concernés, puis d'effectuer la modification du programme avant de
re-verrouiller les semestres.
* il s'agit d'une modification conséquente, on ne ne veut pas affecter les
semestres existants: on crée alors une nouvelle *version* du programme. La
version crée est une copie à l'identique du programme existant, que l'on peut
modifier à sa guise.
## Versions de formation
Chaque semestre ("FormSemestre" dans le jargon ScoDoc) se réfère à un programme
pédagogique, appelé sa *formation*. cette formation définit l'ensemble des UE et
modules, leurs intitulés, et leurs coefficients et ECTS.
Les programmes sont le plus souvent adaptés localement, et peuvent varier d'une
année sur l'autre. Lorsqu'une formation est modifié (par exemple, un changement
de coefficient), ScoDoc doit recalculer l'ensemble des notes de tous les
semestres utilisant cette formation. De même, si un intitulé change, il faut
re-générer les bulletins et procès-verbaux. On conçoit donc que la modification
d'une formation ne s'aborde pas à la légère. ScoDoc empêche d'ailleurs toute
modification d'une formation (ou partie de, selon les cas) lorsqu'un semestre a
été verrouillé (ce qui indique en général qu'il est achevé et que l'on souhaite
conserver ses données et résultats inchangés pour utilisation future dans des
jurys ou avis).
Si vous devez modifier une formation pour la nouvelle année scolaire, vous
pouvez créer une nouvelle version d'une formation existante afin d'éviter
d'avoir à saisir de nouveau l'ensemble des éléments. Il arrive même que, l'année
scolaire déjà commencée, on se rende compte que l'on doit modifier la formation
d'un semestre en cours (bien sûr, cela ne devrait pas arriver, les modalités
d'évaluation étant souvent votées par des instances officielles avant le début
de l'année, mais le monde n'est pas parfait et de petites corrections sont
parfois nécessaires). Dans ce cas, ScoDoc vous permet d'associer un ou plusieurs
semestres existants dans une formation à une nouvelle version de celle-ci, créée
par copie.
<img src="/screens/menu-formsemestre-assoc.png" alt="menu formsemestre" width="33%">
La figure suivante montre la distinction entre formations et semestres, et les opérations possibles:
![menu formsemestre](fig/formations_versions_association.jpg)
![association nouvelle version](fig/sem-assoc-formation.png)
## Évolution du programme d'une année sur l'autre
Imaginons que nous ayons les semestres S1, S2, S3, S4 dans un programme V1, et
que l'année suivante une nouvelle version du programme entre en vigueur
(adaptation locale, corrections diverses...).
Voici comment mettre en place les semestres de l'année suivante tout en
conservant le maximum d'éléments (évaluation, choix des ressources et SAE).
1. Cloner (menu **Semestre / Cloner**)les semestres concernés (S1 à S4 ici)
2. Prendre l'un des semestres copiés (peu importe laquelle), et suivre
**Semestre / Associer à une nouvelle version**. Il est alors possible d'associer
à cette nouvelle version (V2) les semestres: cochez les semestres créés à
l'étape précédente.
Cette façon de procéder permet de limiter le nombre de nouvelles versions de
formations créée.
<img src="/screens/formsemestre_associate_new_version.png" width="100%">
## Changement de la formation d'un semestre
Il peut arriver que l'on ai créé deux versions de formations, qui sont encore
identique, et que l'on souhaite rattacher un formsemestre de l'une à l'autre.
C'est possible, à condition que les deux formations soient vraiment identiques
(mêmes UEs, titres, coefficients, etc). Le lien est accessible en bas de la page
"Associer à une nouvelle version du programme" mentionnée ci-dessus.
![change formation](fig/sem-change-formation.png)
!!! note "Voir aussi"
- [Guide du responsable de formation](GuideAdminFormation.md)
- [Guide utilisateur](GuideUtilisateur.md)
- Pour le BUT: [le référentiel de compétence](BUTReferentielCompetences.md)
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,86 +1,116 @@
# Obsolète, non disponible en ScoDoc 9
## 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.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> **Les formules utilisateurs, disponibles à titre expérimental en
ScoDoc version 7,
posaient maints problèmes de performance et de maintenance, et ne sont plus
utilisées en ScoDoc 9.** <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" />
## Formules utilisateurs pour le calcul des moyennes
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).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention: l'utilisation de formules ralenti considérablement les traitements, et devrait être réservé à des cas exceptionnels.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Attention: l'utilisation de formules ralenti considérablement les
traitements, et devrait être réservé à des cas exceptionnels.
### Détails
### Détails
Le problème est compliqué par le fait que les notes à traitées ne sont pas toujours des nombres: absences, notes en attentes ou manquantes...
Le problème est compliqué par le fait que les notes à traitées ne sont pas
toujours des nombres: absences, notes en attentes ou manquantes...
La formule reçoit donc:
* 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 (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.
* 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.
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:
```
Ainsi, si on a pour un étudiant deux évaluations de coefficients 2 et 3 avec les
notes (12/20 et 16/20), on aura:
```py
notes = [ 12., 20. ]
coefs = [ 2., 3. ]
```
Quelques fonctions sont définies: `abs, cmp, dot, len, map, max, min, pow, reduce, round, sum, ifelse`.
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)`
* 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_is_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_is_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) <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> *attention, ce n'est pas forcément un nombre !*
* moy_val: la valeur de la moyenne (moy) (toujours un nombre, valant 0 si moyenne invalide)
* moy_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)
* moy : la valeur de la moyenne calculée classiquement (somme pondérée) <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> *attention, ce n'est pas forcément un nombre !*
* moy_val: la valeur de la moyenne (moy) (toujours un nombre, valant 0 si moyenne invalide)
* moy_is_valid: vrai si la moyenne (moy) est valide (numérique). Par exemple, si absence EXCusée, la moyenne n'est pas valide.
* cmask : un vecteur de 0/1, 0 si l'évaluation correspondante n'a pas de note, 1 sinon.
* 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 !
Attention: pour les conditions, on utilisera la fonction `ifelse`: comme pour
tout appel de fonction python, les arguments cette dernière sont évalués avant
l'appel, ce qui implique que les deux branches (vraie et faux) sont toujours
évaluées. Ce détail est important si l'une d'entre elle déclenche une exception!
### Calcul des moyennes d'UE
### Calcul des moyennes d'UE
Dans les formules de calcul des moyennes d'UE, on peut utiliser soit le vecteur de notes soit avec des indices numériques (comme ci-dessus, les moyennes de modules étant accessibles dans l'ordre sous lequel elle apparaissent dans les bulletins de notes), soit en utilisant le code du module.
Dans les formules de calcul des moyennes d'UE, on peut utiliser soit le vecteur
de notes soit avec des indices numériques (comme ci-dessus, les moyennes de
modules étant accessibles dans l'ordre sous lequel elle apparaissent dans les
bulletins de notes), soit en utilisant le code du module.
Ainsi, la moyenne du module `BD1` serait aussi accessible comme la variable `notes['BD1']`.
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)
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:
```py
ifelse(moy_is_valid, min(moy_val+notes['SPORT'], 20), moy)
```
### Traitement des erreurs
### 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)
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
## Exemples de formules de calcul utiles
### Exemple (contribué par Cédric C., IUT de Bordeaux)
### Exemple (contribué par Cédric C., IUT de Bordeaux)
*J'ai réussi à faire mon calcul de moyenne pour une évaluation ayant pour calcul :* `moyenne(DS5, TD4, moyenne(TP1,TP2,TP3))`
*Si cela vous intéresse, voici le détail : *
*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])
@ -103,9 +133,4 @@ Ifelse(max(max(max(max(cmask[1], cmask[2]), cmask[3]), cmask[4]), cmask[5]),monc
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 !*
```

View File

@ -1,5 +1,7 @@
# Suivi des absences (version <= 9.4)
## Suivi des absences
**Cette page se réfère l'ancien système de gestion des absences, remplacé en
juillet 2023 (ScoDoc 9.5) par le nouveau module Assiduité.**
ScoDoc permet d'enregistrer les absences des étudiants.
@ -7,60 +9,78 @@ 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.
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).
* 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.
* 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).
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").
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
## 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).
* 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).
* 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)).
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).
*Absences aux évaluations*: lorsqu'une absence concerne potentiellement une évaluation, le responsable du module concerné peut être prévenu. Limitations: la résolution temporelle de l'absence est la demi-journée, une évaluation peut être plus courte; il appartient à l'enseignant de vérifier si l'étudiant était réellement absent lors de son évaluation (ou si la justification d'absence produite couvre bien sa plage horaire). Notons que ScoDoc se fonde sur la date de l'évaluation déclarée, pas sur l'emploi du temps (qui n'est pas géré par ScoDoc).
### Billets d'absences
### Billets d'absences
Les "billets d'absences" sont issus d'une demande du département Informatique de l'IUT de Villetaneuse en 2009, et sont implémentés à titre expérimental.
Les "billets d'absences" sont issus d'une demande du département Informatique de
l'IUT de Villetaneuse en 2009, et sont implémentés à titre expérimental.
Le scénario d'utilisation est le suivant :
* 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é.
* 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).

View File

@ -115,9 +115,8 @@ 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).
Les logos (IUT en haut, université en pied de page) sont
paramétrables par l'utilisateur: voir [configuration des logos](GestionLogos.md).
### Lettres d'avis individuelles

60
docs/GestionLogos.md Normal file
View File

@ -0,0 +1,60 @@
# Gestions des logos et fonds de documents
Images (logos ou autre) à afficher sur des documents PDF générés par ScoDoc:
* Sur les PV, `logo_header.jpg` est affiché en haut, et `logo_header.jpg` en bas de la page.
* Sur les bulletins de notes, c'est configurable (et on peut utiliser d'autres
logos), voir [ParametrageBulletins](ParametrageBulletins.md)
* Fonds de page: charger une image nommée `pvjury_background` pour les PV de
jury (en format paysage) ou `letter_background`pour les bulletins et lettres
de jury (en format portrait). Voir [paramétrage des PV](ParametragePV.md).
Ces images peuvent être chargées ou modifiées par l'administrateur via le menu
"*configuration*" sur la page d'accueil de ScoDoc.
## Informations techniques pour les développeurs et administrateurs curieux.
Normalement, l'administrateur n'a pas besoin d'intervenir dans les répertoires
mentionnés ci-dessous (sauf pour veiller à ce que `/opt/scodoc-data` soit bien
sauvegardé ou transféré lors des migrations).
La totalité des opérations nécessaires à l'utilisation de ScoDoc peuvent être
réalisées par le menu de configuration des logos.
### Fichiers et répertoires associés aux logos
Les images (logos et fonds de document) sont enregistrées dans le répertoire
`/opt/scodoc-data/config/logos` et ses sous-répertoires.
Les images ajoutées par les utilisateurs ont toutes un nom de la forme
`logo_<nom>.png` ou `logo_<nom>.jpg` (`<nom>` représente le nom d'usage du logo:
*header*, *footer*, signature, ... au choix de l'utilisateur) Les
sous-répertoires ont des noms de la forme `logos_<dept>``<dept>` est
l'identifiant numérique du département (la commande `flask list-depts` donne la
correspondance cf. [Administration en ligne de commande](GuideConfig.md)).
Les **fonds de page** se distinguent uniquement des logos par leur nom (`<ext>` peut être soit `jpg`ou `png`) :
| Document | nom | fichier |
|----------------------------------|-------------------------|--------------------------------|
| PV de jury | pvjury_background | `logo_pvjury_background.<ext>` |
| bulletin de note | letter_background | `logo_letter_background.<ext>` |
| lettre individuelle de décision | letter_background | `logo_letter_background.<ext>` |
### Note: héritage scodoc7
Les serveurs ScoDoc 7 utilisaient pour les fonds de page, des fichiers de nom
`letter_background.<ext>` et `pvjury_background.<ext>`. Lors de la migration
depuis ScoDoc 7, ces fichiers ont placés dans le même répertoire que les images
scodoc9. Pour assurer la compatibilité ascendante, leur présence est
exceptionnellement prise en compte. Bien évidemment, si un fichier scodoc9 (donc
avec le préfixe `logo_`) est présent, il est prioritaire sur le fond de page
"historique".
!!! note "Voir aussi"
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,30 +1,41 @@
# Gestion des photos des étudiants
## Gestion des photos des étudiants
Une photo de chaque étudiant peut être stockée par ScoDoc. On peut aussi utiliser des photos externes (portail).
Une photo de chaque étudiant peut être stockée par ScoDoc.
## Associer une photo à l'étudiant
### 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...).
### Individuellement
ScoDoc réduit automatiquement la taille de la photo (actuellement pour obtenir une taille verticale de 90 pixels).
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.
### 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.
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
### Afficher un trombinoscope
Suivre le lien "*Photos*" du groupe qui vous intéresse.
Suivre le lien "*Photos*" du groupe qui vous intéresse.
Le menu en haut à droite de la page permet d'obtenir une version PDF du trombinoscope (pour impression ou distribution) et une archive zip avec tous les fichiers images.
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.
La fonction "*Copier les photos du portail*" permet de copier dans ScoDoc les
photos externes publiées sur le portail.
### Photos externes
### Photos externes
Lorsque ScoDoc ne possède pas de copie de la photo d'un étudiant et qu'il est configuré avec un portail, il place dans les pages un lien vers ```portal_url + '/getPhoto.php?nip=CODE_NIP```. Voir [InterrogationPortail](InterrogationPortail.md).
Lorsque ScoDoc ne possède pas de copie de la photo d'un étudiant et qu'il est
configuré avec un portail, il peut places dans les pages un lien vers
```portal_url + '/getPhoto.php?nip=CODE_NIP```. Voir
[InterrogationPortail](InterrogationPortail.md).

View File

@ -1,63 +1,67 @@
# Guide ScoDoc pour le ou la responsable de formation
# Guide ScoDoc pour le chef de département
Dans cette partie, nous allons apprendre à:
Cette partie s'adresse plutôt aux responsables de formation (cheffes ou chefs de
département IUT, responsable de filières, ...). Nous allons apprendre à:
* définir une formation (saisie du programme pédagogique définissant les modules)
* définir une formation (saisie du programme pédagogique définissant les modules)
* mettre en place un semestre (ou session) de formation
* mettre en place un semestre (ou session) de formation
* inscrire des étudiants à un semestre de formation
* inscrire des étudiants à un semestre de formation
## Définir un programme pédagogique
## Définir un programme pédagogique
Le programme pédagogique d'une formation défini les unités d'enseignement; il est destiné à être utilisé par plusieurs sessions de formation (semestres). On doit apporter un soin particulier à la définition du programme, et éviter de le modifier une fois que des semestres sont créés (il est toutefois possible d'en créer de nouvelles *versions* pour permettre des modifications ultérieures sans affecter les semestres achevés: voir [VersionProgrammes](VersionProgrammes.md)).
Voir [Programmes pédagogiques et versions](Formations.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.
## Créer un semestre de formation
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.
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).
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.
* Options de paramétrage d'un semestre: [Paramétrage Semestre](ParametrageSemestre.md)
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.
## Inscrire des étudiants
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).
* [Importer des listes d'étudiants](ImportationEtuds.md) (en début d'année ou de semestre)
Vous trouverez plus d'informations sur la définition des programmes sur la page [VersionProgrammes](VersionProgrammes.md).
* [Synchroniser avec une étape Apogée](SynchroApogee.md)
* [Vérifier les codes NIP](VerifCodeNIP.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).
* [Associer des photos aux étudiants](GestionPhotos.md)
* Options de paramétrage d'un semestre: [ParametrageSemestre](ParametrageSemestre.md)
* [Données sur scolarité antérieure et admission](DonneesAdmissions.md)
## Jurys
## Inscrire des étudiants
* [ Importer des listes d'étudiants](ImportationEtuds.md) (en début d'année ou de semestre)
* [Saisie des décisions](SaisieDecisionsJury.md)
* [Gestion des commissions et jurys, édition des PV](GestionJury.md)
* [ Synchroniser avec une étape Apogée](SynchroApogee.md)
## Suivi de la Scolarité
* [ Vérifier les codes NIP](VerifCodeNIP.md)
* [Récapitulatif des opérations en fin de semestre et début du suivant](TransitionSemestre.md)
* [ Associer des photos aux étudiants](GestionPhotos.md)
* [Note sur la capitalisation des UE](CapitalisationUE.md)
* [ Données sur scolarité antérieure et admission](DonneesAdmissions.md)
* [Note sur la compensation des semestres](CompensationSemestre.md) (DUT)
## Échanges de programmes pédagogiques entre établissements
## Suivi de la Scolarité
* [ Récapitulatif des opérations en fin de semestre et début du suivant](TransitionSemestre.md)
ScoDoc permet d'exporter et d'importer des programmes pédagogiques: voir des
fichiers sur la page
[Exemples Programmes Pédagogiques](ExemplesProgrammesPedagogiques.md)
* [ Note sur la capitalisation des UE](CapitalisationUE.md)
!!! note "Voir aussi"
* [ 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)
<br>
---
- [Retour au guide utilisateur](GuideUtilisateur.md)
- [Programmes de formation](Formations.md)
- [Guide utilisateur](GuideUtilisateur.md)
- [Modélisation BUT: exemple complet](BUTExempleInfo.md)
- [Tutoriels vidéo](https://www.youtube.com/channel/UCb0JYCBRi0CsE4XFp4ByhXg)
- [Gestion des UE Bonus](https://www.youtube.com/watch?v=SVbjuDpq-lI)
- [Mise en place des parcours BUT](https://www.youtube.com/watch?v=OnuOXJo-3ro)
- [Saisie des codes Apogée](https://www.youtube.com/watch?v=MW0nNhbBjDM)
- [Du DUT au BUT: comment transformer un programme](https://www.youtube.com/watch?v=9HizGTvYgck)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,45 +1,42 @@
# 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**.
ScoDoc 9 est prévu pour fonctionner sur un serveur **Linux Debian 11 (Bullseye)**.
L'installation sur tout autre système n'est **pas supportée**.
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))
* Installation de ScoDoc: [GuideInstallDebian11](GuideInstallDebian11.md)
* Migration d'un serveur ScoDoc 7 vers la nouvelle version Scodoc 9: [MigrationScoDoc7a9](MigrationScoDoc7a9.md)
## Mises à jour et sauvegardes
* [Mettre à jour du logiciel (nouvelles versions)](MisesAJour.md)
* [Mise en place de sauvegardes des bases de données](SauvegardesBases.md)
### Pour les anciennes installations
ScoDoc 7 est une version adaptée aux systèmes Debian 9 ou 10 (il est possible que les version plus anciennes de Linux Debian fonctionnent encore, mais une mise à jour est fortement recommandée).
Linux Debian 10 est la version recommandée en production.
* Migration installations Debian anciennes vers Debian 10: [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)
* [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
* [Gestion des comptes utilisateurs](AdminUsers.md)
* [Administration en ligne de commande](GuideConfig.md)
* [ConfigPermissions](ConfigPermissions.md) : description des permissions et rôles utilisés par le système.
* [Paramétrage](PreferencesScoDoc.md): réglage des préférences
## Autres problèmes
* [Problèmes configuration des envois mail](ProblemesMail.md)
* [ProblemesEtBugs](ProblemesEtBugs.md) en cas d'ennuis.
* [Problèmes configuration des envois mail](ProblemesMail.md)
* [Gestion des logos et fonds de documents](GestionLogos.md)
* [ProblemesEtBugs](ProblemesEtBugs.md) en cas d'ennuis.
## Utilisation avancée
## 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
* [Interfaçage avec Apogée](ScoDocApogee.md)
* [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
* [InterrogationPortail](InterrogationPortail.md) : liaison avec portail
Voir aussi le [guide pour les développeurs](GuideDeveloppeurs.md) et la [FAQ](FAQ.md).
!!! note "Voir aussi"
- [Guide pour les développeurs](GuideDeveloppeurs.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,50 +1,363 @@
# Prise en main et paramétrage de ScoDoc 9
# 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).
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans
[GuideInstallDebian11](GuideInstallDebian11.md).
## Administration en ligne de commande
Les opérations d'administration se résument à la création de départements, et la
création d'utilisateurs "super admin", c'est à dire admin pour tous les
départements. Le reste des paramétrages (création de comptes, de formations,
import d'étudiants, etc) se fait à partir du logiciel (web).
## Procédure à suivre pour créer un département et son utilisateur administrateur
* Connectez-vous au site: `https://votre.site.fr/`
L'administration se fait dans un terminal connecté au serveur (en général via
ssh), en tant qu'utilisateur `scodoc` (*et non* `root`).
Se connecter et initialiser la session ainsi:
Vous allez voir la page d'accueil de ScoDoc (il est possible que votre navigateur vous demande d'accepter un certificat).
ssh votre.serveur # si nécessaire
su scodoc # idem,
# ou tout autre moyen d'ouvrir un shell comme scodoc
cd /opt/scodoc
source venv/bin/activate
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.
Après quoi, vous pouvez utiliser les commandes décrites ci-dessous. *Attention:
le lancement de chaque commande peut être assez long (quelques secondes) car
toute l'application scodoc est initialisée à chaque fois.*
* 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.
### Création d'un 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.
flask create-dept DEPT
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.
`DEPT` est l'acronyme du département, par exemple "RT". Ce département
apparait immédiatement sur la page d'accueil.
* Ajouter un département (donnez le nom du département créé pendant l'installation)
### Suppression d'un département
* 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.
Opération très rarement nécessaire, proposée pour corriger une erreur
immédiatement après la création, et pour les tests.
Quittez votre navigateur et reconnectez vous à ScoDoc avec votre nouvel utilisateur.
flask delete-dept [-f] [--yes] DEPT
-f, --force: ignore département non existant
--yes : ne demande pas confirmation
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).
### Création d'un utilisateur
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Surtout, évitez de travailler comme "admin": cet utilisateur doit être réservé à la création de départements. Prenez le temps de créer un utilisateur "chef de département !".
Cette opération s'effectue en général depuis le logiciel, via un formulaire
ou un import Excel. Pour créer un utilisateur depuis le terminal, lancer:
flask user-create LOGIN ROLE DEPT
`LOGIN` sera le pseudo de l'utilisateur (utilisé pour se connecter),
et `ROLE` le rôle (`Ens`, `Secr`, `Admin`) dans le département `DEPT`.
### Création d'un super-administrateur
Il s'agit d'un utilisateur ayant tous les droits, comme s'il était
`Admin` dans tous les départements.
flask user-create admin2 SuperAdmin @all
`admin2` est ici le pseudo du nouvel admin.
### Changement du mot de passe d'un utilisateur
Cette opération peut s'effectuer via la page de gestion web des
utilisateurs, mais il est parfois commode de le faire depuis la
console:
flask user-password LOGIN
`LOGIN` est le pseudo de l'utilisateur. Le mot de passe est demandé
sur la ligne de commande.
### Création d'un nouveau rôle
flask create-role role_name [permissions...]
Exemple: création d'une rôle "Observateur" ayant juste la permission de "voir":
flask create-role Observateur ScoView
### Liste des rôles
flask list-roles
### Édition d'un rôle (ajout/retrait permissions)
flask edit-role [-a permission] [-r permission] role_name
Ajoute ou retire une permission.
### Ajout/retrait d'un rôle à un utilisateur
flask user-role username [-d departement] [-a RoleAAjouter] [-r RoleARetirer]
Exemples:
flask user-role dupont
affiche les rôles de l'utilisateur `dupont`.
flask user-role dupont -d MMI -a Observateur
donne le rôle `Observateur` (qui doit déjà exister) à l'utilisateur `dupont` dans
le département `MMI`.
Si le département n'est pas spécifié, le rôle est donné dans *tous* les
départements (utile pour certains compte administrateurs ou utilisés en lecture
par des clients de l'API).
### Migration des données de ScoDoc 7
Les données dans ScoDoc 9 ayant un format et une organisation très différents
de ScoDoc 7, une étape de conversion (migration) est nécessaire. Elle est automatique
mais prend du temps.
Se reporter à [MigrationScoDoc7a9](MigrationScoDoc7a9.md)
Ces commandes sont utilisées par le script de migration de ScoDoc 7 à ScoDoc 9.
*Ne pas utiliser sauf si vous savez vraiment ce que vous faites.*
#### Comptes utilisateurs
Toujours migrer les comptes utilisateurs avant d'importer les
départements.
flask import-scodoc7-users
#### Départements
Pour migrer un seul département:
flask import-scodoc7-dept DEPT DBNAME
Exemple:
flask import-scodoc7-dept InfoComm DBINFOCOMM
### Liste des commandes Flask/ScoDoc
Dans l'encart ci-dessous, `app` désigne `flask`, comme dans les exemple donnés plus haut.
## Changement des logos apparaissant sur les documents
Les documents PDF (PV de jurys...) incluent les logos de l'établissement. Par défaut, ceux de l'IUT de Villetaneuse et de l'Université Paris 13 sont distribués (ce n'est pas bien, ils ne sont sans doute pas sous licence libre !). Pour les changer, placer vos logos (fichiers images JPEG ou PNG) dans le répertoire
```
/opt/scodoc/var/scodoc/config/logos
Usage: app [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
clear-cache Clear ScoDoc cache This cache (currently...
create-dept Create new departement
create-role Create a new role
delete-dept Delete existing departement
delete-role Delete a role
dumphelp
list-roles List roles
edit-role Add [-a] and/or remove [-r] a permission...
import-scodoc7-dept Import département ScoDoc 7: dept:...
import-scodoc7-users Import users defined in ScoDoc7...
list-depts If dept exists, print it, else nothing.
localize-logo Make local to a dept a global logo (both...
migrate-scodoc7-dept-archives Post-migration: renomme les archives en...
migrate-scodoc7-dept-logos Post-migration: renomme les logos en...
photos-import-files
profile Start the application under the profiler...
sco-db-init Initialize the database.
scodoc-database print the database connexion string
user-create Create a new user
user-db-clear Erase all users and roles from the...
user-delete Try to delete this user.
user-password Set (or change) users password
user-role Display roles, or add or remove a role to the given user...
Usage: app sco-db-init [OPTIONS]
Initialize the database. Starts from an existing database and create all the
necessary SQL tables and functions.
Options:
--erase / --no-erase
Usage: app user-db-clear [OPTIONS]
Erase all users and roles from the database !
Usage: app user-create [OPTIONS] USERNAME ROLE DEPT
Create a new user
Options:
-n, --nom TEXT
-p, --prenom TEXT
Usage: app user-delete [OPTIONS] USERNAME
Try to delete this user. Fails if its associated to some scodoc objects.
Usage: app user-password [OPTIONS] USERNAME
Set (or change) users password
Options:
--password TEXT
Usage: app create-role [OPTIONS] ROLENAME [PERMISSIONS]...
Create a new role
Usage: app edit-role [OPTIONS] ROLENAME
Add [-a] and/or remove [-r] a permission to/from a role. In ScoDoc,
permissions are not associated to users but to roles. Each user has a set of
roles in each departement.
Example: `flask edit-role -a ScoEditApo Ens`
Options:
-a, --add TEXT
-r, --remove TEXT
Usage: app delete-role [OPTIONS] ROLENAME
Delete a role
Options:
--help Show this message and exit.
Usage: app user-role [OPTIONS] USERNAME
Add or remove a role to the given user in the given dept
Options:
-d, --dept TEXT
-a, --add TEXT
-r, --remove TEXT
--help Show this message and exit.
Usage: app delete-dept [OPTIONS] DEPT
Delete existing departement
Options:
--yes
--help Show this message and exit.
Usage: app create-dept [OPTIONS] DEPT
Create new departement
Usage: app list-depts [OPTIONS] [DEPTS]...
If dept exists, print it, else nothing. Called without arguments, list all
depts along with their ids.
Usage: app scodoc-database [OPTIONS]
print the database connexion string
Options:
-n, --name show database name instead of connexion string (required for
dropdb/createdb commands)
Usage: app import-scodoc7-users [OPTIONS]
Import users defined in ScoDoc7 postgresql database into ScoDoc 9 The old
database SCOUSERS must be alive and readable by the current user. This
script is typically run as unix user "scodoc". The original SCOUSERS
database is left unmodified.
Usage: app import-scodoc7-dept [OPTIONS] DEPT DEPT_DB_NAME
Import département ScoDoc 7: dept: InfoComm, dept_db_name: SCOINFOCOMM
Usage: app migrate-scodoc7-dept-archives [OPTIONS] [DEPT]
Post-migration: renomme les archives en fonction des id de ScoDoc 9
Usage: app migrate-scodoc7-dept-logos [OPTIONS] [DEPT]
Post-migration: renomme les logos en fonction des id / dept de ScoDoc 9
Usage: app localize-logo [OPTIONS] LOGO DEPT
Make local to a dept a global logo (both logo and dept names are mandatory)
Usage: app photos-import-files [OPTIONS] FORMSEMESTRE_ID XLSFILE ZIPFILE
Import des photos détudiants à partir dune liste excel et dun zip avec les images.
Usage: app clear-cache [OPTIONS]
Clear ScoDoc cache This cache (currently Redis) is persistent between
invocation and it may be necessary to clear it during upgrades, development
or tests.
Options:
--sanitize / --no-sanitize
Usage: app dumphelp [OPTIONS]
Génère la page daide complète pour la doc.
Usage: app profile [OPTIONS]
Start the application under the code profiler.
Options:
-h, --host TEXT The interface to bind to.
-p, --port INTEGER The port to bind to.
--length INTEGER Number of functions to include in the profiler report.
--profile-dir TEXT Directory where profiler data files are saved.
--help Show this message and exit.
```
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).
(*la liste ci-dessus est générée à l'aide de la commande* `flask dumphelp`).
### Changement des logos apparaissant sur les documents
*Note: après migration, vos logos de ScoDoc 7 sont installés dans ScoDoc 9*.
Les documents PDF (PV de jurys...) incluent les logos de l'établissement. Par
défaut, ceux de l'IUT de Villetaneuse et de l'Université Paris 13 sont
distribués. Pour les changer, passer par la page d'administration (lien
**Configuration** sur la page d'accueil, en tant que super-admin),
[voir la FAQ](/FAQ/#comment-changer-les-logos-sur-les-documents-pdf-pv).
## Utilisation via le Web
* Connectez-vous au site: `https://votre.site.fr/`
Vous allez voir la page d'accueil de ScoDoc, vous permettant de choisir le
département où travailler.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Surtout, évitez de travailler comme "admin" (super admin): prenez
le temps de créer un utilisateur "chef de département !" dans chaque
département, qui à son tour peut déléguer des droits.
Enfin, redémarrez ScoDoc (`/etc/init.d/scodoc start`).
!!! note "Voir aussi"
- [Guide installation](GuideInstallDebian11.md)
- [Gestion des utilisateurs](AdminUsers.md)
- [Rôles et permissions](ConfigPermissionsDept.md)
- [Configuration des envois d'emails](ConfigEmail.md)
- [Configuration des logos et fonds de documents](GestionLogos.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,35 +1,50 @@
# Documentation pour les développeurs ScoDoc
Informations pour les développeurs souhaitant étendre ou modifier ScoDoc.
Pour le développement de logiciels externes, [utiliser l'API](ScoDoc9API.md).
Accès à la [plate-forme Gitea](https://scodoc.org/git).
## Informations générales
* 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)
## Développer sur ScoDoc 7 et 8
Les échanges se font sur Discord, voir [contacts](Contact.md). Il y a un serveur
Discord ouvert sur invitation aux développeur actifs. Contacter Emmanuel Viennet
(`@emm`).
Quelques conseils, indications et mémos pour les développeurs sur ScoDoc version 7.x et 8.
- [Développement ScoDoc: Introduction](DevInternals.md)
- [Utilisation de git](DevGit.md)
- [Définition des cursus](DevCursus.md)
- [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md)
- [Gestion des jurys BUT](DevJuryBUT.md)
- [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
- Notes diverses (caduques, pour mémoire)
- [Très anciennes discussions pour la future gestion des absences](IdeesGestionAbsences.md)
- [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md)
## Développer sur ScoDoc
Quelques conseils, indications et mémos pour les développeurs sur ScoDoc version 9.
### Installation d'un serveur de développement
[Quelques conseils mouvants pour configurer votre serveur de développement](ConseilServeurDev.md)
[Quelques conseils pour configurer votre serveur de développement](ConseilServeurDev.md)
### Style et formatage du code
L'ancienneté de la base de code a rendu le style peu cohérent.
Le code doit être formatté avec [`black`](https://black.readthedocs.io/) avant tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement).
L'ancienneté de la base de code a rendu le style un peu incohérent, mais cela
s'est nettement amélioré avec ScoDoc 9 (respect PEP 8).
Le code DOIT être formaté avec [`black`](https://black.readthedocs.io/) avant
tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement).
#### Documentation
On adoptera le style "Google": <https://google.github.io/styleguide/pyguide.html#383-functions-and-methods>
On pourra adopter le style "Google": <https://google.github.io/styleguide/pyguide.html#383-functions-and-methods>
Exemple:
```py
"""Description résumée de la fonction
blah blah sur la fonction
@ -50,77 +65,83 @@ Exemple:
b'Zim': ('Irk', 'Invader'),
b'Lrrr': ('Omicron Persei 8', 'Emperor')}
"""
```
### Git
Le dépot est <https://scodoc.org/git/viennet/ScoDoc>
Voir [la page sur git et ScoDoc](DevGit.md)
La branche `master` est celle en production. La branche `Scodoc8`est expérimentale (nouvel installeur, refactoring...). ScoDoc9 sera avec Python 3.
## Tests et tests unitaires
Ci-dessous quelques pense-bête qui peuvent servir.
#### Hot fixes (internes)
Voir [TestsScoDoc](TestsScoDoc.md)
Pour les développeurs internes (écriture sur le dépot master), un exemple basique:
## Cache Redis
# Créer une branche
# si besoin (travail en cours), utiliser git stash avant
git checkout master
git branch hotfix
git checkout hotfix
... dev, test ...
git add ...
git commit -m "fixed ..."
git checkout master
git merge hotfix
git branch -d hotfix
# publication
Certains objets couteux à calculer sont cachés. Depuis ScoDoc 9, on utilise
Redis, via `flask-caching`.
# éventuellement: git stash pop
Au besoin, mémo:
#### Mettre à jour votre branche
- client ligne de commande: `https://redis.io/topics/rediscli`
Vous travaillez dans votre branche `ma_branche`. Pour lui appliquer les mises à jour de `master` (remote):
- afficher les clés: `redis-cli KEYS '*'`
git pull origin master
- `redis-cli TTL key` affiche le TTL d'un clé, -1 si infini.
#### Commandes utiles, en vrac
- `redis-cli -r -1 -i 3 KEYS '*_NT_*'` surveille certaines clés (ici _NT_),
affiche toutes les 3 secondes.
* `git log -L:fonction_python:fichier.py`
* Commits locaux: `git log @{u}..`
- `flask clear-cache` efface le cache Redis.
#### Refactoring
## Re-création du virtualenv
Lint tous les fichiers modifiés:
git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E
ScoDoc est livré avec un "virtualenv", qui contient tous les modules python
nécessaires. Il se trouve sous `/opt/scodoc/venv`.
Si vous souhaitez repartir de zéro, tester de nouvelles versions de certaines
bibliothèques, ou autres expériences de ce genre, vous pouvez le récréer ainsi:
Restore les modes au besoin (SAMBA les changent parfois):
git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply
```bash
# en tant qu'utilisateur scodoc
cd /opt/scodoc
/bin/rm -rf venv # ou mv ...
python3 -m venv venv
source venv/bin/activate
pip install wheel
```
Affiche les variables non définies dans un fichier:
Puis soit vous installez les versions "officielles" (testées)
pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \'
```bash
pip install -r requirements-3.9.txt
```
Prépare un sed pour renommer les variables non définies:
Soit vous prenez les versions les plus à jour disponibles. Une façon rapide de
faire ceci est:
for f in *.py
do
pylint --disable=all -e E "$f" | grep undefined-variable | awk '{print "sed -i .bak s/"$4"/scu."$4"/ '$f'";}' | sort | uniq | tr -d \'
done
```bash
cut -d= -f 1 requirements-3.11.txt | xargs pip install
```
à adapter selon vos objectifs.
### Portail pour tests
TODO (voir `scotests/fakeportal/`).
Pour régénérer le fichier indiquant la liste des paquets:
```bash
pip freeze > requirements-3.11.txt
```
Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
## Roadmap
Sujets **prioritaires** en 2021:
- modernisation du code: Flask, Python 3.
* [voir les tickets](https://scodoc.org/git/viennet/ScoDoc/issues)
- prise en compte du Bachelor (BUT): SAÉ, suivi compétences, validations des blocs, UE, semestres selon la cadrage et l'arêté Licence Pro 2020.
- Redéfinition API et interface mobile simplifiée.
!!! note "Voir aussi"
Autres sujets:
- [voir les tickets](https://scodoc.org/git/viennet/ScoDoc/issues)
- [API ScoDoc 9](ScoDoc9API.md)
- [Guide installation](GuideInstallDebian11.md)
- [Gestion des utilisateurs](AdminUsers.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,4 +0,0 @@
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> '''Attention: document obsolète pour une version ancienne de Debian. Voir [GuideInstallDebianDix](GuideInstallDebianDix.md) pour l'installation normale de !ScoDoc !

View File

@ -0,0 +1,329 @@
# Installation de ScoDoc 9 sur Debian 11 (Bullseye)
Ce document décrit la procédure d'installation et de configuration de ScoDoc 9.
Cette procédure doit être effectué sur la machine serveur avec un accès
administrateur (root).
ScoDoc est livré avec des scripts d'installation qui configurer presque
automatiquement votre serveur (serveur web, base de données, etc): vous pouvez
donc installer et configurer ScoDoc avec des connaissances réduites sur le
système Linux.
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
[Debian](http://www.debian.org) 11 (Bullseye, oldstable) s'exécutant sur une
machine intel-like **64bits** (architecture **AMD64** sur Intel/AMD, ou
**aarch64** sur Apple ARM). Debian s'installe facilement en cinq minutes, sur
une machine normale ou un serveur virtualisé. Il est **vivement déconseillé** de
tenter l'installation sur une autre version.
Si vous mettez à jour un serveur existant (ScoDoc 7 sur Debian 10), voir [la page
sur les migrations](https://scodoc.org/MigrationScoDoc7a9/#2-upgrade-debian).
Merci de signaler tout problème [sur le Discord](https://discord.gg/ybw6ugtFsZ)
ou éventuellement la liste [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel).
- Note: l'image du CD d'installation de Debian (amd64) peut se trouver ici:
[https://www.debian.org/distrib/netinst](https://www.debian.org/distrib/netinst.md),
choisir la version "petits CD" pour **amd64**
(*Il est indispensable d'utiliser une version 64 bits !*)
🚸 **Important:**
La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter
sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme
VirtualBox ou VMWare, ou UTM sur Mac). L'installation ci-dessous va en effet
modifier de nombreux paramètres de votre système Linux (serveur web, firewall,
serveur SQL, messagerie, ...).
## 1) Préalable: configurer un serveur linux
Le serveur devrait être accessible depuis Internet.
### Configuration matérielle
- taille disque: prévoir au moins 20Go sur la partition où sera scodoc (en
général `/`).
- mémoire: prévoir au moins 8Go de RAM, et plutôt 12 ou 16.
### Informations sur les flux réseau
Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.
- le trafic entrant est sur le port 443 (le trafic http/80 est redirigé
vers le https).
- le serveur doit pouvoir envoyer du mail (serveur Postfix en local, à
configurer pour utiliser un relais smtp ou envoyer directement, selon
votre politique. Au besoin, pour le reconfigurer, lancer `dpkg-reconfigure postfix`);
- Les serveurs de mise à jour de Debian doivent être accessibles (en http,
voir `/etc/apt/sources.list`);
- Les serveurs `scodoc.org` et `scodoc.iutv.univ-paris13.fr` **doivent**
être accessibles (80 et 443).
### Installation Linux Debian
Nous recommandons d'effectuer une installation standard de Debian par le réseau (netinst),
et d'utiliser l'installation en mode texte, très simple et rapide.
Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout décocher
sauf "Serveur SSH" et "Utilitaires standard du système". Le script d'installation de ScoDoc
se chargera ensuite d'installer tous les éléments nécessaires (serveur web, messagerie, etc.).
🚸 *Veiller à sélectionner une locale `UTF-8` par défaut.*
![InstallDebian6-1.png](screens/InstallDebian6-1.png)
### Points à vérifier avant d'installer ScoDoc
Checklist minimale de votre système Linux Debian:
1. Connexion à Internet: le réseau doit être accessible. En effet, le script d'installation va installer des paquetages du système Debian puis télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur Subversion).
1. Vérifiez la connectivité, par exemple:
```bash
ping www.univ-paris13.fr
(quitter avec ctrl-c)
cd /tmp
wget --no-check-certificate https://www-lipn.univ-paris13.fr/projects/scodoc
# doit créer un fichier nomme "scodoc" contenant du code HTML
```
3. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le
DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais
dans ce cas le nom de votre serveur sera son adresse IP (eg `192.168.0.10`) et
il ne sera peut être pas accessible de l'extérieur.
4. Mail: vérifiez que le serveur peut envoyer des e-mail: `mail
votre@adresse.fr`, puis entrer un message terminé par `ctrl-d`: si vous ne
recevez pas le message après quelques minutes, vérifiez votre configuration
(et le log `/var/log/mail.log`). Un serveur ScoDoc qui n'envoie pas de mail
ne peut pas vérifier ceux des utilisateurs, qui à leur tour ne pourront pas
changer leurs mots de passe (bien d'autres fonctions dépendent des mails).
Au besoin, revoir la configuration avec `dpkg-reconfigure postfix` (voir
aussi [envoi des courriers électroniques](ProblemesMail.md)).
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre
réseau (voire d'Internet): par exemple `ping serveur.exemple.fr`.
1. Date et heure: vérifier que les dates et heure sont correctes, même après
reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (
`apt-get install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
1. Si vous avez installé à partir d'un support (DVD, clé USB...), pensez à le
retirer des sources Debian afin de ne pas bloquer les mises à jour (commenter
la ligne `deb cdrom:` dans le fichier `/etc/apt/sources.list`)
1. Cette liste est incomplète... et n'oubliez pas: avant de passer en
production, mettez en place des sauvegardes sérieuses !
#### Configuration si utilisation d'un proxy
Si votre accès à Internet passe par un proxy, l'indiquer au moment de
l'installation Debian.
Ensuite, dans ScoDoc, indiquer votre proxy: pour cela, éditer le fichier
```/opt/scodoc/.env```
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
```bash
HTTP_PROXY=http://proxy.univ-xxx.fr:1234
HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
```
Vérifiez aussi que ces variables sont bien définies dans `/etc/environment` (si
l'installeur Linux Debian ne les a pas déjà indiquées là, les ajouter ou créer
ce fichier):
```bash
# /etc/environment
export HTTP_PROXY=http://proxy.univ-xxx.fr:1234
export HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
# Versions en minuscules utilisées par wget
export http_proxy="${HTTP_PROXY}"
export https_proxy="${HTTPS_PROXY}"
```
Après modification de ce fichier (qui *doit* être lisible par l'utilisateur `scodoc`),
redémarrer le service:
```bash
sudo systemctl restart scodoc9
```
Dans les cas compliqués, il est possible qu'il vous faille configurer d'autres
éléments, voir par exemple
[ce post sur Stack Overflow](
https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy).
#### Note sur l'install dans un container LXC
Il y a deux possibilités :
**Option 1**, si vous installez dans un container LXC privilégié via le compte
root et/ou sudo, attention: la config par défaut de Redis (un gestionnaire de
cache utilisé par ScoDoc) n'est pas compatible, en raison d'un problème de
système de fichier en lecture seule. Installer redis avant ScoDoc, comme suit:
```bash
apt-get install redis
```
Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichier
`redis.conf` avec les lignes suivantes :
```text
[Service]
PrivateTmp=no
ProtectSystem=false
PrivateDevices=false
ProtectHome=no
ProtectControlGroups=no
ProtectKernelTunables=no
ProtectKernelModules=no
ReadWritePaths=
ReadOnlyDirectories=
```
Ensuite
```bash
systemctl daemon-reload
systemctl start redis
```
... et poursuivez l'installation comme ci-dessous.
**Option 2**, si vous installez dans un container LXC non-privilégié via un
compte utilisateur normal, vous pouvez activer l'option « nesting »
(imbriqué) de LXC pour permettre à Redis de fonctionner normalement.
🚸 Attention ! N'activez pas le *nesting* sur un conteneur privilégié. Cela
provoquerait une faille de sécurité.
Si vous avez construit votre conteneur manuellement avec `lxc-create`, modifiez
le fichier `/var/lib/lxc/${nomDuConteneur}/config` et ajoutez les lignes
ci-dessous :
```text
lxc.apparmor.allow_nesting = 1
lxc.apparmor.profile = generated
```
Si vous utilisez un conteneur LXC sur l'hyperviseur Proxmox, modifiez le
fichier `/etc/pve/lxc/${CTID}.conf` et ajoutez la ligne suivante :
```text
features: nesting=1
```
... et poursuivez l'installation comme ci-dessous.
## 2) Installation de ScoDoc sur Debian
### 2.1) Charger le logiciel
🚸 Les commandes ci-dessous sont à exécuter dans un terminal ouvert en tant que
**root** sur le serveur. Vous pouvez utiliser `su` (ou `sudo su`) pour devenir
**root**).
Remarque: *Si ce n'est pas déjà le cas, vous avez intérêt à ouvrir une session
`ssh` (ou `putty`) depuis une machine normale, afin de pouvoir copier/coller
facilement les commandes et éditer les fichiers de configuration.*
- Ajouter le dépôt scodoc: copier ce fichier <a href="/attachments/scodoc.list"
download>scodoc-bullseye.list</a> dans `/etc/apt/sources.list.d/`
ou le créer contenant juste cette ligne:
```text
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
deb http://scodoc.org/repo bullseye main
```
- Installer la clé: en `root` sur le serveur, lancer
```bash
apt-get -y install gnupg
wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
```
- Installer le logiciel:
```bash
apt-get update
apt-get install nginx
```
S'assurer que le logiciel `nginx` s'est bien installé. En cas de problème se
référer à sa doc (par exemple, si
[votre serveur ne supporte pas
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
Ensuite:
```bash
apt-get install scodoc9
```
Notez que l'installation du paquet `scodoc9` va créer automatiquement un
utilisateur `scodoc` qui sera utilisé par le serveur.
- Attribuer un mot de passe à l'utilisateur `scodoc`:
```bash
passwd scodoc
```
### 2.2) Configuration des logiciels et des données
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
```bash
/opt/scodoc/tools/configure-scodoc9.sh
```
Vous devrez répondre à quelques questions et saisir le mot de passe que vous
attribuerez à l'utilisateur `admin`.
(note: pour en savoir plus sur ce script, [voir l'explication](GuideInstallDebian11Advanced.md))
### 3) **Lancer ScoDoc**
```bash
sudo su # se connecter en root
systemctl restart nginx
systemctl restart scodoc9
```
✨ et voila !
Visiter `https://monscodoc.mondomaine.fr/` pour achever la configuration et
utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md).
## Importation des données ScoDoc 7
Après installation, vous pouvez migrer toutes vos données (comptes utilisateurs,
étudiants, formations, notes, photos et fichiers divers) depuis une
installation ScoDoc 7, ou même en place.
Voir [la procédure de migration](MigrationScoDoc7a9.md).
## En cas de problème
Ne pas hésiter à nous contacter (voir [contacts](Contact.md)).
- Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.md)
Nota: sur certains réseaux, l'autoconfiguration IPv6 pose problème (par exemple:
bloquage des envois de mails). Au besoin, il est possible de désactiver IPv6
(voir par exemple [ici](https://wiki.debian-fr.xyz/D%C3%A9sactiver_l%27IPv6)).
## Ensuite...
- Mettez en place des [sauvegardes](SauvegardesBases.md)
- Si vous le souhaitez, vous pouvez mettre en place un anti-virus pour
surveiller les fichiers uploadés par les utilisateurs. Les fichiers sont
conservés dans `/opt/scodoc-data`: le plus simple est de faire surveiller tout
ce répertoire sauf `/opt/scodoc-data/logs`.
- Abonnez-vous au moins à la liste d'annonces: voir [contacts](Contact.md)
!!! note "Voir aussi"
- [Guide configuration](GuideConfig.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -0,0 +1,121 @@
# Configuration manuelle de ScoDoc sur Debian 11 (Bullseye)
Instructions pour utilisateurs ne souhaitant pas utiliser le script
/opt/scodoc/tools/configure-scodoc9.sh
Toutes les opérations décrites sur cette page sont effectuées par ce script.
Cette page est donc destinée aux curieux et futurs développeurs. Se référer au
script lui même pour les détails.
## Activation du firewall
(optionnel, recommandé)
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow http
ufw allow https
yes | ufw enable
## Certificats pour nginx
ScoDoc utilise le serveur Web nginx. Installer les certificats SSL
nécessaires pour https. C'est indispensable sur un serveur en production.
Sur un serveur de test, pour faire des essais, vous pouvez utiliser des
certificats auto-signés. Procéder ainsi:
su scodoc # utilisateur scodoc
cd /opt/scodoc-data
mkdir -p certs && openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -keyout certs/key.pem -out certs/cert.pem
Répondre aux questions, la seule importante étant `Common Name (e.g. server
FQDN or YOUR name)` en réponse à laquelle vous devez fournir le nom que vous
utiliserez pour vous adresser au serveur: par exemple
`monscodoc.mondomaine.fr`. Ce nom dépend de votre configuration réseau.
Sinon, éditer le fichier `/etc/nginx/sites-available/scodoc9.nginx` pour
indiquer vos certificats.
## Démarrage de nginx et redis
su # se connecter en root d'une manière ou d'une autre
systemctl restart nginx
systemctl start redis
Il est utile de vérifier que le serveur Web a bien démarré, avec
systemctl status nginx
## Création des bases de données
ScoDoc 9 utilise une base de données unique, regroupant tous les
départements et les utilisateurs. Elle est nommée `SCODOC` (et `SCODOC_DEV`
en mode développement, ou `SCODOC_TEST`pour les tests unitaires).
Cette base est créée via `sqlalchemy` (l'ORM habituel de Flask).
Pour créer la base de données, lancer le script:
su scodoc # au besoin (pas root !)
cd /opt/scodoc
./tools/create_database.sh SCODOC
./tools/create_database.sh SCODOC_DEV # pour la base "developement"
./tools/create_database.sh SCODOC_TEST # pour les tests unitaires
Les bases créées appartiennent à l'utilisateur (rôle) postgres `scodoc`
(qui a été créé par le script d'installation précédent).
## Variables d'environnement
Le serveur utilise des variables d'environnement donnant la
configuration de base.
Le plus simple est de les grouper dans un fichier `.env` (dans
`/opt/scodoc-data/.env`)
qui sera lu automatiquement au démarrage:
# .env for ScoDoc (production)
FLASK_APP=scodoc.py
FLASK_ENV=production
MAIL_SERVER=votre.serveur.de.mail.net # ou vide si pas de mail
MAIL_PORT=25
SCODOC_ADMIN_MAIL="adresse.admin@toto.fr" # important: le mail de admin
SECRET_KEY="CGGAJAKlh6789JJK?KNAb=" # une chaine aléatoire à changer
Le fichier `/opt/scodoc/.env-exemple` est donné à titre... d'exemple. Vous pouvez faire:
# en tant qu'utilisateur scodoc
cp /opt/scodoc/.env-exemple /opt/scodoc-data/.env
nano /opt/scodoc-data/.env # édition
Il est nécessaire de modifier MAIL_SERVER, SCODOC_ADMIN_MAIL et SECRET_KEY.
Cette dernière variable doit contenir une chaîne aléatoire qui servira
de clé pour sécuriser les formulaires. Vous pouvez utiliser la commande suivante
pour afficher une chaine de ce genre (choisie au hasard), que vous copierez
dans votre fichier `.env`:
python3 -c "import uuid; print(uuid.uuid4().hex)"
Note: le fichier utilisé par Flask est bien sûr `/opt/scodoc/.env`,
mais l'installeur créé un lien symbolique vers `/opt/scodoc-data/.env` afin
de conserver ce fichier durant les mise à jour par `apt-get upgrade`.
## Initialisation de la base et de l'utilisateur admin
En tant qu'utilisateur `scodoc`:
su scodoc # si besoin
cd /opt/scodoc
source venv/bin/activate
Puis initialisation de l'appli:
flask db-init
Et saisie du mot de passe `admin`:
flask user-password admin

View File

@ -0,0 +1,342 @@
# Installation de ScoDoc 9.6+ sur Debian 12 (Bookworm)
Ce document décrit la procédure d'installation et de configuration de ScoDoc
version 9.6 et suivantes.
Si vous mettez à jour une installation ScoDoc 9 existante (9.5 sous Debian 11
Bullseye), suivez la
[procédure de migration décrite sur cette page](UpgradeToDeb12Sco96.md).
La procédure décrite ici doit être effectué sur la machine serveur fraiche avec
un accès administrateur (root). **Ne pas l'utiliser pour migrer une installation existante**.
ScoDoc est livré avec des scripts d'installation qui configurer presque
automatiquement votre serveur (serveur web, base de données, etc): vous pouvez
donc installer et configurer ScoDoc avec des connaissances réduites sur le
système Linux.
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
[Debian](http://www.debian.org) 12 (Bullseye, stable) s'exécutant sur une
machine intel-like **64bits** (architecture **AMD64** sur Intel/AMD, ou
**aarch64** sur Apple ARM). Debian s'installe facilement en cinq minutes, sur
une machine normale ou un serveur virtualisé. Il est **vivement déconseillé** de
tenter l'installation sur une autre version de Linux.
Merci de signaler tout problème [sur le Discord](https://discord.gg/ybw6ugtFsZ).
- Note: l'image du CD d'installation de Debian (amd64) peut se trouver ici:
[https://www.debian.org/CD/netinst/](https://www.debian.org/CD/netinst/),
choisir la version "petits CD" pour **amd64**
(*Il est indispensable d'utiliser une version 64 bits !*)
🚸 **Important:**
La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter
sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme
VirtualBox ou VMWare, ou UTM sur Mac). L'installation de ScoDoc va en effet
modifier de nombreux paramètres de votre système Linux (serveur web, firewall,
serveur SQL, messagerie, ...).
## 1) Préalable: configurer un serveur linux
Le serveur devrait être accessible depuis Internet.
### Configuration matérielle
- taille disque: prévoir au moins 24Go sur la partition où sera scodoc (en
général `/`).
- mémoire: prévoir au moins 8Go de RAM, et plutôt 12 ou 16.
### Informations sur les flux réseau
Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.
- le trafic entrant est sur le port 443 (le trafic http/80 est redirigé
vers le https).
- le serveur doit pouvoir envoyer du mail (serveur Postfix en local, à
configurer pour utiliser un relais smtp ou envoyer directement, selon votre
politique. Au besoin, pour le reconfigurer, lancer `dpkg-reconfigure postfix`);
- Les serveurs de mise à jour de Debian doivent être accessibles (en http,
voir `/etc/apt/sources.list`);
- Les serveurs `scodoc.org` et `scodoc.iutv.univ-paris13.fr` **doivent**
être accessibles (80 et 443).
### Installation Linux Debian
Nous recommandons d'effectuer une installation standard de Debian par le réseau
(netinst), et d'utiliser l'installation en mode texte, très simple et rapide.
Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout
décocher sauf "Serveur SSH" et "Utilitaires standard du système". Le script
d'installation de ScoDoc se chargera ensuite d'installer tous les éléments
nécessaires (serveur web, messagerie, etc.).
🚸 *Veiller à sélectionner une locale `UTF-8` par défaut.*
![InstallDebian6-1.png](screens/InstallDebian6-1.png)
### Points à vérifier avant d'installer ScoDoc
Checklist minimale de votre système Linux Debian:
1. Connexion à Internet: le réseau doit être accessible. En effet, le script
d'installation va installer des paquetages du système Debian puis
télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur
scodoc.org).
1. Vérifiez la connectivité, par exemple:
```bash
ping www.univ-paris13.fr
(quitter avec ctrl-c)
cd /tmp
wget --no-check-certificate https://scodoc.org
# doit créer un fichier index.html contenant du code HTML...
```
3. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le
DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais
dans ce cas le nom de votre serveur sera son adresse IP (eg `192.168.0.10`) et
il ne sera peut être pas accessible de l'extérieur.
4. Mail: vérifiez que le serveur peut envoyer des e-mail: `mail
votre@adresse.fr`, puis entrer un message terminé par `ctrl-d`: si vous ne
recevez pas le message après quelques minutes, vérifiez votre configuration
(et le log `/var/log/mail.log`). Un serveur ScoDoc qui n'envoie pas de mail
ne peut pas vérifier ceux des utilisateurs, qui à leur tour ne pourront pas
changer leurs mots de passe (bien d'autres fonctions dépendent des mails).
Au besoin, revoir la configuration avec `dpkg-reconfigure postfix` (voir
aussi [envoi des courriers électroniques](ProblemesMail.md)).
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre
réseau (voire d'Internet): par exemple `ping serveur.exemple.fr`.
1. Date et heure: vérifier que les dates et heure sont correctes, même après
reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (
`apt-get install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
1. Si vous avez installé à partir d'un support (DVD, clé USB...), pensez à le
retirer des sources Debian afin de ne pas bloquer les mises à jour (commenter
la ligne `deb cdrom:` dans le fichier `/etc/apt/sources.list`)
1. Cette liste est incomplète... et n'oubliez pas: avant de passer en
production, mettez en place des sauvegardes sérieuses !
#### Configuration si utilisation d'un proxy
Si votre accès à Internet passe par un proxy, l'indiquer au moment de
l'installation Debian.
Vérifiez aussi que ces variables sont bien définies dans `/etc/environment` (si
l'installeur Linux Debian ne les a pas déjà indiquées là, les ajouter ou créer
ce fichier):
```bash
# /etc/environment
export HTTP_PROXY=http://proxy.univ-xxx.fr:1234
export HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
# Versions en minuscules utilisées par wget
export http_proxy="${HTTP_PROXY}"
export https_proxy="${HTTPS_PROXY}"
```
Ensuite, après installation du paquet scodoc9 (voir plus bas), il faudra
indiquer votre proxy: pour cela, éditer le fichier
```
/opt/scodoc/.env
```
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
```bash
HTTP_PROXY=http://proxy.univ-xxx.fr:1234
HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
```
Après modification de ces fichiers (qui *doivent* être lisible par l'utilisateur `scodoc`),
redémarrer le service:
```bash
sudo systemctl restart scodoc9
```
Dans les cas compliqués, il est possible qu'il vous faille configurer d'autres
éléments, voir par exemple
[ce post sur Stack Overflow](https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy).
#### Note sur l'install dans un container LXC
Il y a deux possibilités :
**Option 1**, si vous installez dans un container LXC privilégié via le compte
root et/ou sudo, attention: la config par défaut de Redis (un gestionnaire de
cache utilisé par ScoDoc) n'est pas compatible, en raison d'un problème de
système de fichier en lecture seule. Installer redis avant ScoDoc, comme suit:
```bash
apt-get install redis
```
Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichier
`redis.conf` avec les lignes suivantes :
```text
[Service]
PrivateTmp=no
ProtectSystem=false
PrivateDevices=false
ProtectHome=no
ProtectControlGroups=no
ProtectKernelTunables=no
ProtectKernelModules=no
ReadWritePaths=
ReadOnlyDirectories=
```
Ensuite
```bash
systemctl daemon-reload
systemctl start redis
```
... et poursuivez l'installation comme ci-dessous.
**Option 2**, si vous installez dans un container LXC non-privilégié via un
compte utilisateur normal, vous pouvez activer l'option « nesting »
(imbriqué) de LXC pour permettre à Redis de fonctionner normalement.
🚸 Attention ! N'activez pas le *nesting* sur un conteneur privilégié. Cela
provoquerait une faille de sécurité.
Si vous avez construit votre conteneur manuellement avec `lxc-create`, modifiez
le fichier `/var/lib/lxc/${nomDuConteneur}/config` et ajoutez les lignes
ci-dessous :
```text
lxc.apparmor.allow_nesting = 1
lxc.apparmor.profile = generated
```
Si vous utilisez un conteneur LXC sur l'hyperviseur Proxmox, modifiez le
fichier `/etc/pve/lxc/${CTID}.conf` et ajoutez la ligne suivante :
```text
features: nesting=1
```
... et poursuivez l'installation comme ci-dessous.
## 2) Installation de ScoDoc sur Debian
### 2.1) Charger le logiciel
🚸 Les commandes ci-dessous sont à exécuter dans un terminal ouvert en tant que
**root** sur le serveur. Vous pouvez utiliser `su` (ou `sudo su`) pour devenir
**root**).
Remarque: *Si ce n'est pas déjà le cas, vous avez intérêt à ouvrir une session
`ssh` (ou `putty`) depuis une machine normale, afin de pouvoir copier/coller
facilement les commandes et éditer les fichiers de configuration.*
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
download>scodoc.list</a> dans `/etc/apt/sources.list.d/`
ou bien le créer afin qu'il contienne juste cette ligne:
```text
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
deb http://scodoc.org/deb/bookworm bookworm main
```
- Installer la clé: en `root` sur le serveur, lancer
```bash
apt-get -y install gnupg
wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
```
- Installer le logiciel:
```bash
apt-get update
apt-get install nginx
```
S'assurer que le logiciel `nginx` s'est bien installé. En cas de problème se
référer à sa doc (par exemple, si
[votre serveur ne supporte pas
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
Ensuite:
```bash
apt-get install scodoc9
```
Notez que l'installation du paquet `scodoc9` va créer automatiquement un
utilisateur `scodoc` qui sera utilisé par le serveur.
- Attribuer un mot de passe à l'utilisateur `scodoc`:
```bash
passwd scodoc
```
### 2.2) Configuration des logiciels et des données
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
```bash
/opt/scodoc/tools/configure-scodoc9.sh
```
Vous devrez répondre à quelques questions et saisir le mot de passe que vous
attribuerez à l'utilisateur `admin`.
(note: pour en savoir plus sur ce script, [voir l'explication](GuideInstallDebian11Advanced.md))
### 3) **Lancer ScoDoc**
```bash
sudo su # se connecter en root
systemctl restart nginx
systemctl restart scodoc9
```
✨ et voila !
Visiter `https://monscodoc.mondomaine.fr/` pour achever la configuration et
utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md).
## Importation des données ScoDoc 7
Si vous aviez une installation très ancienne avec ScoDoc 7, vous pouvez migrer
toutes vos données (comptes utilisateurs, étudiants, formations, notes, photos
et fichiers divers) depuis une l'ancien serveur ScoDoc 7, ou même en place.
Voir [la procédure de migration](MigrationScoDoc7a9.md).
## En cas de problème
Ne pas hésiter à nous contacter (voir [contacts](Contact.md)).
- Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.md)
Nota: sur certains réseaux, l'autoconfiguration IPv6 pose problème (par exemple:
bloquage des envois de mails). Au besoin, il est possible de désactiver IPv6
(voir par exemple [ici](https://wiki.debian-fr.xyz/D%C3%A9sactiver_l%27IPv6)).
## Ensuite...
- Mettez en place des [sauvegardes](SauvegardesBases.md)
- Si vous le souhaitez, vous pouvez mettre en place un anti-virus pour
surveiller les fichiers uploadés par les utilisateurs. Les fichiers sont
conservés dans `/opt/scodoc-data`: le plus simple est de faire surveiller tout
ce répertoire sauf `/opt/scodoc-data/logs`.
- Abonnez-vous au moins à la liste d'annonces ou rejoignez le Discord: voir [contacts](Contact.md)
!!! note "Voir aussi"
- [Guide configuration](GuideConfig.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,162 +0,0 @@
# Installation de ScoDoc sur Debian 10 (Buster)
Ce document décrit la procédure d'installation et de configuration de ScoDoc.
Cette procédure doit être effectué sur la machine serveur avec un accès administrateur (root).
*Si vous avez déjà une installation ScoDoc version 7 (en Debian 7, 8 ou 9), voir aussi [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)*
ScoDoc est livré avec des scripts d'installation qui configurer presque automatiquement votre serveur (serveur web, base de données, etc): vous pouvez donc installer et configurer ScoDoc avec des connaissances réduites sur le système Linux.
Cette documentation est prévue pour installer ScoDoc sur un système [Debian](http://www.debian.org) 10 (Buster, stable) s'exécutant sur une machine intel-like **64bits** (architecture **AMD64**). Debian s'installe facilement en une quinzaine de minutes, sur une machine normale ou un serveur virtualisé. Il est **très déconseillé** de tenter l'installation sur une autre version, à moins de disposer de temps et de bonnes connaissances sur Linux et les paquetages Python.
Merci de me signaler tout problème (emmanuel.viennet@gmail.com)
- Note 1: l'image du CD d'installation de Debian (amd64) peut se trouver ici: [https://www.debian.org/distrib/netinst](https://www.debian.org/distrib/netinst.md), choisir une version "petits CD" pour **amd64** (*Il est indispensable d'utiliser une version 64 bits ! *)
- Note 2: si quelqu'un produit, teste et documente une image Docker, merci de la partager (écrire à scodoc-devel).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Important: La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme VirtualBox ou VMWare. L'installation ci-dessous va en effet modifier de nombreux paramètres de votre système linux (serveur web, firewall, serveur SQL, messagerie, ...).
## Préalable: configurer un serveur linux
Le serveur devrait être accessible depuis Internet. Seul le port 443 (https) est utilisé par ScoDoc. Il est recommandé que le serveur puisse envoyer du mail (smtp).
Nous recommandons d'effectuer une installation standard de Debian par le réseau (netinst).
Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout décocher sauf "Serveur SSH" et "Utilitaires standard du système". Le script d'installation de ScoDoc se chargera ensuite d'installer tous les éléments nécessaires (serveur web, messagerie, etc.).
![InstallDebian6-1.png](screens/InstallDebian6-1.png)
### Points à vérifier avant d'installer ScoDoc
Checklist minimale de votre système Linux Debian:
1. Connexion à Internet: le réseau doit être accessible. En effet, le script d'installation va installer des paquetages du système Debian puis télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur Subversion).
1. Vérifiez la connectivité, par exemple:
```
ping www.univ-paris13.fr
(quitter avec ctrl-c)
cd /tmp
wget --no-check-certificate https://www-lipn.univ-paris13.fr/projects/scodoc
# doit créer un fichier nomme "scodoc" contenant du code HTML
```
3. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais dans ce cas le nom de votre serveur sera son adresse IP (eg 192.168.0.10) et il ne sera peut être pas accessible de l'extérieur.
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre réseau (voire d'Internet): par exemple "ping serveur.exemple.fr".
1. Date et heure: vérifier que les dates et heure sont correctes, même après reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (`aptitude install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
1. Cette liste est très incomplète... et n'oubliez pas: avant de passer en production, mettez en place des sauvegardes sérieuses !
#### Configuration si utilisation d'un proxy
Si votre serveur doit passer par un proxy pour accéder à Internet:
1. Configurer wget: placer ceci dans `/root/.bashrc` (par exemple)
```
export http_proxy=http://my-proxy-server.com:my-proxy-port/
export https_proxy=$http_proxy
```
2. Configurer le client svn
dans `/root/.subversion/servers` dé-commenter et compléter les lignes:
```
[global]
http-proxy-host = my-proxy-server
http-proxy-port = my-proxy-port
```
(attention bien enlever l'espace du début de ligne).
## Installation de ScoDoc
1. Récupérer et ouvrir le logiciel (en tant que root):
```
sudo su # si necessaire pour passer root
cd /opt
wget http://www-l2ti.univ-paris13.fr/~viennet/ScoDoc/builds/scodoc-1851.tgz
tar xfz scodoc-1851.tgz
```
Cette archive contient ScoDoc, Zope et quelques outils tiers.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> vous pouvez installer ailleurs que dans /opt, mais il faudra alors éditer plusieurs scripts (non recommandé).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Les commandes ci-dessous sont à exécuter dans un terminal ouvert en tant que **root** sur le serveur. Vous pouvez utiliser `su` (ou `sudo su`) pour devenir **root**).
1. **Mettre à jour les sources**. Va télécharger les sources à jour, et le script d'installation:
```
cd /opt/scodoc/Products/ScoDoc
apt install subversion
svn up
```
3. **Configurer le logiciel**. Attention: durant cette étape, de nombreux paquets et fichiers de configuration de votre système linux vont être modifiés. Si vous préférez effectuer vous même l'installation (vous êtes développeur ou avez des besoins particuliers), lisez et adaptez le script.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> je répète, le script `install_debian10.sh` va reconfigurer beaucoup de choses sur votre serveur. Il suppose que la machine vient d'être installée et en gros qu'elle va servir principalement pour ScoDoc.
Toujours en tant qu'utilisateur root:
```
cd /opt/scodoc/Products/ScoDoc/config
./install_debian10.sh
```
Répondez oui (Y) à toutes les questions, sauf, si vous avez une bonne raison de faire autrement.
En cas d'échec, ce script peut être relancé (il écrasera l'ancienne configuration).
Dans cette étape, sont installés et configurés automatiquement:
* serveur web Apache (et https)
* parefeu réseau (optionnel, basé sur `ufw`)
* messagerie pour envois messages (postfix) (optionnel mais très vivement recommandé)
* installation de divers logiciels utilisés par ScoDoc (par apt-get)
* script de lancement automatique de ScoDoc (service systemd).
(dans certains cas, l'installateur vous posera des questions sur votre configuration).
4. **Initialiser la base de données utilisateurs** (qui sera commune à tous les départements).
En tant que root:
```
cd /opt/scodoc/Products/ScoDoc/config
./create_user_db.sh
```
5. **Mettre à jour le logiciel** (c'est absolument nécessaire, la version préinstallée étant incomplète):
En tant que root,
```
cd /opt/scodoc/Products/ScoDoc/config
./upgrade.sh
```
La première fois, il faudra accepter un certificat cryptographique, répondre "p (accept (p)ermanently)".
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Si un message d'erreur apparaît à la fin de la mise à jour, relancer `./upgrade.sh`.
Si vous migrez les données d'une installation existante, vous pouvez arrêter ici et appliquer la procédure [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)
6. **Initialiser la base de données pour un département** (vous pourrez à tout moment utiliser la même commande pour ajouter d'autres départements):
```
./create_dept.sh -n DEPT
```
Il faut alors saisir le nom abrégé du département: ce nom doit être un mot, sans ponctuation (GEII, RT, Info, ...). Il apparaîtra dans l'URL du site correspondant.
7. **Lancer ScoDoc**:
```
systemctl restart scodoc
```
et voila !
Visiter `https://votre.site.fr/` pour achever la configuration et utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md)
## En cas de problème
Ne pas hésiter à me contacter ou à écrire sur la liste notes (voir [Listes de diffusion](ListesDeDiffusion.md)).
* Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.md)
Nota: sur certains réseaux, l'autoconfiguration IPv6 pose problème (par exemple: bloquage des envois de mails). Au besoin, il est possible de désactiver IPv6 (voir par exemple [ici](https://wiki.debian-fr.xyz/D%C3%A9sactiver_l%27IPv6)).
## Ensuite...
* Appliquez fréquemment les [mises à jour](MisesAJour.md)
* Mettez en place des [sauvegardes](SauvegardesBases.md)
* Abonnez vous au moins à la liste d'annonces: voir [Listes de diffusion](ListesDeDiffusion.md)

View File

@ -1,8 +0,0 @@
# Guide d'installation sur Debian 9
Version ancienne de Debian, nous recommandons d'utiliser la nouvelle version.
Voir [installation sur Debian 10](GuideInstallDebianDix.md).
Si besoin, se reporter à [l'ancienne documentation pour Debian 9](https://trac.lipn.univ-paris13.fr/projects/scodoc/wiki/GuideInstallDebianNeuf).

View File

@ -1,46 +1,66 @@
# 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.
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'inscription 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)
La définition des programmes, l'inscription des étudiants et certains
paramétrages ne sont accessibles qu'au responsable de formation, ou chef de
département.
* [Guide pour le responsable de formation](GuideAdminFormation.md)
* [Modification d'un programme pédagogique et versions](Formations.md)
* [Exemples et partages de programmes pédagogiques entre établissements](ExemplesProgrammesPedagogiques.md)
* [Importation des étudiants](ImportationEtuds.md)
* [Synchronisation des inscrits avec Apogée](SynchroApogee.md)
* [Procédure d'inscription des étudiants via Apogée](InscriptionsEtudApogee.md)
* [Données sur l'origine des étudiants](DonneesAdmissions.md)
* [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:
* [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)
* [Édition des bulletins de notes](BulletinsNotes.md)
## Pour les enseignants et administratifs
* [Édition des bulletins de notes](BulletinsNotes.md)
* [paramétrage des bulletins pdf](ParametrageBulletins.md)
* [Édition des PV de jury](ParametragePV.md)
* Comment sont calculées les moyennes : [Calcul des notes](CalculNotes.md)
* [Édition des PV de jury](ParametragePV.md)
* Comment sont calculées les moyennes : [Calcul des notes](CalculNotes.md)
## Opérations diverses
#### 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)
### Tenue des jurys et commissions
#### Suivi de l'assiduité
* [Saisie des décisions](SaisieDecisionsJury.md)
* [Gestion des commissions et jurys, édition des PV](GestionJury.md)
* [Capitalisation des UEs](CapitalisationUE.md)
* [Suivi de l'assiduité des étudiants](GestionAbsences.md)
### Spécificités du BUT
#### Rapports, avis et tableaux de bords
* Voir [la page dédiée au BUT](BUT.md).
* [Rapports, suivi de cohortes, parcours](RapportsStatistiques.md)
* [Génération des avis de poursuite d'études](AvisPoursuiteEtudes.md)
### Spécificités du DUT
## Questions fréquentes
Voir la [FAQ](FAQ.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)
!!! note "Voir aussi"
- [Guide du responsable de formation](GuideAdminFormation.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md).

View File

@ -1,34 +1,52 @@
# Importation d'étudiants (cas où l'on a pas de connexion directe à Apogée)
## 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.
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.
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).***
***On privilégiera donc l'import des étudiants depuis le portail (Apogée) à
chaque fois que c'est possible. Voir [SynchroApogee](SynchroApogee.md).***
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Le texte ci-dessous ne s'applique qu'aux établissement sans liaison ScoDoc-Apogée, et donc ***ne concerne pas l'IUT de Villetaneuse ! ***
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Le texte ci-dessous ne s'applique qu'aux établissement sans liaison
ScoDoc-Apogée, et donc ***ne concerne pas l'IUT de Villetaneuse !***
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").
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).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Vous devez *impérativement* utiliser la feuille excel proposée par le site pour
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.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Vous devez *impérativement* utiliser la feuille excel proposée par
le site pour 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*.
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**.
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).
- le champ 'SEXE' doit contenir ```MR``` (masculin) ou ```MME``` (féminin).
- l'identité d'un étudiant (nom, prénom, civilité) peut quelquefois subir
quelques variantes (voir [DonneesEtudiant](DonneesEtudiant.md))

View File

@ -1,50 +1,56 @@
# Inscription des étudiants via Apogée
# 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).
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).
## 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, voir [détail techniques](InterrogationPortail.md)).
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.
Note: Apogée réutilise les mêmes codes étapes pour les sessions d'années différentes, ces codes changent donc
rarement.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> certaines formations utilisent encore des codes Apogée *annuels*
alors qu'elles sont semestrialisées.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> certaines formations utilisent encore des codes Apogée *annuels* alors qu'elles sont semestrialisées.
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:
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).
* identité (nom, prénom, civilité);
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").
* adresse (et téléphone).
## Procédure à suivre pour le premier semestre (S1)
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").
Listes Apogée presque complètes, faire l'import depuis le portail fin juillet,
puis re-synchroniser fréquemment courant septembre. Voir
[SynchroApogee](SynchroApogee.md)
- nouveaux étudiants, modification données personnelles
## 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)
- import données admission (depuis fichier Excel)
* nouveaux etudiants, modifs données personnelles
## Réinscriptions
* import données admission (depuis fichier Excel)
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).
## 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)

View File

@ -45,14 +45,18 @@ correspondant aux critères indiqués, et renvoie du code XML:
```
<etudiants>
<etudiant>
<fullname>Melanie BOURTON</fullname>
<nip>20600577</nip>
<etape>V2TR</etape>
<inscription>2008</inscription>
<nom>BOURTON</nom>
<prenom>MELANIE</prenom>
<gender>F</gender>
<naissance>08/01/1990</naissance>
<ville_naissance>Brest</ville_naissance>
<code_dep_naissance>29</code_dep_naissance>
<libelle_dep_naissance>Finisterre</libelle_dep_naissance>
<mail>melanie.bourton@xxx.univ-yyy.fr</mail>
<address>11 Pierre Dupont</address>
<postalcode>93400</postalcode>
@ -65,7 +69,12 @@ correspondant aux critères indiqués, et renvoie du code XML:
<mention></mention>
<anneebac>2007</anneebac>
<nom_lycee>nom du lycée</nom_lycee>
<ville_lycee>ville lycée</ville_lycee>
<codepostal_lycee>code postal lycée</codepostal_lycee>
<paiementinscription>true</paiementinscription>
<bourse>N</bourse>
</etudiant>
<etudiant>

View File

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

View File

@ -25,7 +25,7 @@ Le principe est donc:
## 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) : mais ce n'est pas conseillé)
Voir les instructions ici: [GuideInstallDebian11](GuideInstallDebian11.md).

190
docs/MigrationScoDoc7a9.md Normal file
View File

@ -0,0 +1,190 @@
# Migration des données ScoDoc 7 vers ScoDoc 9
On peut installer à partir de zéro (cas 1), ou sur une machine ayant déjà un ScoDoc 7
et migrer les données (cas 2).
## Cas 1: Migration d'une installation ScoDoc 7 sur un nouveau serveur
C'est la voie recommandée, notamment si vous avez un parc de machines
virtuelles, car elle minimise la durée de coupure et permet de tester avant de
basculer d'une version à l'autre.
Dans ce cas, la migration va se faire en suivant les étapes, détaillées plus loin:
1. installer le nouveau serveur Linux Debian 11 et ScoDoc 9;
2. sauvegarder les données de ScoDoc7 depuis le serveur de production **et l'arrêter**;
3. charger les données ScoDoc 7 sur le nouveau serveur;
4. importer ces données dans ScoDoc 9.
Si vous venez d'installer ScoDoc 9, passez directement à l'**étape 3**.
### Étape 1: Installer le nouveau serveur
Installer le nouveau serveur avec Debian 11 et ScoDoc 9.
Voir [GuideInstallDebian11](GuideInstallDebian11.md).
Vérifier que tout fonctionne avant d'aller plus loin.
### Étape 2: Sauvegarder les données du serveur ScoDoc 7
Ouvrir un terminal en tant que `root`sur l'ancien serveur ScoDoc 7.
cd /opt/scodoc/Products/ScoDoc/config
# Mise à jour indispensable pour avoir le script de migration
./upgrade.sh
# Arrêt du service en production
systemctl stop scodoc
# Export des données
./save_scodoc7_data.sh /tmp/sauvegarde-scodoc7
Attention à l'espace disque: au besoin, faire le ménage ou montez un disque supplémentaire.
Notez que cette migration ne fonctionne qu'à partir de la dernière version de
ScoDoc 7. Si vous avez une version plus ancienne, mettez-la d'abord à jour.
Le script indique le nom du fichier à transférer, qui sera dans
l'exemple ci-dessus `/tmp/sauvegarde-scodoc7.tgz`
Copier ce fichier sur le nouveau serveur (scp, ...).
### Étape 3: Charger les données ScoDoc 7
Récupérez l'archive transférée sur le nouveau serveur et ouvrez-la (vous êtes
toujours `root`):
cd /tmp
tar xfz sauvegarde-scodoc7.tgz
chown -R scodoc /tmp/sauvegarde-scodoc7
commande qui va créer `/tmp/sauvegarde-scodoc7`.
Chargement des bases SQL ScoDoc 7: en tant qu'utilisateur "`scodoc`":
su scodoc
/opt/scodoc/tools/restore_scodoc7_data.sh /tmp/sauvegarde-scodoc7
(adaptez l'argument si les données ont été copiées ailleurs)
Note: les messages d'erreur comme
pg_restore: warning: restoring tables WITH OIDS is not supported anymore
pg_restore: error: could not execute query: ERROR: schema "public" already exists
pg_restore: error: could not execute query: ERROR: must be owner of extension plpgsql
sont normaux et a priori anodins.
A ce stade, vous avez rechargé les bases ScoDoc 7 mais il faut encore
les convertir vers la nouvelle structure ScoDoc 9, et importer les photos,
archives et autres fichiers: c'est l'objet de l'étape suivante.
### Étape 4: Importer les données dans ScoDoc 9
Les formats des bases ayant changé l'opération est complexe et peut durer
plusieurs minutes (ou dizaines de minutes). Attention: **Il faut lancer le script en tant
que `root` **.
su # passer root d'une façon ou d'une autre
# lancer le script, avec le nom du répertoire:
/opt/scodoc/tools/migrate_from_scodoc7.sh /tmp/sauvegarde-scodoc7
## Cas 2: Migration "en place" sur la même machine
Si vous n'avez pas la possibilité de changer de serveur (par exemple, vous ne
travaillez pas dans des machines virtuelles, ou qu'il est compliqué de créer une
nouvelle VM). Vous pouvez partir de ScoDoc 7 / Debian 10, faire l'upgrade Debian
en place, puis migrer ScoDoc 9.
Avant tout, sauvegardez évidemment votre serveur complet, vérifiez que la
sauvegarde est bonne et que plusieurs exemplaires sont stockés en lieux sûrs,
comme d'habitude.
Toutes les étapes sont importantes, prenez votre temps, lisez bien cette page.
Si vous venez d'installer ScoDoc 9, passez directement à l'**étape 4**.
### 1. Préparation et arrêt de ScoDoc 7
1. **S'assurer que l'installation ScoDoc 7 est à jour**
sudo su
cd /opt/scodoc/Products/ScoDoc/config
./upgrade.sh
Notez que cette migration ne fonctionne qu'à partir de la dernière version
de ScoDoc 7. Si vous avez une version plus ancienne, mettez-la d'abord à
jour.
2. **Arrêter le service ScoDoc 7**
systemctl stop scodoc
S'assurer qu'il est bien stoppé (`ps auxw`, ...), sans quoi la migration va échouer.
3. **Renommer le répertoire de ScoDoc 7**
sudo su
mv /opt/scodoc /opt/scodoc7
Les données seront migrées après installation la nouvelle version, voir
plus loin. ScoDoc 9 sera installé dans `/opt/scodoc`, il est donc très important
de renommer le répertoire en `scodoc7`.
### 2. Upgrade Debian
Suivre la procédure standard. La [doc
officielle](https://www.debian.org/releases/bullseye/mips64el/release-notes/ch-upgrading.fr.html)
est longue, mais en réalité c'est très simple et prends moins de 10 minutes,
sauf si vous avez configuré votre système de façon exotique.
Nombreux tutos disponibles, voir [par exemple
celui-ci](https://www.cyberciti.biz/faq/update-upgrade-debian-10-to-debian-11-bullseye/).
Attention, il faut désinstaller Apache (avant ou après upgrade Linux), car
ScoDoc 9 utilise un autre serveur web (nginx) qui serait en conflit:
# peut être utile pour récuperer vos certificats SSL ?
mv /etc/apache2 /etc/apache2.old
apt-get remove --purge apache2
### 3. Installer ScoDoc 9
Voir [la section 2 du guide d'installation](GuideInstallDebian11.md#2-installation-de-scodoc-sur-debian).
Vérifier que tout fonctionne avant d'aller plus loin.
### 4. Migrer vos données ScoDoc 7
Les données sont restées dans /opt/scodoc7.
Lancer le script suivant en tant que `root`:
/opt/scodoc/tools/migrate_from_scodoc7.sh -m
(l'option `-m` indique qu'il s'agit d'une migration "en place").
La migration prends du temps, et il n'est pas inutile de consulter les messages
affichés, dont la plupart se retrouvent aussi dans le fichier
/opt/scodoc/data/log/migration79.log
Prêtez attention aux éventuels changements de login des utilisateurs et
informez-les. ScoDoc 9 n'autorise pas de caractères spéciaux (apostrophes, ...)
ou accentués dans les logins.
### 5. Vérifier que tout fonctionne
Vos départements et utilisateurs devraient être accessibles.
L'utilisateur `admin` créé à l'installation de ScoDoc 9 doit avoir accès à tout.
Vérifiez que les semestres, étudiants, photos, archives et comptes utilisateurs
sont bien là.
Au besoin, réglez la fonction de calcul du **bonus sport&culture** via la page
"configuration" accessible depuis la page d'accueil en tant qu'admin uniquement.
Célébrez !

View File

@ -1,107 +1,14 @@
# Mise à jour de ScoDoc
Il est recommandé de mettre à jour très régulièrement votre installation ScoDoc.
# Mise à jour de ScoDoc 9
Le système Linux doit être correctement maintenu (en particulier, les mises à jour de sécurité de Debian doivent être appliquées quotidiennement).
Il est nécessaire de mettre à jour très fréquemment votre installation ScoDoc.
ScoDoc est actuellement prévu pour fonctionner avec Linux Debian 10.
À partir de ScoDoc 9, les mises à jour sont automatiques. Au besoin, on peut en
lancer une à tout moment avec la commande
* Les (rares) mises à jour majeures du logiciel ScoDoc sont annoncées sur la liste [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces).
* Les (fréquentes) mises à jour mineures (corrections de bugs, améliorations) sont annoncées sur la liste [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel).
*Une mise à jour hebdomadaire (au moins) est recommandée*
Pour appliquer une mise à jour de ScoDoc, se connecter en tant que `root` sur le serveur, puis faire:
```
cd /opt/scodoc/Products/ScoDoc/config
./upgrade.sh
```
La première fois, il faudra accepter un certificat cryptographique, répondre "p (accept (p)ermanently)".
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Si un message d'erreur apparaît à la fin de la mise à jour, relancer `./upgrade.sh`.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> La mise à jour entraine une déconnexion des utilisateurs (mais pas de pertes de données !).
Note: cette procédure ne change pas de version majeure de ScoDoc, ni du système Linux. Pour cela, voir [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md)) ou plus bas sur cette page.
## Note concernant les anciens systèmes (Debian 9)
En Debian version 9 (et version antérieures), ScoDoc n'utilisait pas `systemd` et n'était pas automatiquement relancé lors de mises à jour de ceertains logiciels, comme la base de données `postgresql`. Sur ces systèmes, il est conseillé de mettre à jour Debian avec le script `/opt/scodoc/Products/ScoDoc/config/upgrade.sh` afin d'éviter d'interrompre le service ScoDoc.
## Mise à jour rapide de Debian 9 à Debian 10
Procédure raccourcie réservée aux personnes à l'aise avec linux. On met à jour Debian mais on réinstalle ScoDoc proprement.
Vérifiez que vous avez assez d'espace disque disponible (`df -h`, au moins 3Go libres sur `/` ou `/opt`).
0. Sauvegardez complètement votre système en lieu sûr. Si la procédure ci-dessous échoue, reprenez la voie normale: [MigrationDonneesScoDoc](MigrationDonneesScoDoc.md).
1. Mettre à jour votre ScoDoc:
cd /opt/scodoc/Products/ScoDoc/config
./upgrade.sh
2. Arrêter le service (en Debian 9 on utilisait *SysV-style init*, à partir de Debian 10 ScoDoc utilise `systemd`):
/etc/init.d/scodoc stop
3. Sauvegarder les données et configurations ScoDoc:
cd /opt/scodoc/Products/ScoDoc/config
./save_scodoc_data.sh /opt/data-scodoc-deb9 # par exemple
4. Mettre à jour Debian: pour les détails voir [https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html](https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html).
En résumé:
- éditer `/etc/apt/sources.list` et indiquer
```
deb http://deb.debian.org/debian buster main contrib
```
- puis:
```
apt-get remove firehol
apt update
apt-get upgrade
apt full-upgrade
apt autoremove
```
et **rebooter**.
5. Supprimer postgresql 9.6
On enlève carrément l'ancien, le script d'installation de ScoDoc installera la version 11:
apt-get --purge remove postgresql
6. Réinstaller ScoDoc
Déplacer l'ancienne installation de ScoDoc (vous la supprimerez plus tard):
mv /opt/scodoc /opt/scodoc.deb9
Réinstaller un ScoDoc tout neuf, en suivant [GuideInstallDebianDix](GuideInstallDebianDix.md)
La plupart des composants de votre système seront déjà présents, donc répondre en général "non" aux questions du script d'installation.
S'arrêter avant l'initialisation des bases de données.
7. Restaurer la sauvegarde:
cd /opt/scodoc/Products/ScoDoc/config
./restore_scodoc_data.sh /opt/data-scodoc-deb9
Vérifiez et voilà.
- Faire un peu de ménage (supprimer `/opt/scodoc.deb9` quand vous êtes sûr de n'y avoir rien oublié), vérifiez les logs (`/opt/scodoc/log`).
- Vérifier que le nouveau système (et ses bases de données) est bien sauvegardé ([SauvegardesBases](SauvegardesBases.md)).
apt update && apt-get upgrade
!!! note "Voir aussi"
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [Contacts](Contact.md)

View File

@ -0,0 +1,545 @@
# Implémentation des parcours du BUT dans ScoDoc
Cette page est *destinée aux développeurs* et à tous ceux qui souhaitent
comprendre le fonctionnement du logiciel. Elle ne concerne que les formations
BUT, dites dans ScoDoc "APC" (pour *approches par compétences*).
ScoDoc est livré avec les référentiels de compétences de tous les parcours de
toutes les spécialités de BUT. En effet, ces référentiels sont nationaux,
publiés par le ministère (voir
[https://www.enseignementsup-recherche.gouv.fr/fr/bo/22/Special4/ESRS2211617A.htm](https://www.enseignementsup-recherche.gouv.fr/fr/bo/22/Special4/ESRS2211617A.htm))
et ne sont pas susceptibles d'adaptations locales.
Nous nous sommes basés sur les versions exportées du logiciel Orébut.
!!! note
Les objets notés `CommeCeci` sont des modèles (classes SQLAlchemy)
implémentés par des tables SQL.
## Structure des formations
Pour les formation en APC, on a d'une part le *programme de formation*, et de
l'autre le *référentiel de compétences*.
Pour le BUT, le référentiel de formation n'est pas fixé nationalement. Une part
est publiée (2/3) par le ministère, le reste est défini localement par les
universités (*adaptation locale*).
Les formations ScoDoc (`Formation`) sont constituées de
- UE : `UniteEns`
- Modules (ressources, SAÉ, autres): `Module`
La formation définit les UE et modules pour l'ensemble
des semestres d'un ou plusieurs parcours. De cette façon, on peut utiliser les
mêmes éléments dans plusieurs parcours, et grouper les étudiants de plusieurs
parcours dans le même semestre si on le souhaite.
## Unités d'enseignement
Les UE sont des UE "LMD" habituelles; associées à des crédits ECTS,
capitalisables. Pour chaque UE on calcule une note (moyenne d'UE) et on attribue
une décision de jury (validée, ajournée, ...).
### ECTS et parcours
Les ECTS sont toujours associés aux UEs, et non au semestre ou aux modules.
Dans ScoDoc, il est obligatoire de spécifier le nombre d'ECTS des de chaque UE
(sauf les UE bonus qui n'ont jamais d'ECTS).
Le nombre d'ECTS est généralement fixe, mais il peut varier selon le parcours
!!! note "ECTS variable selon le parcours"
Ce cas a été soulevé à propos du BUT MMI, qui préconiserait par exemple, au S4,
une compétence "développer" avec 10 ECTS dans le parcours "Web", et 5 ECTS dans le
parcours "Crea".
Cette possibilité est prévue pour ScoDoc version 9.4.72
Chaque UE a un attribut ECTS qui donne la valeur par défaut. On a aussi une
valeur ECTS dans la table d'association `UEParcours`qui lie `UniteEns` et
`ApcParcours`.
Si cette valeur est présente, l'attribut ECTS de l'UE est ignoré.
## Modules et parcours
Les modules: on appelle ici "module" tout dispositif pédagogique évalué, dans le
BUT ce sont les *ressources* et les *SAÉ*.
Chaque module peut être associé à un ou plusieurs parcours, via la table
d'association `ApcParcours` <-> `Module` (`parcours_modules`, many-to-many).
Via *Formation*/*Modification du module*:<br>
<img src="/screens/module_choix_parcours.png" width="50%">
On peut ainsi vérifier que les parcours couvrent les AC, et faciliter les
inscriptions des étudiants aux modules (par ex. page présentant les modules
auxquels inscrire un groupe).
### Cas des modules présents dans plusieurs parcours
Il est fréquent qu'un module peut être utilisé dans plusieurs parcours de la
même formation BUT. Il peut contribuer à une UE de tronc commun, ou un
sous-ensemble d'UEs. Dans certains spécialités, le coefficient d'un module vers
une UE varie selon le parcours: dans ce cas, il faudra créer plusieurs UEs
associées au même niveau de compétence, et renseigner les coefficients
correspondants. les étudiants seront inscrits à l'une ou l'autre des UEs suivant
leur parcours.
## Coefficients modules / UEs
Les coefficients sont des réels (non nullables), `ModuleUECoef`.
Édition via *Formation*/*Édition des coefficients des modules vers les UEs*:<br>
<img src="/fig/formation_edit_coefs.png" width="30%">
## Formation
Le programme de formation est constitué des classes suivantes (en BUT et dans
tous les types de formation. La notion de "matière" n'est pas utilisée en BUT).
- `Formation` (ex: "BUT R&T")
- `UniteEns` (UE, ex: "Administrer les réseaux")
- `Modules` (ressources, SAÉs) *<-> `ApcAppCritique`*, *<-> `ApcAnneeParcours`*
On voit que les modules ont toujours une UE de rattachement. Cependant, en BUT,
un module peut intervenir dans le calcul des notes de plusieurs UE, via une
matrice de coefficients.
!!! example "Méthodes de Formation"
- `Formation.query_ues_parcour(parcour: ApcParcours)`->(query) les UEs d'un
parcours de la formation.
## Référentiel de compétences
Le référentiel de compétences (`ApcReferentielCompetences`) défini les
compétences à valider (décomposées en niveaux) et les parcours BUT
(`ApcParcours`). Il est structuré ainsi:
- `ApcReferentielCompetences`
- `ApcCompetence`
- `ApcSituationPro`
- `ApcComposanteEssentielle`
- `ApcNiveau` (année (BUT1, BUT2, ...), ordre (1,2) ou (1,2,3)) *<-> `UE`*
- `ApcAppCritique` *<-> `Module`*
- `ApcParcours`
- `ApcAnneeParcours` (ordre=1,2,3) *<-> `Module`*
- *`ApcCompetence`* <- `ApcParcoursNiveauCompetence` (niveau 1, 2, 3) -> *`ApcAnneeParcours`*
Notons:
- Le lien (*one-to-one*) entre `UniteEns`(UE) et Niveau de compétence (`ApcNiveau`).
- Le lien entre Compétence et Année de Parcours à travers la table
(*many-to-many*) `ApcParcoursNiveauCompetence` qui indique le niveau ce
compétence concerné.
- Le lien *many-to-many* UE et `Parcours`, qui permet de spécifier les ECTS de
l'UE dans un parcours donné et est utilisé pour vérifier la formation
(couverture de tous les niveau en suivant un parcours donné, somme des ECTS).
- Le lien entre les apprentissages critiques (`ApcAppCritique`) et les
modules, qui permet d'établir les critères d'évaluation de chaque module.
### Niveaux de compétences et UEs
Une compétence est constituée de plusieurs niveaux (`ApcNiveau`), typiquement 2
ou 3. En BUT, chaque niveau correspond à deux UEs sur deux semestres de la même
année d'un parcours.
- Chaque parcours de BUT est défini par un ensemble de compétences.
- Une compétence est décomposée en deux ou trois *niveaux*, chacun constitué de
deux UE consécutives (sur semestres pair et impair de la même année
scolaire).
Lors des jurys, on enregistre les validations d'UE. Les UE sont liées à des
niveaux de compétences. Lorsque les deux UEs sont validées, le niveau est
validé: c'est le RCUE (*regroupement cohérents d'UEs*).
Pour valider un diplôme de BUT, il faut avoir validé tous les niveaux de toutes
les compétences du parcours choisi.
Une UE est associée à un et un seul niveau de compétence. Elle peut être
associée à un nombre quelconque de parcours.
Remarques:
- Certains niveaux (et donc UEs) sont présents dans tous les parcours: ce sont
les niveaux de *tronc commun*.
- Une UE associée à un niveau peut avoir des ECTS différents selon le parcours
(voir [note ci-dessus](#ects-et-parcours))
- Dans certaines spécialités, les coefficients des modules vers la même UE
peuvent varier selon le parcours. Dans ce cas, on créera une UE par parcours
(UE associée au même niveau), afin de pouvoir spécifier des coefficients
distincts.
#### Vérifications effectués par ScoDoc
En plus des contraintes strictes liées aux relations modélisées,
ScoDoc vérifiera que
- Dans une formation, chaque niveau d'un parcours soit associé à deux et
seulement deux UEs de ce parcours de la même année scolaires (BUT1, BUT2 ou
BUT3).
- Le nombre total d'ECTS de chaque parcours soit bien 180 (3 années de 60 ECTS).
- Toutes les UEs sont bien associée à un niveau.
## FormSemestres
La formation est mise en œuvre dans des `FormSemestre` (date début, fin,
enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant,
évaluations, ...).
- `FormSemestre`
- `ModuleImpl`
- `Evaluation`
On a vu que la formation pouvait comporter plusieurs parcours. Un `FormSemestre`
peut implémenter un ou plusieurs parcours. On a en effet une table d'association
Parcours <-> FormSemestre (`parcours_formsemestre`, many-to-many).
Via *Semestre*/*Modifier le semestre*:<br>
<img src="/fig/formsemestre_choix_parcours.png" width="50%">
!!! example "Méthodes de FormSemestre"
- `FormSemestre.query_ues(with_sport=False) ->` liste des UEs de ce semestres
(tous parcours confondus).
- `FormSemestre.query_ues_parcours_etud(etudid: int) -> `(query) UEs que suit
l'étudiant dans ce semestre BUT en fonction du parcours dans lequel il est
inscrit.
## Inscriptions des étudiants
Les étudiants sont inscrits:
- à des `FormSemestre` (`FormSemestreInscription`, avec:
- un état, "inscrit", "démission" ou "défaillant";
- un `ApcParcours`;
- un code étape Apogée.
- dans un ModuleImpl (`ModuleImplInscription`)
Un formsemestre est associé à un ensemble de parcours. L'étudiant peut être
inscrit à l'un d'entre eux. Certaines formations commencent par une année de
tronc commun, durant laquelle l'étudiant n'a pas encore choisi son parcours. On
considérera que si l'étudiant n'est pas inscrit à un parcours, il est
implicitement inscrit à tous les parcours du semestre.
## Associations (nouvelles pour le BUT)
Pour la gestion des parcours BUT, on a introduit les associations suivantes,
qui n'existaient pas dans ScoDoc 9.2:
- `UniteEns` }o--o{ ensemble de `ApcParcours` : choix sur la page `ue_edit`
- `UniteEns` }o--|| `ApcNiveau` : choix sur la page `ue_edit`
- `Module` ||--o{ ensemble de `ApcParcours`
- `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit`
- `FormSemestre` ||--o{ `ApcParcours` : choix sur la page
`formsemestre_editwithmodules`
- `FormSemestreInscription` ||--|| `ApcParcours` : inscription au parcours, géré
via la partition `Parcours`.
```mermaid
erDiagram
UniteEns }o--o{ ApcParcours : UEParcours
UniteEns }o--|| ApcNiveau : ""
Formation ||--o{ UniteEns : ""
FormSemestre }o--|| Formation : ""
UniteEns }o--|{ Module : ModuleUECoef
```
## Cas d'usage
### UEs à afficher sur les bulletins individuels
#### En ScoDoc 9.3.55 (ssi ref. comp. associé)
On part de `ResultatsSemestreBUT.ues`, qui est la version cachée de
`formsemestre.query_ues()` (toutes les UE du semestre) que l'on filtre
avec `ResultatsSemestreBUT.etud_ues_ids(etudid)`: liste des id d'UE auxquelles
l'étudiant est inscrit (sans bonus).
`etud_ues_ids()` accède à `ResultatsSemestreBUT.ues_inscr_parcours_df`, la
matrice d'inscriptions `(etuds, ue)`.
### UEs à afficher sur les tableaux récap. de semestre
TODO
### UEs à valider en jury BUT
TODO
### Niveau de compétence d'un formsemestre
Le formsemestre est lié à un ensemble d'`ApcParcours`.
La liste des niveaux (`ApcNiveau`) associés aux UEs:
```py
[ ue.niveau_competence
for ue in formsemestre.query_ues() if ue.niveau_competence ]
```
### Inscription d'un étudiant aux ModuleImpls
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
- Créer des groupes de parcours (via `edit_partition_form`)
- Inscrire les étudiants d'un groupe à tous les modimpls du parcours:
Les modimpls d'un parcours sont donnés par la méthode `modimpls_parcours` de
`FormSemestre`.
### Comment ScoDoc détermine-t-il les modules d'un parcours ?
Un parcours étant associé à des compétences, et les niveaux compétences à des
UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UEs
associées à un parcours.
Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC
(`ApcAppCritique`), et chaque module est aussi associé à son ensemble d'AC.
Pour chaque parcours d'un `FormSemestre`, on déterminera l'ensemble des `ModuleImpl`
de ce semestre ayant des AC communs avec ceux des niveaux de compétences
associés aux UE du semestre (sic). Notons que les niveaux de compétences sont
annuels, mais que les `ModuleImpl` sont semestriels.
### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs
Vérification utile en fin de formation.
#### En fin de formation, pour un étudiant
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
facilement vérifier que les AC ont été couverts:
- Lister les `ModuleImpl` auxquels l'étudiant a été inscrit dans ses semestres
(S1 à S6);
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
réussite);
- Comparer aux AC du parcours tels que décrits dans le référentiel de compétence.
#### Au moment de la définition d'une formation
Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau
(année). On pourra vérifier que les `Module`s de chaque année suffisent à
couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
on ne peut pas aller plus loin.
### Lister les UEs d'un parcours d'une formation
```py
# Soit un parcours:
parcour = formation.referentiel_competence.parcours.filter_by(code="ROM").first()
# Listes UEs de ce parcours:
formation.query_ues_parcour(parcour)
# Liste des UEs du semestre 3:
formation.query_ues_parcour(parcour).filter_by(semestre_idx=2)
```
### Lister les regroupements d'UE d'un étudiant (RCUE)
Pour une année donnée: l'étudiant est inscrit dans ScoDoc soit dans le semestre
impair, soit pair, soit les deux (il est rare mais pas impossible d'avoir une
inscription seulement en semestre pair, par exemple suite à un transfert ou un
arrêt temporaire du cursus).
1. Déterminer l'*autre* semestre: semestre précédent ou suivant de la même
année, formation compatible (même référentiel de compétence) dans lequel
l'étudiant est inscrit.
2. Construire les couples d'UE (regroupements cohérents): apparier les UE qui
ont le même `ApcParcoursNiveauCompetence`.
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
cursus (BUT1, BUT2 ou BUT3).
### Déterminer si un étudiant peut passer dans l'année suivante
Note: on peut bien sûr toujours forcer le passage, pour traiter les cas
particuliers (décision de jury manuelle).
**Rappel:** le passage est de droit si
- [x] plus de la moitié des niveaux de compétences de l'année sont validés
- [x] aucun regroupement d'UE (niveau de compétence) de l'année < 8 /20
- [x] pour le passage en S5, avoir validé toutes les UE du BUT 1 (S1 et S2).
Il faut donc:
1. Construire les regroupements d'UE et calculer la moyenne des moyennes d'UE
(a priori de même poids, cela n'est pas spécifié dans les textes).
2. Vérifier les conditions ci-dessus.
3. Pour le passage en S5, construire l'ensemble des semestres de formations
relevant du même référentiel de compétences dans lesquels a été inscrit
l'étudiant, et vérifier que les UE de S1 et S2 sont validées.
## Enregistrement des validations de compétences
### Rappel: validations en formations classiques
Pour toutes les formations, ScoDoc enregistre les validations de semestres et
d'UE, via la classe `ScolarFormSemestreValidation`, dont les instances stockent:
- `etudid, formsemestre_id, code, event_date`
et pour les validations de semestres:
- `assidu, compense_formsemestre_id`
ou pour les validations d'UE
- `ue_id, is_external`
Les codes sont définis dans `sco_codes_parcours.py`, avec les valeurs: `ADC,
ADJ, ADM, AJ, ATB, ATJ, ATT, CMP, DEF, NAR, RAT` (voir [Gestion des Jurys
DUT](GestionJury.md)).
### Validation des niveaux de compétences
Pour le BUT, il faut enregistrer la validation des *niveaux de compétences*,
constitués de *regroupements cohérents d'UE* ("RCUE"), qui sont les UEs de la
même année de parcours associées à la même compétence.
On va stocker les validation des RCUE dans `ApcValidationRCUE`:
- `etudid`
- `formsemestre_id` (dernier déclenchant cette validation).
- `ue_1`, `ue_2` : les deux UE associées à ce niveau.
- `ApcParcours` : optionnel, le parcours dans lequel se trouve la compétence.
- `datetime` de la validation.
- `code` de validation: `ADM`, `CMP`, `AJ`.
Rappel: chaque UE est associé à un niveau de compétence
(`ue.niveau_competence`), qui doit ici être le même.
### Validation des années du BUT
Pour le BUT, ScoDoc enregistre les validations d'années `ApcValidationAnnee`
- `etudid`
- `ordre`: 1, 2, 3 pour BUT1, BUT2, BUT3.
- `formsemestre_id` (dernier déclenchant cette validation, None si extérieure)
- `annee_scolaire` (int, année de début, eg 2021 pour "2021-2022")
- `datetime` de la validation.
- `code` de validation: `PASD`, `PAS1NCI`, `RED`, `REO`, `DEM`, `EXC`, `ABAN`, `ABL`.
### Codes préconisés par l'AMUE pour le BUT
On associe lors du jury un code de décision:
- À chaque UE: `VAL`, `COMP`, `AJ`, `UESBL`.
- À chaque niveau de compétence (RCUE): `VAL`, `AJ`, `CODJ`.
- À chaque année:
- `PASD`: Passage en Année Supérieure de Droit (+ de 50% des UE VAL et RCUE Ajourné(s) >=8)
- `PAS1NCI`: Passage en Année Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE<8)
- `RED`: Redoublement de l'année
- `REO`: REOrientation - décision automatique (revient à une exclusion), plus de 4 semestres RED ou décision de Jury
- `DEM`: DEMission (lettre de l'étudiant).
- `EXC`: EXClusion, décision réservée à des décisions disciplinaires
- `ABAN`: ABANdon constaté (sans lettre de démission)
- `ABL`: Année BLanchie
- Au diplôme: `ADM`
#### Correspondance avec les codes de ScoDoc
ScoDoc utilise des codes [documentés ici](GestionJury.md).
- Pour les semestres: `ADM`, `ADC`, `ADJ`, `ATT`, `ATB`, `ATJ`, `AJ`, `NAR`. En
BUT, pas besoin de codes semestriels. On ajoutera un code `JSD` (*Jury Sans
Décision*) pour simplement indiquer que le jury s'est tenu. Ce code ne sera pas
exporté vers Apogée.
- Pour les UEs: **codes d'état d'UE**
ScoDoc | BUT AMUE | &nbsp;
----------|-----|-----
ADM | VAL | UE validée automatiquement |
CMP | COMP| UE validée par compensation|
AJ | AJ | UE ajournée (échec) |
| UESBL | blanchissement (non dispo en ScoDoc 9) |
- Pour les RCUE:
ScoDoc | BUT AMUE | &nbsp;
----------|-----|-----
ADM | VAL | validée automatiquement |
CMP | CODJ| Niveau validée par "compensation" ???|
AJ | AJ | RCUE ajournée (échec) |
Rappel: les codes exportés vers Apogée sont configurables (table de transcodage dans la
config générale).
## Diagramme de classes
(dessin réalisé automatiquement en Mermaid; toutes les classes ScoDoc ne
figurent pas ici).
```mermaid
erDiagram
FormSemestre ||--|{ ModuleImpl : contient
ModuleImpl ||--o{ Evaluation : contient
Module ||--o{ ModuleImpl : ""
Formation ||--o{ UE : ""
UE ||--|{ Module : ""
Formation {
str titre
str acronym
str code
}
ApcReferentielCompetences ||--|{ Formation : ""
Etudiant {
str nom
}
FormSemestre {
int dept_id
str titre
date date_debut
date date_fin
}
Etudiant }|..|{ ModuleImpl : ModuleImplInscription
Etudiant }|..|{ FormSemestre : FormSemestreInscription
FormSemestreInscription ||..o{ ApcParcours : "optionnel"
Formation ||--o{ FormSemestre : ""
ApcReferentielCompetences ||--o{ ApcCompetence : ""
ApcCompetence ||--o{ ApcNiveau : ""
ApcCompetence ||--o{ ApcSituationPro : ""
ApcCompetence ||--o{ ApcComposanteEssentielle : ""
ApcNiveau ||..o{ UE : ""
ApcNiveau ||--o{ ApcAppCritique : ""
ApcAppCritique }o..o{ Module : "optionnel"
ApcReferentielCompetences ||--o{ ApcParcours : ""
ApcParcours ||--o{ ApcAnneeParcours : ""
ApcAnneeParcours {
int ordre "année BUT"
}
ApcCompetence }o--o{ ApcAnneeParcours : "ApcParcoursNiveauCompetence (1,2,3)"
Module }o--o{ ApcParcours : "parcours_modules"
FormSemestre }o--o{ ApcParcours : "parcours_formsemestre"
UE }o--o{ ApcParcours : "avec en option ECTS"
```
!!! note "Voir aussi"
- [Informations pour les développeurs](GuideDeveloppeurs.md)
- [API ScoDoc 9](ScoDoc9API.md)
- [Le Bachelor Universitaire de Technologie (BUT)](BUT.md)
- [Contacts](Contact.md)

View File

@ -9,4 +9,3 @@ Lors de la création d'un module dans un programme pédagogique, on peut spécif
Une fois le module créé (et ajouté à un semestre), on peut y déclarer une évaluation et saisir les notes de bonus/malus.
Ces notes sont toujours *à prise en compte immédiate*, il n'est donc pas nécessaire de saisir des notes de malus pour tous les étudiants.

View File

@ -1,38 +1,50 @@
# Paramétrage des bulletins de notes
Ces réglages permettent de configurer la présentation des relevés de notes au format PDF.
# 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.
* 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.
## Marges et position du pied de page
Les marges sont réglables via les valeurs dans la section "Marges additionnelles des bulletins". Ces valeurs s'ajoutent aux marges par défaut qui sont assez étroites.
Les bulletins sont formatés pour du papier A4.
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.
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:
## 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).
### 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
### Informations sur le semestre
Variable | Valeur
---------|-------
titre_num | Le titre du semestre
@ -43,68 +55,130 @@ date_debut | 01/09/2008
date_fin | 05/07/2009
responsable | Nom du responsable du semestre (dir. des études)
### Informations sur l'étudiant
### Informations sur l'étudiant
Variable | Valeur (exemple)
---------|-------
nom| DUPONT
prenom| PIERRE
sexe| M.
nomprenom| M. Pierre DUPONT
nomprenom| M. Pierre DUPONT (civilité et nom en usage à l'université)
etat_civil | Mme Pierrette DUPONT (civilité et nom de naissance / etat-civil)
situation| phrase expliquant la situation de l'étudiant (inscription, décisions de jury)
demission| "DEMISSION" ou vide
inscription| phrase décrivant l'inscription ("ancien")
date_inscription| jj/mm/aaaa
date_demission || (vide si pas demission)
date_demission | (vide si pas démission)
descr_inscription| "Inscrit" ou "Pas inscrit[e]"
descr_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
descr_demission | "Démission le 01/02/2000" ou vide si pas de démission
decision_jury | "Validé", "Ajourné", ... (code semestre, vide en BUT)
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 (vide en BUT)
|
**Parcours et référentiel BUT** |
parcours_titre | "Cybersécurité"
parcours_code | "Cyber"
refcomp_specialite | "RT"
refcomp_specialite_long| "Réseaux et Télécommunications"
**Jurys de BUT:** |
descr_decision_annee | vide ou "Décision année: ADM" (code annuel: `ADM`, `PASD`, `DEF`...)
descr_decisions_rcue | vide ou nom de la compétence et code jury RCUE: "Administrer 1: ADM, Connecter 1: ADJ"
descr_decisions_niveaux | pareil, avec "Niveaux de compétences: " devant
|
**Absences:** |
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
date_naissance | date, au format jj/mm/aaaa
lieu_naissance | format libre
domicile | adresse, format libre
codepostaldomicile |
codelycee | code national français
codepostaldomicile |
codelycee | code national français
|
**Groupes:**|
**Groupes:**|
groupes | indique les groupes auxquels appartient l'étudiant dans le semestre
group_0 | nom du groupe principal (1ère partition)
group_<n> | nom du group de la n-ième partition
### Autres informations
### Autres informations
Variable | &nbsp;
---------|-------
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
`<img>` n'est pas utilisable.
## 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 `<img>` n'est pas utilisable.
### Logos
### 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`.
Les logos sont des images au format JPEG (extension `.jpg` ou `.jpeg`) ou PNG
(extension `.png`), téléversés sur le serveur scodoc et intégrables dans les
documents PDF. [Plus d'information sur la gestion des logos
ici](GestionLogos.md).
La balise `<logo name="xxx" width="44mm" height="22mm" valign="+5mm"/>`, placée dans un paragraphe, insère alors le logo `xxx` avec les dimensions indiquées. Le paramètre `valign` règle le positionnement vertical par rapport à la ligne de texte courante.
Principes généraux:
Voir un exemple d'utilisation plus bas.
* Un logo est désigné par un identifiant (nom) et peut être défini soit globalement, soit pour un département;
* le nom d'un logo est exclusivement composé de caractères alphanumériques ou du caractère '`-`';
* les logos définis globalement sont accessibles pour tous les départements.
Toutefois, si un logo de même nom est également présent dans un département,
c'est le logo du département qui sera utilisé en lieu et place de logo global;
* les logos de nom '`header`' et '`footer`' définis globalement ne peuvent être supprimés (mais peuvent être redéfinis).
L'enregistrement, la modification ou la suppression d'un logo peut être réalisé
via la page de configuration qui est accessible aux administrateurs Scodoc
depuis la page d'accueil.
Ce formulaire comporte une section pour les définitions globales plus une
section par département.
Une section présente la liste des logos avec leurs propriétés (la dimension est
donnée à titre indicatif quand elle est disponible).
Pour chaque logo, les actions disponibles sont :
* Le remplacement de l'image existante par un nouveau fichier;
* la suppression du logo (sauf pour `header`et `footer`dans la section globale);
* l'ajout d'un nouveau logo dans une section (global ou département) et indiquant le nom.
*NB*. Quelle que soit l'opération effectuée, le nom du fichier téléversé n'a
aucune importance (Seul le nom indiqué dans le formulaire est pris en compte et
le format du fichier est déduit des données propres du fichier)
La balise `<logo name="xxx" width="44mm" height="22mm" valign="+5mm"/>`, placée
dans un paragraphe, insère le logo de nom `xxx` avec les dimensions indiquées.
Le paramètre `valign` règle le positionnement vertical par rapport à la ligne de
texte courante.
Notez qu'il est possible de ne préciser que l'une des deux dimensions hauteur ou
largeur. Dans ce cas, la dimension manquante est déduite du ratio (rapport
hauteur/largeur) de l'image originale. Voir un exemple d'utilisation plus bas.
### Fond de page
Les modalités d'utilisation des fonds de pages sont similaires pour les PV, les
lettres individuelles de décision et les bulletins. Celles-ci sont décrites ici:
[Paramétrage des PV. Images de fond de page](ParametragePV.md)
## Exemples
### Exemple 1: Bulletins par défaut
## Exemples
### Exemple 1: Bulletins par défaut
Les bulletins édités par défaut sont obtenus avec:
* Paragraphe de titre:
@ -151,9 +225,8 @@ Année scolaire: %(anneescolaire)s
</para>
```
### Exemple 2: ancien bulletins
### Exemple 2: ancien bulletins
Les bulletins édités par défaut avant le 20/9/2009 étaient obtenus avec:
* Paragraphe de titre:
@ -189,7 +262,8 @@ Les bulletins édités par défaut avant le 20/9/2009 étaient obtenus avec:
```
### Exemple 3: en-tête avec logo
### Exemple 3: en-tête avec logo
Même structure que le premier exemple, avec un logo. Notez que les dimensions du logo (en mm ou cm) doivent avoir le même rapport (hauteur/largeur) que l'image utilisée, sans quoi l'apparence est déformée.
* Paragraphe de titre:
@ -214,3 +288,12 @@ Année scolaire: %(anneescolaire)s
</para>
```
!!! note "Voir aussi"
- [Gestion des logos](GestionLogos.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [Guide du responsable de formation](GuideAdminFormation.md)
- [Guide utilisateur](GuideUtilisateur.md)
- [Contacts](Contact.md)
- <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Tutoriels sur YouTube <img src="/img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>

View File

@ -10,14 +10,32 @@ Le PV de jury est en format paysage et liste les résultats des étudiants chois
## Image de fond de page (logos, tête, pied)
L'exemple ci-dessus utilise une image de fond qui contient l'en-tête et le pied de page, avec des logos. Il faut fournir à ScoDoc une image de fond. Le plus simple est généralement de la composer dans un logiciel de traitement de texte, et de l'enregistrer en image: exporter en PDF puis convertir le PDF en image PNG ou JPEG de bonne résolution (300dpi , par exemple avec un logiciel comme Aperçu sur Mac.
L'image doit ensuite être enregistrée sur le serveur à un emplacement spécifique (seul l'administrateur du serveur peut faire cela):
L'image obtenue peut ensuite être téléversée sur le serveur de la même façon que pour un simple logo
(voir la section [paramétrage des bulletins, section Logos](ParametrageBulletins.md)
avec le nom "`pvjury_background`" ou "`letter_background`" selon le type de document visé.
- Pour les PV de jury (A4 paysage), sous le chemin `/opt/scodoc/var/scodoc/config/logos/pvjury_background.png`
- Pour les lettres individuelles (format A4 portrait), sous `/opt/scodoc/var/scodoc/config/logos/letter_background.png`
Il ne reste plus qu'à activer l'option correspondante soit globalement dans le
paramétrage du département, soit (pour les bulletins) dans par le menu réglage
bulletin du semestre (qui a priorité):
Ne pas oublier d'activer l'option *"Mettre l'image de fond sur les PV de jury"* dans les [paramètres du département](PreferencesScoDoc.md).
- Mettre l'image de fond sur les PV de jury (paysage)
- Mettre l'image de fond sur les bulletins
- Mettre l'image de fond sur les lettres individuelles de décision
**Note :** on peut aussi ajouter les logos séparément, mais il est plus commode de fournir une trame de fond complète. Voir [ici](GuideConfig/#changement-des-logos-apparaissant-sur-les-documents) si besoin.
**Note** : pour les serveurs migrés depuis ScoDoc 7, les anciennes
configurations sont normalement reprises automatiquement.
L'image doit ensuite être enregistrée sur le serveur à un emplacement spécifique
(seul l'administrateur du serveur peut faire cela): [voir la page sur la
configuration les images](GestionLogos.md).
Ne pas oublier d'activer l'option *"Mettre l'image de fond sur les PV de jury"*
dans les [paramètres du département](PreferencesScoDoc.md).
**Note :** on peut aussi ajouter les logos séparément, mais il est souvent plus
commode de fournir une trame de fond complète. Voir
[ici](GuideConfig/#changement-des-logos-apparaissant-sur-les-documents) si
besoin.
## PV de Jury: textes, marges et autres paramètres
@ -31,9 +49,11 @@ Les paragraphes de texte utilisent un balisage identique à celui des bulletins
## Lettres individuelles
ScoDoc génère un docuement PDF contenant les letters de tous les étudiants du semestre ou d'un groupe.
ScoDoc génère un document PDF contenant les lettres de tous les étudiants du semestre ou d'un groupe.
Le principe est le même, mais on fournit une trame de fond au format portrait, come indiqué plus haut. Le texte de la lettre est configurable dans les préférences.
Le principe est le même, mais on fournit une trame de fond au format portrait,
comme indiqué plus haut. Le texte de la lettre est configurable dans les
préférences.
<img src="/screens/LettresPreferences.png" width="50%">

View File

@ -1,23 +1,37 @@
## Préférences
Les préférences sont des paramètres stockés dans la base de données d'un département. Les préférences s'appliquent à tout un département (tous les semestres), ou bien à un semestre particulier. Chaque département a son propre jeu de préférences (c'est parfois regrettable, car certaines préférences concernent tout l'établissement).
Les préférences sont des paramètres stockés dans la base de données d'un
département. Les préférences s'appliquent à tout un département (tous les
semestres), ou bien à un semestre particulier. Chaque département a son propre
jeu de préférences (c'est parfois regrettable, car certaines préférences
concernent tout l'établissement).
Si un semestre ne défini pas de valeur pour un paramètre (eg marge, police, paramétrage du bulletin de notes...), ScoDoc utilisera les préférences globales pour le département.
Si un semestre ne défini pas de valeur pour un paramètre (eg marge, police,
paramétrage du bulletin de notes...), ScoDoc utilisera les préférences globales
pour le département.
Donc:
* Pour affecter tous les semestres sauf ceux qui ont dit autrement: suivre le lien "Paramétrage" dans la marge gauche (visible uniquement si vous en avez la permission).
* Pour affecter tous les semestres sauf ceux qui ont dit autrement: suivre le
lien "Paramétrage" dans la marge gauche (visible uniquement si vous en avez
la permission).
* Pour affecter seulement un semestre: menu "Semestre", "Réglages bulletins" ou "Préférences du semestre".
* Pour affecter seulement un semestre: menu "Semestre", "Réglages bulletins" ou
"Préférences du semestre".
On accède aux préférences via le lien "Paramétrage", qui est présent dans la marge gauche seulement si l'on a le droit de modifier les préférences (la permission `Sco Change Preferences`, normalement associée au rôle `Admin` possédé par chef du département, voir [ConfigPermissions](ConfigPermissions.md)).
On accède aux préférences via le lien "Paramétrage", qui est présent dans la
marge gauche seulement si l'on a le droit de modifier les préférences (la
permission `Sco Change Preferences`, normalement associée au rôle `Admin`
possédé par chef du département, voir
[ConfigPermissions](ConfigPermissions.md)).
On distingue plusieurs groupes de préférences:
* Générales: nom de l'Université, du directeur, etc...
* Absences: alarmes si beaucoup d'absences, statut des samedis... (voir détails sur [GestionAbsences](GestionAbsences.md))
* Absences: alarmes si beaucoup d'absences, statut des samedis... (voir détails
sur [GestionAbsences](GestionAbsences.md))
* Liaison avec le portail: URL du portail, code du département, ...
@ -28,5 +42,6 @@ On distingue plusieurs groupes de préférences:
Voir la liste des préférences sur la page [NomsPreferences](NomsPreferences.md).
Note: les préférences et leurs valeurs par défaut sont définies dans le fichier `sco_preferences.py`.
Note pour les développeurs: les préférences et leurs valeurs par défaut sont
définies dans le fichier `sco_preferences.py`.

View File

@ -1,56 +1,93 @@
# Présentation rapide de ScoDoc
Voir les <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Vidéos d'introduction sur YouTube <img src="img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
Voir les <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">Vidéos d'introduction sur YouTube <img src="/img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
## Page d'accueil
![accueil](screens/accueil-scodoc7.png)
On y trouve les éléments suivants:
La colonne de gauche indique l'identité de l'utilisateur connecté (en rouge à droite) et contient des liens facilitant la navigation sur le site (certains sont paramétrables à l'installation). On note l'accès à trois composants importants: Entreprises (fichier d'entreprises), Notes (gestion des notes), Absences (relevé des absences), et un champ de texte permettant de rechercher un étudiant par son nom.
La colonne de gauche indique l'identité de l'utilisateur connecté (en rouge à
droite) et contient des liens facilitant la navigation sur le site (certains
sont paramétrables à l'installation). On note l'accès à trois composants
importants: Entreprises (fichier d'entreprises), Notes (gestion des notes),
Absences (relevé des absences), et un champ de texte permettant de rechercher un
étudiant par son nom.
L'identité de l'utilisateur défini ses droits d'accès (rôle) et les fonctions qu'il peut utiliser.
L'identité de l'utilisateur défini ses droits d'accès (rôle) et les fonctions
qu'il peut utiliser.
Le centre de la page donne les formations (sessions) en cours, groupées par type. A côté du titre de chaque formation, on a le nom de son responsable (ou directeur des études dans le jargon IUT), ainsi que les dates de début et de fin de la session.
Le centre de la page donne les formations (sessions) en cours, groupées par
type. A côté du titre de chaque formation, on a le nom de son responsable (ou
directeur des études dans le jargon IUT), ainsi que les dates de début et de fin
de la session.
## Fiche étudiant
Pour accéder à la fiche d'un étudiant, on peut soit le rechercher par nom (voir RechercheEtudiant) soit cliquer sur un lien dans une liste ou sur une photo d'un trombinoscope. Cette fiche (exemple ci-dessous) donne accès à toutes les informations sur l'étudiant.
![fiche étudiant](screens/ficheEtud-scodoc7.png)
Pour accéder à la fiche d'un étudiant, on peut soit le rechercher par nom (voir
RechercheEtudiant) soit cliquer sur un lien dans une liste ou sur une photo d'un
trombinoscope. Cette fiche (exemple ci-dessous) donne accès à toutes les
informations sur l'étudiant. ![fiche étudiant](screens/ficheEtud-scodoc7.png)
## Suivi de l'assiduité
ScoDoc permet d'enregistrer les absences des étudiants puis de les visualiser sur un calendrier. On peut aussi obtenir des comptes d'absences, générer des alarmes par e-mail pour prévenir un responsable, vérifier les absences qui coincident avec un examen, enregistre les justificatifs, etc.
![calendrier des absences](screens/calabs-scodoc7.png)
ScoDoc permet d'enregistrer les absences des étudiants puis de les visualiser
sur un calendrier. On peut aussi obtenir des comptes d'absences, générer des
alarmes par e-mail pour prévenir un responsable, vérifier les absences qui
coincident avec un examen, enregistre les justificatifs, etc. ![calendrier des
absences](screens/calabs-scodoc7.png)
## Gestion des notes
La gestion des notes est la partie principale du logiciel et est conçue pour faciliter au maximum le travail des enseignants, grâce à une grande flexibilité (définition des évaluations, import/export via Excel ou saisie sur formulaire web, vérifications, etc.).
La gestion des notes est la partie principale du logiciel et est conçue pour
faciliter au maximum le travail des enseignants, grâce à une grande flexibilité
(définition des évaluations, import/export via Excel ou saisie sur formulaire
web, vérifications, etc.).
### Tableau de bord du semestre, avec les modules
![tableau de bord du semestre](screens/tableaubord2011.png)
### Tableau récapitulatif des moyennes
![tableau de bord du semestre](screens/NotesRecap2012-crop.png)
### Bulletins de notes
Les bulletins sont affichables selon différents formats (ci-dessous le format par défaut). Ils peuvent être exportés sous forme de document PDF (pour impression papier), à d'autres formats (XML, Excel) ou directement envoyé par mail aux étudiants.
![bulletin de note web](screens/BulletinInter2012-crop.png)
Les bulletins sont affichables selon différents formats (ci-dessous le format
par défaut). Ils peuvent être exportés sous forme de document PDF (pour
impression papier), à d'autres formats (XML, Excel) ou directement envoyé par
mail aux étudiants. ![bulletin de note web](screens/BulletinInter2012-crop.png)
## Gestion des jurys et commissions
Une interface permet la saisie des décisions de jury. Le parcours de l'étudiant (redoublements, validations antérieures, compensations entre semestres, capitalisations d'UE) est automatiquement pris en compte, permettant aux enseignant de se concentrer sur les aspects pédagogiques sans perdre de temps avec la gestion administrative (parfois assez complexe).
ScoDoc intègre la gestion des jurys des DUT (2005) et bientôt du Bachelor Universitaire de technologie (BUT) et s'assure que les décisions prises respectent les règles.
Une interface permet la saisie des décisions de jury. Le parcours de l'étudiant
(redoublements, validations antérieures, compensations entre semestres,
capitalisations d'UE) est automatiquement pris en compte, permettant aux
enseignant de se concentrer sur les aspects pédagogiques sans perdre de temps
avec la gestion administrative (parfois assez complexe).
ScoDoc intègre la gestion des jurys des DUT (2005) et bientôt du Bachelor
Universitaire de technologie (BUT) et s'assure que les décisions prises
respectent les règles.
## Gestion des groupes
ScoDoc permet de définir des partitions et groupes en nombre quelconque, et d'y répartir facilement les étudiants (glisser/déposer, fonctions de répartition automatiques).
![affectation aux groupes](screens/GroupesDnD.png)
ScoDoc permet de définir des partitions et groupes en nombre quelconque, et d'y
répartir facilement les étudiants (glisser/déposer, fonctions de répartition
automatiques). ![affectation aux groupes](screens/GroupesDnD.png)
## Trombinoscopes
![trombinoscope](screens/Trombi-scodoc7.png)
*(en réalité vous aurez les photos de vos étudiants !)*
## Autres fonctionnalités
### Imports / Exports
Les données conservées dans le logiciel peuvent être exportées dans une grande variété de formats (pages web, PDF, Excel, XML...) ce qui facilite tant son usage par des non informaticiens que son intégration dans d'autres logiciels (portails d'établissements, systèmes d'informations comme Apogée).
Les données conservées dans le logiciel peuvent être exportées dans une grande
variété de formats (pages web, PDF, Excel, XML...) ce qui facilite tant son
usage par des non informaticiens que son intégration dans d'autres logiciels
(portails d'établissements, systèmes d'informations comme Apogée).

View File

@ -1,24 +1,41 @@
# En cas de problèmes avec [coDoc
# En cas de problèmes avec ScoDoc
## Envoi des données "assistance"
Cette fonction est accessible via un lien en bas de la page d'accueil des
départements. Elle déclenche la copie de la base de données, son anonymisation
(suppression des informations permettant d'identifier les étudiants: les champs
sont effacés ou remplacés par des valeurs aléatoires), et son envoi vers le
serveur des développeurs ScoDoc pour analyse. Il est recommandé d'indiquer les
circonstances du problème rencontré ou de contacter les développeurs sur le salon
Discord.
## Diagnostic détaillé (pour les administrateurs)
Informations destinées aux administrateurs ayant un accès direct (ssh, root) au serveur.
## Récupération et envoi d'informations de diagnostic
## 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.
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.
```
# en tant que root sur le serveur:
cd /opt/scodoc/Products/ScoDoc/config
./diagnostic.sh
cd /opt/scodoc/tools
./diagnostic.sh -a -n
```
Ce script génère un fichier `tgz` et essaie de l'envoyer par mail aux développeurs.
Ce script génère un fichier `tgz`.
Si on n'indique pas l'option `-n`, il essaie immédiatement de l'envoyer par mail aux
développeurs. Il est fréquent que l'envoi de mail ne fonctionne pas: fichier
trop volumineux ou filtrage des mails. Dans ce cas, le copier et le transmettre
par un autre moyen (cloud, ...).
Ce fichier est dans `/tmp` et son nom exact est affiché par le script:
Si pour une raison ou une autre le serveur étudié n'est pas capable d'envoyer un mail vers l'extérieur, récupérer manuellement le fichier généré et l'envoyer. Ce fichier est dans /tmp et son nom exact est affiché par le script:
```ScoDoc diagnostic: informations about your system will be sent to emmanuel.viennet@univ-paris13.fr
and left in /tmp/scodoc-2016-09-05-1504631964
```

View File

@ -1,48 +1,69 @@
# 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).
# Problèmes d'envoi de courriers électroniques
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne pas.
ScoDoc envoie des mails (emails, ou e-mails, ou courriels) en plusieurs
occasions (bulletins de notes, importation d'utilisateurs, alertes sur absences,
exceptions dans le code).
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne
pas.
## Configuration du serveur
ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un
serveur de mail capable d'envoyer des messages (soit directement, soit via un
relais). L'installeur propose d'installer le logiciel serveur Postfix.
ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un serveur de mail capable d'envoyer des messages (soit directement, soit via un relais). L'installeur propose d'installer le logiciel serveur Postfix.
1. Vérifier que votre serveur de messagerie est bien configuré: dans un
terminal, envoyez un message
1. Vérifier que votre serveur de messagerie est bien configuré: dans un terminal, envoyez un message
```
```bash
mail mon_adresse@universite.fr
... entrer votre texte, terminez par ctrl-d ...
```
Si vous ne recevez pas le message que vous vous envoyiez, revoir la configuration de votre serveur, par exemple avec la commande
```
Si vous ne recevez pas le message que vous vous envoyiez, revoir la
configuration de votre serveur, par exemple avec la commande
```bash
dpkg-reconfigure postfix
```
2. Vérifiez que le serveur SMTP écoute bien en local sur le port 25: dans un terminal taper
```
```text
telnet localhost 25
```
Vous devez observer:
```
```text
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").
(quitter avec ctrl-] puis `quit`)
A ce moment, regarder le log
`/opt/scodoc/instance/log/notes.log`
## Tests avec ScoDoc
on devrait voir quelque chose ressemblant à:
Une fois que le mail, fonctionne, passer au test de ScoDoc: créer un étudiant
bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un
semestre, et lui envoyer son bulletin par mail. (sur la page web de son
bulletin, petit menu "Autres opérations").
À ce moment, regarder le log
`/opt/scodoc-data/log/scodoc.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=<emmanuel.viennet@xxxx.fr>, relay=gmail-smtp-in.l.google.com[209.85.135.27]:25, delay=1.5,
@ -51,6 +72,21 @@ delays=0.03/0/0.41/1, dsn=2.0.0, status=sent (250 2.0.0 OK 1220942550 y2si226470
Cela devrait permettre de savoir:
1. si ScoDoc tente d'envoyer un mail (notes.log)
1. si ScoDoc tente d'envoyer un mail (`/opt/scodoc-data/log/scodoc.log`);
2. si le serveur SMTP arrive à traiter ce mail.
## Redirection des tous les mails de ScoDoc
Afin de vérifier les envois de mail, il peut être pratique de détourner tous les
envois vers une adresse (cela permet par exemple de tester les envois de
notification ou de bulletins sans déranger les étudiants ou les collègues).
Pour cela, aller sur la page *Paramétrage*, tout en bas, et indiquer une
*Adresse de test*. Ne pas oublier de l'enlever une fois les essais effectués !
!!! note "Voir aussi"
- Pour la configuration des messages envoyés par ScoDoc, la page [Configuration des envois d'emails](ConfigEmail.md)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [Contacts](Contact.md)

View File

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

View File

@ -0,0 +1,279 @@
## Module "relations entreprises"
Ce module de ScoDoc a pour but de permettre aux utilisateurs de retrouver et
mémoriser toutes les relations entreprises dans un même endroit.
La base de données est commune aux départements de l'établissement, mais
l'application offre des droits de consultation et de modification différenciés.
Ce projet a été développé en 2021-2022, par Arthur Zhu, apprenti de l'IUT de
Villetaneuse financé par l'Association ScoDoc.
Voir [présentation vidéo détaillée sur YouTube](https://www.youtube.com/watch?v=IBuW2EO3GUA).
## Fonctionnalités
Le module, intégrée à ScoDoc, fournit pour l'instant:
* Saisie et gestion des entreprises, sites et correspondants
* Saisie et gestion des offres de stage et d'apprentissage
* Saisie et gestion de la taxe d'apprentissage
* Envoi des offres aux responsables de formations
* Historique à propos des entreprises
* Historique des modifications des fiches entreprises
* Systèmes de rôles et de permissions pour les accès.
### Activation du module
Pour disposer du module "relations entreprises" dans votre établissement, il
faut m'activer dans le panneau de configuration global (en tant
qu'administrateur, lien "Configuration" sur la page d'accueil principale).
Cocher *activer le module entreprises*
![entreprises_activation.png](screens/entreprises_activation.png)
Il sera alors disponible pour tous les départements via le menu principal
![entreprises_menu.png](screens/entreprises_menu.png)
## Les utilisateurs
- le pôle des relations extérieures (le responsable, l'assistant, les chargés de relations entreprises)
- les secrétariats pédagogiques
- les responsables de stage
- les responsables de formations
Des actions et visibilités différentes selon le rôle de l'utilisateur (voir section "Rôles" plus loin).
## Rôles et permissions
Ses rôles ne sont pas reliés à des département. Les rôles permettent aux utilisateurs d'avoir différentes permissions selon le rôle qu'il possède.
Rôles:
* AdminEntreprise
* UtilisateurEntreprise
* ObservateurEntreprise
Permissions:
* RelationsEntreprisesView -> Voir l'application relations entreprises
* RelationsEntreprisesChange -> Modifier les entreprises
* RelationsEntreprisesExport -> Exporter les données de l'application relations entreprises
* RelationsEntreprisesSend -> Envoyer des offres
* RelationsEntreprisesValidate -> Valide les entreprises
* RelationsEntreprisesCorrespondants -> Voir les correspondants
## Saisie et gestion des entreprises, sites et correspondants
### Page "Entreprises"
Les entreprises dans la base de données apparaissent alors dans une liste
d'entreprise où leur SIRET est un lien vers leur fiche entreprise. Il y a 2
checkbox pour pouvoir afficher toutes les entreprises de la base (les
entreprises désactivées en rouge) ou/et que les associations partenaires.
### Fiche entreprise
Chaque entreprises de la base possède une fiche entreprise avec dessus les
informations de l'entreprise (SIRET, nom, adresse, code postal, pays), les
sites, les correspondants, les offres, les dernières opérations, l'historique
concernant l'entreprise.
### Ajouter une entreprise
Pour ajouter une entreprise dans la base, il y a un bouton `Ajouter une
entreprise` sur la page "Entreprises" qui vous emmène vers un formulaire
comportant 2 partie, une partie entreprise avec tous les champs sur l'entreprise
(SIRET, nom, adresse, code postal, pays) puis une partie contact optionnelle
avec les champs concernant le contact de cette entreprise (nom, prenom,
téléphone mail, poste, service) avec au moins un moyen de contact (téléphone ou
mail). Un site par défaut est automatiquement créé avec les informations de
l'entreprise.
En saisissant un SIRET dans le formulaire d'ajout d'entreprise, le formulaire
peut auto remplir le formulaire si le SIRET saisi correspond à celle d'une
entreprise.
Il auto-remplit les champs: nom, adresse, code postal.
### Modifier une entreprise
Pour modifier une entreprise, on peut le faire à partir de la liste des
entreprises ou alors sur la fiche entreprise de l'entreprise avec le bouton
`Modifier` sous les informations de l'entreprise. Toutes les informations de
l'entreprise peuvent être modifiés sauf le SIRET.
Les champs sont préremplis avec les informations actuelles de l'entreprise
### Activer/Désactiver une entreprise
On peut activer et désactiver une entreprise, on peut le faire à partir de la
liste des entreprises ou alors sur la fiche entreprise de l'entreprise avec le
bouton `Désactiver` ou `Activer`. On peut écrire une note sur la désactivation
de la fiche entreprise.
### Validation d'une entreprise
Les administrateurs du module gestion des relations entreprises doivent valider
les entreprises saisies par les utilisateurs pour qu'il soit affichés dans la
liste des entreprises.
### Ajouter et modifier un site
Pour ajouter/modifier un site sur une fiche entreprise, il y a un bouton
`Ajouter site` et un autre bouton `Modifier` sous les informations d'un site sur
la fiche entreprise qui vous emmène vers un formulaire pour ajouter un site ou
modifier un site. (nom unique)
### Ajouter un correspondant
On peut ajouter un correspondant à une entreprise avec le bouton `Ajouter
correspondant` présent sous les informations des sites qui vous emmène vers un
formulaire avec plusieurs champs (nom, prénom, téléphone, mail, poste, service).
Les champs nom, prénom sont obligatoires. Il faut que le contact possède au
moins un moyen de contact c'est-à-dire soit un téléphone, soit un mail. Le poste
et le service dans lequel il travaille est optionel.
Les contacts ne peuvent pas avoir le même nom et prénom au sein d'une même entreprise.
On peut saisir plusieurs correspondants en une seule fois sur le même formulaire
avec le bouton `Ajouter un correspondant`.
### Modifier un correspondant
Pour modifier un correspondant, on peut le faire avec le bouton `Modifier
correspondant` sous les informations du correspondant présent sur la fiche
entreprise de celle-ci. Toutes les informations du correspondant peuvent être
modifiés.
Les champs sont préremplis avec les informations actuelles du contact.
### Supprimer un correspondant
Pour supprimer un correspondant, on peut le faire avec le bouton `Supprimer correspondant`.
### Page offres expirés
C'est une page qui regroupe toutes les offres dont la date d'expiration est
passées. Elle est accessible sur chaque fiche entreprise avec le bouton `Voir
les offres expirées`.
### Pages "Correspondants"
C'est une page qui affiche la liste des contacts avec le nom de leur entreprise
cliquable qui envoie sur la fiche entreprise de l'entreprise.
### Exportation/Importation des données
Les données de la base sont exportables en .xlxs avec le bouton présent sur la
page "Entreprises" `Exporter les données`. La feuille Excel est composée de 3
feuilles:
* Feuille "Entreprises"
* Feuille "Sites"
* Feuille "Correspondants"
On peut importer des données par fichier Excel (.xlxs) avec le bouton `Importer
des données` présent sur la page "Entreprises". Il faut récupérer la feuille
Excel exemple pour avoir les titres correctement présents avec le lien `Obtenir
la feuille excel à remplir` et le remplir. L'importation réussie s'il passe les
vérifications et sont directement ajoutés à la base.
Feuille importation:
* Feuille "Entreprises": création et modification d'entreprises
* Feuille "Sites": création et modification de sites / partie avec les titres en
rouges -> ajout de correspondant lié au site de la même ligne (1 seul ajout)
* Feuille "Correspondants": modification de correspondants uniquement
## Saisie et gestion des offres de stage et d'apprentissage
### Visibilité d'une offre
Une offre est lié à un ou plusieurs départements se qui change sa visibilité.
### Ajouter une offre
On peut ajouter une offre à une entreprise avec le bouton `Ajouter offre`
présent sur la fiche entreprise qui vous emmène vers un formulaire avec
plusieurs champs (intitulé, description, type de l'offre, missions, durée,
départements et date d'expiration).
### Modifier une offre
Pour modifier une offre, on peut le faire avec le bouton `Modifier l'offre` sous
les informations de l'offre présent sur la fiche entreprise de celle-ci. Toutes
les informations du peuvent être modifiés.
Les champs sont préremplis avec les informations actuelles de l'offre.
### Supprimer une offre
Pour supprimer une offre, on peut le faire avec le bouton `Supprimer l'offre`.
On peut supprimer toutes les offres.
### Attacher un fichier à une offre existante
On peut attacher un ou plusieurs fichiers à une offre avec le lien `Ajoutez un
fichier` sous les informations de l'offre qui vous emmène vers un formulaire ou
il faut choisir le fichier à attaché. Les extensions de fichier acceptés sont
.docx et .pdf
Le fichier est stocké sur le disque.
### Télécharger un fichier attaché
On peut télécharger un fichier attaché à une offre en cliquant sur le nom du
fichier.
### Supprimer un fichier attaché a une offre existante
Chaque fichier attaché à une offre peut être supprimé.
## Saisie et gestion de la taxe d'apprentissage
### Ajout taxe d'apprentissage
Sur la fiche entreprise, il est possible de saisir la taxe d'apprentissage
versée par l'entreprise avec l'année, le montant et une note avec le bouton
`Ajouter taxe d'apprentissage`.
### Modifier/Supprimer taxe d'apprentissage
Il est possible de modifier et de supprimer les informations sur la taxe d'apprentissage.
## Historique des modifications des fiches entreprises
Toutes les opérations de création, modification, suppression est ajouté dans la
liste des dernières opérations de toutes les entreprises et sur leur propre
fiche entreprise qui sert d'historique des modifications.
## Ajouter un étudiant qui a déjà réalisé un stage ou une alternance au sein de l'entreprise
On peut ajouter un étudiant qui a déjà réalisé un stage ou une alternance au
sein de l'entreprise avec le bouton `Ajouter historique` qui vous emmène vers un
formulaire avec les champs étudiant (auto suggestion de nom d'étudiant selon la
saisie), type de l'offre, date début et date fin.
## Envoi des offres aux responsables de formations
### Envoi des offres aux responsables
Sous chaque offre, il y a un bouton `Envoyer offre` qui permet d'envoyer une
offre à un utilisateur de ScoDoc avec un champ (auto suggestion). Les offres
envoyées arrivent sur la page "Offres reçues"
(`.../ScoDoc/entreprise/offres_recues`)
Envoie a plusieurs utilisateurs possible avec le bouton `Ajouter un responsable` qui rajoute un champ.
### Page "Offres reçues"
La page "Offres reçues" affichent les offres qui ont été envoyés par d'autres utilisateurs ScoDoc.

View File

@ -1,16 +1,23 @@
# Saisie des décisions de jury
# Saisie des décisions de jury
ScoDoc guide les travaux de la commission (et/ou du jury) en présentant le parcours et
les résultats de chaque étudiant, et les différentes décisions possibles
(voir explications dans [GestionJury](GestionJury.md)).
ScoDoc guide les travaux de la commission (et/ou du jury) en présentant le
parcours et les résultats de chaque étudiant, et les différentes décisions
possibles (voir explications dans [GestionJury](GestionJury.md)).
Note: pour le BUT, une page spéciale est présentée.
## Saisie des décisions pour un étudiant
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.
## 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: <a class="attachment" href="/attachments/ValidationSemestre.dia" download>ValidationSemestre.dia</a>)
!!! note "Voir aussi"
- [Guide responsable de formation](GuideAdminFormation.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,65 +1,131 @@
# Mise en place de sauvegardes des bases de données ScoDoc 9
# 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...
Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde
permettant de rétablir le service en minimisant les pertes de données à la suite
d'un accident majeur mais probable comme: crash de disque dur, bug, vol du
serveur, incendie...
Nous recommandons d'agir à deux niveaux:
* sauvegarde des bases de données postgresql: dump des bases dans des fichiers. Le script donné ci-dessous peut se charger de gérer cela.
* sauvegarde des bases de données postgresql: dump des bases dans des fichiers.
Le script donné ci-dessous peut se charger de gérer cela.
* sauvegarde du système complet (et de ses disques durs): la forme dépend de l'environnement (machine virtuelle ou non...). Dans tous les cas, les données doivent être sauvegardées dans une salle (voire un bâtiment) différente de celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une sauvegarde quotidienne (nocturne) est suffisante. Le script `/opt/scodoc/instance/Products/ScoDoc/misc/backup_to_remote_server.sh` peut être utilisé pour cela.
* sauvegarde du système complet (et de ses disques durs): la forme dépend de
l'environnement (machine virtuelle ou non...). Dans tous les cas, les données
doivent être sauvegardées dans une salle (voire un bâtiment) différente de
celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une
sauvegarde quotidienne (nocturne) est suffisante.
Notons que ScoDoc sauvegarde certaines informations sous le répertoire `/opt/scodoc` (en particulier les photos, les documents archivés et divers réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en plus des bases de données SQL.
Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire
`/opt/scodoc-data` (en particulier les photos, les documents archivés et divers
réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en
plus des bases de données SQL.
## Dump des bases de données
### Dump des bases de données
Le script `backup_db` (ou bien `backup_db2`, fournis dans le répertoire `.../ScoDoc/misc`) peut être utilisé pour effectuer des sauvegardes automatisées des bases de données SQL. Les données sont extraites de la base et écrites sur le disque local du serveur, qui doit bien entendu être sauvegardé par d'autres moyens, comme indiqué ci-dessus.
Le script `backup_db9` (fourni dans le répertoire `/opt/scodoc/tools/backups`)
peut être utilisé pour effectuer des sauvegardes automatisées des bases de
données SQL. Les données sont extraites de la base et écrites sur le disque
local du serveur, qui doit bien entendu être sauvegardé par d'autres moyens,
comme indiqué ci-dessus.
Le nouveau (mars 2014) script `backup_db2` permet de conserver des sauvegardes de chaque heure durant les 48 (par défaut) dernières heures, des sauvegardes quotidiennes des 40 derniers jours, hebdomadaires des 30 dernières semaines, et mensuelles des 200 derniers mois (tout ceci est paramétrable dans le script `.../ScoDoc/backup_rotation.sh`).
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
Le script `backup_db9` permet de conserver des sauvegardes de chaque heure
durant les 48 (par défaut) dernières heures, des sauvegardes quotidiennes des 40
derniers jours, hebdomadaires des 30 dernières semaines, et mensuelles des 200
derniers mois (tout ceci est paramétrable dans le script
`/opt/scodoc/tools/backups/backup_rotation.sh`).
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de
l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
En tant que `root` sur le serveur, faire:
```
```bash
# su postgres
# cd
# crontab -e
```
et ajouter:
```bash
15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC
```
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
...
(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez
configuré sur une autre base).
## En cas de problème: restaurer la base à partir d'une sauvegarde
🚸 Attention, certaines informations sont stockées dans des fichiers (sous
`/opt/scodoc-data`) et non dans la base de données: configuration du logiciel,
photos des étudiants, archives des PV, fichiers Apogée, etc. Ce paragraphe ne
traite que de la restauration de la base de données.
Rappel: en ScoDoc 9, il n'y a qu'une seule base de donnée SQL, nommée par défaut
`SCODOC`. Cette base contient les données des départements et la définition des
comptes utilisateurs.
1. Choisir la sauvegarde à utiliser, en fonction de la date à partir de
laquelle on a fait une erreur (par ex. suppression non intentionnelle d'un
semestre...). Le fichier se trouve sous
`/var/lib/postgresql/SCODOC-BACKUPS``XXX` est concerné. Utiliser par
exemple `ls -lrt` pour visualiser les sauvegardes triées par date.
1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple:
```bash
cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp
gunzip /tmp/SCODOC_pgdump.gz
```
Remplacer `SCOXXXX` et `SCOYYYY` par les noms des bases de vos départements (la commande `psql -l` permet de lister toutes les bases).
1. Recharger la base complète. 🚸 Attention, *cette opération effacera et
remplacera le contenu de la base de données actuelle !*
### En cas de problème: restaurer la base à partir d'une sauvegarde
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention, certaines informations sont stockées dans des fichiers et non dans la base de données: configuration du logiciel, photos des étudiants. Ce paragraphe ne traite que de la restauration à de la base de données.
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``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é. <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention, cette opération effacera et remplacera) le contenu de la base de données actuelle...
```
```bash
# 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
systemctl stop scodoc9 # arret du serveur
su - scodoc
dropdb SCODOC # <<< votre base production
createdb -E UTF-8 SCODOC
pg_restore -d SCODOC /tmp/SCODOC_pgdump # (nom du fichier dump)
source venv/bin/activate
flask db upgrade # nécessaire seulement si sauvegarde ancienne
flask clear-cache
exit # retour a l'utilisateur root
/etc/init.d/scodoc start # relance ScoDoc
systemctl start scodoc9 # relance ScoDoc
```
## Déplacement de toute une installation
Les scripts ci-dessus ne se chargent que de la base de données SQL.
Pour créer une sauvegarde complète d'une installation, vous pouvez utiliser le
script
```bash
tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
```
Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement
la base de données SQL mais aussi tous les fichiers générés par votre ScoDoc:
photos, configurations locales, archives, PV de jurys, logos, etc (tout ceci
étant stocké sous `/opt/scodoc-data`).
Attention à l'espace disque: le répertoire destination (`/tmp`dans l'exemple
ci-dessus) doit avoir de l'espace (sinon utilisez un autre répertoire dans
lequel l'utilisateur `scodoc` puisse écrire, ou montez un autre disque. La
commande `df -h`est votre amie).
Pour restaurer ce type de sauvegarde, sur une autre machine (ou plus tard sur la
même), transférer le fichier généré (`/tmp/sauvegarde-scodoc.tgz`) dans
l'exemple ci-dessus) et utiliser
```bash
tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
```
(Note: la sauvegarde s'effectue comme utilisateur `scodoc`, en revanche le
rechargement doit se faire en tant que `root` car il faut évidemment arrêter et
relancer le service).

2003
docs/ScoDoc9API.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,922 +0,0 @@
# 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``DEPT`est le département et `fonction` la fonction appelée.
Un exemple d'utilisation de l'API en PHP pour publier les bulletins de notes sur un site externe pour les étudiants est disponible ici: source:/trunk/misc/PublicationBulletins/ExemplePHP
# Fonctions d'accès aux données
## Départements
* **`list_depts`**
* Paramètres: `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml)
* Résultat: liste des id de départements.
## Programmes de formations
* **`formation_list`**
* Paramètres: `formation_id` (optionnel, si absent liste toutes les formations)
* Résultat: liste de formations.
* **`formation_export`**
* Paramètres: `formation_id`, `export_ids` (défaut "faux")
* Résultat: la formation, avec UE, matières, modules (un arbre).
## Semestres de formation
Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`.
* **`formsemestre_list`**
* Paramètres (tous optionnels): `formsemestre_id`, `formation_id`, `etape_apo`, `etape_apo2`
* Résultat: liste des semestres correspondant.
* Exemple: `formsemestre_list?format=xml&etape_apo=V1RT`
Note sur les identifiants de sessions: le `session_id` peut être utilisé pour identifier de façon prévisible et (presque) unique une session dans un établissement, ce qui est utile notamment pour interfacer ScoDoc à d'autres logiciels (eg gestion d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué des informations suivantes:
* Département (RT, GEII, INFO...) (= paramètre `DeptName`, en majuscules)
* Nom parcours: DUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME)
* Modalité: FI, FC, FA
* "Spécialité" : S1 (ou S1D pour les sem. décalés), ou le `code_specialite` si pas de semestres. Le code spécialité est un champ (libre) nouveau dans la "formation" (programme pédagogique).
* Année: année de début de l'année scolaire correspondante (eg 2014 pour une session appartenant à l'année scolaire 2014-2015, même si elle commence en mars 2015).
Exemple: `INFO-DUT-FI-S1-2014` : semestre S1 d'un DUT informatique de 2014 en formation initiale (FI)
## Groupes et partitions
L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieurs partitions (types de groupes). Chaque partition est constituée d'un nombre quelconque de groupes d'étudiants.
* **`formsemestre_partition_list`**
* Paramètres: `formsemestre_id`
* Résultat:
* Exemple: ici au format JSON
```
[
{
"formsemestre_id": "SEM12781",
"partition_id": "P23840",
"partition_name": "TD"
"group": [
{
"formsemestre_id": "SEM12781",
"partition_id": "P23840",
"group_name": "A",
"group_id": "G23841",
"partition_name": "TD"
},
{
"formsemestre_id": "SEM12781",
"partition_id": "P23840",
"group_name": "B",
"group_id": "G23843",
"partition_name": "TD"
},
],
},
{
"formsemestre_id": "SEM12781",
"partition_id": "P23941",
"partition_name": "TP"
"group": [
{
"formsemestre_id": "SEM12781",
"partition_id": "P23941",
"group_name": "A1",
"group_id": "G23942",
"partition_name": "TP"
},
{
"formsemestre_id": "SEM12781",
"partition_id": "P23941",
"group_name": "A2",
"group_id": "G23943",
"partition_name": "TP"
},
],
},
{
"formsemestre_id": "SEM12781",
"partition_id": "P22833",
"partition_name": null
"group": [
{
"formsemestre_id": "SEM12781",
"partition_id": "P22833",
"group_name": null,
"group_id": "G22834",
"partition_name": null
}
],
}
]
```
* **`groups_view`**
* Paramètres: `formsemestre_id `ou `group_ids` (peut être répété), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I`
* Résultat: liste des étudiants dans un groupe.
* Exemple: ici au format XML avec `with_codes=1`:
```
<group_list origin="" caption="soit 21 étudiants inscrits et 2 démissionaires." id="gt_711068">
<etud>
<nom value="TOTO"/>
<prenom value="Marc"/>
<etat value="I"/>
<email value="toto@example.com"/>
<etudid value="EID9876"/>
<code_nip value="987654"/>
<code_ine value=""/>
</etud>
<etud>
<nom value="ALVIS SAMOS"/>
<prenom value="NATHALIE"/>
<etat value="I"/>
<email value="xxx@example.com"/>
<etudid value="EID12345"/>
<code_nip value="12345678"/>
<code_ine value=""/>
</etud>
</group_list>
```
Et un autre exemple en format JSON:
```
[
{
"etat":"I",
"emailperso":null,
"prenom":"Dalil",
"nom_disp":"CLINTO",
"email":"xxx@example.com",
"P62029":"A",
"P62032":null,
"P62031":"G1",
"P62030":"A1"
},
{
"etat":"I",
"emailperso":null,
"prenom":"Georges",
"nom_disp":"BUSH",
"email":"bush@example.com",
"P62029":"A",
"P62032":null,
"P62031":"G1",
"P62030":"A1"
},
...
]
```
## Etudiants
* **`etud_info`**
* Paramètres: `etudid` ou `code_nip` ou `code_ine`
* Résultat: informations sur cette étudiant et les semestres dans lesquels il est (ou a été) inscrit.
* Exemple: `etud_info?format=json&etudid=12345`
```
{
"nom": "Mutis",
"sexe": "M.",
"email": "alvaro.mutis@example.com",
"prenom": "ALVARO",
"nomprenom": "M. Alvaro MUTIS",
"insemestre": [
{
"etat": "I",
"formsemestre_id": "SEM12781",
"date_fin": "2010-07-30",
"date_debut": "2010-01-25"
},
{
"etat": "I",
"formsemestre_id": "SEM8396",
"date_fin": "2009-01-16",
"date_debut": "2008-09-01"
}
],
"code_ine": "",
"etudid": "EID8768",
"code_nip": "10991002",
"photo_url": "/ScoDoc/static/photos/F13/RT_EID8768.h90.jpg",
"domicile": "2 Rue Madame",
"villedomicile": "Paris",
"telephonemobile": ""
"fax": "",
"annee_bac": "2010",
"bac": "S",
"specialite": "SCIENTIFIQUE",
"nomlycee": "",
"villelycee": "",
"codelycee": "0950650R",
"codepostallycee": "",
}
```
## Bulletins de notes
* **`Notes/formsemestre_bulletinetud`**
* Paramètres: `formsemestre_id`, `etudid`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`)
* Résultat: bulletin de notes
* Exemple: ici au format JSON, pour une version courte (`version=short`)
```
{
"rang": {
"ninscrits": 52,
"value": "1"
},
"etape_apo2": "",
"etape_apo3": "",
"etape_apo4": "",
"etudiant": {
"nom": "BOLANO",
"prenom": "Roberto",
"sexe": "M.",
"code_ine": "",
"etudid": "EID9860",
"code_nip": "123456789",
"email": "roberto@santateresa.mx",
"photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg"
},
"bonus_sport_culture": {
"value": 0
},
"absences": {
"nbabsjust": 0,
"nbabs": 1
},
"decision": {
"etat": "I",
"code": "ADM",
"compense_formsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */
},
"note": {
"max": "15.51",
"moy": "10.80",
"value": "15.51",
"min": "07.29"
},
"etudid": "EID9860",
"decision_ue": [
{
"acronyme": "UE11",
"code": "ADM",
"ects": "16.0",
"titre": "D\u00e9couverte m\u00e9tiers",
"numero": "11",
"ue_id": "UE21456"
},
{
"acronyme": "UE12",
"code": "ADM",
"ects": "14.0",
"titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques",
"numero": "12",
"ue_id": "UE21478"
}
],
"ue_capitalisee": [
],
"publie": 1,
"autorisation_inscription": [
{
"semestre_id": 2
}
],
"appreciation": [
],
"note_max": {
"value": 20
},
"date": "2014-07-12T17:38:47.693262",
"rang_group": [
{
"ninscrits": 26,
"value": "1",
"group_type": "TD",
"group_name": "B"
},
{
"ninscrits": 13,
"value": "1",
"group_type": "TP",
"group_name": "B1"
},
{
"ninscrits": 4,
"value": "1",
"group_type": "G",
"group_name": "G4"
},
{
"ninscrits": "",
"value": "",
"group_type": "tutorat",
"group_name": ""
},
{
"ninscrits": "",
"value": "",
"group_type": "App",
"group_name": ""
},
{
"ninscrits": "",
"value": "",
"group_type": "sport",
"group_name": ""
}
],
"formsemestre_id": "SEM12345",
"etape_apo": "V1RT",
"ue": [
{
"acronyme": "UE11",
"rang": "1",
"code_apogee": "VRTU11",
"ects": "16",
"numero": "11",
"note": {
"max": "16.17",
"value": "16.17",
"min": "06.56"
},
"module": [
{
"coefficient": 3,
"rang": {
"value": "1"
},
"code": "M1101",
"code_apogee": "VRT1101",
"numero": 1101,
"note": {
"moy": "08.94",
"nb_notes": 51,
"nb_missing": 0,
"max": "19.18",
"min": "03.70",
"nb_valid_evals": 3,
"value": "19.18"
},
"abbrev": "R\u00e9seaux d&apos;entreprises",
"effectif": {
"value": 51
},
"titre": "Initiation aux r\u00e9seaux d&apos;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&apos;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&apos;exploitation",
"effectif": {
"value": 51
},
"titre": "Bases des syst\u00e8mes d&apos;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&apos;information",
"effectif": {
"value": 51
},
"titre": "Acquisition et codage de l&apos;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&apos;activit\u00e9",
"effectif": {
"value": 51
},
"titre": "PPP: Connaitre son champ d&apos;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;amp; Culture",
"id": "UE23716"
}
],
"situation": "Inscrit le 02\/09\/2015. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s&apos;inscrire en S2."
}
```
## Absences
* **`Absences/ListeAbsEtud`**
* Paramètres: `etudid, abs_just_only, format`. `abs_just_only` spécifie si on veut les absences justifiées ou non.
* Résultat: liste d'absences. Exemple:
```{jour: "2021-02-10", ampm: "0", description: "M2202", }```
(`ampm` vaut 1 le matin et 0 l'après-midi).
* **`Absences/doSignaleAbsence`**
* Paramètres: ```datedebut, datefin, moduleimpl_id=None, demijournee=2, estjust=False,description, etudid```
* Résultat: *html*
* Remarques: dates au format `dd/mm/yyyy`. Date de fin non incluse. `demijournee`: 2 si journée complète, 1 matin, 0 après-midi.
* **`Absences/doAnnuleAbsence`**
* Paramètres: ```datedebut, datefin, demijournee, etudid```
* Résultat: *html*
* **`Absences/doAnnuleJustif`**
* Paramètres: ```context, datedebut0, datefin0, demijournee```
* Résultat: *html*
* **`Absences/EtatAbsencesGr`**
* Liste les absences d'un ou plusieurs groupes entre deux dates.
* Paramètres: ```group_ids, debut, fin, with_boursier=True, format=html```
* Résultat: liste des absences. Si `format="json"`, cela donne par exemple:
```[ {
boursier: "N",
nbabs: "9",
nbabsjust: "2",
nbabsnonjust: "7",
nbjustifs_noabs: "0",
nomprenom: "Mme Poisson Dodouce",
etudid: "EID12345"
},
...
]```
* Remarque: on peut spécifier plusieurs groupes.
## Modules
* **`Notes/do_moduleimpl_list`**
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]`
* Résultat: liste de moduleimpl
* **`Notes/do_moduleimpl_withmodule_list`**
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]`
* Résultat: liste triée de moduleimpl, avec l'attribut `module`
## En savoir plus
Voir l'exemple complet d'utilisation de l'API JSON en Python, dans `misc/example-api-1.py`

View File

@ -1,72 +1,116 @@
# 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.
# Interfaçage ScoDoc - Apogée
L'export des notes finales (et des décisions de jury) vers le logiciel Apogée peut être fait de plusieurs façons: soit par remplissage automatique de maquettes Apogée, soit en passant par des fichiers Excel.
L'export des 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
se fait par remplissage automatique de maquettes Apogée par ScoDoc.
La procédure détaillée d'import des résultats de ScoDoc dans Apogée est décrite
ici:
[SCODOC_import_notes_dans_apogee.pdf](papers/SCODOC_import_notes_dans_apogee.pdf),
merci à Bérangère Lhoumeau, du service Scolarité de l'IUT de Tarbes.
Voir aussi [cette page pour les aspects spécifiques au BUT](BUTApogee.md).
## Remplissage des fichiers maquette Apogée (CSV)
## Remplissage des fichiers maquette Apogée (CSV)
Solution intégrée à ScoDoc en juillet 2016.
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. 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. 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. 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.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Bien que ScoDoc tente d'inférer de nombreuses informations, les résultats doivent impérativement être vérifiés avant clôture des opérations et édition des PV et attestations.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Bien que ScoDoc tente d'inférer de nombreuses informations, les
résultats doivent impérativement être vérifiés avant clôture des opérations et
édition des PV et attestations.
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:
### 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:
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)
* 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.
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".
Les trois codes ci-dessus sont à entrer dans le semestre (et non sur la
formation car elle est partagée par des semestres différents, qui ont parfois
des codes variés): passer par le menu "Semestre / Modifier le semestre".
### Préparation de l'ensemble des semestres
### Préparation de l'ensemble des semestres
Pour préparer un export des résultats, il faut définir l'ensemble des semestres que l'on veut considérer. Cet ensemble recouvre éventuellement plusieurs étapes Apogée. Chaque semestre ScoDoc peut en effet être associé à plusieurs étapes Apogée, ce qui est utile pour les formations accueillant différents types de publics (apprentis, FC, contrats de professionnalisation). D'autre part, plus rarement, les étudiants d'une étape Apogée peuvent être inscrits dans plusieurs semestres ScoDoc: c'est le cas pour certaines formations avec des parcours optionnels, dont il est préférable de séparer les suivis pédagogiques (cas du DUT CJ deuxième année à Villetaneuse: V2CJ recouvre deux options qui sont des promotions d'étudiants distinctes).
Pour préparer un export des résultats, il faut définir l'ensemble des semestres
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).
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.
Chaque étape Apogée correspond à un fichier "maquette" spécifique, que ScoDoc va
devoir importer et remplir. Ces fichiers devront ensuite être ré-importés dans
Apogée.
### Précautions à prendre et remarques diverses
### Précautions à prendre et remarques diverses
* Codage des fichiers: Apogée (du moins à l'Université Paris 13) exporte et importe des fichiers maquettes codés en latin-1 (ISO-8859-1). Les web services (portail Apogée), tout comme ScoDoc, travaillent en utf8. Pour faciliter les échanges, les fichiers maquettes importés et exportés de ScoDoc sont en latin-1 (sauf celui reçu du portail Apogée).
* 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
<a href="/attachments/Interface.xlsm" download>Interface.xlsm</a> et <a href="/attachments/imp_exp.xls" download>imp_exp.xls</a>
(explications dans <a href="/attachments/InterfaceScoDocVersApogee-Excel.pdf" download>InterfaceScoDocVersApogee-Excel.pdf</a>).
* 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 grâce à un semestre de l'an
précédent: (voir r1525)
* jury de fin de S1: si le S2 est validé;
* jury de fin de S3: si le S4 est validé.

View File

@ -1,28 +1,35 @@
# Services XML pour l'export des données (obsolète)
# Services XML pour l'export des données
ScoDoc offre un certain nombre de services XML pour faciliter son intégration dans
!!! warning "Obsolète"
- Cette page est obsolète. Utiliser [l'API ScoDoc 9](ScoDoc9API.md)
ScoDoc offrait un certain nombre de services XML pour faciliter son intégration dans
d'autres composants (typiquement un portail de services pour étudiant,
comme le portail eSup CEVIF à l'IUT de Villetaneuse).
## Identification des étudiants
## Identification des étudiants
les étudiants peuvent être identifiés au choix par l'un des trois codes:
Les étudiants peuvent être identifiés au choix par l'un des trois codes:
- **`etudid`** : code interne ScoDoc, toujours disponible.
* **`etudid`** : code interne ScoDoc, toujours disponible.
- **`code_ine`** : code INE Apogée, s'il a été renseigné
* **`code_ine`** : code INE Apogée, s'il a été renseigné
- **`code_nip`** : code NIP Apogée, s'il a été renseigné
* **`code_nip`** : code NIP Apogée, s'il a été renseigné
## Listes des principaux points d'entrée
## Listes des principaux points d'entrée
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> pour des raisons historiques, les noms des fonctions ne sont pas homogènes :-(
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> 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:
```
* **`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:
```xml
<etudiant nom="DUPOND" prenom="FREDERIC" sexe="M." code_ine="250308450" nomprenom="M. Frederic MARSAUD" code_nip="105022504" etudid="ADCDEF" email="toto@xxx.com" photo_url="https://scodoc.example.com/Dept/Fotos/dcp_2777.h90.jpg">
<insemestre etat="I" formsemestre_id="SEM4740" date_fin="2007-06-30" date_debut="2007-01-22" />
<insemestre etat="I" formsemestre_id="SEM3608" date_fin="2007-01-31" date_debut="2006-09-01" />
@ -30,11 +37,11 @@ les étudiants peuvent être identifiés au choix par l'un des trois codes:
</etudiant>
```
* **`XMLgetGroupsInPartition`**
* Paramètres: `partition_id=X`
* Donne la liste des étudiants dans un semestre, par groupes.
* Exemple:
```
* **`XMLgetGroupsInPartition`**
* Paramètres: `partition_id=X`
* Donne la liste des étudiants dans un semestre, par groupes.
* Exemple:
```xml
<ajax-response>
<response type="object" id="MyUpdater">
@ -51,13 +58,13 @@ les étudiants peuvent être identifiés au choix par l'un des trois codes:
</ajax-response>
```
* **`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:
```
* **`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:
```xml
<formsemestrelist>
<formsemestre
formsemestre_id="SEM4741"
@ -71,12 +78,12 @@ les étudiants peuvent être identifiés au choix par l'un des trois codes:
</formsemestrelist>
```
* **`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:
```
* **`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:
```xml
<formation acronyme="DUT R&amp;T" titre_officiel="DUT Réseaux et Télécommunications" formation_code="FCOD2" version="0" titre="DUT Réseaux et Télécommunications" formation_id="FORM1130">
<ue acronyme="UE 1" ue_code="UCOD5" numero="1" ue_id="UE1131" titre="Formation Générale" formation_id="FORM1130" type="0">
<matiere titre="Mathématiques" matiere_id="MAT1132" numero="10" ue_id="UE1131">
@ -84,14 +91,14 @@ les étudiants peuvent être identifiés au choix par l'un des trois codes:
titre="Fondamentaux d'algèbre et de trigonométrie" module_id="MOD1138" formation_id="FORM1130" heures_td="30.0"/>
...
...
```
```xml
* **`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:
```
* **`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:
```xml
<bulletinetud date="2007-07-11T18:50:48.164292" formsemestre_id="SEM4729" publie="1" etudid="10408738" etape_apo="V1TR">
<etudiant nom="DUPONT" prenom="YACINE" sexe="M." code_ine="2222222" etudid="11111111" code_nip="1033333333" email="toto@hotmail.com" photo_url="https://www-gtr.iutv.univ-paris13.fr/Dept/Fotos/dcp_n_01919.h90.jpg"/>
<note value="12.92"/>
@ -112,25 +119,29 @@ les étudiants peuvent être identifiés au choix par l'un des trois codes:
```
Si les décisions du jury sont publiées, on a un élément:
```
```xml
<decision etat="I" code="ADM"/>
```
et le cas échéant dans la décision une autorisation d'inscription (passage à un autre semestre) sous la forme:
```
et le cas échéant dans la décision une autorisation d'inscription (passage à un
autre semestre) sous la forme:
```xml
<autorisation_inscription semestre_id="3"/>
```
Le bulletin comporte aussi le décompte des absences enregistrées au cours de ce semestre (comptées en nombre de demi-journées):
```
Le bulletin comporte aussi le décompte des absences enregistrées au cours de ce
semestre (comptées en nombre de demi-journées):
```xml
<absences nbabsjust="0" nbabs="2"/>
```
* **`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:
```
* **`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:
```xml
<recapsemestre date="2007-07-11T19:00:12.370531" formsemestre_id="SEM4729">
<evals_info date_derniere_note="2007-07-02 14:04:11.00" nb_evals_vides="0" nb_evals_en_cours="0" nb_evals_completes="28"/>
<bulletinetud ...>
@ -141,26 +152,33 @@ Le bulletin comporte aussi le décompte des absences enregistrées au cours de c
```
## 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):
```
## 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):
```xml
<absences beg_date="2009-11-03" end_date="2009-11-29" etudid="EID1911">
<abs begin="2009-11-04 08:00:00" end="2009-11-04 11:59:59" justified="1" description="malade"/>
<abs begin="2009-11-04 12:00:00" end="2009-11-04 17:59:59" justified="0" description=""/>
</absences>
```
* 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éé.
* 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):
```
* **`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):
```xml
<table origin="" caption="" id="gt_920276">
<row>
<billet_id value="ABS-3"/>
@ -171,4 +189,3 @@ Le bulletin comporte aussi le décompte des absences enregistrées au cours de c
</row>
</table>
```

View File

@ -1,27 +1,48 @@
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).
# Synchronisation avec Apogée
La page **Synchroniser avec étape Apogée** est accessible depuis le tableau de
bord du semestre (via le menu **Inscriptions**). Elle permet de vérifier et
modifier les inscriptions au semestre en utilisant l'étape Apogée (les
inscriptions dans Apogée sont normalement gérées par le service de la Scolarité,
cette opération ne concerne donc que les étudiants régulièrement inscrits).
![MenuSynchroEtape.png](screens/MenuSynchroEtape.png).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Cette opération ne fonctionnera que si vous avez correctement renseigné le code étape du semestre (menu **Modifier le semestre**).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Cette opération ne fonctionnera que si vous avez correctement
renseigné le code étape du semestre (menu **Modifier le semestre**).
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*)
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*)
2- étudiant dans Apogée, dans ScoDoc, mais pas inscrit dans le semestre (*non
inscrit, on devrait l'inscrire*)
3- étudiant dans Apogée et pas dans ScoDoc (*on devrait l'importer et 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 ?*)
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.
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 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.
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.
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).
!!! note "Voir aussi"
- [Vérifier les codes NIP](VerifCodeNIP.md)
- [Guide pour le ou la responsable de formation](GuideAdminFormation.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

145
docs/TestsScoDoc.md Normal file
View File

@ -0,0 +1,145 @@
# Tests de ScoDoc
ScoDoc est basé sur Flask, se référer à la doc de Flask pour aller plus loin.
On travaille toujours en tant qu'utilisateur `scodoc`, dans le *virtualenv*:
```bash
su scodoc # si nécessaire
cd /opt/scodoc
source venv/bin/activate
```
## Lancement interactif
```bash
flask shell
```
Pour mémoire, un certains nombre de commandes en ligne facilitant la gestion de
ScoDoc sont disponibles, afficher la liste avec
```bash
flask --help
```
## Tests unitaires
On utilise `pytest`. Ainsi, la commande
```bash
pytest tests/unit
```
lance l'ensemble des tests unitaires.
Ces tests sont lancés automatiquement avant la création du paquet Debian
(release).
Rappelons quelques options utiles de `pytest`: `-x` permet de s'arrêter sur la
première erreur, et `--pdb` lance directement le debugger sur l'erreur.
Ainsi,
```bash
pytest --pdb -x tests/api/test_api_departements.py
```
lancera un test en mode "interactif", utile pour les mises au point.
Et pour lancer un seul test:
```bash
pytest -x --pdb tests/unit/test_but_cursus.py::test_refcomp_niveaux_info
```
### Création de la base de données pour les tests unitaires
```bash
./tools/create_database.sh SCODOC_TEST
export FLASK_ENV=test
flask db upgrade
```
## Tests Selenium (web)
*Ce projet est abandonné pour l'instant* (Aurélien, JMP).
## Portail pour tests
Un faux portail "apogée" pour inscrire de faux étudiants avec photos. Utile pour tester les fonctions d'inscription/synchronisation, et aussi pour peupler rapidement une base de donnée.
Le code se trouve dans `tools/fakeportal/`.
Le serveur écoute par défaut sur `tcp/8678`. Il faudra paramétrer l'URL du
"portail" dans les préférences du ScoDoc à tester, qui est en général sur le
même hôte, donc `http://localhost:8678`.
Lancement:
```bash
/opt/scodoc/tools/fakeportal/fakeportal.py
```
## Tests de l'API ScoDoc9
L'API est [documentée ici](ScoDoc9API.md).
Des tests sont disponibles sous `scodoc/tests/api`. Le mécanisme de test est un
peu différent de celui des tests unitaire: on test un *client* de l'API. Il faut
donc un serveur, tournant sur la même machine ou sur une machine distante. Ce
serveur doit avoir été configuré avec des données de test.
### TL;DR
Si votre installation de développement est bien configurée, il suffit de lancer
```bash
tools/test_api.sh
```
### Configuration du serveur pour tester l'API
1. modifier `/opt/scodoc/.env` pour indiquer
```bash
FLASK_ENV=test_api
FLASK_DEBUG=1
```
1. En tant qu'utilisateur scodoc, lancer:
```bash
tools/create_database.sh --drop SCODOC_TEST_API
flask db upgrade
flask sco-db-init --erase
flask init-test-database
```
Ces commandes vont effacer la base `SCODOC_TEST_API` si elle existe, la
recréer, mettre à jour le schéma pour la dernière version de ScoDoc installée,
l'initialiser et la peupler de données fictives pour les tests.
1. Relancer ScoDoc:
```bash
flask run --host 0.0.0.0 --debug
```
### Configuration du client de test API
1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans
`scodoc/tests/api/.env`, et éditer ce fichier `.env`pour y configurer votre
*client* de test (ne pas confondre avec `scodoc/.env` qui est la config de
votre serveur).
Normalement, il est suffisant d'indiquer l'URL de votre serveur. Si le
client de test est sur la même machine que le serveur ScoDoc, c'est simplement:
```bash
SCODOC_URL="http://localhost:5000/"
```
### Lancement des tests de l'API
Le serveur scodoc étant lancé comme expliqué ci-dessus, on utilise `pytest` sur
le client (qui peut être un autre shell de la même machine, bien sûr).
```bash
cd /opt/scodoc/
pytest tests/api/test_api_xxx.py # remplacer xxx par votre test
```

View File

@ -1,36 +0,0 @@
# Tests de ScoDoc7
## Lancement interactif
Un script permet de lancer ScoDoc7 en mode interactif, et d'exécuter au préalable des scripts (de test ou de création d'objets divers).
cd /opt/scodoc/Products/ScoDoc
# Lance le script scotests/test_basic.py
scotests/scointeractive.sh -r TEST00 scotests/test_basic.py
L'option `-r` utilisée ci-dessus va recréer la base SQL du département `TEST00` (et l'*effacer avant si elle existe*).
Attention: la base utilisateurs étant à part, s'assurer que les utilisateurs utilisés dans vos scripts de test existent au préalable.
## Tests unitaires
TODO (Fares)
## Tests Selenium (web)
TODO (Aurélien)
## Portail pour tests
Un faux portail "apogée" pour inscrire de faux étudiants avec photos. Utile pour tester les fonctions d'inscription/synchronisation, et aussi pour peupler rapidement une base de donnée.
Le code se trouve dans `scotests/fakeportal/`.
Le serveur écoute par défaut sur `tcp/8678`. Il faudra paramétrer l'URL du "portail" dans les préférences du ScoDoc à tester, qui est en général sur le même hôte, donc `http://localhost:8678`.
/opt/scodoc/Products/ScoDoc/scotests/fakeportal/fakeportal.py

View File

@ -1,72 +1,142 @@
# Récapitulatif des opérations en fin de semestre (et début du suivant)
Cette page récapitule les opérations typiquement effectuées par un chef de département en IUT à la fin d'un semestre. Selon les cas, certaines opérations peuvent être effectuées par les directeurs des études. La plupart des étapes mentionnées ici sont aussi applicables pour d'autres types de formation.
Cette page récapitule les opérations typiquement effectuées par un chef de
département en IUT à la fin d'un semestre. Selon les cas, certaines opérations
peuvent être effectuées par les directeurs des études. La plupart des étapes
mentionnées ici sont aussi applicables pour d'autres types de formation.
Voir aussi le [Guide pour la cheffe ou le chef de département](GuideAdminFormation.md).
Voir aussi le [Guide pour la cheffe ou le chef de
département](GuideAdminFormation.md).
## À la fin d'un semestre
1. Vérifier que les réglages de votre semestre correspondent bien à ce que vous voulez. En particulier, les options comme *proposer compensation* et *jurys avec semestres décalés* (accessibles via *Modifier le semestre*, voir figure).
1. Vérifier que les réglages de votre semestre correspondent bien à ce que vous
voulez. En particulier, les options comme *proposer compensation* et *jurys
avec semestres décalés* (accessibles via *Modifier le semestre*, voir
figure).
![reglages-semestres-check.png](screens/reglages-semestres-check.png)
2. Vérifier que le parcours choisi est correct (menu *Semestre* / *Voir la formation*): ainsi, le parcours affiché doit être "DUT selon l'arrêté d'août 2005" pour le DUT.
2. Vérifier que le cursus choisi est correct (menu *Semestre* / *Voir la
formation*): ainsi, le parcours affiché doit être "DUT selon l'arrêté d'août
2005" pour le DUT.
3. Vérifier que toutes les notes ont été saisies: regarder le tableau de bord, qui affiche dans chaque module les évaluations et indique si des notes manquent ou sont en attente.
3. Vérifier que toutes les notes ont été saisies: regarder le tableau de bord,
qui affiche dans chaque module les évaluations et indique si des notes
manquent ou sont en attente.
4. (optionnel) Vérifier les absences si cela n'a pas déjà été fait. Dans le menu *Semestre* du tableau de bord, suivre *Vérifier les absences aux évaluations*.
Attention, actuellement ScoDoc enregistre les absences par demi-journées, ce qui fait qu'un étudiant peut être noté absent alors qu'il a assisté à un examen sur une partie de la demi-journée et sèché le cours suivant.
4. (optionnel) Vérifier les absences si cela n'a pas déjà été fait. Dans le
menu *Semestre* du tableau de bord, suivre *Vérifier les absences aux
évaluations*.
Attention, actuellement ScoDoc enregistre les absences par demi-journées, ce
qui fait qu'un étudiant peut être noté absent alors qu'il a assisté à un
examen sur une partie de la demi-journée et sèché le cours suivant.
5. Réunir la commission (ou le jury):
a. Il peut être utile de préparer des documents pour les membres de la commission: suivre *Générer feuille préparation Jury* dans le menu *Jury*.
a. Il peut être utile de préparer des documents pour les membres de la
commission: suivre *Générer feuille préparation Jury* dans le menu *Jury*.
b. Durant la commission, nous recommandons de saisir en temps réel les décisions (menu *Jury / Saisie des décisions*). **Pour éviter que les étudiants n'aient accès aux décisions pendant le jury, décocher l'option *publier le bulletin sur le portail* ** (menu *Semestre / Options du semestre*).
b. Durant la commission, nous recommandons de saisir en temps réel les
décisions (menu *Jury / Saisie des décisions*). **Pour éviter que les
étudiants n'aient accès aux décisions pendant le jury, décocher l'option
*publier le bulletin sur le portail* ** (menu *Semestre / Options du
semestre*).
6. Édition du procès-verbal: menu *Jury / Voir les décisions du jury*.
1. En bas de la page, un lien *Courriers individuels (classeur pdf)* permet de générer les courriers à adresser aux étudiants (penser à vérifier leurs adresses postales au préalable sur leurs fiches).
1. En bas de la page, un lien *Courriers individuels (classeur pdf)* permet
de générer les courriers à adresser aux étudiants (penser à vérifier
leurs adresses postales au préalable sur leurs fiches).
2. Le lien *PV officiel (pdf)* permet de générer le procès verbal avec la liste des décisions pour chaque étudiant.
2. Le lien *PV officiel (pdf)* permet de générer le procès verbal avec la
liste des décisions pour chaque étudiant.
A ce stade, le semestre est terminé. Il est recommandé de le **verrouiller** après les prises de décisions définitives.
A ce stade, le semestre est terminé. Il est recommandé de le **verrouiller**
après les prises de décisions définitives.
## Mise en place du semestre suivant
1. **Créer une instance du semestre suivant** (par exemple un S2 après un S1). Pour cela, aller sur la page *Programmes*, choisir la formation (rappelons que ScoDoc appelle "formation" la définition d'un programme pédagogique) et suivre le lien *UE, modules, semestres*.
1. **Créer une instance du semestre suivant** (par exemple un S2 après un S1).
Pour cela, aller sur la page *Programmes*, choisir la formation (rappelons
que ScoDoc appelle "formation" la définition d'un programme pédagogique) et
suivre le lien *UE, modules, semestres*.
2. En bas de la page qui détaille le programme, suivre le lien *Mettre en place un nouveau semestre de formation* et remplissez le formulaire.
2. En bas de la page qui détaille le programme, suivre le lien *Mettre en place
un nouveau semestre de formation* et remplissez le formulaire.
Une autre approche, souvent plus rapide, consiste à créer un semestre en utilisant un semestre existant comme modèle: on reprend la même liste de modules; pour cela, se placer sur le semestre modèle, et utiliser le menu ** *Cloner ce semestre* **.
Une autre approche, souvent plus rapide, consiste à créer un semestre en
utilisant un semestre existant comme modèle: on reprend la même liste de
modules; pour cela, se placer sur le semestre modèle, et utiliser le menu **
*Cloner ce semestre* **.
1. Indiquez les dates correctes de début et de fin du semestre (attention: il est important que les dates ne se chevauchent pas: le nouveau semestre doit commencer quelques jours (ou semaines) après le précédent !)
1. Indiquez les dates correctes de début et de fin du semestre (attention:
il est important que les dates ne se chevauchent pas: le nouveau semestre
doit commencer quelques jours (ou semaines) après le précédent !)
2. Désignez le responsable (directeur des études en DUT).
3. Si vous êtes interfacé à Apogée (via un portail), indiquez le code étape Apogée correspondant à votre nouveau semestre.
3. Si vous êtes interfacé à Apogée (via un portail), indiquez le code étape
Apogée correspondant à votre nouveau semestre.
4. Cocher les modules de votre semestre, et associez leur un enseignant responsable (ce dernier pourra créer des évaluations dans ce module et déclarer des collègues pouvant saisir les notes).
4. Cocher les modules de votre semestre, et associez leur un enseignant
responsable (ce dernier pourra créer des évaluations dans ce module et
déclarer des collègues pouvant saisir les notes).
5. Après relecture, cliquez sur le bouton *Créer ce semestre de formation*.
NB: toutes ces informations pourront être ultérieurement modifiées via le lien *Semestre / Modifer le semestre* du tableau de bord.
3. **Inscrire les étudiants** Sauf pour le premier semestre (S1), il est en général plus simple de s'appuyer sur les décisions de jury pour sélectionner rapidement les étudiants à inscrire. C'est ce que permet la page *Inscriptions / Passage des étudiants depuis d'autres semestres*. Voir les explications sur cette page.
3. **Inscrire les étudiants** Sauf pour le premier semestre (S1), il est en
général plus simple de s'appuyer sur les décisions de jury pour sélectionner
rapidement les étudiants à inscrire. C'est ce que permet la page
*Inscriptions / Passage des étudiants depuis d'autres semestres*. Voir les
explications sur cette page.
4. Si vous avez un portail **Apogée** et que les inscriptions Apogée ont été effectuées (ou les changements de codes étapes), utiliser *Inscriptions / Synchroniser avec étape Apogée* pour vérifier et compléter la liste des inscrits. (Pour plus d'informations consulter aussi les pages [Vérifier les codes NIP](VerifCodeNIP.md) et [Synchroniser avec une étape Apogée](SynchroApogee.md).)
4. Si vous avez un portail **Apogée** et que les inscriptions Apogée ont été
effectuées (ou les changements de codes étapes), utiliser *Inscriptions /
Synchroniser avec étape Apogée* pour vérifier et compléter la liste des
inscrits. (Pour plus d'informations consulter aussi les pages [Vérifier les
codes NIP](VerifCodeNIP.md) et [Synchroniser avec une étape
Apogée](SynchroApogee.md).)
5. Si vous n'avez pas Apogée, qu'il s'agit du premier semestre, que vous n'utilisez pas non plus d'imports par fichiers Excel, et qu'il manque des étudiants (inscrits d'autres origines, cas particulier), il faut les créer individuellement (via le lien *créer un nouvel étudiant* en bas de la page d'accueil) puis les inscrire (via le menu *Inscriptions / Inscrire un étudiant* du tableau de bord semestre. **Avant cela, vérifiez bien que l'étudiant n'existe pas déjà dans ScoDoc afin de ne pas créer de doublons**.
6. (optionnel) Répartir les étudiants dans des groupes de TD (*Inscriptions / Modifier les groupes*).
5. Si vous n'avez pas Apogée, qu'il s'agit du premier semestre, que vous
n'utilisez pas non plus d'imports par fichiers Excel, et qu'il manque des
étudiants (inscrits d'autres origines, cas particulier), il faut les créer
individuellement (via le lien *créer un nouvel étudiant* en bas de la page
d'accueil) puis les inscrire (via le menu *Inscriptions / Inscrire un
étudiant* du tableau de bord semestre. **Avant cela, vérifiez bien que
l'étudiant n'existe pas déjà dans ScoDoc afin de ne pas créer de doublons**.
6. (optionnel) Répartir les étudiants dans des groupes de TD (*Inscriptions /
Modifier les groupes*).
C'est prêt. Les enseignants autorisés peuvent créer des évaluations et saisir des notes.
## Problèmes couramment rencontrés
- **Etudiants en doubles**: ceci arrive lorsqu'on crée manuellement les étudiants. Il faut absolument éviter de créer un étudiant qui existe déjà, sinon on perd la possibilité de suivre le parcours de chacun. Le respect de la procédure ci-dessus garanti normalement que les étudiants restent uniques. N'utiliser *créer un nouvel étudiant* qu'après vous être assuré qu'il n'était pas déjà inscrit dans un autre semestre, et que l'on sait que l'on ne va pas l'importer depuis Apogée.
- **Etudiants en doubles**: ceci arrive lorsqu'on crée manuellement les
étudiants. Il faut absolument éviter de créer un étudiant qui existe déjà,
sinon on perd la possibilité de suivre le parcours de chacun. Le respect de la
procédure ci-dessus garanti normalement que les étudiants restent uniques.
N'utiliser *créer un nouvel étudiant* qu'après vous être assuré qu'il n'était
pas déjà inscrit dans un autre semestre, et que l'on sait que l'on ne va pas
l'importer depuis Apogée.
- **Désinscription d'un étudiant**: si vous avez inscrit par erreur un étudiant dans un semestre, ce n'est pas grave: vous pouvez le désinscrire en utilisant le menu *Scolarité / désinscrire* sur sa fiche individuelle (à droite du nom du semestre concerné).
- **Désinscription d'un étudiant**: si vous avez inscrit par erreur un étudiant
dans un semestre, ce n'est pas grave: vous pouvez le désinscrire en utilisant
le menu *Scolarité / désinscrire* sur sa fiche individuelle (à droite du nom
du semestre concerné).
- **Aucun étudiant à inscrire**: cela peut arriver si les dates de semestres sont incorrectes (chevauchement): en particulier, vérifier que la date de début du nouveau semestre est bien postérieure à la date de fin des semestres d'où proviennent les étudiants à inscrire.
- **Aucun étudiant à inscrire**: cela peut arriver si les dates de semestres
sont incorrectes (chevauchement): en particulier, vérifier que la date de
début du nouveau semestre est bien postérieure à la date de fin des semestres
d'où proviennent les étudiants à inscrire.
Pour toutes questions, n'hésitez pas à contacter la liste de diffusion Notes (voir la [page d'information sur les listes](ListesDeDiffusion.md)).
Pour toute question, n'hésitez pas à nous contacter ([contacts](Contact.md)).
!!! note "Voir aussi"
- [Vérifier les codes NIP](VerifCodeNIP.md)
- [Guide pour le ou la responsable de formation](GuideAdminFormation.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

192
docs/UpgradeToDeb12Sco96.md Normal file
View File

@ -0,0 +1,192 @@
# Procédure pour la mise à jour vers Debian 12 et ScoDoc 9.6
Cette page documente la mise à jour d'un serveur ScoDoc 9.4 ou 9.5 tournant sous
Linux Debian 11 vers la version suivante: ScoDoc 9.6 sous Debian 12.
On commence par mettre à jour normalement le système Debian, puis on change la
version de la base de données postgresql puis on met à jour ScoDoc.
Si vous souhaitez installer ScoDoc 9.6 sans partir d'un serveur 9.5,
[voir la page d'installation](GuideInstallDebian12.md)
Tout compris, la mise à jour d'un serveur typique prend environ 20 à 30 minutes
et ne demande aucune compétence particulière, autre que de suivre
scrupuleusement les instructions ci-dessous, sans oublier d'étape.
## Upgrade Debian 11 vers Debian 12
La documentation officielle est là:
[DebianUpgrade](https://wiki.debian.org/DebianUpgrade). Elle couvre tous les
cas, mais en général notre serveur ScoDoc est plus simple: résumé ci-dessous
### Sauvegarder
Avant tout, sauvegarder vos données et l'ensemble de votre serveur. Vérifiez que
vous avez assez d'espace disque disponible (par exemple avec la commande `df -h`).
Prévenez les utilisateurs et arrêtez le service: `systemctl stop scodoc9`
### Mettre à jour Debian
Dans la suite, on suppose que vous avez un shell root. Sinon, utilisez `sudo`.
#### Vérifier qu'on est à jour
```bash
apt-get update
apt-get upgrade
apt-get full-upgrade
```
#### Modifier les sources de mise à jour
Si vous savez le faire, éditer le fichier `/etc/apt/sources.list` (par exemple
avec la commande `nano /etc/apt/sources.list`) et remplacer le mot `bullseye`par
`bookworm`.
Sinon, il peut être plus simple de reprendre ce contenu:
```txt
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main
deb-src http://security.debian.org/debian-security bookworm-security main
deb http://deb.debian.org/debian/ bookworm-updates main
deb-src http://deb.debian.org/debian/ bookworm-updates main
```
#### Mettre à jour
```bash
/bin/rm /etc/apt/sources.list.d/scodoc.list
apt-get clean
apt-get update
```
Les deux commandes suivantes sont longues, surtout ne pas les interrompre.
Répondre "oui" (ou la réponse par défaut) aux diverses question, ou dire que
vous conservez les versions locales modifiées de vos fichiers de configuration
(lorsqu'un texte long s'affiche, taper 'q' puis "entrée"...).
```bash
apt-get upgrade
#
# Puis:
apt-get full-upgrade
```
Un petit nettoyage:
```bash
apt-get autoremove
```
Et un redémarrage
```bash
shutdown -r now
```
Après reconnexion, vous avez un serveur Debian 12. Reste à s'occuper de la base
de données et de ScoDoc. D'abord, s'assurer que le service n'a pas redémarré:
```bash
systemctl stop scodoc9
```
## En cas de problème avec proxmox
Pour l'instant on ne nous a pas signalé de problèmes, mais au cas où ce lien
peut servir: [Debian 12 et proxmox](https://www.abyssproject.net/2023/07/retex-sur-mes-upgrades-vers-debian-12-et-proxmox-ve-8)
## Upgrade Postgresql
Debian 12 est livré avec Postgresql 15, tandis que l'installation précédente
tournait sous Postgresql 13. Il est donc nécessaire de migrer les données en
base vers la nouvelle version.
Procédure inspirée de
[ce tuto en français](https://wiki.fiat-tux.fr/books/administration-syst%C3%A8mes/page/migration-d%E2%80%99une-version-majeure-de-postgresql-%C3%A0-une-autre)
Toujours dans un shell root, copier/coller les commandes suivantes:
```bash
service postgresql stop
pg_dropcluster --stop 15 main
pg_upgradecluster -m upgrade 13 main
systemctl start postgresql
su -c "/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages" postgres
pg_dropcluster 13 main --stop
apt-get autoremove --purge postgresql-13 postgresql-client-13
```
## Passage de ScoDoc 9.5 (ou 9.4) à 9.6
### Modification des sources de paquets Debian
- Supprimer l'ancien fichier:
```bash
/bin/rm -f /etc/apt/sources.list.d/scodoc*
```
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
download>scodoc.list</a> dans `/etc/apt/sources.list.d/`
ou bien l'éditer pour qu'il contienne juste cette ligne:
```text
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
deb http://scodoc.org/deb/bookworm bookworm main
```
### Installation de la clé
L'ancienne clé crypto qui authentifie scodoc est toujours valide, mais il faut
l'installer différemment. Comme root, lancer:
```bash
apt-key export BBDA4CF7 | gpg --dearmour -o /etc/apt/trusted.gpg.d/scodoc.gpg
```
### Mise à jour du paquet scodoc9
```bash
apt update && apt upgrade
```
devrait installer `scodoc9.6.x` (cette première install est un peu longue, il
faut en effet charger et configurer de nombreux modules python).
### Migration des absences vers les assiduités
Le nouveau module de gestion des assiduité (absences/présences/justificatifs)
permet d'importer les anciennes "absences" (et justificatifs). Pour cela, lancer
les commandes suivantes:
```bash
systemctl stop scodoc9 # le service DOIT etre stoppé !
su scodoc
#
cd /opt/scodoc
source venv/bin/activate
flask migrate-abs-to-assiduites
```
Pour plus de détails et paramétrages (plages horaires, ...), voir
[la documentation sur la migration des absences](AssiduitesMigration.md).
Le traitement est assez long et peut prendre plusieurs minutes,
suivant le nombre d'absences et la vitesse de votre serveur.
### Démarrage du service
Comme d'habitude, en tant que `root`: (faire `exit`si vous êtes resté dans le
shell scodoc précédent):
```bash
systemctl start scodoc9
```

View File

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

View File

@ -1,33 +1,48 @@
# Vérification des codes NIP
## 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.
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.
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).
Ce n'est pas le cas si l'on a importé l'étudiant à la main (via un formulaire ou
l'importation d'une feuille Excel).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Le code NIP est utilisé par le portail pour identifer les étudiants: *si ScoDoc ne le connait pas, l'étudiant n'a pas accès à son bulletin de notes sur le web*.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Le code NIP est utilisé par le portail pour identifier les
étudiants: *si ScoDoc ne le connait pas, l'étudiant n'a pas accès à son bulletin
de notes sur le web*.
## Fixer le code NIP d'un étudiant
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**.
!!! note "Voir aussi"
## 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)
- [Opérations de fin de semestre](TransitionSemestre.md)
- [Synchroniser avec une étape Apogée](SynchroApogee.md)
- [Guide pour le ou la responsable de formation](GuideAdminFormation.md)
- [Opérations de fin de semestre](TransitionSemestre.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
docs/assets/images/favicon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

View File

@ -0,0 +1,2 @@
# ScoDoc repository
deb http://scodoc.org/repo bullseye main

View File

@ -0,0 +1,2 @@
# ScoDoc repository for Debian 12 bookworm
deb http://scodoc.org/deb/bookworm bookworm main

BIN
docs/fig/GrapheUser.odg Normal file

Binary file not shown.

BIN
docs/fig/GrapheUser.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
docs/fig/but-bul-bdx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

BIN
docs/fig/but-bul-lille.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

Some files were not shown because too many files have changed in this diff Show More