From a698c80f7b658e2bab2161c4b7c51d2c25cc3118 Mon Sep 17 00:00:00 2001 From: viennet Date: Thu, 5 Sep 2024 11:03:08 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20doc=20dev=20s=C3=A9lection=20groupes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/DevConventions.md | 77 ++++++++++++++++++++++++---- docs/screens/multiselect_groups.png | Bin 0 -> 40206 bytes 2 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 docs/screens/multiselect_groups.png diff --git a/docs/DevConventions.md b/docs/DevConventions.md index a2af78bbd..5e2032d61 100644 --- a/docs/DevConventions.md +++ b/docs/DevConventions.md @@ -1,7 +1,7 @@ # Conventions de codage pour ScoDoc Le projet étant très ancien, le code est passé par différentes conventions et -frameworks. Le style de python et celui du *frontend* web ont considérablement +frameworks. Le style de python et celui du _frontend_ web ont considérablement évolués ces dernières décennies. Pour les nouveaux codes, respecter les principes suivants: @@ -22,7 +22,7 @@ Pour les nouveaux codes, respecter les principes suivants: - l'usage de **[black](https://black.readthedocs.io/en/stable/)** est obligatoire - l'usage de pylint et mypy est fortement recommandé -- Pour le code JS, indentation avec 2 espaces (sous VS Code, utiliser *Prettier*). +- Pour le code JS, indentation avec 2 espaces (sous VS Code, utiliser _Prettier_). ### Conventions standard Python @@ -44,7 +44,7 @@ def _upload_justificatif_files( ## Pages et templates -Les vues utilisent un template *Jinja2*, fichier avec extension j2. +Les vues utilisent un template _Jinja2_, fichier avec extension j2. On s'astreint, sauf cas particulier, à un nommage identique de la route, la vue et du template. @@ -76,7 +76,7 @@ Les templates suivants sont les plus utilisés pour les pages: - `sco_page.j2` page standard dans un formsemestre: avec sidebar et barre de menu du semestre. Le contenu de la variable `content` est placé comme HTML - brut (*safe*) dans la partie contenu. Passer `sco=ScoData(formsemestre=formsemestre)` + brut (_safe_) dans la partie contenu. Passer `sco=ScoData(formsemestre=formsemestre)` en argument au template. - `sco_page_dept.j2` page dans un département (avec sidebar) mais sans formsemestre (pas de @@ -120,6 +120,7 @@ html_sco_header.sco_footer() ``` La migration la plus simple consiste à utilise `sco_page.j2`: + ```py render_template( "sco_page.j2", @@ -163,7 +164,6 @@ Mais si on souhaite générer le contenu dans un template, cela prendra la forme {% endblock %} ``` - ### Classes css `scodoc.css` (et à partir de 9.7, `scodoc97.css`) définissent quelques classes à usage général: @@ -179,12 +179,12 @@ Mais si on souhaite générer le contenu dans un template, cela prendra la forme ## Accès à la base de donnée Sauf exception (requêtes exotiques, problèmes de performance) à discuter, les -accès à la base se font à travers l'ORM *SQLAlchemy*. Les modèles sont définis +accès à la base se font à travers l'ORM _SQLAlchemy_. Les modèles sont définis dans `app/models`, sauf les comptes utilisateurs qui sont dans `/app/auth/models.py`. Au moment de la définition de nouveaux modèles, éviter si possible les champs -*nullables*, penser à créer là où ce sera utile des index. +_nullables_, penser à créer là où ce sera utile des index. ## Tableaux @@ -192,19 +192,76 @@ ScoDoc génère beaucoup de tableaux, sauf exception destinés à l'affichage We On utilise la super-classe `Table` de `app/tables/table_builder.py`. -Le rendu HTML utilise *DataTables*. +Le rendu HTML utilise _DataTables_. ## Dates et heures ScoDoc, contrairement à de nombreuses applications, est centré sur les -*étudiants* et les enseignements, qui sont censés opérer dans le fuseau horaire +_étudiants_ et les enseignements, qui sont censés opérer dans le fuseau horaire du serveur. Cela signifie que, quelle que soit l'emplacement de l'utilisateur, les heures affichées et saisies par ScoDoc seront données dans le fuseau horaire du serveur. -L'API publie et reçoit des heures au format ISO avec fuseau horaire (*timezone*) et n'est pas +L'API publie et reçoit des heures au format ISO avec fuseau horaire (_timezone_) et n'est pas concernée par cette remarque. +## Sélection de groupes + +De nombreuses pages ont besoin d'offrir un moyen de sélectionner un ou plusieurs +groupes d'étudiants, comme dans cet exemple: + +![menu multiselect des groupes](screens/multiselect_groups.png) + +La vue doit récupérer la liste des groupes sélectionnés ainsi: + +```py +group_ids = request.args.getlist("group_ids") +``` + +ou s'il s'agit un `POST`: + +```py +group_ids = request.form.getlist("group_ids") +``` + +On converti ensuite les arguments en entiers: + +```py +try: + group_ids = [int(gid) for gid in group_ids] +except ValueError as exc: + raise ScoValueError("group_ids invalide") from exc +``` + +et on peut utiliser le code ancien `sco_groups_view`: + +```py +groups_infos = sco_groups_view.DisplayedGroupsInfos( + group_ids, + formsemestre_id=formsemestre.id, + select_all_when_unspecified=True, +) +``` + +`groups_infos` est un objet qui permet de récupérer les informations et de générer le menu. + +Par exemple: + +```py +Choix des groupes : +{sco_groups_view.menu_groups_choice(groups_infos, submit_on_change=True) + if groups_infos else ''} +``` + +La fonction `form_groups_choice` génère un formulaire complet. + +Autres attributs/méthodes utiles de `groups_infos`: + +- `get_etudids():list[int]` : les ids des étudiants des groupes sélectionnés; +- `groups_titles:str` : titres des groupes; +- `groups_filename:str`: un (morceau de) nom de fichier pour ces groupes. + + !!! note "Voir aussi" diff --git a/docs/screens/multiselect_groups.png b/docs/screens/multiselect_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..8a63e8677080d5eff3bfefc348497c88d5950149 GIT binary patch literal 40206 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 literal 0 HcmV?d00001