Compare commits

...

208 Commits

Author SHA1 Message Date
Jean-Marie PLACE f1051f644c ajout query-nip et query-ine dans la carte 2022-10-31 07:34:41 +01:00
Emmanuel Viennet 0291669255 Formattage doc API 2022-10-29 09:16:14 +02:00
Emmanuel Viennet 26096c09f3 API: formsemestres-query 2022-10-29 08:34:45 +02:00
Emmanuel Viennet 23312d1540 minor reformatting 2022-10-26 10:26:53 +02:00
Emmanuel Viennet 3ba3c4723c Supprime éléments obsolètes 2022-10-10 10:47:56 +02:00
Emmanuel Viennet 3bc5664950 Ajout screenshots 2022-10-07 22:31:07 +02:00
Emmanuel Viennet d74ee8e1a2 Mises à jours diverses + reprise ModelisationParcoursBUT 2022-10-07 22:29:59 +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 1da3702c1d update_moduleimpl 2022-09-21 13:22:43 +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 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 0a31b8e314 mise a jour des exemples 2022-09-21 06:01:21 +02:00
Emmanuel Viennet 2312b1a38c ajout lien YT 2022-09-15 09:41:51 +02:00
Emmanuel Viennet edb0ff825f activation module entreprises 2022-09-15 09:32:18 +02:00
Emmanuel Viennet 618df31df5 précision sur le lancement des commandes 2022-09-15 09:03:46 +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 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 d70f30b6ec description modif formsemestre-etudiant 2022-08-30 21:45:04 +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 3b536525cc correctifs mineurs 2022-08-30 07:47:13 +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 770ab19278 essai 2022-08-27 09:34:00 +02:00
Emmanuel Viennet 8359c8c7fe essai 2022-08-26 18:24:17 +02:00
Jean-Marie PLACE 1c8db01544 ajout gestion des utilisateurs 9.3.28 2022-08-26 15:56:30 +02:00
Emmanuel Viennet 5cc4c5ca2a retire APIView 2022-08-26 10:03:21 +02:00
Emmanuel Viennet b58a62f77e Champs synchro etud XML 2022-08-26 08:19:13 +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 de61535675 ajout doc (permission, correctifs tableaux, formsemestre-programme, ...) 2022-08-25 18:47:45 +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 09330a30e6 mise a jour des deux liens erroné 2022-08-23 13:46:11 +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 cd3767271b remise a niveau exemples ; ajout user-password 2022-08-21 12:39:37 +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 4ebaf197e5 ajout de quelques précisions + des exemples sur les logos 2022-08-19 11:47:32 +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 5ba29909eb mise à jour carte syntaxique 2022-08-17 10:14:07 +02:00
Emmanuel Viennet 60a315729e Intro sur API 2022-08-14 10:21:35 +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 5e567633c2 ajouts des exemples restants 2022-08-14 10:04:11 +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 a869d25c53 ajout exemples générés automatiquement (GET) 2022-08-11 18:19:20 +02:00
Emmanuel Viennet 67cf0163ed API: user, roles, ... 2022-08-11 15:41:20 +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 ec7131fe5d preparation des enrées utilisateurs/roles/departement-create, ... 2022-08-11 11:47:38 +02:00
Emmanuel Viennet d95f7c9fdb Doc API: typos, changement route /formsemestre/etudiant. 2022-08-10 07:55:33 +02:00
Emmanuel Viennet 80cc8e6ca8 sample_roles 2022-08-09 21:27:32 +03: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 1be533f48d Complements docs (evaluations, jury, ...) + carte syntaxique. maj des
url
2022-08-09 08:55:55 +02:00
Emmanuel Viennet e7b20625be API /roles sample 2022-08-06 23:27:01 +03:00
Emmanuel Viennet 91aacaae77 modif détails config logos 2022-08-04 20:02:20 +03: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 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 634b250330 complement formsemestre, partition, moduleimpl 2022-08-04 17:01:30 +02:00
Emmanuel Viennet 8d5a62e211 typos/détails 2022-08-04 14:13:33 +03: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 a561fdd2ee dept et formation ok 2022-08-04 12:19:39 +02:00
Emmanuel Viennet 6dc304bbb2 API formsemestre: changement format annee_scolaire 2022-08-03 22:52:20 +03:00
Emmanuel Viennet 02c1d20a2c modif carte API svg 2022-08-03 17:29:16 +03:00
Emmanuel Viennet e6fa0ed8b6 Ajoute plugin pour SVG 2022-08-03 17:17:13 +03: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 8de14ea8bf fichiears manquants 2022-08-03 08:40:54 +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 010573a672 ajouts exemples 2022-08-02 20:58:45 +02:00
Emmanuel Viennet 4955012dca API: résultats toujours code_ine et code_nip 2022-07-29 16:39:24 +03:00
Emmanuel Viennet 133f1663b9 API: résultats toujours code_ine et code_nip 2022-07-29 16:38:45 +03: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 34afa7e9d1 compléments docs (suite) 2022-07-29 09:37:20 +02:00
Emmanuel Viennet f8a6c7f864 API: permission et codes status. 2022-07-28 09:42:42 +03: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 bccd7ac82e Ajout page pour Dev API 2022-07-27 10:05:37 +03:00
Jean-Marie PLACE 3401b09701 complements (fichiers examples separes & maj carte 2022-07-26 09:42:22 +02:00
Emmanuel Viennet 99cfc106b9 évite espaces dans noms fichiers 2022-07-25 14:38:11 +03: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 9d8a468f5e ajout carte_API 2022-07-25 10:07:48 +02:00
Emmanuel Viennet 5f97c42dae API: modif structure 2022-07-25 10:13:57 +03:00
Emmanuel Viennet e32095e114 API: WIP 2022-07-24 10:25:14 +03:00
Emmanuel Viennet 38d103cfa7 list-roles 2022-07-24 10:24:04 +03:00
Emmanuel Viennet f611923686 Début de mise à jour doc API 2022-07-16 22:48:40 +03:00
Emmanuel Viennet 6a07f6e5af Ignore vscode files 2022-07-16 15:02:23 +02:00
Emmanuel Viennet aa90c15bde Mise en forme + nom auteur 2022-07-13 20:04:20 +02:00
Emmanuel Viennet 458661543a Nouvelle doc module relations entreprises par Arthur. 2022-07-13 19:55:06 +02:00
Emmanuel Viennet 01e3c36b7a précisision RCUE 2022-07-13 19:54:31 +02:00
Emmanuel Viennet 443ff7a2c2 Bulletins: nouveaux champs pour jury BUT 2022-07-08 18:04:47 +02:00
Emmanuel Viennet 8bd336bc08 modif bulletin adhésion 2022-07-05 17:41:11 +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 60abfeb3e8 Diverses précisions 2022-06-28 19:02:55 +02:00
Emmanuel Viennet 2d77e8e358 Mise à jour liste utilisateurs 2022-06-28 19:02:13 +02:00
Emmanuel Viennet 6448fb6a07 BUT: modélisation validations jury 2022-05-25 08:19:52 +02:00
Emmanuel Viennet f56030422e Détails modélisation parcours BUT 2022-05-21 23:49:31 +02:00
Emmanuel Viennet 533a698a09 API: ajout annee_scolaire 2022-05-17 10:39:52 +02:00
Emmanuel Viennet f5c93d1a3f Déatils config mail 2022-05-16 07:50:45 +02:00
Emmanuel Viennet 591d622f07 API: wip 2022-05-13 12:20:13 -04:00
Emmanuel Viennet 17b262178d API: Modif /evaluations 2022-05-13 12:07:19 -04:00
Emmanuel Viennet 003158e9b5 API: présentation des routes 2022-05-13 11:24:58 -04:00
Emmanuel Viennet 3e85d45f94 Evolution de l'API 2022-05-07 10:32:11 +02:00
Emmanuel Viennet e94061c214 Evolution de l'API 2022-05-07 08:33:00 +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 cbeb1fa945 mise en forme 2022-05-06 17:40:08 +02:00
Emmanuel Viennet 29bd44fc2e Doc tests API 2022-05-06 17:36:19 +02:00
leonard_montalbano a3e6d1f340 Mise à jour du 05/05/2022 2022-05-05 12:02:45 +02:00
leonard_montalbano fba82c37c8 mise à jour des exemples de résutats 2022-05-04 16:31:52 +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 5fd83c918a correction d'exemples de résultats 2022-05-03 16:16:04 +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 fd48c95888 passage sous pretty print des parties Json 2022-05-02 09:41:45 +02:00
Emmanuel Viennet 16b9dbe6cb Détails modélisation BUT 2022-05-02 08:25:12 +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 5bb2f166cc mise à jour de la doc de la nouvelle api au 28/04/2022 2022-04-28 11:46:59 +02:00
Emmanuel Viennet 8d9cb5fae7 Qq précisions sur l'install 2022-04-27 22:31:31 +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 1b61d49d63 merge origin master 2022-04-26 16:57:22 +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 5c8de2b9f2 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-04-26 16:15:35 +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 42f4fe05ff Correction Guide Config. 2022-04-24 23:19:00 +02:00
Emmanuel Viennet 044c213455 Détail ssur parcours BUT 2022-04-24 22:43:36 +02:00
Emmanuel Viennet 9352de83b4 Material Theme + styles custom 2022-04-24 16:32:20 +02:00
Emmanuel Viennet f26fdb2478 détails 2022-04-24 16:31:39 +02:00
Emmanuel Viennet db7dc8cabc Modélisation parcours BUT 2022-04-23 13:18:39 +02:00
Emmanuel Viennet a9caa7625d ajout précision sur config avec proxy 2022-04-13 11:17:23 +02:00
Emmanuel Viennet bc6b790bbf MAJ conseils dev. Suppression de qq docs obsolètes. 2022-04-02 08:23:13 +02:00
Emmanuel Viennet 24acf76dd4 ajout clé publique repository 2022-03-01 23:29:22 +01:00
Emmanuel Viennet 94ee633f11 Petites corrections 2022-02-27 09:28:16 +01:00
Emmanuel Viennet 53dc2982cb Mise à jour doc logos, documents, PV 2022-02-27 09:19:20 +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 1250f69535 mise a jour doc fond de page 2022-02-26 14:34:52 +01:00
Emmanuel Viennet e99a066894 Mise à jour liste commandes 2022-02-13 15:16:39 +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 d519723e02 mention du reglage de SCODOC_MAIL_FROM par le .env 2022-02-13 14:56:40 +01:00
Emmanuel Viennet 110db52994 Note sur les caches 2022-02-12 12:02:21 +01:00
Emmanuel Viennet 9fadb97c9f petites corrections 2022-02-02 08:27:06 +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 fc6e6e72d2 complément sur doc AdminUsers.md 2022-02-02 07:59:29 +01:00
Jean-Marie Place 570b10ae9d Mise à jour de 'docs/ScoDocApogee.md' 2022-02-02 06:18:42 +01:00
Emmanuel Viennet f8b569e6e8 bonus dispos 2022-02-01 11:39:04 +01:00
Emmanuel Viennet c3065894b6 active extension footnotes 2022-02-01 07:50:34 +01:00
Emmanuel Viennet dfa1a388db note sur BUT 2022-02-01 07:10:59 +01:00
Emmanuel Viennet 0ff8b9e869 instructions restauration sauvegarde 2022-02-01 07:10:16 +01:00
Emmanuel Viennet 46e633b129 WIP API 2022-01-08 14:33:21 +01:00
Emmanuel Viennet bfdae65a39 WIP API 2022-01-08 00:58:33 +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 8d33ce1758 mise en forme 2021-12-31 14:39:21 +01:00
leonard_montalbano 3e56366f0c ajout du .idea/ dans le gitignore 2021-12-31 14:24:59 +01:00
leonard_montalbano 56c02f6a6c correction de différents points sur la doc api 2021-12-31 12:07:36 +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 e452cbe2d6 a 2021-12-31 11:58:45 +01:00
leonard_montalbano ca20ff89e1 correctifs sur différents points de la doc 2021-12-31 11:29:27 +01:00
Emmanuel Viennet 7e32332f4c mise en forme 2021-12-30 13:40:30 +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 126c034c58 typos + compléments 2021-12-30 11:42:18 +01:00
Emmanuel Viennet e7ae9a6a91 blocs de code: mode bash 2021-12-30 10:55:32 +01:00
Emmanuel Viennet ccb90ef8b9 mise en forme 2021-12-30 10:15:20 +01:00
Emmanuel Viennet 78a51f8697 ajouts et corrections 2021-12-30 09:58:58 +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 c893c96b3b complémennts pull_request 2021-12-29 23:29:24 +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 4b9a044bb2 maj liste commandes + détails internes 2021-12-21 17:12:58 +01:00
leonard_montalbano d7df642b71 modification suite à la réunion du 20/12/2021 2021-12-21 15:56:23 +01:00
Emmanuel Viennet 1f9a09c70c Ajout commande user-role 2021-12-21 00:03:35 +01:00
Emmanuel Viennet bb1caaf32c Merge remote-tracking branch 'origin' 2021-12-20 19:40:59 +01:00
Emmanuel Viennet 6d1e4d1ece début doc interne développeurs 2021-12-20 19:34:55 +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 4d56488159 ajout api logos 2021-12-20 17:44:45 +01:00
Jean-Marie PLACE 6360782fb4 correctif mise en forme doc logo 2021-12-20 17:23:45 +01:00
Emmanuel Viennet e62c81338d petites corrections 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 7cd56f4059 corrections et questions 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 bec9f78764 modif 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 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 e76e441e90 complément doc sur logos 2021-12-12 23:16:21 +01:00
Emmanuel Viennet 69e528a5bc ajout methode donnant les groupes d'un étudiant 2021-11-19 17:14:58 +01:00
Emmanuel Viennet d409fd66a9 mise en page + qq remarques sur l'API 2021-11-19 16:36:03 +01:00
Emmanuel Viennet fe583938e0 Documention future API REST 2021-11-19 11:18:02 +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 ca7a2fe546 revision doc api scodoc9 2021-11-18 17:16:04 +01:00
leonard_montalbano f280ecf541 amélioration suite au retour du pdf 2021-11-16 15:17:07 +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 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 a176adf27b ajout d'informations complémentaires sur la doc scodoc9 2021-11-10 13:22:10 +01:00
Emmanuel Viennet 2db0930bca ajout evaluation_listenotes et indique noms dans future API) 2021-11-09 22:24:57 +01:00
Emmanuel Viennet 2d4b651ec7 debut doc nouvelel API à reformatter 2021-11-09 21:37:37 +01:00
Emmanuel Viennet b125025eca roadmap 2021-11-09 21:36:36 +01:00
Emmanuel Viennet d5f2acd896 added groups_view 2021-11-01 19:06:52 +01:00
Emmanuel Viennet 6ed0ab6ab7 modif page API 2021-10-28 10:23:28 +02:00
Emmanuel Viennet c8b5c47c66 Lien vers page BUT 2021-10-24 19:23:08 +02:00
Emmanuel Viennet 89fe455235 Petit rafraichissement: structure menus, FAQ, ... 2021-10-24 19:18:57 +02:00
Emmanuel Viennet 61db2b779f ajout sections sur validation à compléter 2021-10-02 09:24:21 +02:00
Emmanuel Viennet 6f336b2008 typos 2021-10-01 21:12:41 +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 b2ad4cadf5 Mise à jour de 'docs/GuideInstallDebian11.md' 2021-10-01 18:08:13 +02:00
Emmanuel Viennet a54a0db0f1 ajout exemple Lille 2021-10-01 16:05:32 +02:00
Emmanuel Viennet e67b8690c1 ajout page BUT 2021-10-01 16:04:34 +02:00
Emmanuel Viennet f4c423a808 js pour pymdownx (équations LaTeX) 2021-09-30 20:50:50 +02:00
Emmanuel Viennet 970923d5e3 info sur locale UTF-8 durant l'install 2021-09-30 20:09:10 +02:00
Emmanuel Viennet 206c90e7f5 détails install 2021-09-30 16:11:55 +02:00
Emmanuel Viennet 4748be09d8 bulletins adhesions 2021-2022 2021-09-30 12:02:20 +02:00
Emmanuel Viennet 503bfca6e2 détail ssur install ScoDoc 9 2021-09-24 20:31:25 +02:00
Emmanuel Viennet e713143096 infos sur ScoDoc 9 2021-09-14 12:31:16 +02:00
Emmanuel Viennet f9c2ef5956 updates pour ScoDoc 9 2021-09-06 18:43:33 +02:00
Emmanuel Viennet d254eb46f8 updates pour ScoDoc 9 2021-09-06 12:35:49 +02:00
Emmanuel Viennet 8e6a1e9fe1 procedure de migration 2021-08-26 14:23:51 +02:00
Emmanuel Viennet c0bb9a6ba0 .env dans /opt/scodoc-data 2021-08-25 22:37:03 +02:00
Emmanuel Viennet 6b1da462e7 nouvelle procedure d'install pour ScoDOc 9 2021-08-25 18:12:05 +02:00
Emmanuel Viennet 46ea96bbba Install ScoDoc 9 2021-08-24 19:51:54 +02:00
Emmanuel Viennet 0053380c96 début de mise à jour pour ScoDoc 9 2021-08-22 08:14:55 +02:00
Emmanuel Viennet c829137d08 Ajout document explications export Apogée 2021-06-29 16:39:07 +02:00
151 changed files with 24162 additions and 776 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

@ -3,32 +3,217 @@
ScoDoc gère sa liste d'utilisateurs (enseignants, secrétaires) dans
une base de données SQL.
### Principes généraux
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Il est prévu de développer un connecteur vers LDAP, mais ce n'est pas encore disponible (avis aux volontaires, voir https://www-lipn.univ-paris13.fr/projects/scodoc/ticket/140)
Depuis ScoDoc 9.0, la liste des utilisateurs est enregistrée dans la base de
données unique SCODOC (en production) (voir la partie implémentation pour plus
de détails).
Les entités gérées par scodoc sont :
- Les utilisateurs;
- les rôles;
- en liaison avec les départements.
#### L'entité utilisateur
- possède les propriétés habituelles (nom, prénom, user_name, email);
- peut être associé à un département ou pas (cas d'un administrateur gérant
plusieurs départements);
- assure un ou plusieurs rôles.
#### L'entité rôle
Un rôle est le regroupement d'un certain nombre de privilèges.
C'est généralement la combinaison d'un département et d'un type d'utilisation.
Actuellement au nombre de quatre (d'autres sont prévus, notamment pour le module
relations entreprises) :
- Administrateur
- Secrétariat
- Enseignant
- Observateur
Par ailleurs, le contexte d'utilisation donne certains privilèges (par exemple
la faculté de saisir des notes, de justifier des absences, de modifier la
définition des programmes, ...).
_Exemple:_
L'utilisateur 'Dupont' est responsable ScoDoc pour son département *RT* mais
intervient également en enseignement au département *GEII*.
On pourra lui attribuer les rôles `AdminRT` et `EnsGEII`, ce qui lui permettra :
- de gérer les utilisateurs du (seul) département RT :
Privilèges associés : `Gérer les utlisateurs (Sco Users Manage)`, `Changer les
formations (Sco Change Formation)`, ...
- d'accéder aux vues enseignant pour le département GEII :
Privilèges associés : `Voir les parties pour les enseignants (Sco View Ens)`,
`Saisir des absences (Sco Change Absences)`, ...
Pour une description plus fine des privilèges, voir
[ConfigPermissions](ConfigPermissions.md)
### Opérations et cycle de vie des utilisateurs
Un compte utilisateur peut être modifié par 3 types d'utilisateurs :
- L'utilisateur lui-même;
- un administrateur du département de rattachement de l'utilisateur;
- le super administrateur.
Les opérations existantes sont :
- La création;
- la demande de renouvellement de mot de passe;
- la désactivation.
#### Notes:
- La suppression d'un utilisateur est impossible (nécessité de garder la trace
des anciens historiques), mais on peut le rendre inactif (il n'apparait alors
pas dans la liste).)
- Le mécanisme de changement de mot de passe de ScoDoc 7 (par envoi d'un nouveau
mot de passe par mail) a été remplacé par l'ajout de la mention suivante dans
le formulaire de connexion :
` En cas d'oubli de votre mot de passe cliquez ici pour le réinitialiser. `
#### Création d'un utilisateur (par formulaire)
La création d'un utilisateur peut être faite par un administrateur ou super
administrateur. Le lien `Ajouter un utlisateur` permettant cela se trouve dans
la page de gestion des utilisateurs (accessible par le menu latéral)
**Le mot de passe** peut être
- saisi par le créateur de l'utilisateur (il appartient alors au créateur de
communiquer ce mot de passe à l'utilisateur final);
- ou initialisé à une valeur non communiquée, à charge pour l'utilisateur final
de finaliser la création du mot de passe avant d'utiliser son accès (il y est
invité par un email qui lui est envoyé).
**Les options de création (mail)** permettent également de choisir parmi les 3
scenarii suivants :
1. un message d'accueil l'invitant à initialiser son mot de passe;
2. un message de bienvenue simple;
3. aucun message.
Une case à cocher `envoyer un mail d'accueil à l'utlisateur` permet de choisir
la troisième option (si décochée), sinon la case suivante `indiquer par mail de
changer le mot de passe initial` permet de choisir entre l'option 1 et l'option
2.
Dans tous les cas les mails seront envoyés avec l'adresse de réponse précisée par la valeur de la variable d'environnement
`SCODOC_MAIL_FROM` (par défaut `no-reply@{serveur_mail}`). Cette variable peut être initialisée dans le fichier .env par exemple avec la ligne:
```bash
SCODOC_MAIL_FROM=no-reply@univ-exemple.fr
```
**Le département d'appartenance** peut être choisi si le créateur est
administrateur pour plusieurs départements. Il aura alors le loisir
de sélectionner l'un des départements qu'il administre (liste déroulante).
#### Création en masse (fichier xlsx)
Le super-administrateur (et lui seulement) peut également créer des comptes en
masse par téléversement d'un fichier au format `.xlsx` par le biais du lien
`importer des utilisateurs` de la même page de gestion des utilisateurs.
La page affichée lui permet d'importer un modèle qu'il doit compléter et re-soumettre à ScoDoc
selon le même schéma que la saisie de note par fichier Excel.
Les colonnes à remplir sont les suivantes :
- `user_name`: le nom de connexion de l'utilisateur; (obligatoire, unique dans scodoc)
- `nom`: le nom de l'utilisateur; (obligatoire)
- `prenom`: le prénom de l'utilisateur; (obligatoire)
- `email`: l'email de l'utilisateur; (obligatoire, unique dans scodoc)
- `roles`: le ou les rôles attribués à l'utilisateur séparés par des virgules (exemple `Admin_RT, Ens_GEII`)
- `dept`: le département de rattachement de l'utilisateur (acronyme, en lettres capitales).
_Note_:
- Tous les utilisateurs sont créés ou bien aucun.
- Un mail est envoyé à chaque utilisateur nouvellement créé.
#### Changement du mot de passe
Deux circonstances sont envisagées.
##### Oubli de mot de passe
Lorsqu'un utilisateur a perdu son mot de passe, il a la possibilité de retrouver
son accès sans intervention d'un administrateur. Il lui suffit de demander la
réinitialisation par le lien situé sur la page de connexion. Après renseignement
de son email (qui est maintenant identifiant dans scodoc), un mail lui est
envoyé. ce mail contient un lien comportant un jeton à durée limitée. Ce lien
renvoie vers la page permettant de redéfinir le mot de passe de l'utilisateur.
##### Edition du profil
Si l'utilisateur peut se connecter, il peut éditer son profil (et par là,
modifier son email et/ou son mot de passe). La barre latérale de l'écran
principal de scodoc affiche dans le coin supérieur gauche la version courante de
scodoc ainsi que l'identification de l'utilisateur actuel. Un clic sur le nom
permet à l'utilsateur d'éditer son profil.
#### Activation/désactivation
Une fois créé, le compte utilisateur conserve son existence. Il peut cependant être rendu inactif:
- soit à l'expiration de la date de validité spécifiée à la création ou lors d'un modification
- soit directement par un administrateur.
Quelle que soit la procédure, le compte existe encore et conserve son email (il
n'est donc pas possible de créer un nouveau compte associé au même email). Il
est simplement impossible de se connecter ou de modifier le profil de ce compte
par l'utilisateur lui-même.
### Implémentation (pour les développeurs)
Le graphe d'état ci-dessous explicite les différents états que peux prendre un
compte utilisateur en fonction des opérations qu'il subit.
On notera:
1. Que la création (1) peut le placer initialement dans deux états différents
selon le mode de création choisi.
2. Que l'on peut demander le renouvellement du mot de passe plusieurs fois même
sans avoir complété la procédure.
3. Que les états `créé`et `créé + ticket`permettent la connexion (sous réserve
de la connaissance du mot de passe).
### Base de données utilisateurs
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**.
<img src="/fig/GrapheUser.png" />
La table **sco_users** contient:
**SCODOC**.
**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")
La table **user** contient:
| **Colonne** | **Type** | Contenu | Modifié par |
|-------------------|-----------------------------|--------------------------------------------------------------|----------------|
| id | integer | identifiant interne unique | 1 |
| user_name | character varying(64) | nom de login | 1 |
| email | character varying(120) | adresse mail (unique dans la base) | 1, 6 |
|nom | character varying(64) | | 1, 6 |
|prenom | character varying(64) | | 1, 6 |
|dept | character varying(32) | département de rattachement (identifiant numérique) | 1, 6 |
|active | boolean | | 1, 7, 9 |
|password_hash | character varying(128) | hash password | 1, 6 |
|password_scodoc7 | character varying(42) | deprecated (utilisé lors de la migration scodoc7 > scodoc9) | 1, 2, 4, 5, 6 |
|last_seen | timestamp without time zone | date de dernière connexion | 1, A |
|date_modif_passwd | timestamp without time zone | | 1, 2, 4, 5, 6 |
|date_created | timestamp without time zone | | 1 |
|date_expiration | timestamp without time zone | | 1 |
|passwd_temp | boolean | deprecated | |
|token | text | dernier token émis (changement de mot de passe) | 1a, 3 |
|token_expiration | timestamp without time zone | date d'expiration du dernier token émis | 1a, 3 |
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> encodage `utf-8`, sauf si vous avez modifié l'installation.
Pour la signification des rôles et l'utilisation du département, voir [ConfigPermissions](ConfigPermissions.md).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> encodage `utf-8`, sauf si vous avez modifié l'installation.
Pour la signification des rôles et l'utilisation du département, voir
[ConfigPermissions](ConfigPermissions.md).

View File

@ -38,7 +38,7 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
"""Un exemple simple de bulletin de notes en version PDF seulement.
Part du bulletin standard et redéfini la partie centrale.
"""
description = 'exemple (ne pas utiliser)' # la description doit être courte: elle apparait dans le menu de paramètrage
description = 'exemple (ne pas utiliser)' # la description doit être courte: elle apparait dans le menu de paramétrage
supported_formats = [ 'pdf' ] # indique que ce générateur ne peut produire que du PDF (la version web sera donc celle standard de [ScoDoc](ScoDoc.md))
# En général, on veut définir un format de table spécial, sans changer le reste (titre, pied de page).

View File

@ -3,12 +3,31 @@
ScoDoc est un logiciel libre et gratuit, Open Source.
Le développement du projet a été porté par son créateur, Emmanuel Viennet, professeur à l'université Sorbonne Paris Nord (ex Paris 13), plusieurs fois chef du département Réseaux et Télécommunications de l'IUT de Villetaneuse et Président de l'ACD R&T. Plusieurs collègues bénévoles ont contribué, corrigeant ou ajoutant des fonctions. Ils sont enseignants ou BIATSS dans les IUT de Colmar, Ville d'Avray, Grenoble, Le Havre, Lille, Nantes, pour ne citer que ceux-là.
Le développement du projet a été porté par son créateur, Emmanuel Viennet,
professeur à l'université Sorbonne Paris Nord (ex Paris 13), plusieurs fois chef
du département Réseaux et Télécommunications de l'IUT de Villetaneuse et
Président de l'ACD R&T. Plusieurs collègues bénévoles ont contribué, corrigeant
ou ajoutant des fonctions. Ils sont enseignants ou BIATSS dans les IUT de
Colmar, Ville d'Avray, Grenoble, Le Havre, Lille, Nantes, pour ne citer que
ceux-là.
Le développement d'un logiciel de cette ampleur prend du temps et demande des moyens matériels : serveurs, machines de développement et de test. La possibilité de recruter des stagiaires, apprentis ou CDD pour travailler sur le projet a souvent été évoquée. Pour se donner ces possibilités et pérenniser le projet, nous avons créé début 2020 une association à but non lucratif (loi 1901).
Le développement d'un logiciel de cette ampleur prend du temps et demande des
moyens matériels : serveurs, machines de développement et de test. La
possibilité de recruter des stagiaires, apprentis ou CDD pour travailler sur le
projet a souvent été évoquée. Pour se donner ces possibilités et pérenniser le
projet, nous avons créé début 2020 une association à but non lucratif (loi
1901).
Les établissements ou départements qui utilisent ScoDoc sont encouragés à adhérer à l'association. Leur cotisation permettra de financer les actions de l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise à jour et support technique.
Les établissements ou départements qui utilisent ScoDoc sont encouragés à
adhérer à l'association. Leur cotisation permettra de financer les actions de
l'association et leur permettra d'accéder aux nouvelles fonctionnalités, mise à
jour et support technique.
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion PDF](papers/Adhesion-2020-Association-ScoDoc.pdf) ([version Word](papers/Adhesion-2020-Association-ScoDoc.docx)), à renvoyer à <emmanuel.viennet@gmail.com>.
Plusieurs types d'adhésion sont possibles, voir le [bulletin d'adhésion
PDF](papers/Adhesion-2022-2023-Association-ScoDoc.pdf) ([version
Word](papers/Adhesion-2022-2023-Association-ScoDoc.docx)), à renvoyer à
<emmanuel.viennet@gmail.com>. (note: toutes les informations nécessaires à la
"création fournisseur" sont sur le bulletin d'adhésion).
Je vous remercie de votre support qui rendra possible la pérennité du projet ScoDoc
Nous vous remercions de votre support qui rendra possible la pérennité du projet
ScoDoc.

319
docs/BUT.md Normal file
View File

@ -0,0 +1,319 @@
# Le Bachelor Universitaire de Technologie (BUT)
Formation en trois ans dispensées par les IUT français, introduite en 2021, et
basée sur une forme d'approche par compétences nécessitant un système
d'évaluation spécifique.
Cette page décrit les principaux éléments du BUT utiles à comprendre pour le
gérer avec ScoDoc. Pour les curieux, la page
[modélisation des parcours BUT](ModelisationParcoursBUT.md)
donne quelques détails sur la façon dont ScoDoc organise les objets du BUT.
## UE, modules, évaluations
- UE : Unité d'Enseignement, associée à des crédits (ECTS) et validée (ou non)
en jury. Une UE est rattachée à une *formation*.
- Module: dans ScoDoc, un module désigne une dispositif pédagogique, évalué.
Dans les formations BUT, le module prend la forme d'une *ressource* ou d'une
SAE (*situation d'apprentissage et d'évaluation*). Un module est rattaché à
une (seule) UE.
Dans le BUT, un module est aussi associé à une ou ou plusieurs UE, cette
association étant affecté de *coefficients* (une valeur par UE associée).
- Évaluation: dispositif produisant une note pour les étudiants inscrits à un
module. L'évaluation est associée à des coefficients.
## Structure des formations par compétences de type BUT
L'architecture d'une formation BUT est définie par les éléments suivants:
- Compétence
- Niveau
- Composantes essentielles ("En respectant les règles métiers...")
- Situations professionnelles ("Surveillance de la qualité de la
production...")
- Niveaux de compétence: associés à une année. Attention, le niveau 1 commence
parfois en deuxième année.
- Numéro (1, 2, 3)
- Titre
- Apprentissages critiques (AC): "Identifier les dysfonctionnements du réseau local..."
Chaque niveau se décompose en deux UE (aka "regroupement cohérent d'UE"), en
semestres impair et pair d'une année scolaire.
La figure ci-dessous indique la correspondance entre compétences (découpées en
niveaux) et UEs.
<img src="/fig/but-competences-ues.png" width="70%">
## Calcul des notes
Les rôles des SAÉ et ressources étant symétriques, on appellera dans la suite (et
dans ScoDoc) *module* un objet de type SAÉ _ou_ ressource.
Dans la suite, on considère les poids et coefficients toujours positifs ou
nuls (pas de coefficients négatifs).
### Coefficients des SAÉ et ressources
Les coefficients des modules (ressources et SAÉ) sont fixés par le PN (*adapté
localement*).
Traditionnellement, chaque module $m$ est noté par une note (moyenne de ses
évaluations) représentée par le nombre $\mu_m$. Si $c_{u,m}$ désigne le coefficient du
module $m$ dans l'UE $u$, la moyenne d'UE de l'étudiant est
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \mu_m$$
Mais pour le BUT, on souhaite avoir des évaluations associées à un
sous-ensemble de compétences (par exemple via des *apprentissages critiques*),
ce qui se traduit par une note envoyée vers certaines UE mais pas toutes, comme
on le voit dans exemples suivants:
L'exemple ci-dessous est un extrait du référentiel de compétence du BUT GEII. On
voit que les SAÉ et les ressources sont affectées de coefficients dans les deux
UE de ce semestre (S2), ici à parts égales sauf pour les SAÉs 2.1 et 2.2, dites
"mono-compétences", qui contribuent chacune à une seule UE.
<img src="/fig/but-ref-comp-ex-geii.jpg" width="70%">
Un autre exemple, cette fois avec des coefficients différents et un nombre plus
réduit d'apprentissages critiques:
![but-ref-comp-ex-commente](fig/but-ref-comp-ex-commente.png)
### Note d'un module
La note (moyenne) d'un module (SAÉ ou ressource) se calcule à partir de ses
évaluations. Chaque évaluation est pondérée, par un poids $p$ est fixé par
l'enseignant. Ce poids joue le même rôle que le coefficient d'une évaluation
classique, mais peut se décliner en plusieurs valeurs, une par UE associée au
module.
Soit $n_e$ la note à l'évaluation $e$ du module $m$, et $p_{e, u}$ son poids
vers l'UE $u$. La somme des notes d'un module pour l'UE $u$ est:
$$n_u = \sum_e p_{e,u} \, n_e$$
Chaque UE indiquée par le référentiel de formation doit être évaluée: si le
coefficient du module vers l'UE $u$ est non nul, la somme des poids vers
une UE $u$ *doit* être non nulle; si ce n'est pas le cas, le module sera déclaré
*non conforme* et le jury ne pourra pas être tenu.
### Moyenne de module (SAÉ ou ressource)
La moyenne d'un étudiant dans un module est un vecteur, car on a une note moyenne par UE:
$$\mu_{m, u} = \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{u,e}}$$
Toutefois, une moyenne *scalaire* (un nombre entre 0 et 20) est calculée à
titre indicatif (et sera éventuellement utilisée dans certaines fonctions de
ScoDoc conçues avant le BUT):
$$\mu_m = \frac{\sum_e (\sum_u p_{e,u}) \, n_e}{\sum_{u,e} \, p_{u,e}}$$
### Calcul moyenne d'UE
On va considérer les coefficients de modules et d'évaluations:
$$\mu_u = \frac{1}{\sum_m c_{u,m}} \, \sum_{m \in u} c_{u,m} \, \frac{\sum_e p_{e,u} \, n_e}{\sum_{e} \, p_{e,u}}$$
L'exemple suivant illustre ce mode de calcul:
<img src="/fig/but-exemple-calcul-notes.png" width="70%">
Par ailleurs, il est (parfois, peut-être) utile de calculer des moyennes par
pôles au sein de l'UE: pôle SAÉ, pôle ressource.
### Validation d'une UE
La validation ou non d'une UE dépend uniquement de la moyenne générale (et des
conditions habituelles d'assiduité et de défaillance spécifiées dans les
règlements des établissements):
<img src="/fig/but-validation-ue.png" width="50%">
Voir plus loin la gestion du parcours et les règles d'obtention du diplôme, qui
peuvent entrainer la validation d'UE a posteriori.
### Capitalisation
Les UE sont capitalisables, c'est à dire qu'un étudiant conserve son UE s'il
arrête temporairement ses études ou redouble un semestre.
En cas de redoublement, l'étudiant qui choisi de répéter une UE conserve le
résultat antérieur sauf s'il obtient mieux.
### Moyenne générale
La validation du BUT ne considère pas de "moyenne générale": chaque
regroupement d'UE est considéré indépendamment (aucunes compensations entre UE
relevant de compétences différentes).
Cependant, ScoDoc calculera une moyenne générale indicative, utile pour
certaines opérations (tri de tableaux, création de groupe de niveaux semblables,
avis de poursuite d'études, etc.).
Cette moyenne sera calculée en utilisant les ECTS de chaque UE du semestre
considéré:
$$ g = \frac{1}{\sum_{u \in \cal S} \mbox{ects}_u} \sum_{u \in \cal S} \mbox{ects}_u \, \mu_u $$
### Passage d'une année à l'autre
Les conditions de passages vers l'année suivante sont:
1. Moyenne supérieure ou égale à 10/20 obtenue à plus de de la moitié des
regroupements cohérents 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 très similaire à celle du DUT, avec moins
de décisions ad-hoc (compensations plus simples, moins de cas de mise en attente).
- Validation des semestres (bien que cela ait peu de conséquences concrètes
pour les semestres impairs.
- Règles de compensation au sein de chaque niveau, pour validation de l'année.

View File

@ -3,14 +3,23 @@
*Tout ce que vous avez toujours voulu savoir sur le calcul des moyennes...*
**Attention :** Les informations ci-dessous s'appliquent aux formations traditionnelles.
Pour les formations par compétences, voir [la page dédiée au BUT](BUT.md).
### En résumé:
A chaque instant, ScoDoc prend en compte les notes des évaluations "complètes" (dans lesquelles toutes les notes ont été saisies ou bien signalées "en attente" avec le code ATT. Les évaluations partiellement saisies ne sont pas prises en compte, sauf si l'option "*prise en compte immédiate*" a été cochée sur l'évaluation.
A chaque instant, ScoDoc prend en compte les notes des évaluations "complètes"
(dans lesquelles toutes les notes ont été saisies ou bien signalées "en attente"
avec le code ATT. Les évaluations partiellement saisies ne sont pas prises en
compte, sauf si l'option "*prise en compte immédiate*" a été cochée sur
l'évaluation.
Les moyennes de modules sont obtenues en calculant dans chacun la moyenne pondérée des notes disponibles, en utilisant les coefficient des évaluations.
Les moyennes de modules sont obtenues en calculant dans chacun la moyenne
pondérée des notes disponibles, en utilisant les coefficient des évaluations.
Les moyennes d'UE et générale sont calculées à partir des moyennes de modules, en utilisant les coefficients du programme pédagogique (dénommé dans ScoDoc "formation").
Les moyennes d'UE et générale sont calculées à partir des moyennes de modules,
en utilisant les coefficients du programme pédagogique (dénommé dans ScoDoc
"formation").
Plus de détails ci-dessous.
@ -28,26 +37,42 @@ Chaque évaluation produit des notes de différents types:
* note excusée: non pris en compte
Chaque étudiant a donc un nombre variable de notes à prendre en compte dans chaque module. Chaque note est associée à un coefficient: le coefficient de l'évaluation dans le module.
Chaque étudiant a donc un nombre variable de notes à prendre en compte dans
chaque module. Chaque note est associée à un coefficient: le coefficient de
l'évaluation dans le module.
La moyenne de module est la somme pondérée par le coefficient des évaluations des notes aux évaluations prises en compte, sauf si on a défini une formule spécifique.
La moyenne de module est la somme pondérée par le coefficient des évaluations
des notes aux évaluations prises en compte, sauf si on a défini une formule
spécifique.
#### Formules de calcul spéciales
Il est possible de définir des formules de calcul spéciales pour calculer les moyennes. Ces formules sont alors utilisées par ScoDoc à la place de la moyenne pondérée standard. Voir [FormulesCalculUtilisateur](FormulesCalculUtilisateur.md) pour plus d'informations.
Il est possible de définir des formules de calcul spéciales pour calculer les
moyennes. Ces formules sont alors utilisées par ScoDoc à la place de la moyenne
pondérée standard. Voir
[FormulesCalculUtilisateur](FormulesCalculUtilisateur.md)
pour plus d'informations.
### Moyennes d'UE
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).
Comme pour le calcul des moyennes de modules, il est possible de définir une
formule ad-hoc pour le calcul de la moyenne d'UE (cela est toutefois rarement
nécessaire, et il est recommandé de ne pas abuser de cette fonctionnalité: la
présence de formules ralentit considérablement les calculs).
La syntaxe et les variables sont les mêmes que pour les modules; ici, le vecteur
de notes est celui des moyennes de modules (et non des évaluations). Voir
[FormulesCalculUtilisateur](FormulesCalculUtilisateur.md).
La présence de formules d'UE est signalée sur le tableau de bord du semestre.
@ -56,40 +81,59 @@ La présence de formules d'UE est signalée sur le tableau de bord du semestre.
moyenne = moyenne pondérée des moyennes d'UE + bonus sport/culture
Le coef. d'une UE est par défaut la somme des coefs des modules qui la compose (et peut donc différer d'un étudiant à un autre, s'ils ne sont pas inscrits aux mêmes modules).
Le coef. d'une UE est par défaut la somme des coefs des modules qui la compose
(et peut donc différer d'un étudiant à un autre, s'ils ne sont pas inscrits aux
mêmes modules).
Toutefois (depuis mai 2020), il est possible de spécifier un coefficient d'UE dans le programme pédagogique, et de l'utiliser pour calculer la moyenne générale (option "Utiliser les coefficients d'UE pour calculer la moyenne générale"). Dans ce cas, les coefficients des modules ne servent qu'à calculer les moyennes d'UE, qui sont ensuite affectée de leur propre coefficient. De cette façon, les UE pèsent le même poids pour tous les étudiants, quel que soit le nombre de modules auquel l'étudiant est inscrit (ce qui peut sembler étrange: bien réfléchir avant de choisir le mode de calcul adapté à sa formation).
Toutefois (depuis mai 2020), il est possible de spécifier un coefficient d'UE
dans le programme pédagogique, et de l'utiliser pour calculer la moyenne
générale (option "Utiliser les coefficients d'UE pour calculer la moyenne
générale"). Dans ce cas, les coefficients des modules ne servent qu'à calculer
les moyennes d'UE, qui sont ensuite affectée de leur propre coefficient. De
cette façon, les UE pèsent le même poids pour tous les étudiants, quel que soit
le nombre de modules auquel l'étudiant est inscrit (ce qui peut sembler étrange:
bien réfléchir avant de choisir le mode de calcul adapté à sa formation).
Les modules des UEs de type "Sport & Culture" ne sont évidemment pas pris en compte dans la moyenne pondérée: ils sont utilisés pour calculer le bonus, comme expliqué ci-dessous.
Les modules des UEs de type "Sport & Culture" ne sont évidemment pas pris en
compte dans la moyenne pondérée: ils sont utilisés pour calculer le bonus, comme
expliqué ci-dessous.
### Notes de rattrapage
Dans chaque module, il est possible de définir une évaluation de "rattrapage". Lors de la création (ou modification) de l'évaluation, indiquer le type "Rattrapage":
Dans chaque module, il est possible de définir une évaluation de "rattrapage".
Lors de la création (ou modification) de l'évaluation, indiquer le type
"Rattrapage":
![CreateEvaluationRat.png](screens/CreateEvaluationRat.png)
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
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`.

View File

@ -39,7 +39,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 +53,40 @@ Pour la liste à jour des permissions et leur nom complet, et les associations i
### Rôles associés à chaque permission dans chaque département
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,24 +1,53 @@
# 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 +59,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).

View File

@ -1,17 +1,30 @@
# Contribuer à ScoDoc
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun peut aider, en améliorant la documentation (page, vidéos), en s'abonnant à la liste Notes (voir [listes de diffusion](ListesDeDiffusion.md)) pour y aider les collègues, ou en développant ou testant le logiciel.
ScoDoc est un logiciel libre, et repose sur des volontaires comme vous. Chacun
peut aider, en améliorant la documentation (page, vidéos), en s'abonnant à la
liste Notes (voir [listes de diffusion](ListesDeDiffusion.md)) pour y aider les
collègues, ou en développant ou testant le logiciel.
Le canal de communication entre développeurs est la liste de diffusion mail [scodoc-devel](ListesDeDiffusion.md). Là, vous pourrez demander un compte sur le [git du projet](https://scodoc.org/git), consulter/ajouter des tickets, proposer votre code (*pull requests*).
Les canaux de communication entre développeurs sont d'une part la liste de
diffusion mail [scodoc-devel](ListesDeDiffusion.md), d'autre part un serveur
Discord (accès sur invitation, demander par mail). Vous pourrez demander un
compte sur le [git du projet](https://scodoc.org/git), consulter/ajouter des
tickets, proposer votre code (*pull requests*).
## Contribuer à la documentation
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épot principal](https://scodoc.org/git/viennet/ScoDoc) comporte plusieurs
branches. Voir le [guide pour les développeurs](GuideDeveloppeurs.md).

113
docs/DevAPIPermissions.md Normal file
View File

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

View File

@ -1,106 +1,176 @@
## FAQ
En cours d'élaboration et en vrac...
## FAQ / Questions fréquemment posées
### Le projet ScoDoc
#### Qui sont les développeurs ? Le projet est-il pérenne ?
## Le projet ScoDoc
### 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é.
### 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 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.
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".
### 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.
2. Lorsqu'il n'y a plus de notes, une croix rouge apparait sur le tableau de
bord du module: cliquer dessus pour supprimer l'évaluation.
#### En IUT, comment gérer les licences professionnelles ?
* On peut créer un département regroupant les licences, ou bien rattacher chaque licence à un département existant. Cette dernière solution est préférable si des étudiants de DUT poursuivent en licence (ainsi, on a automatiquement accès à leur parcours complet).
### En IUT, comment gérer les licences professionnelles ?
* On peut créer un département regroupant les licences, ou bien rattacher
chaque licence à un département existant. Cette dernière solution est
préférable si des étudiants de DUT poursuivent en licence (ainsi, on a
automatiquement accès à leur parcours complet).
* La plupart des licences pro durent un an, mais sont gérées comme un seul semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans l'option "*Semestre dans la formation*" (page "*modification du semestre*").
* La plupart des licences pro durent un an, mais sont gérées comme un seul
semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans
l'option "*Semestre dans la formation*" (page "*modification du semestre*").
#### Comment gérer les étudiants les démissionnaires ?
### Comment gérer les étudiants les démissionnaires ?
* Sur la fiche d'un étudiant, on peut choisir plusieurs options:
* *Supprimer cet étudiant* : il sera totalement supprimé de la base, sans remède. Cette option n'est en principe jamais utile, sauf pour corriger une fausse manœuvre au moment des inscriptions.
* *Supprimer cet étudiant* : il sera totalement supprimé de la base, sans
remède. Cette option n'est en principe jamais utile, sauf pour corriger
une fausse manœuvre au moment des inscriptions.
Ou bien au niveau de son inscription dans un semestre, via le menu *Scolarité*:
* *Démission* : l'étudiant restera dans le semestre, mais sera indiqué comme démissionnaire. C'est ce qu'il faut faire quand un étudiant signale son abandon en cours d'année, passé le délai légal ou il peut se désengager (typiquement, après le 15 octobre).
* *Démission* : l'étudiant restera dans le semestre, mais sera indiqué comme
démissionnaire. C'est ce qu'il faut faire quand un étudiant signale son
abandon en cours d'année, passé le délai légal ou il peut se désengager
(typiquement, après le 15 octobre).
* *Désinscrire (en cas d'erreur)* : l'étudiant reste dans ScoDoc, ses données (et ses notes) sont conservées, mais il n'est plus inscrit au semestre et n'apparait plus dans les listes. C'est ce qu'il faut choisir en début d'année, soit en cas d'erreur de manipulation, soit si l'étudiant abandonne en tout début d'année (il ne sera alors pas compté dans les inscrits).
* *Désinscrire (en cas d'erreur)* : l'étudiant reste dans ScoDoc, ses
données (et ses notes) sont conservées, mais il n'est plus inscrit au
semestre et n'apparait plus dans les listes. C'est ce qu'il faut choisir
en début d'année, soit en cas d'erreur de manipulation, soit si l'étudiant
abandonne en tout début d'année (il ne sera alors pas compté dans les
inscrits).
### Configuration
#### 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.
### Mes données sont erronées, que faire ?
En cas de problème (bug, erreur de manipulation, suspicion de piratage),
différents journaux peuvent être consultés.
* 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 utilisateurs autorisés peuvent facilement voir:
* les opérations effectuées sur un étudiant (inscriptions, saisies d'absences,
...), accessibles via le menu "Etudiant" / "Voir le journal..." en haut de sa
fiche individuelle.
* les différentes saisies de notes, via le formulaire de saisie de notes (toutes
les valeurs précédemment saisies sont conservées, ainsi que la date et
l'identité de l'utilisateur ayant effectué la saisie).
#### Administration
Les administrateurs (informaticiens) peuvent aussi consulter les journaux (logs)
du serveur, voir plus loin.s
#### Quel système d'exploitation ?
### Comment signaler un problème ?
Nous vous remercions de nous signaler tous les problèmes que vous rencontrez:
erreurs, comportement bizarre ou malcommode. Nous ne promettons pas de les
régler rapidement, ni même plus tard: le logiciel est fourni sans aucune
garantie. Mais nous faisons de notre mieux:
- si vous êtes utilisateurs, écrire à
[notes@listes.univ-paris13.fr](mailto:notes@listes.univ-paris13.fr).
ou joindre le canal Discord Assistance.
- si vous êtes informaticien et voulez évoquer un problème technique
(développement, installation), écrire à
[scodoc-devel@listes.univ-paris13.fr](mailto:scodoc-devel@listes.univ-paris13.fr).
## Configuration
### Comment changer les logos sur les documents PDF (PV...)
Il faut avoir un compte (web) administrateur sur ScoDoc, et passer
par l'onglet "configuration" accessible sur la page d'accueil.
Voir [la page sur la gestion des logos et images ](GestionLogos.md).
### Administration
### Quel système d'exploitation ?
ScoDoc est accessible depuis n'importe quel navigateur Web (Firefox, Chrome, ...).
Le serveur ScoDoc fonctionne sous linux. Il n'est testé qu'avec Debian (stable). Le script d'installation ( [GuideInstallDebianDix](GuideInstallDebianDix.md) ) assure l'installation de tout les éléments nécessaires au bon fonctionnement de ScoDoc. Une distribution sous forme de container Docker est prévue prochainement.
Le serveur ScoDoc fonctionne sous Linux. Il n'est testé qu'avec Debian (stable).
Le script d'installation ([GuideInstallDebian11](GuideInstallDebian11.md))
assure l'installation de tout les éléments nécessaires au bon fonctionnement de
ScoDoc.
### Quand et comment mettre à jour le logiciel ?
Les mises à jour sont normalement automatiquement appliquées chaque nuit,
assurant la sécurité et l'actualisation de ScoDoc.
Des améliorations et corrections sont fréquemment introduites. Les plus
importantes sont annoncées sur la liste de diffusion
"[scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces)".
Voir aussi la page [MisesAJour](MisesAJour.md).
#### Quand et comment mettre à jour le logiciel ?
Des améliorations et corrections sont fréquemment introduites. Les plus importantes sont annoncées sur la liste de diffusion "[scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces)". Appliquer les mises à jour assez souvent, en suivant les instructions données sur [MisesAJour](MisesAJour.md).
#### Quelles sauvegardes des données ?
### Quelles sauvegardes des données ?
Voir [SauvegardesBases](SauvegardesBases.md).
#### Où sont les journaux (logs) ?
En cas de problème (bug, erreur de manipulation, suspicion de piratage), différents journaux peuvent être consultés.
### Où sont les journaux (logs) ?
* Le journal du serveur Web Apache
Les administrateurs du serveur peuvent consulter:
* Le journal du serveur Web (nginx)
```
/var/log/apache2/scodoc_access.log
/var/log/nginx/scodoc*.log
```
* les opérations effectuées sur un étudiant sont accessibles via le menu "Etudiant" / "Voir le journal..." en haut de la fiche individuelle de l'étudiant.
* le fichier `/opt/scodoc/log/notes.log` reçoit des messages de déboggage de ScoDoc. (c'est là que sont écrits les messages envoyés par la fonction `log()` dans le code de ScoDoc).
* le fichier `/opt/scodoc/log/events.log` reçoit des messages de déboggage du serveur Zope (démarrages/arrêts, erreurs d'authentification, bugs liés à des problèmes d'installation, etc.)
* le fichier `/opt/scodoc-data/log/scodoc.log` reçoit des messages de déboggage
de ScoDoc.
#### 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.
### J'ai installé ScoDoc mais je n'ai pas de certificat SSL !
Il est de plus en plus important d'installer un certificat SSL; les navigateurs
Web sont de plus en plus méfiants et vos utilisateurs seront très gênés si votre
ScoDoc n'a pas de certificat valide. Si votre établissement (par exemple via
RENATER) ne vous fournit pas de de certificat, je conseille de passer par <a
href="https://letsencrypt.org/fr/">Let's Encrypt</a> dont l'utilisation est très
simple et rapide.
Pour vos tests en local, avec Chrome, modifier le paramétrage en réglant: `chrome://flags/#allow-insecure-localhost`.
Pour vos tests en local, avec Chrome, modifier le paramétrage en réglant:
`chrome://flags/#allow-insecure-localhost` (et/ou taper "thisisunsafe" sur la
page bloquée).
#### Comment supprimer un département ?
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 supprimer un département ?
Voir les commandes d'administration dans [GuideConfig](GuideConfig.md)
#### Comment contribuer au projet ?
### Comment contribuer au projet ?
[Voir la page](Contribuer.md).

View File

@ -1,3 +1,10 @@
# Obsolète, non disponible en ScoDoc 9.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> **Les formules utilisateurs, disponibles à titre expérimental en
ScoDoc version 7,
posaient maints problèmes de performance et de maintenance, et ne sont plus
utilisées en ScoDoc 9.** <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" />
## Formules utilisateurs pour le calcul des moyennes
Dans certains cas (assez rares), on veut calculer la note d'un module autrement qu'avec une simple moyenne des notes pondérée par les
@ -32,19 +39,19 @@ Exemples:
* Le max de deux évaluations: `max( notes[0], notes[1] )` (*voir une meilleure approche plus bas*)
* La moyenne classique: `dot( notes, coefs ) / sum(coefs)` (la fonction dot est le produit scalaire habituel)
* Ajouter 1 à la moyenne: `ifelse(moy_valid, min(moy_val + 1, 20), moy)`
* Ajouter 1 à la moyenne: `ifelse(moy_is_valid, min(moy_val + 1, 20), moy)`
* `ifelse(condition, valeur_si_vrai, valeur_si_faux)`
* 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, 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.
* 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)
@ -62,7 +69,7 @@ Ainsi, la moyenne du module `BD1` serait aussi accessible comme la variable `not
Exemple: dans une UE, on veut ajouter la note du module SPORT (qui aurait été défini avec un coefficient nul dans le programme), on écrira:
```
ifelse(moy_valid, min(moy_val+notes['SPORT'], 20), moy)
ifelse(moy_is_valid, min(moy_val+notes['SPORT'], 20), moy)
```

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

53
docs/GestionLogos.md Normal file
View File

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

View File

@ -1,6 +1,8 @@
# Guide ScoDoc pour le chef de département
Dans cette partie, nous allons apprendre à:
# Guide ScoDoc pour le ou la responsable de formation
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)

View File

@ -1,42 +1,38 @@
# Guide pour les administrateurs système de ScoDoc
ScoDoc est prévu pour fonctionner sur un serveur **Linux Debian 10 (Buster) ou 9 (Stretch)**.
L'installation sur tout autre système est peut-être possible avec (beaucoup de) travail et n'est **pas supportée**.
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)
## Configuration et préférences
* [Administration en ligne de commande](GuideConfig.md)
* [ConfigPermissions](ConfigPermissions.md) : description des permissions et rôles utilisés par le système.
* [ Paramétrage](PreferencesScoDoc.md): réglage des préférences
* [Paramétrage](PreferencesScoDoc.md): réglage des préférences
## Autres problèmes
* [Problèmes configuration des envois mail](ProblemesMail.md)
* [Gestion des logos et fonds de documents](GestionLogos.md)
* [ProblemesEtBugs](ProblemesEtBugs.md) en cas d'ennuis.
## Utilisation avancée
* [Interfaçage avec Apogée](ScoDocApogee.md)
* [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications
* [API](ScoDoc9API.md) : API JSON ou XML pour interfaçage avec d'autres applications
* [ServicesXml](ServicesXml.md) : web services XML pour interfaçage avec d'autres applications (obsolète).
* [AdminUsers](AdminUsers.md) : gestion des utilisateurs
* [InterrogationPortail](InterrogationPortail.md) : liaison avec portail

View File

@ -1,50 +1,347 @@
# 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).
## Prise en main et paramétrage de ScoDoc 9
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans
[GuideInstallDebian11](GuideInstallDebian11.md).
## Administration en ligne de commande
Les opérations d'administration se résument à la création de départements, et la
création d'utilisateurs "super admin", c'est à dire admin pour tous les
départements. Le reste des paramétrages (création de comptes, de formations,
import d'étudiants, etc) se fait à partir du logiciel (web).
L'administration se fait dans un terminal connecté au serveur (en général via
ssh), en tant qu'utilisateur `scodoc` (*et non* `root`).
Se connecter et initialiser la session ainsi:
ssh votre.serveur # si nécessaire
su scodoc # idem,
# ou tout autre moyen d'ouvrir un shell comme scodoc
cd /opt/scodoc
source venv/bin/activate
Après quoi, vous pouvez utiliser les commandes décrites ci-dessous. *Attention:
le lancement de chaque commande peut être assez long (quelques secondes) car
toute l'application scodoc est initialisée à chaque fois.*
### Création d'un département
flask create-dept DEPT
`DEPT` est l'acronyme du département, par exemple "RT". Ce département
apparait immédiatement sur la page d'accueil.
### Suppression d'un département
Opération très rarement nécessaire, proposée pour corriger une erreur
immédiatement après la création.
flask delete-dept DEPT
### Création d'un utilisateur
Cette opération s'effectue en général depuis le logiciel, via un formulaire
ou un import Excel. Pour créer un utilisateur depuis le terminal, lancer:
flask user-create LOGIN ROLE DEPT
`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.
```
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 !
## Procédure à suivre pour créer un département et son utilisateur administrateur
Usage: app user-create [OPTIONS] USERNAME ROLE DEPT
Create a new user
Options:
-n, --nom TEXT
-p, --prenom TEXT
Usage: app user-delete [OPTIONS] USERNAME
Try to delete this user. Fails if 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.
```
(*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 (il est possible que votre navigateur vous demande d'accepter un certificat).
Il n'y a pas de "département défini": c'est normal, lors de l'installation nous avons créé des bases de données, mais pas les interfaces web.
* Suivez le lien *Identifiez vous comme administrateur*. L'utilisateur *admin* est administrateur et a tous les droits sur !ScoDoc. C'est le seul à pouvoir créer un nouveau département.
Le logiciel va vous demander de changer immédiatement le mot de passe administrateur.
Entrez l'identifiant et le mot de passe définis pendant l'installation.
Après vous être identifié sur la page d'accueil ScoDoc, vous avez maintenant un lien 'Administration de ScoDoc' qui
vous permet d'ajouter un département, puis des utilisateurs.
* Ajouter un département (donnez le nom du département créé pendant l'installation)
* Ajouter un administrateur pour votre département: lien "Utilisateurs" (marge de gauche), puis suivre "ajouter un utilisateur". Donner à ce nouvel utilisateur les rôles `Admin`, `Ens` et `Secr` afin qu'il puisse effectuer toutes les opérations.
Quittez votre navigateur et reconnectez vous à ScoDoc avec votre nouvel utilisateur.
Vous pouvez si nécessaire créer plusieurs administrateurs par département (il est préférable que chaque compte ne soit utilisé que par une seule personne, pour éviter de divulguer les mots de passe et mieux suivre les opérations).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Surtout, évitez de travailler comme "admin": cet utilisateur doit être réservé à la création de départements. Prenez le temps de créer un utilisateur "chef de département !".
## Changement des logos apparaissant sur les documents
Les documents PDF (PV de jurys...) incluent les logos de l'établissement. Par défaut, ceux de l'IUT de Villetaneuse et de l'Université Paris 13 sont distribués (ce n'est pas bien, ils ne sont sans doute pas sous licence libre !). Pour les changer, placer vos logos (fichiers images JPEG ou PNG) dans le répertoire
```
/opt/scodoc/var/scodoc/config/logos
```
avec les noms `logo_header.jpg` (habituellement le logo de votre composante, mais faites comme vous voulez) et `logo_footer.jpg` (habituellement le logo de votre Université ou école).
Ensuite, éditez le fichier
```
/opt/scodoc/Products/ScoDoc/config/scodoc_config.py
```
et changer les valeurs des variables `CONFIG.LOGO_FOOTER_ASPECT` et suivantes (ce n'est pas pratique, il faudrait modifier le code ScoDoc pour calculer ces valeurs à partir des fichiers images).
Enfin, redémarrez ScoDoc (`/etc/init.d/scodoc start`).
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.

View File

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

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

View File

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

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).

94
docs/Internals.md Normal file
View File

@ -0,0 +1,94 @@
# Code de ScoDoc 9
Quelques informations pour les développeurs.
- 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
)
```
# Caches
Il est bon de savoir que les requêtes SQL de SQLAlchemy ne sont pas cachées: ni
la requête elle même (construction du SQL à partir des appels à l'ORM), ni son
résultat.
Le module `sco_cache.py` offre la possibilité de cacher des objets python
identifiés par un id unique dans le cache Redis. Ce cache est persistant, il
faut donc invalider les objets quand on écrit des données susceptibles de les
modifier, et penser à le vider quand on modifie le code.
Par exemple:
```
git pull
flask clear-cache
```
La commande `redis-cli FLUSHALL` permet aussi de vider le cache sans avoir à
lancer flask (plus rapide).

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

@ -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,11 @@
# Mise à jour de ScoDoc
Il est recommandé de mettre à jour très régulièrement votre installation ScoDoc.
Le système Linux doit être correctement maintenu (en particulier, les mises à jour de sécurité de Debian doivent être appliquées quotidiennement).
ScoDoc est actuellement prévu pour fonctionner avec Linux Debian 10.
* Les (rares) mises à jour majeures du logiciel ScoDoc sont annoncées sur la liste [scodoc-annonces](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-annonces).
* Les (fréquentes) mises à jour mineures (corrections de bugs, améliorations) sont annoncées sur la liste [scodoc-devel](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel).
*Une mise à jour hebdomadaire (au moins) est recommandée*
Pour appliquer une mise à jour de ScoDoc, se connecter en tant que `root` sur le serveur, puis faire:
```
cd /opt/scodoc/Products/ScoDoc/config
./upgrade.sh
```
La première fois, il faudra accepter un certificat cryptographique, répondre "p (accept (p)ermanently)".
<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.
Il est nécessaire de mettre à jour très fréquemment votre installation ScoDoc.
## Mise à jour rapide de Debian 9 à Debian 10
# Mise à jour de ScoDoc 9
Procédure raccourcie réservée aux personnes à l'aise avec linux. On met à jour Debian mais on réinstalle ScoDoc proprement.
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)).
À partir de ScoDoc 9, les mises à jour sont automatiques. Au besoin, on peut en
lancer une à tout moment avec la commande
apt update && apt-get upgrade

View File

@ -0,0 +1,469 @@
# 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://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/32/3/_Annexe_1_PN_BUT_version_post_CNESER_20210511_18-05-2021-1_1411323.pdf](https://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/32/3/_Annexe_1_PN_BUT_version_post_CNESER_20210511_18-05-2021-1_1411323.pdf))
et ne sont pas susceptibles d'adaptations locales.
Nous nous sommes basés sur les versions exportées du logiciel Orébut.
!!! 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.
En ScoDoc 9.3, on avait une bijection UE <-> Niveau de compétence (`ApcNiveau`).
En 9.4, on aura une association UE <- parcours -> Niveau de compétence
- 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).
## 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, ...).
## 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="/fig/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
Si un module est utilisé dans plusieurs parcours de la même formation BUT, cela
ne pose aucun problème, _sauf_ si ce module doit avoir des coefficients (vers
les UEs) différents selon le parcours dans lequel il intervient. Dans ce cas,
*il sera conseillé de créer plusieurs versions du module*, que l'on associera
aux divers parcours.
## 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 entre UE et Niveau de compétence (`ApcNiveau`).
- Le lien à entre Compétence et Année de Parcours à travers la table
(*many-to-many*) `ApcParcoursNiveauCompetence` qui indique le niveau ce
compétence concerné.
- Le lien entre les apprentissages critiques (`ApcAppCritique`) et les
modules, qui permet d'établir les critères d'évaluation de chaque module.
## FormSemestres
La formation est mise en œuvre dans des `FormSemestre` (date début, fin,
enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant,
évaluations, ...).
- `FormSemestre`
- `ModuleImpl`
- `Evaluation`
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:
- UE <-> `ApcNiveau` : choix sur la page `ue_edit`
- `Module` ||--o{ ensemble de `ApcParcours`
- `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit`
- `FormSemestre` ||--o{ `ApcParcours` : choix sur la page
`formsemestre_editwithmodules`
- `FormSemestreInscription` ||--|| `ApcParcours` : inscription au parcours, page à créer.
## Cas d'usage
### 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:
```
[ ue.niveau_competence
for ue in formsemestre.query_ues() if ue.niveau_competence ]
```
### Inscription d'un étudiant aux ModuleImpls
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
- Créer des groupes de parcours (via `edit_partition_form`)
- Inscrire les étudiants d'un groupe à tous les modimpls du parcours:
Les modimpls d'un parcours sont donnés par la méthode `modimpls_parcours` de
`FormSemestre`.
### Comment ScoDoc détermine-t-il les modules d'un parcours ?
Un parcours étant associé à des compétences, et les niveaux compétences à des
UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UE
associées à un parcours.
Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC
(`ApcAppCritique`), et chaque module est aussi associé à son ensemble d'AC.
Pour chaque parcours d'un `FormSemestre`, on déterminera l'ensemble des `ModuleImpl`
de ce semestre ayant des AC communs avec ceux des niveaux de compétences
associés aux UE du semestre (sic). Notons que les niveaux de compétences sont
annuels, mais que les `ModuleImpl` sont semestriels.
### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs
Vérification utile en fin de formation.
#### En fin de formation, pour un étudiant
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
facilement vérifier que les AC ont été couverts:
- Lister les `ModuleImpl` auxquels l'étudiant a été inscrit dans ses semestres
(S1 à S6);
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
réussite);
- Comparer aux AC du parcours tels que décrits dans le référentiel de compétence.
#### Au moment de la définition d'une formation
Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau
(année). On pourra vérifier que les `Module`s de chaque année suffisent à
couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
on ne peut pas aller plus loin.
### Lister les UEs d'un parcours d'une formation
```
# Soit un parcours:
parcour = formation.referentiel_competence.parcours.filter_by(code="ROM").first()
# Listes UEs de ce parcours:
formation.query_ues_parcour(parcour)
# Liste des UEs du semestre 3:
formation.query_ues_parcour(parcour).filter_by(semestre_idx=2)
```
### Lister les regroupements d'UE d'un étudiant (RCUE)
Pour une année donnée: l'étudiant est inscrit dans ScoDoc soit dans le semestre
impair, soit pair, soit les deux (il est rare mais pas impossible d'avoir une
inscription seulement en semestre pair, par exemple suite à un transfert ou un
arrêt temporaire du cursus).
1. Déterminer l'*autre* semestre: semestre précédent ou suivant de la même
année, formation compatible (même référentiel de compétence) dans lequel
l'étudiant est inscrit.
2. Construire les couples d'UE (regroupements cohérents): apparier les UE qui
ont le même `ApcParcoursNiveauCompetence`.
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
cursus (BUT1, BUT2 ou BUT3).
### Déterminer si un étudiant peut passer dans l'année suivante
Note: on peut bien sûr toujours forcer le passage, pour traiter les cas
particuliers (décision de jury manuelle).
**Rappel:** le passage est de droit si
- [x] plus de la moitié des niveaux de compétences de l'année sont validés
- [x] aucun regroupement d'UE (niveau de compétence) de l'année < 8 /20
- [x] pour le passage en S5, avoir validé toutes les UE du BUT 1 (S1 et S2).
Il faut donc:
1. Construire les regroupements d'UE et calculer la moyenne des moyennes d'UE
(a priori de même poids, cela n'est pas spécifié dans les textes).
2. Vérifier les conditions ci-dessus.
3. Pour le passage en S5, construire l'ensemble des semestres de formations
relevant du même référentiel de compétences dans lesquels a été inscrit
l'étudiant, et vérifier que les UE de S1 et S2 sont validées.
### Cas particulier: formations dont le nombre d'ECTS varie selon le parcours
Ce cas a été soulevé à propos du BUT MMI, qui préconiserait par exemple, au S4,
une compétence développer avec 10 ECTS dans le parcours "web", et 5 ECTS dans le
parcours "crea".
Si on veut pouvoir utiliser la même formation, et éventuellement mélanger les
étudiants des différents parcours dans le même `FormSemestre` (ce qui
simplifierait la gestion des modules communs), il faut modifier la modélisation:
Les ECTS sont actuellement des attributs de UEs.
Il faudrait avoir une association `UniteEns` }o..o{ `ApcParcours` qui contienne
les valeurs des ECTS.
## Enregistrement des validations de compétences
### Rappel: validations en formations classiques
Pour toutes les formations, ScoDoc enregistre les validations de semestres et
d'UE, via la classe `ScolarFormSemestreValidation`, dont les instances stockent:
- `etudid, formsemestre_id, code, event_date`
et pour les validations de semestres:
- `assidu, compense_formsemestre_id`
ou pour les validations d'UE
- `ue_id, is_external`
Les codes sont définis dans `sco_codes_parcours.py`, avec les valeurs: `ADC,
ADJ, ADM, AJ, ATB, ATJ, ATT, CMP, DEF, NAR, RAT` (voir [Gestion des Jurys
DUT](GestionJury.md)).
### Validation des niveaux de compétences
Pour le BUT, il faut enregistrer la validation des *niveaux de compétences*,
constitués de *regroupements cohérents d'UE* ("RCUE"), qui sont les UEs de la
même année de parcours associées à la même compétence.
On va stocker les validation des RCUE dans `ApcValidationRCUE`:
- `etudid`
- `formsemestre_id` (dernier déclenchant cette validation).
- `ue_1`, `ue_2` : les deux UE associées à ce niveau.
- `ApcParcours` : optionnel, le parcours dans lequel se trouve la compétence.
- `datetime` de la validation.
- `code` de validation: `ADM`, `CMP`, `AJ`.
Rappel: chaque UE est associé à un niveau de compétence
(`ue.niveau_competence`), qui doit ici être le même.
### Validation des années du BUT
Pour le BUT, ScoDoc enregistre les validations d'années `ApcValidationAnnee`
- `etudid`
- `ordre`: 1, 2, 3 pour BUT1, BUT2, BUT3.
- `formsemestre_id` (dernier déclenchant cette validation, None si extérieure)
- `annee_scolaire` (int, année de début, eg 2021 pour "2021-2022")
- `datetime` de la validation.
- `code` de validation: `PASD`, `PAS1NCI`, `RED`, `REO`, `DEM`, `EXC`, `ABAN`, `ABL`.
### Codes préconisés par l'AMUE pour le BUT
On associe lors du jury un code de décision:
- À chaque UE: `VAL`, `COMP`, `AJ`, `UESBL`.
- À chaque niveau de compétence (RCUE): `VAL`, `AJ`, `CODJ`.
- À chaque année:
- `PASD`: Passage en Année Supérieure de Droit (+ de 50% des UE VAL et RCUE Ajourné(s) >=8)
- `PAS1NCI`: Passage en Année Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE<8)
- `RED`: Redoublement de l'année
- `REO`: REOrientation - décision automatique (revient à une exclusion), plus de 4 semestres RED ou décision de Jury
- `DEM`: DEMission (lettre de l'étudiant).
- `EXC`: EXClusion, décision réservée à des décisions disciplinaires
- `ABAN`: ABANdon constaté (sans lettre de démission)
- `ABL`: Année BLanchie
- Au diplôme: `ADM`
#### Correspondance avec les codes de ScoDoc
ScoDoc utilise des codes [documentés ici](GestionJury.md).
- Pour les semestres: `ADM`, `ADC`, `ADJ`, `ATT`, `ATB`, `ATJ`, `AJ`, `NAR`. En
BUT, pas besoin de codes semestriels. On ajoutera un code `JSD` (*Jury Sans
Décision*) pour simplement indiquer que le jury s'est tenu. Ce code ne sera pas
exporté vers Apogée.
- Pour les UEs: **codes d'état d'UE**
ScoDoc | BUT AMUE | &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
Juste pour rire, car ce diagramme est quasiment inexploitable (dessin réalisé
automatiquement en Mermaid).
```mermaid
erDiagram
FormSemestre ||--|{ ModuleImpl : contient
ModuleImpl ||--o{ Evaluation : contient
Module ||--o{ ModuleImpl : ""
Formation ||--o{ UE : ""
UE ||--|{ Module : ""
Formation {
str titre
str acronym
str code
}
Etudiant {
str nom
}
FormSemestre {
int dept_id
str titre
date date_debut
date date_fin
}
Etudiant }|..|{ ModuleImpl : ModuleImplInscription
Etudiant }|..|{ FormSemestre : FormSemestreInscription
FormSemestreInscription ||..o{ ApcParcours : "optionnel"
Formation ||--o{ FormSemestre : ""
ApcReferentielCompetences ||--o{ ApcCompetence : ""
ApcCompetence ||--o{ ApcNiveau : ""
ApcCompetence ||--o{ ApcSituationPro : ""
ApcCompetence ||--o{ ApcComposanteEssentielle : ""
ApcNiveau }o..|| UE : "optionnel"
ApcNiveau ||--o{ ApcAppCritique : ""
ApcAppCritique }o..o{ Module : "optionnel"
ApcReferentielCompetences ||--o{ ApcParcours : ""
ApcParcours ||--o{ ApcAnneeParcours : ""
ApcAnneeParcours {
int ordre
}
ApcCompetence }o--o{ ApcAnneeParcours : "ApcParcoursNiveauCompetence (1,2,3)"
Module }o--o{ ApcParcours : "parcours_modules"
FormSemestre }o--o{ ApcParcours : "parcours_formsemestre"
UE }o..o{ ApcParcours : "pour les ECTS"
```

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

@ -31,7 +31,6 @@ Toutes les préférences pour le semestre considéré (ou définies globalement)
Voir la liste complète sur [NomsPreferences](NomsPreferences.md).
### Informations sur le semestre
Variable | Valeur
---------|-------
@ -55,14 +54,19 @@ situation| phrase expliquant la situation de l'étudiant (inscription, décision
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)
|
**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)
@ -96,12 +100,50 @@ Le balisage XML est celui de [ReportLab](http://www.reportlab.com/) (intra-parag
### Logos
Une balise supplémentaire est interprétée par ScoDoc pour insérer des logos (images).
Les logos doivent être des images au format JPEG (extension `.jpg` uniquement), placées dans le répertoire `.../logos/`, et nommées `logo_xxx.jpg`.
Les logos sont des images au format JPEG (extension `.jpg` ou `.jpeg`) ou PNG
(extension `.png`), téléversés sur le serveur scodoc et intégrables dans les
documents PDF. [Plus d'information sur la gestion des logos ici](GestionLogos.md).
La balise `<logo name="xxx" width="44mm" height="22mm" valign="+5mm"/>`, placée dans un paragraphe, insère alors le logo `xxx` avec les dimensions indiquées. Le paramètre `valign` règle le positionnement vertical par rapport à la ligne de texte courante.
Principes généraux :
* Un logo est désigné par un identifiant (nom) et peut être défini soit globalement, soit pour un département;
* le nom d'un logo est exclusivement composé de caractères alphanumériques ou du caractère '`-`';
* les logos définis globalement sont accessibles pour tous les départements.
Toutefois, si un logo de même nom est également présent dans un département,
c'est le logo du département qui sera utilisé en lieu et place de logo global;
* les logos de nom '`header`' et '`footer`' définis globalement ne peuvent être supprimés (mais peuvent être redéfinis).
L'enregistrement, la modification ou la suppression d'un logo peut être réalisé via la page de configuration qui est accessible aux
administrateurs Scodoc depuis la page d'accueil.
Ce formulaire comporte une section pour les définitions globales plus une section par département.
Une section présente la liste des logos avec leurs propriétés (la dimension est donnée à titre indicatif quand elle est disponible).
Pour chaque logo, les actions disponibles sont :
* Le remplacement de l'image existante par un nouveau fichier;
* la suppression du logo (sauf pour `header`et `footer`dans la section globale);
* l'ajout d'un nouveau logo dans une section (global ou département) et indiquant le nom.
*NB*. Quelle que soit l'opération effectuée, le nom du fichier téléversé n'a aucune importance
(Seul le nom indiqué dans le formulaire est pris en compte et le format du fichier est déduit des données propres du fichier)
La balise `<logo name="xxx" width="44mm" height="22mm" valign="+5mm"/>`, placée dans un paragraphe, insère le logo de nom `xxx` avec les dimensions indiquées.
Le paramètre `valign` règle le positionnement vertical par rapport à la ligne de texte courante.
Notez qu'il est possible de ne préciser que l'une des deux dimensions hauteur ou largeur.
Dans ce cas, la dimension manquante est déduite du ratio (rapport hauteur/largeur) de l'image originale.
Voir un exemple d'utilisation plus bas.
### Fond de page.
Les modalités d'utilisation des fonds de pages sont similaires pour les PV, les lettres individuelles de décision et les bulletins.
Celles-ci sont décrites ici: [Paramétrage des PV. Images de fond de page](ParametragePV.md)
## Exemples
### Exemple 1: Bulletins par défaut

View File

@ -10,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,19 +1,25 @@
# Problèmes d'envoi de courriers électroniques
ScoDoc envoie des mails en plusieurs occasions (bulletins de notes, importation d'utilisateurs, alertes sur absences, exceptions dans le code).
ScoDoc envoie des mails en plusieurs occasions (bulletins de notes, importation
d'utilisateurs, alertes sur absences, exceptions dans le code).
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne pas.
Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne
pas.
## Configuration du serveur
ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un
serveur de mail capable d'envoyer des messages (soit directement, soit via un
relais). L'installeur propose d'installer le logiciel serveur Postfix.
ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un serveur de mail capable d'envoyer des messages (soit directement, soit via un relais). L'installeur propose d'installer le logiciel serveur Postfix.
1. Vérifier que votre serveur de messagerie est bien configuré: dans un terminal, envoyez un message
1. Vérifier que votre serveur de messagerie est bien configuré: dans un
terminal, envoyez un message
```
mail mon_adresse@universite.fr
... entrer votre texte, terminez par ctrl-d ...
```
Si vous ne recevez pas le message que vous vous envoyiez, revoir la configuration de votre serveur, par exemple avec la commande
Si vous ne recevez pas le message que vous vous envoyiez, revoir la
configuration de votre serveur, par exemple avec la commande
```
dpkg-reconfigure postfix
```
@ -29,14 +35,19 @@ Connected to localhost.
Escape character is '^]'.
220 nom_du_serveur ESMTP Postfix (Debian/GNU)
```
(quitter avec ctrl-] puis quit)
(quitter avec ctrl-] puis `quit`)
3. Si cela fonctionne, passer au test de ScoDoc: créer un étudiant bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un semestre, et lui envoyer son bulletin par mail. (sur la page web de son bulletin, petit menu "Autres opérations").
## Tests avec ScoDoc
A ce moment, regarder le log
Une fois que le mail, fonctionne, passer au test de ScoDoc: créer un étudiant
bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un
semestre, et lui envoyer son bulletin par mail. (sur la page web de son
bulletin, petit menu "Autres opérations").
À ce moment, regarder le log
`/opt/scodoc/instance/log/notes.log`
on devrait voir quelque chose ressemblant à:
On devrait voir quelque chose ressemblant à:
```
[Sun Sep 07 11:37:40 2008] mail bulletin a emmanuel.viennet@gmail.com
[Sun Sep 07 11:37:40 2008] sendEmail: ok
@ -51,6 +62,17 @@ delays=0.03/0/0.41/1, dsn=2.0.0, status=sent (250 2.0.0 OK 1220942550 y2si226470
Cela devrait permettre de savoir:
1. si ScoDoc tente d'envoyer un mail (notes.log)
1. si ScoDoc tente d'envoyer un mail (`notes.log`);
2. si le serveur SMTP arrive à traiter ce mail.
## Redirection des tous les mails de ScoDoc
Afin de vérifier les envois de mail, il peut être pratique de détourner tous les
envois vers une adresse (cela permet par exemple de tester les envois de
notification ou de bulletins sans déranger les étudiants ou les collègues).
Pour cela, aller sur la page *Paramétrage*, tout en bas, et indiquer une
*Adresse de test*. Ne pas oublier de l'enlever une fois les essais effectués !

View File

@ -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,22 +1,43 @@
# Mise en place de sauvegardes des bases de données ScoDoc
Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde permettant de rétablir le service en minimisant les pertes de données à la suite d'un accident majeur mais probable comme: crash de disque dur, bug, vol du serveur, incendie...
# Mise en place de sauvegardes des bases de données ScoDoc 9
Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde
permettant de rétablir le service en minimisant les pertes de données à la suite
d'un accident majeur mais probable comme: crash de disque dur, bug, vol du
serveur, incendie...
Nous recommandons d'agir à deux niveaux:
* 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
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.
## Dump des bases de données
Le script `backup_db9` (fourni dans le répertoire `/opt/scodoc/tools/backups`)
peut être utilisé pour effectuer des sauvegardes automatisées des bases de
données SQL. Les données sont extraites de la base et écrites sur le disque
local du serveur, qui doit bien entendu être sauvegardé par d'autres moyens,
comme indiqué ci-dessus.
Le nouveau (mars 2014) script `backup_db2` permet de conserver des sauvegardes de chaque heure durant les 48 (par défaut) dernières heures, des sauvegardes quotidiennes des 40 derniers jours, hebdomadaires des 30 dernières semaines, et mensuelles des 200 derniers mois (tout ceci est paramétrable dans le script `.../ScoDoc/backup_rotation.sh`).
Le script `backup_db9` permet de conserver des sauvegardes de chaque heure
durant les 48 (par défaut) dernières heures, des sauvegardes quotidiennes des 40
derniers jours, hebdomadaires des 30 dernières semaines, et mensuelles des 200
derniers mois (tout ceci est paramétrable dans le script
`/opt/scodoc/tools/backups/backup_rotation.sh`).
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de
l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
En tant que `root` sur le serveur, faire:
@ -27,39 +48,79 @@ En tant que `root` sur le serveur, faire:
```
et ajouter:
```
10 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOUSERS
15 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOXXXX
20 * * * * /opt/scodoc/Products/ScoDoc/misc/backup_db2 SCOYYYY
...
15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC
```
Remplacer `SCOXXXX` et `SCOYYYY` par les noms des bases de vos départements (la commande `psql -l` permet de lister toutes les bases).
(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez configuré sur une autre base).
### En cas de problème: restaurer la base à partir d'une sauvegarde
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention, certaines informations sont stockées dans des fichiers et non dans la base de données: configuration du logiciel, photos des étudiants. Ce paragraphe ne traite que de la restauration à de la base de données.
## En cas de problème: restaurer la base à partir d'une sauvegarde
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Attention, certaines informations sont stockées dans des fichiers
et non dans la base de données: configuration du logiciel, photos des étudiants.
Ce paragraphe ne traite que de la restauration de la base de données.
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`).
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:
```
cp /var/lib/postgresql/SCOGEII-BACKUPS/backup.hourly/2014-03-04T05\:35/SCOGEII_pgdump.gz /tmp
gunzip /tmp/SCOGEII_pgdump.gz
cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp
gunzip /tmp/SCODOC_pgdump.gz
```
3. Recharger la base complète pour le département concerné. <img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention, cette opération effacera et remplacera) le contenu de la base de données actuelle...
3. Recharger la base complète. <img src="/img/alert.png" style="vertical-align:
bottom; margin:0 0 0 0;" alt="/!\" /> Attention, cette opération effacera et
remplacera) le contenu de la base de données actuelle...
```
# en tant que root...
/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.gz # (nom du fichier dump)
source venv/bin/activate
flask db upgrade # nécessaire seulement si sauvegarde ancienne
flask clear-cache
exit # retour a l'utilisateur root
/etc/init.d/scodoc start # relance ScoDoc
systemctl start scodoc9 # relance ScoDoc
```
## Déplacement de toute une installation
Les scripts ci-dessus ne se chargent que de la base de données SQL.
Pour créer une sauvegarde complète d'une installation, vous pouvez utiliser le
script
tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement
la base de données SQL mais aussi tous les fichiers générés par votre ScoDoc:
photos, configurations locales, archives, PV de jurys, logos, etc (tout ceci
étant stocké sous `/opt/scodoc-data`).
Attention à l'espace disque: le répertoire destination (`/tmp`dans l'exemple
ci-dessus) doit avoir de l'espace (sinon utilisez un autre répertoire dans
lequel l'utilisateur `scodoc` puisse écrire, ou montez un autre disque. La
commande `df -h`est votre amie).
Pour restaurer ce type de sauvegarde, sur une autre machine (ou plus tard sur la
même), transférer le fichier généré (`/tmp/sauvegarde-scodoc.tgz`) dans
l'exemple ci-dessus) et utiliser
tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
(Note: la sauvegarde s'effectue comme utilisateur `scodoc`, en revanche le
rechargement doit se faire en tant que `root` car il faut évidemment arrêter et
relancer le service).

1339
docs/ScoDoc9API.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# API pour ScoDoc
# API pour ScoDoc 7
L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux informations aux formats XML et JSON.
Cette API est encore incomplète: n'hésitez pas à demander de nouveaux accès en écrivant à la liste de diffusion.
@ -868,7 +868,7 @@ Et un autre exemple en format JSON:
## Absences
* **`Absences/ListeAbsEtud`**
* Paramètres: `etudid, abs_just_only, format`. `abs_just_only` spécifie si on veut les absences justifiées ou non.
* Paramètres: `etudid, absjust_only, format`. `absjust_only` spécifie si on veut les absences justifiées ou non.
* Résultat: liste d'absences. Exemple:
```{jour: "2021-02-10", ampm: "0", description: "M2202", }```
(`ampm` vaut 1 le matin et 0 l'après-midi).
@ -904,18 +904,17 @@ Et un autre exemple en format JSON:
* Remarque: on peut spécifier plusieurs groupes.
## Modules
* **`Notes/do_moduleimpl_list`**
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]`
* Résultat: liste de moduleimpl
Fonctions retirées en 9.3.28: [voir la nouvelle API](ScoDoc9API.md).
* **`Notes/do_moduleimpl_list`**
* **`Notes/do_moduleimpl_withmodule_list`**
* 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`
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.

View File

@ -3,6 +3,7 @@ L'export des résultats de ScoDoc vers Apogée se fait après le jury. Pour les
L'export des notes finales (et des décisions de jury) vers le logiciel Apogée peut être fait de plusieurs façons: soit par remplissage automatique de maquettes Apogée, soit en passant par des fichiers Excel.
La procédure détaillée d'import des résultats de ScoDoc dans Apogée est décrite ici: [SCODOC_import_notes_dans_apogee.pdf](papers/SCODOC_import_notes_dans_apogee.pdf), merci à Bérangère Lhoumeau, du service Scolarité de l'IUT de Tarbes.
## Remplissage des fichiers maquette Apogée (CSV)
Solution intégrée à ScoDoc en juillet 2016.

111
docs/TestsScoDoc.md Normal file
View File

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

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

@ -2,7 +2,7 @@
# É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)
## Établissements membres de l'association (2020-2021) [liste non à jour]
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr);
@ -51,23 +51,16 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/) (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005);
## Établissements ayant contribué au développement de ScoDoc
* [IUT A de Lille](http://www-iut.univ-lille1.fr) (depuis 2010) 7 départements;
* [IUT du Havre](http://www-iut.univ-lehavre.fr/), 10 départements et 3 années spéciales, soit environ 1800 étudiants;
* [IUT de Ville d'Avray](http://www.cva.u-paris10.fr/iut) (depuis 2008) 3 départements (GEII, Carrières Sociales et GEA) et 3 licences pro (350 étudiants/an, données de 2012);
* [International Business School](http://www.iscid-co.fr/), Institut Supérieur de Commerce International de Dunkerque Côte 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'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii) (site de Salon);
* [IUT Aix-Marseille](http://iut.univ-amu.fr/) Mesures Physiques (depuis 2012) et Informatique;
* [IUT d'Aix en Provence (GEII)](http://iut.univ-amu.fr/diplomes/dut-genie-electrique-informatique-industrielle-dut-geii),
(site de Salon);
* [IUT Aix-Marseille](http://iut.univ-amu.fr/), Mesures Physiques (depuis 2012) et Informatique;
* [IUT d'Amiens](http://www.iut-amiens.fr/) tous les départements (6, soit 1850
étudiants), depuis 2014;
* [IUT d'Annecy](https://www.iut-acy.univ-smb.fr);
* [IUT de Belfort-Montbéliard](http://www.iut-bm.univ-fcomte.fr/) (MP, R&T), depuis 2013;
@ -75,55 +68,89 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
* [IUT de Béziers](http://www.iutbeziers.fr) depuis 2014 (RT, MMI, CS, TC);
* [IUT de Blagnac](https://www.iut-blagnac.fr/fr/) CS, GIM, INFO, RT + 4 LP ; depuis 2017 ; environ 600 étudiants/an).
* [IUT de Blagnac](https://www.iut-blagnac.fr/fr/), CS, GIM, INFO, RT + 4 LP ; depuis 2017, environ 600 étudiants/an;
* [IUT de Brest](http://www.iut-brest.fr) depuis 2009, 4 départements (DUT et licences pro) à Brest et 2 à Morlaix, environ 1350 étudiants suivis/an;
* [IUT de Bordeaux](http://www.iut.u-bordeaux.fr), départements GMP, GEII, GCCD, INFO, MP, HSE, SGM, MLT, GEA;
* [IUT de Brest](http://www.iut-brest.fr) depuis 2009, 4 départements (DUT et licences pro) à Brest et 2 à Morlaix, environ 1350 étudiants/an;
* [IUT de Bourges](http://www.univ-orleans.fr/iut-bourges/) départements GEA, QLIO, MP, CS, 2 années spéciales et 2 licences pro;
* IUT de Calais (détails?);
* IUT de Calais;
* [IUT de Colmar](http://www.iutcolmar.uha.fr) (Université de Haute Alsace), département R&T et GB (depuis 2006);
* [IUT de Cergy-Pontoise](http://www.iut.u-cergy.fr), tous les départements
(GB, GCCD, GEII x 2, MLT, QLIO, MMI, TC x 2), DUT, LP, années spéciales et FC
: plus de 1600 étudiants en 2018, utilise ScoDoc depuis 2015;
* [IUT de Colmar](http://www.iutcolmar.uha.fr) (Université de Haute Alsace), département R&T et GB (depuis 2006);
* [IUT d'Evry Val 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 Fontainebleau;
* [IUT de Kourou](http://iut.univ-ag.fr/) (Guyane, depuis 2011);
* [IUT de l'Indre](http://www.univ-orleans.fr/iut-indre/): départements GEA, GEII, GLT, TC, depuis 2015;
* [IUT de l'Indre](http://www.univ-orleans.fr/iut-indre/), départements GEA, GEII, MLT, TC, depuis 2015;
* [IUT de Lannion](http://www.iut-lannion.fr/): 5 DUT et 5 LP, sur 4 départements;
* [IUT de Lannion](http://www.iut-lannion.fr/), 5 DUT et 5 LP, sur 4 départements;
* [IUT de La Rochelle](http://www.iut-larochelle.fr/): 5 départements (généralisé en 2017): 1070 étudiants de DUT et 9 LP (180 étudiants);
* [IUT de La Rochelle](http://www.iut-larochelle.fr/), 5 départements (généralisé en 2017): 1070 étudiants de DUT et 9 LP (180 étudiants);
* [IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/) (départements GEA, IC, R&T, GB et licences pro, soit 550 étudiants/ans depuis 2009);
* [IUT de La Roche-sur-Yon](http://www.iutlaroche.univ-nantes.fr/),
départements GEA, IC, R&T, GB et licences pro, soit 550 étudiants/ans depuis
2009;
* [IUT Le Havre](http://www-iut.univ-lehavre.fr/), 10 départements et 3 années spéciales, soit environ 1800 étudiants;
* [http://www.iut.univ-littoral.fr](IUT du Littoral Côte d'Opale), tous les départements (2018);
* [IUT Le Mans](https://iut.univ-lemans.fr), 4 départements (GEA, CHIMIE, GMP, MP), environ 1000 étudiants;
* [IUT de Lorient](http://www-iutlorient.univ-ubs.fr) départements GTE, GIML, QLIO, GCGP, HSE;
* [IUT A de Lille](http://www-iut.univ-lille1.fr), (depuis 2010) 7
départements;
* [IUT du Littoral Côte d'Opale](http://www.iut.univ-littoral.fr), tous les départements (2018);
* [IUT de Marseille](http://iut.univ-amu.fr/) (depuis 2007) départements ?
* [IUT de Lorient & Pontivy](http://www-iutlorient.univ-ubs.fr), départements
GTE, GIML, QLIO, GCGP, HSE;
* [IUT de Metz](http://www.iut.univ-metz.fr) (depuis 2011), départements GMP, TC ;
* [IUT de Mantes](http://www.iut-mantes.uvsq.fr), départements GIM et GMP (Université de Versailles St Quentin en Yvelines);
* [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/) (depuis 2014), départements GEA, GEII, GLT, GMP;
* [IUT de Marseille](http://iut.univ-amu.fr/), depuis 2007;
* [IUT de Metz](http://www.iut.univ-metz.fr), depuis 2011, départements GMP, TC;
* [IUT de Mulhouse](http://www.iutmulhouse.uha.fr/), depuis 2014, départements
GEA, GEII, MLT, GMP;
* [IUT de Nantes](http://www.iutnantes.univ-nantes.fr/), départements Informatique, GEA, GEII, GMP, GTE, QLIO et SGM (DUT et Licences Pro, depuis 2008);
* [IUT de Nouvelle Calédonie](https://unc.nc/formation/formation-a-l-iut/linstitut-universitaire-de-technologie/);
* [IUT de Nîmes](https://iut-nimes.edu.umontpellier.fr/) (depuis 2019, GEII, GMP, SGM, et [Polytech Montpellier](https://www.polytech.umontpellier.fr));
* [IUT de Nîmes](https://iut-nimes.edu.umontpellier.fr/), depuis 2019, GEII,
GMP, SGM, et [Polytech Montpellier](https://www.polytech.umontpellier.fr);
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr) département Informatique, Année Spéciale, L3 Miage et un DU;
* [IUT d'Orléans](http://www.univ-orleans.fr/iut-orleans/), depuis rentrée 2009, tous les départements (GTE, GEA, GMP, Chimie, QLIO), pour les DUT et LP (environ 1100 étudiants en sept. 2012).
* [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot) Mesures Physiques;
* [IUT d'Orsay](https://www.iut-orsay.universite-paris-saclay.fr/);
* [IUT Paris Descartes](http://www.iut.parisdescartes.fr);
* [IUT Paris Diderot](https://universite.univ-paris-diderot.fr/structures/iut-paris-diderot),
Mesures Physiques;
* [IUT de Perpignan](http://www.iut-perpignan.fr), depuis 2013, départements GB, GEA, GIM, MLT à Perpignan CJ et GCGP à Narbonne et TC et STID à Carcassonne;
* [IUT de Poitiers](http://iutp.univ-poitiers.fr/);
* [IUT de Rennes](https://iut-rennes.univ-rennes1.fr/) départements GEII, GMP, Chimie et Génie Civil Construction durable (2015);
* [IUT de Roanne](http://portail.univ-st-etienne.fr/bienvenue/utilitaires/iut-de-roanne-26151.kjsp): dépt. Génie Industriel et Maintenance (GIM), environ 70 étudiants/an (2012);
* [IUT de Roanne](http://portail.univ-st-etienne.fr/bienvenue/utilitaires/iut-de-roanne-26151.kjsp), dépt. Génie Industriel et Maintenance (GIM), environ 70 étudiants/an (2012);
* [IUT de Saint-Denis (Université Sorbonne Paris Nord)](https://iutsd.univ-paris13.fr): départements HSE, GIM, GMP, TC, depuis 2009;
* [IUT de Saint-Denis (Université Sorbonne Paris Nord)](https://iutsd.univ-paris13.fr), départements HSE, GIM, GMP, TC, depuis 2009;
* [IUT de Saint-Dié des Vosges](http://www.iutsd.uhp-nancy.fr) (GEII, autres ?, depuis 2009);
* [IUT de Saint-Dié des Vosges](http://www.iutsd.uhp-nancy.fr) depuis 2009);
* [IUT de Saint-Dié des Vosges](http://www.iutsd.uhp-nancy.fr/fr/accueil.html), département Informatique, depuis 2011;
* [IUT de Saint-Malo](https://iut-stmalo.univ-rennes1.fr/);
* [IUT de Saint-Nazaire](http://www.iut-sn.univ-nantes.fr/) tous les départements (GLT, GCCD, GIM, GCH, MP, TC) et 8 LP, 1400 étudiants, rentrée 2013. Et aussi Formation Continue, 1 DU PFST, 2 formations DUT par apprentissage (TC et GIM);
@ -135,8 +162,11 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
* [IUT de Vannes](https://www.iutvannes.fr/) département Informatique (DUT et LP, 200 étudiants) depuis sept. 2014, et GEA (400 étudiants) et TC depuis 2016, STID depuis 2019;
* [IUT de Villeurbanne (Lyon 1)](http://iut.univ-lyon1.fr/) département GEII, environ 220 inscrits/an.
* [IUT de Vélizy-Rambouillet](https://www.iut-velizy-rambouillet.uvsq.fr/), utilisateur depuis 2009, sur deux sites;
* [IUT de Villetaneuse](http://www.iutv.univ-paris13.fr/), (Université Sorbonne Paris Nord), départements Informatique, CJ, GEA, GEII, R&T, STID Formation Continue (1600 étudiants, depuis 2005);
* [IUT de Villeurbanne (Lyon 1)](http://iut.univ-lyon1.fr/), département GEII, environ 220 inscrits/an.
## Autres établissements utilisateurs (hors IUT)
* Licence de sciences (SPI) à L'Université de Bretagne Occidentale (UBO);
@ -145,7 +175,10 @@ Cette page tente de lister les utilisateurs connus de ScoDoc. Le logiciel étant
* Master ISB, Université Sorbonne Paris Nord;
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et gestion, AUF);
* [IFAG de Sofia](http://www.ifag.auf.org), Bulgarie (masters administration et
gestion, AUF);
* ILEPS, Cergy-Pontoise.
* [Université Catholique d'Afrique Centrale](http://www.ucac-icy.net/) (UCAC, Yaoundé, Cameroun): Licences, Masters (2011);

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

View File

@ -0,0 +1,2 @@
# ScoDoc repository
deb http://scodoc.org/repo bullseye 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
docs/img/API_Chart.odg Normal file

Binary file not shown.

BIN
docs/img/API_Chart.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

2990
docs/img/API_Chart.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 336 KiB

View File

@ -1,24 +1,37 @@
# ScoDoc: un logiciel libre pour le suivi de la scolarité
ScoDoc est un logiciel libre créé par Emmanuel Viennet pour suivre la scolarité des étudiants universitaires. Il est principalement utilisé dans les IUT, mais aussi apprécié par plusieurs Écoles et Masters. Il fournit notamment:
ScoDoc est un logiciel libre créé par Emmanuel Viennet pour suivre la scolarité
des étudiants universitaires. Il est principalement utilisé dans les IUT, mais
aussi apprécié par plusieurs Écoles et Masters en France et à l'étranger. Il
fournit notamment:
- suivi précis de la progression des étudiants, évaluations formatives et certificatives;
- suivi précis de la progression des étudiants, évaluations formatives et
certificatives
- saisie et gestion des notes;
- aide à la décision pour les jurys;
- listes des étudiants (groupes, trombinoscopes, bordereaux divers);
- suivi de l'assiduité (saisie et visualisation des absences);
- tableaux de bords, rapports statistiques sur la formation (suivis de cohortes, ...) utiles pour l'évaluation et le suivi des formations;
- tableaux de bords, rapports statistiques sur la formation (suivis de
cohortes, ...) utiles pour l'évaluation et le suivi des formations;
- édition des procès-verbaux, bulletins et autres documents liés à la scolarité.
ScoDoc est un *logiciel libre*: vous pouvez [participer à son développement](Contribuer.md).
ScoDoc s'utilise sur un navigateur web standard, avec connexions sécurisées; pour obtenir un accès sur un *serveur de démo* (réservé aux IUT), contacter: <notes@listes.univ-paris13.fr> . Pour installer le logiciel sur votre serveur, voir le [guide d'installation sur Debian 10](GuideInstallDebianDix.md).
ScoDoc s'utilise sur un navigateur web standard: les utilisateurs n'ont rien à
installer. Les établissements ou écoles doivent configurer un serveur: voir le
[guide d'installation sur Debian 11](GuideInstallDebian11.md). La version ScoDoc
9 est parue le 19 septembre 2021, la version 9.3 en juillet 2022. Les mises à jour sont
appliquées très fréquemment.
ScoDoc est utilisé dans de nombreux établissement français et étrangers, **dont au moins 58 IUT**: [liste des utilisateurs connus de ScoDoc](UtilisateursScoDoc.md).
ScoDoc est utilisé dans de nombreux établissements français et étrangers, **dont
au moins 58 IUT**: [liste des utilisateurs connus de ScoDoc](UtilisateursScoDoc.md).
Depuis 2020, ScoDoc est soutenu par une [association à but non lucratif (1901)](AssociationScoDoc.md), à laquelle tous les départements ou établissements utilisateurs sont **invités à adhérer**. Bulletin d'adhésion à retourner à `Emmanuel.Viennet at gmail.com`.
Depuis 2020, ScoDoc est soutenu par une [association à but non lucratif
(1901)](AssociationScoDoc.md), à laquelle tous les départements ou
établissements utilisateurs sont **invités à adhérer**. Bulletin d'adhésion à
retourner à `Emmanuel.Viennet at gmail.com`.
## Présentation générale
@ -26,44 +39,104 @@ Depuis 2020, ScoDoc est soutenu par une [association à but non lucratif (1901)]
- Quelques <a href="https://www.youtube.com/playlist?list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1" target="_blank">vidéos d'introduction sur YouTube <img src="img/tube.png" alt="" style="margin-top:0px; margin-bottom:0px; border-width:0px;"/></a>
- Présentation au colloque du [CRI-IUT](https://www.criiut.fr/) en 2013: [diapos en pdf](papers/presScoDocCRIIUT2013.pdf)
- Ancienne présentation au colloque du [CRI-IUT](https://www.criiut.fr/) en 2013: [diapos en pdf](papers/presScoDocCRIIUT2013.pdf)
- Un très ancien [article sur ScoDoc](papers/scodoc-reunion2007.pdf)
## Communauté d'utilisateurs
- Le Discord des utilisateurs: assistance chat ou audio [rejoindre le salon](https://discord.gg/ybw6ugtFsZ)
- [Listes de diffusion e-mail](ListesDeDiffusion.md)
- Vous pouvez signaler ici des bugs ou déposer des suggestions d'amélioration via les "tickets":
* [Liste des tickets en cours](https://scodoc.org/git/viennet/ScoDoc/issues)
* Déclarer un nouveau ticket: demander un compte sur la liste scodoc-devel (lien ci-dessus).
* Déclarer un nouveau ticket: demander un compte sur la liste `scodoc-devel` (lien ci-dessus).
- [Contribuer à ScoDoc](Contribuer.md)
## Actualités
### Quatre stagiaires (printemps 2021)
### Parution de ScoDoc 9 en 2021-2022
Version majeure, avec une architecture logicielle complètement remaniée. Cette
version modernise l'infrastructure logicielle (maintenant basée sur Python
3/Flask/postgresql) et propose de nombreuses améliorations, notamment pour la
gestion du *[Bachelor Universitaire de Technologie (BUT)](BUT.md)*.
### Contrats d'apprentissage
Depuis 2021, plusieurs étudiants ont été recrutés (BUT R&T Lannion, LP IUT
Orléans, LP IUT Villetaneuse):
- développement d'une nouvelle API pour ScoDoc 9 (mise en service en juillet 2022);
- développement d'un nouveau module de gestion des relations entreprises:
fichier, contacts, stages, alternance (publiée en août 2022);
- refonte du module de gestion des absences (en cours en 2022-2023).
### Stagiaires
- version spéciale pour mobiles, développée par un stagiaire de l'association;
- développements de tests unitaires et fonctionnels, par deux stagiaires, l'un avec l'association, l'autre à l'IUT de Lille.
- affichage et édition des référentiels de BUT, avec un stagiaire de l'association.
- développements de tests unitaires et fonctionnels, par deux stagiaires, l'un
avec l'association, l'autre à l'IUT de Lille.
- affichage et édition des référentiels de BUT, avec un stagiaire de
l'association.
### Nouveaux développeurs
Plusieurs développeurs volontaires, la plupart enseignants en IUT, ont rejoint l'équipe ces derniers mois.
Plusieurs développeurs volontaires, la plupart enseignants en IUT, ont rejoint
l'équipe depuis 2020.
### Bachelor Universitaire de Technologie (BUT) et ScoDoc
ScoDoc évolue pour intégrer la gestion du BUT, en approche par compétences, avec des situations d'apprentissage et d'évaluation (SAÉs) et des ressources pédagogiques. ScoDoc n'a pas vocation à devenir un portfolio APC, mais continuera à vous aider à suivre, évaluer et noter vos étudiants, au plus près de vos pratiques. Nous attendons le cadrage officiel du BUT pour publier le code de calcul des notes BUT.
ScoDoc évolue pour intégrer la gestion du BUT, en approche par compétences, avec
des situations d'apprentissage et d'évaluation (SAÉs) et des ressources
pédagogiques. ScoDoc n'a pas vocation à devenir un portfolio APC, mais
continuera à vous aider à suivre, évaluer et noter vos étudiants, au plus près
de vos pratiques. Voir [cette page pour plus d'informations](BUT.md).
Des formats de bulletins de notes adaptés seront proposés pour faciliter la compréhension des résultats par les étudiants et enseignants.
Des formats de bulletins de notes adaptés sont proposés pour faciliter la
compréhension des résultats par les étudiants et enseignants.
### ScoDoc et Pégase/PC-SCOL
Nous sommes en contact avec l'équipe du projet Pégase/PC-SCOL, qui succédera dans certaines universités à Apogée. A court et moyen terme, ce nouvel outil ne rendra pas les mêmes services que ScoDoc. Nous étudions dès maintenant l'interfaçage des outils (via des API), qui a priori sera plus fluide et facile à mettre en œuvre qu'avec Apogée. ScoDoc et Pégase devraient cohabiter en bonne entente.
Nous sommes en contact avec l'équipe du projet Pégase/PC-SCOL, qui succédera
dans certaines universités à Apogée. A court et moyen terme, ce nouvel outil ne
rendra pas les mêmes services que ScoDoc. Nous étudions dès maintenant
l'interfaçage des outils (via des API), qui a priori sera plus fluide et facile
à mettre en œuvre qu'avec Apogée. ScoDoc et Pégase devraient cohabiter en bonne
entente.
### Feuille de route (roadmap)
Les prochaines versions de ScoDoc (*sous réserve !*):
- ScoDoc 9.0 : fin juin 2021 version remaniée en Python 3, avec version mobile.
- ScoDoc 9.1 : fin août 2021 gestion du bachelor (BUT)
Les prochaines versions de ScoDoc :
- ScoDoc 9.2 : octobre 2021 nouvelles fonctionnalités liés au BUT.
- ScoDoc 9.5 : début 2023
- Nouveau système de suivi de l'assiduité (absences, présences)
- ScoDoc 9.4 : prévue à l'automne 2022
- cas complexes posés par les BUT (parcours, tenue des jury)
- nouveaux documents
- ScoDoc 9.3 : publiée en mai 2022
- tenue des jurys BUT et exports Apogée
- gestion des parcours (pour la mise en place des semestre)
- nouvelle API
- module "relations entreprises"
- ScoDoc 9.2 : publiée en avril 2022 nouvelles fonctionnalités liées au BUT
- référentiels de compétences Orébut
- capitalisation des UE dans le BUT
- bonus/malus locaux
- bulletins BUT pdf
- nouveau module de gestion relations avec les entreprises
- ScoDoc 9.1 : décembre 2021 gestion du bachelor (BUT)
- type de formation BUT
- distinction SAE/ressources
- poids (coefs) des évaluations, affichage, édition
- coefs de modules (ressources, SAE): affichage et édition dans ScoDoc
- calculs moyennes modules et vérification conformité
- calcul des moyennes d'UE
- bulletin de note v1
- ScoDoc 9.0 : publiée le 19 sept. 2021, version complètement remaniée en
Python 3/Flask.
<br>

View File

@ -0,0 +1,16 @@
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
document$.subscribe(() => {
MathJax.typesetPromise()
})

View File

@ -0,0 +1,51 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGEkuIUBEAClK699yEifRP0TOVpslbEguSt59VMtTg8AYroPX5lalyB/ccdo
Z3hhFuzwTIQ/V7NG8P9OzFud/rKCH6gJLwlXum3a4/pHyg3Qj2naZsIRKEsy7SWp
YUmFS5MKWAynPVbUK1CuIdw1aU9/ENTL98FMBfDKA2l2vkFdDvYGDtZhJ243d1pW
7wq0nDuDCeNSh7QHS+sI9hNQ3loeIxGzvZD/89wTDJp5ihdcaw1tvU4EaCEqgAu2
hZ3luGsxsFcTqlbk0U26rWZlfDNhtHSmwtPobsHLD5p6OhjFgOhOiOJUe0Hp9VjQ
0Dkt6fyIxfU2UPZMEHhCByFsgHx2gfAZbi1orH6rmR0byVAJVbF58GEUXnuxNayq
sR1Bi+elWIoGxjs98Un4ho+LqBhZr0nSEqovYDMp9AgX8Rx+oAn8CB6EkDUHI8b6
BOrZFyGUt9UUQiIk7KkAH0VqdNxFtfqrwE1c1sc9RkEJcjxkLNaFPPyJKmpgtJfe
H4m2pX7EZH8NkvYhIMMRxSm5Jja6is2nJS+BLrLGiAjjYvGCqYq6Eurmjc+h6KKW
nLORHJCVkXwOYjJtX81fwos5cAcOmKz/QwoZPWU3QWvGq/KoAiTnFoQMwoagnVOA
55XhTLa1+V/3KpyrQupee4Uctj4doLeipZRuRXPcM/6A3z/XOMrucD6oUwARAQAB
tCdFbW1hbnVlbCBWaWVubmV0IDxlbW1hbnVlbEB2aWVubmV0Lm5ldD6JAjgEEwEI
ACIFAmEkuIUCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDm3l8G72kz3
Y2wP/R3lu/wYsIiO17ISbQfJyBSOArs/Rkbl+Y01p35Hb1HvQ4rmJHkPt/+NuIZk
iu0mR5B9f/3RRFZYvqraVWSXtbuputIXaClRiMRsk/xYfa+u5E+vFTcG/uM7yifF
rNT7zdr/064MDXewhAN6YZsaCJHOHL+Ga+vtc3NwDHdqPDAon4P6j4eDlZQ4heZ2
7DTXDiVsyqbf1UTSgDSmGyfNI6kCHh9LTYxnT3k3G5sKrGwqtfYOij3o35M3CvB4
e3YP2UFjCf33ymRgzJz/INiLMeJAMtGb1f0F0LeLNaeCrmUSS2/BZTNVE6h2CcR4
hGvWQKZSedvVaP2oZ34WxlcxDkwi84bVMX5W4lKxu26D2KjbPJhrgoVf7pt1yNKd
FeqsmP7r9uE5W/C/WdDxb6vvW4GN6gK8SzBz/iIAW3JPfxL4EUuRT8XMgkaaojZd
yWaxk9N2t08joWUnK7eI2LPX9zYNO2EZbPmXOoQyUH7O7KMMAvEQkWvIUtO3GERG
FeLktW6yI9UZ8tQ2H8IgPU0k+YoABJBnRy4PbfnzCTlza+E93VyyFgk5ZltdYHTP
jfSVx2GrWVGrURGMKrOIeDCgSDhrQzow3uj7AUtqLOP5zJM2nL131dJ4lNkeh7VL
banmZvZofhJFK0gAzhuJd0JTul3vesoVS8/frm9OfwI+kIRruQINBGEkuIUBEACz
USdULoaXJXB1LKsLM+6lXzywHWzgmA3B2aiikAsooedc1n7y/xR20FFpHkieDQbK
xUNPSF75dxrfLMMuG4QQYo+r1G3ujHgBrw6IfytP8h0fmPhIaZOYzlEKWF47eeOZ
18FBAMGRX+hA72cv/mARDlmPVh7K4Rdl9FAIANBuEftU70i0eNPKj+CBJ8/qE4JV
iCEvG3hfrmCI+Oe8dlJliKBVVW5L0oMLF777GLvHUuFdKG51TNRIeRcrz7F8/Aax
9CuY3SY5jezVGeDxH/ZiVZua5Y8b9kh8qDuQuAdGj7q9uQU6vNJ9BhfGD2ZUUX1V
/KmMBkv3nDg5Bkk9Puf+E2jc09mQkcOhuo3hSYmD1AWH/JFs+W6fYKVEMPinLGUC
v4l225Jdtu9Ah8N+SxsRrkg/tDuvXM1eka/Xyy/ppXmst8zodPLSDv3uGUvd4rmk
GKs047CZbfbiqd7OrqIHkdxGX50MzPoJ46eq5tKKwyZ24WgXW0MJ/2ML6iGVGsr5
0QK8JMMYpTYuDMgvfuo8P7LSqxVZ1wdyltCyDDqiE6TBPkvjTIE89f4BpAj54H4l
+h26tFisVR+Qmu1CAVvqFR1N7UD6s17K2GYcyQauDJpViMVRTla+I5aB6c3rJdZ4
MYLNxzbinD48nxlU6CiBrCQ3rU7HHGHUCsoGA4UK0QARAQABiQIfBBgBCAAJBQJh
JLiFAhsMAAoJEDm3l8G72kz38lAP/3GEKlJs1HYvMQ/UrZrORS+ykuEVaSmVQBVD
zONYzlgxgyYEFpdIf90+QEORk32KySV+2MnSnL5jeaAbFlBS8KQ2u7ldlA68esuo
T4HdNTLOa+XCDTF8AJzr7tmulPiU5k2EhUfYGdU5vOufF1wUc5vqqSWaoy+EXSc/
kymLObC7R/Bgr6rXEaXwIpxZQTmodUmQgHaVDL3PPABhEs8QD/pm3OM2Qk26+4+/
ICc+O0qmM59wbH73cmWP1CGKRrqp6l++oDG3I+LnxioGJ+uqcxH4FdSy3fqh30q3
RTFgknBRZKDmGOjvNiOrExXhM9MornNQ8bJQZGehuVi8iWmq1bgcJbFaFiCzYyL3
1dvhuMA4ql65KrgcCciJE3jCo0Lq5xXCEm/zhA/WNnYLOwBM+2au3QmyFlRjSJIf
9KFkpUG0psS6NI9DvnyaZrrvhz6sdspap7SY93Vllweg7yRYlI+vsTaxDjqs+WlN
+LSHZnC57Gssl9jwq6WBm7VlAoJZ2sipTqrwlYbD4VdcaMd9C8pLCsVa5etJKwlr
Pdg5l37Os2zgsP00NieX1P4HHmGzV1j1TsYrzaiCJ5g35h/lIqQV7z6ndvPX2TD2
eokuBieXFuxRPlscA+Diudyvl6jJ1ATJI48GUpcUg2sC7iM91IsG4tC9GGOrmAqV
LwbpXjdu
=MuGd
-----END PGP PUBLIC KEY BLOCK-----

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,17 @@
### departement-create
#### POST /departement/create
> `Content-Type: application/json`
>
> `{"acronym": "NEWONE" , "visible": true}`
```json
{
"acronym": "NEWONE",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 6,
"visible": true
}
```

View File

@ -0,0 +1,9 @@
### departement-delete
#### POST /departement/NEWONE/delete
```json
{
"OK": true
}
```

View File

@ -0,0 +1,17 @@
### departement-edit
#### POST /departement/NEWONE/edit
> `Content-Type: application/json`
>
> `{"visible": false}`
```json
{
"acronym": "NEWONE",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 6,
"visible": false
}
```

View File

@ -0,0 +1,56 @@
### departement-etudiants
#### GET /departement/TAPI/etudiants
```json
[
{
"civilite": "X",
"code_ine": "INE1",
"code_nip": "1",
"dept_id": 1,
"id": 1,
"nom": "COSTA",
"nom_usuel": null,
"prenom": "SACHA"
},
{
"civilite": "F",
"code_ine": "2",
"code_nip": "NIP2",
"dept_id": 1,
"id": 2,
"nom": "NAUDIN",
"nom_usuel": null,
"prenom": "SIMONE"
},
"..."
]
```
#### GET /departement/id/1/etudiants
```json
[
{
"civilite": "X",
"code_ine": "INE1",
"code_nip": "1",
"dept_id": 1,
"id": 1,
"nom": "COSTA",
"nom_usuel": null,
"prenom": "SACHA"
},
{
"civilite": "F",
"code_ine": "2",
"code_nip": "NIP2",
"dept_id": 1,
"id": 2,
"nom": "NAUDIN",
"nom_usuel": null,
"prenom": "SIMONE"
},
"..."
]
```

View File

@ -0,0 +1,130 @@
### departement-formsemestres-courants
#### GET /departement/TAPI/formsemestres_courants
```json
[
{
"block_moyennes": false,
"bul_bgcolor": "white",
"bul_hide_xml": false,
"date_debut": "01/09/2021",
"date_debut_iso": "2021-09-01",
"date_fin": "31/08/2022",
"date_fin_iso": "2022-08-31",
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"elt_annee_apo": null,
"elt_sem_apo": null,
"ens_can_edit_eval": false,
"etape_apo": "A1, A2, A3",
"etat": true,
"formation": {
"acronyme": "BUT R&T",
"code_specialite": null,
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"formation_code": "V1RET",
"formation_id": 1,
"id": 1,
"referentiel_competence_id": 1,
"titre": "BUT R&T",
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
"type_parcours": 700,
"version": 1
},
"formation_id": 1,
"formsemestre_id": 1,
"gestion_compensation": false,
"gestion_semestrielle": false,
"id": 1,
"modalite": "FI",
"parcours": [],
"resp_can_change_ens": true,
"resp_can_edit": false,
"responsables": [],
"scodoc7_id": null,
"semestre_id": 1,
"titre": "Semestre test",
"titre_formation": "BUT R&T",
"titre_num": "Semestre test semestre 1"
},
"..."
]
```
#### GET /departement/id/1/formsemestres_courants
```json
[
{
"block_moyennes": false,
"bul_bgcolor": "white",
"bul_hide_xml": false,
"date_debut": "01/09/2021",
"date_debut_iso": "2021-09-01",
"date_fin": "31/08/2022",
"date_fin_iso": "2022-08-31",
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"elt_annee_apo": null,
"elt_sem_apo": null,
"ens_can_edit_eval": false,
"etape_apo": "A1, A2, A3",
"etat": true,
"formation": {
"acronyme": "BUT R&T",
"code_specialite": null,
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"formation_code": "V1RET",
"formation_id": 1,
"id": 1,
"referentiel_competence_id": 1,
"titre": "BUT R&T",
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
"type_parcours": 700,
"version": 1
},
"formation_id": 1,
"formsemestre_id": 1,
"gestion_compensation": false,
"gestion_semestrielle": false,
"id": 1,
"modalite": "FI",
"parcours": [],
"resp_can_change_ens": true,
"resp_can_edit": false,
"responsables": [],
"scodoc7_id": null,
"semestre_id": 1,
"titre": "Semestre test",
"titre_formation": "BUT R&T",
"titre_num": "Semestre test semestre 1"
},
"..."
]
```

View File

@ -0,0 +1,18 @@
### departement-formsemestres_ids
#### GET /departement/TAPI/formsemestres_ids
```json
[
1,
"..."
]
```
#### GET /departement/id/1/formsemestres_ids
```json
[
1,
"..."
]
```

View File

@ -0,0 +1,18 @@
### departement-logo
#### GET /departement/TAPI/logo/demo
```json
{
"Content-Disposition": "inline; filename=logo_demo.png",
"Content-Type": "image/png"
}
```
#### GET /departement/id/1/logo/demo
```json
{
"Content-Disposition": "inline; filename=logo_demo.png",
"Content-Type": "image/png"
}
```

View File

@ -0,0 +1,18 @@
### departement-logos
#### GET /departement/TAPI/logos
```json
[
"demo",
"..."
]
```
#### GET /departement/id/1/logos
```json
[
"demo",
"..."
]
```

View File

@ -0,0 +1,24 @@
### departement
#### GET /departement/TAPI
```json
{
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
}
```
#### GET /departement/id/1
```json
{
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
}
```

View File

@ -0,0 +1,11 @@
### departements-ids
#### GET /departements_ids
```json
[
1,
2,
"..."
]
```

View File

@ -0,0 +1,23 @@
### departements
#### GET /departements
```json
[
{
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
{
"acronym": "AA",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 2,
"visible": true
},
"..."
]
```

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
### etudiant-formsemestre-groups
#### GET /etudiant/etudid/11/formsemestre/1/groups
```json
[
{
"bul_show_rank": false,
"formsemestre_id": 1,
"group_id": 1,
"group_name": null,
"groups_editable": true,
"id": 1,
"numero": null,
"partition_id": 1,
"partition_name": null,
"show_in_lists": true
},
"..."
]
```

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,134 @@
### etudiant-formsemestres
#### GET /etudiant/etudid/11/formsemestres
```json
[
{
"annee_scolaire": 2021,
"block_moyennes": false,
"bul_bgcolor": "white",
"bul_hide_xml": false,
"date_debut": "01/09/2021",
"date_debut_iso": "2021-09-01",
"date_fin": "31/08/2022",
"date_fin_iso": "2022-08-31",
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"elt_annee_apo": null,
"elt_sem_apo": null,
"ens_can_edit_eval": false,
"etape_apo": "A1, A2, A3",
"etat": true,
"formation": {
"acronyme": "BUT R&T",
"code_specialite": null,
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"formation_code": "V1RET",
"formation_id": 1,
"id": 1,
"referentiel_competence_id": 1,
"titre": "BUT R&T",
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
"type_parcours": 700,
"version": 1
},
"formation_id": 1,
"formsemestre_id": 1,
"gestion_compensation": false,
"gestion_semestrielle": false,
"id": 1,
"modalite": "FI",
"parcours": [],
"resp_can_change_ens": true,
"resp_can_edit": false,
"responsables": [],
"scodoc7_id": null,
"semestre_id": 1,
"session_id": "TAPI-BUT-FI-S1-2021",
"titre": "Semestre test",
"titre_court": "BUT R&T",
"titre_num": "Semestre test semestre 1"
},
"..."
]
```
#### GET /etudiant/ine/INE11/formsemestres
```json
[
{
"annee_scolaire": 2021,
"block_moyennes": false,
"bul_bgcolor": "white",
"bul_hide_xml": false,
"date_debut": "01/09/2021",
"date_debut_iso": "2021-09-01",
"date_fin": "31/08/2022",
"date_fin_iso": "2022-08-31",
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"elt_annee_apo": null,
"elt_sem_apo": null,
"ens_can_edit_eval": false,
"etape_apo": "A1, A2, A3",
"etat": true,
"formation": {
"acronyme": "BUT R&T",
"code_specialite": null,
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"formation_code": "V1RET",
"formation_id": 1,
"id": 1,
"referentiel_competence_id": 1,
"titre": "BUT R&T",
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
"type_parcours": 700,
"version": 1
},
"formation_id": 1,
"formsemestre_id": 1,
"gestion_compensation": false,
"gestion_semestrielle": false,
"id": 1,
"modalite": "FI",
"parcours": [],
"resp_can_change_ens": true,
"resp_can_edit": false,
"responsables": [],
"scodoc7_id": null,
"semestre_id": 1,
"session_id": "TAPI-BUT-FI-S1-2021",
"titre": "Semestre test",
"titre_court": "BUT R&T",
"titre_num": "Semestre test semestre 1"
},
"..."
]
```

View File

@ -0,0 +1,203 @@
### etudiant
#### GET /etudiant/etudid/11
```json
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 11,
"francais": null,
"id": 11,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "MADELEINE.FLEURY@example.com",
"emailperso": null,
"etudid": 11,
"fax": null,
"id": 11,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "F",
"code_ine": "INE11",
"code_nip": "11",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 11,
"lieu_naissance": null,
"nationalite": null,
"nom": "FLEURY",
"nom_usuel": null,
"photo_filename": null,
"prenom": "MADELEINE",
"scodoc7_id": null,
"statut": null
}
```
#### GET /etudiant/ine/INE11
```json
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 11,
"francais": null,
"id": 11,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "MADELEINE.FLEURY@example.com",
"emailperso": null,
"etudid": 11,
"fax": null,
"id": 11,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "F",
"code_ine": "INE11",
"code_nip": "11",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 11,
"lieu_naissance": null,
"nationalite": null,
"nom": "FLEURY",
"nom_usuel": null,
"photo_filename": null,
"prenom": "MADELEINE",
"scodoc7_id": null,
"statut": null
}
```
#### GET /etudiant/nip/11
```json
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 11,
"francais": null,
"id": 11,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "MADELEINE.FLEURY@example.com",
"emailperso": null,
"etudid": 11,
"fax": null,
"id": 11,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "F",
"code_ine": "INE11",
"code_nip": "11",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 11,
"lieu_naissance": null,
"nationalite": null,
"nom": "FLEURY",
"nom_usuel": null,
"photo_filename": null,
"prenom": "MADELEINE",
"scodoc7_id": null,
"statut": null
}
```

View File

@ -0,0 +1,68 @@
### etudiant_formsemestres
#### GET /etudiant/nip/11/formsemestres
```json
[
{
"annee_scolaire": 2021,
"block_moyennes": false,
"bul_bgcolor": "white",
"bul_hide_xml": false,
"date_debut": "01/09/2021",
"date_debut_iso": "2021-09-01",
"date_fin": "31/08/2022",
"date_fin_iso": "2022-08-31",
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"elt_annee_apo": null,
"elt_sem_apo": null,
"ens_can_edit_eval": false,
"etape_apo": "A1, A2, A3",
"etat": true,
"formation": {
"acronyme": "BUT R&T",
"code_specialite": null,
"departement": {
"acronym": "TAPI",
"date_creation": "2022-08-20T12:00:00.000000+02:00",
"description": null,
"id": 1,
"visible": true
},
"dept_id": 1,
"formation_code": "V1RET",
"formation_id": 1,
"id": 1,
"referentiel_competence_id": 1,
"titre": "BUT R&T",
"titre_officiel": "Bachelor technologique r\u00e9seaux et t\u00e9l\u00e9communications",
"type_parcours": 700,
"version": 1
},
"formation_id": 1,
"formsemestre_id": 1,
"gestion_compensation": false,
"gestion_semestrielle": false,
"id": 1,
"modalite": "FI",
"parcours": [],
"resp_can_change_ens": true,
"resp_can_edit": false,
"responsables": [],
"scodoc7_id": null,
"semestre_id": 1,
"session_id": "TAPI-BUT-FI-S1-2021",
"titre": "Semestre test",
"titre_court": "BUT R&T",
"titre_num": "Semestre test semestre 1"
},
"..."
]
```

View File

@ -0,0 +1,212 @@
### etudiants-clef
#### GET /etudiants/etudid/11
```json
[
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 11,
"francais": null,
"id": 11,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "MADELEINE.FLEURY@example.com",
"emailperso": null,
"etudid": 11,
"fax": null,
"id": 11,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "F",
"code_ine": "INE11",
"code_nip": "11",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 11,
"lieu_naissance": null,
"nationalite": null,
"nom": "FLEURY",
"nom_usuel": null,
"photo_filename": null,
"prenom": "MADELEINE",
"scodoc7_id": null,
"statut": null
},
"..."
]
```
#### GET /etudiants/ine/INE11
```json
[
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 11,
"francais": null,
"id": 11,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "MADELEINE.FLEURY@example.com",
"emailperso": null,
"etudid": 11,
"fax": null,
"id": 11,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "F",
"code_ine": "INE11",
"code_nip": "11",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 11,
"lieu_naissance": null,
"nationalite": null,
"nom": "FLEURY",
"nom_usuel": null,
"photo_filename": null,
"prenom": "MADELEINE",
"scodoc7_id": null,
"statut": null
},
"..."
]
```
#### GET /etudiants/nip/11
```json
[
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 11,
"francais": null,
"id": 11,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "MADELEINE.FLEURY@example.com",
"emailperso": null,
"etudid": 11,
"fax": null,
"id": 11,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "F",
"code_ine": "INE11",
"code_nip": "11",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 11,
"lieu_naissance": null,
"nationalite": null,
"nom": "FLEURY",
"nom_usuel": null,
"photo_filename": null,
"prenom": "MADELEINE",
"scodoc7_id": null,
"statut": null
},
"..."
]
```

View File

@ -0,0 +1,162 @@
### etudiants-courants
#### GET /etudiants/courants
```json
[
{
"civilite": "X",
"code_ine": "INE1",
"code_nip": "1",
"dept_id": 1,
"id": 1,
"nom": "COSTA",
"nom_usuel": null,
"prenom": "SACHA"
},
{
"civilite": "F",
"code_ine": "2",
"code_nip": "NIP2",
"dept_id": 1,
"id": 2,
"nom": "NAUDIN",
"nom_usuel": null,
"prenom": "SIMONE"
},
"..."
]
```
#### GET /etudiants/courants/long
```json
[
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 1,
"francais": null,
"id": 1,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "SACHA.COSTA@example.com",
"emailperso": null,
"etudid": 1,
"fax": null,
"id": 1,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "X",
"code_ine": "INE1",
"code_nip": "1",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 1,
"lieu_naissance": null,
"nationalite": null,
"nom": "COSTA",
"nom_usuel": null,
"photo_filename": null,
"prenom": "SACHA",
"scodoc7_id": null,
"statut": null
},
{
"admission": {
"anglais": null,
"annee": null,
"annee_bac": null,
"apb_classement_gr": null,
"apb_groupe": null,
"bac": null,
"boursier_prec": null,
"classement": null,
"codelycee": null,
"codepostallycee": null,
"commentaire": null,
"decision": null,
"etudid": 2,
"francais": null,
"id": 2,
"math": null,
"nomlycee": null,
"physique": null,
"qualite": null,
"rang": null,
"rapporteur": null,
"score": null,
"specialite": null,
"type_admission": null,
"villelycee": null
},
"adresses": [
{
"codepostaldomicile": null,
"description": null,
"domicile": null,
"email": "SIMONE.NAUDIN@example.com",
"emailperso": null,
"etudid": 2,
"fax": null,
"id": 2,
"paysdomicile": null,
"telephone": null,
"telephonemobile": null,
"typeadresse": "domicile",
"villedomicile": null
}
],
"boursier": null,
"civilite": "F",
"code_ine": "2",
"code_nip": "NIP2",
"date_naissance": null,
"dept_acronym": "TAPI",
"dept_id": 1,
"dept_naissance": null,
"id": 2,
"lieu_naissance": null,
"nationalite": null,
"nom": "NAUDIN",
"nom_usuel": null,
"photo_filename": null,
"prenom": "SIMONE",
"scodoc7_id": null,
"statut": null
},
"..."
]
```

View File

@ -0,0 +1,7 @@
### evaluation-notes
#### GET /evaluation/1/notes
```json
{}
```

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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