diff --git a/docs/DevConventions.md b/docs/DevConventions.md
index 9a4523fd5..a2af78bbd 100644
--- a/docs/DevConventions.md
+++ b/docs/DevConventions.md
@@ -76,7 +76,8 @@ 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.
+ 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
barre de menu)
@@ -97,9 +98,69 @@ Pour mémoire, l'appel d'un template dans une vue se fait ainsi:
```py
render_template( "votre_template.j2",
- title="Changer de référentiel de compétences",
- autre_variable=...
- )
+ title="Changer de référentiel de compétences",
+ autre_variable=...
+)
+```
+
+### Passage des anciennes pages ScoDoc 7 aux templates Jinja
+
+Les anciennes pages étaient générées en python selon la structure:
+
+```py
+html_sco_header.sco_header(
+ cssstyles=["css/....css"],
+ javascripts=[
+ "js/....js",
+ ],
+ page_title="titre de la page",
+)
+... contenu ...
+html_sco_header.sco_footer()
+```
+
+La migration la plus simple consiste à utilise `sco_page.j2`:
+```py
+render_template(
+ "sco_page.j2",
+ content=contenu,
+ title="titre de la page",
+ cssstyles=["..."],
+ javascripts=["..."],
+)
+```
+
+Mais si on souhaite générer le contenu dans un template, cela prendra la forme:
+
+```jinja-html
+{% extends "sco_page.j2" %}
+
+{% block title %}
+ ...titre...
+{% endblock title %}
+
+{% block styles %}
+ {{ super() }}
+
+
+{% endblock styles %}
+
+{% block app_content %}
+
+
titre page
+ ... contenu ...
+
+{% endblock %}
+
+{% block scripts %}
+ {{ super() }}
+
+
+{% endblock %}
```
diff --git a/docs/GuideDeveloppeurs.md b/docs/GuideDeveloppeurs.md
index 3fdb06260..c18f0c0e1 100644
--- a/docs/GuideDeveloppeurs.md
+++ b/docs/GuideDeveloppeurs.md
@@ -112,7 +112,7 @@ bibliothèques, ou autres expériences de ce genre, vous pouvez le récréer ain
Puis soit vous installez les versions "officielles" (testées)
```bash
- pip install -r requirements-3.9.txt
+ pip install -r requirements-3.11.txt
```
Soit vous prenez les versions les plus à jour disponibles. Une façon rapide de
@@ -134,7 +134,7 @@ Enfin, pour mettre à jour les paquets pip, il faut dégeler les versions (unpin
puis upgrader et re-générer le fichier, comme suit:
```bash
-cp requirements-3.11.txt requirements.text
+cp requirements-3.11.txt requirements.txt
sed -i 's/[~=]=/>=/' requirements.txt
pip install -U -r requirements.txt
pip freeze > requirements-new.txt
diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md
index 7625404c4..f2199fcc4 100644
--- a/docs/ScoDoc9API.md
+++ b/docs/ScoDoc9API.md
@@ -309,6 +309,8 @@ permet de rechercher une entrée à partir du résultat attendu.
| [formsemestre_edit](#formsemestre_edit) | POST | EditFormSemestre |
| [formsemestre_edt](#formsemestre_edt-query) | GET | ScoView |
| [formsemestre_etat_evaluations](#formsemestre_etat_evaluations) | GET | ScoView |
+| [formsemestre_etud_desinscrit](#formsemestre_etud_desinscrit) | POST | EtudInscrit |
+| [formsemestre_etud_inscrit](#formsemestre_etud_inscrit) | POST | EtudInscrit |
| [formsemestre_etudiants](#formsemestre_etudiants-query) | GET | ScoView |
| [formsemestre_get](#formsemestre_get) | GET | ScoView |
| [formsemestre_partitions](#formsemestre_partitions) | GET | ScoView |
@@ -346,6 +348,8 @@ permet de rechercher une entrée à partir du résultat attendu.
| [logo_get_local_dept_by_acronym](#logo_get_local_dept_by_acronym) | GET | ScoSuperAdmin |
| [logo_get_local_dept_by_id](#logo_get_local_dept_by_id) | GET | ScoSuperAdmin |
| [logo_list_globals](#logo_list_globals) | GET | ScoSuperAdmin |
+| [moduleimpl_etud_desinscrit](#moduleimpl_etud_desinscrit) | POST | ScoView |
+| [moduleimpl_etud_inscrit](#moduleimpl_etud_inscrit) | POST | ScoView |
| [moduleimpl_evaluations](#moduleimpl_evaluations) | GET | ScoView |
| [moduleimpl_inscriptions](#moduleimpl_inscriptions) | GET | ScoView |
| [moduleimpl_notes](#moduleimpl_notes) | GET | ScoView |
@@ -1332,6 +1336,25 @@ Pour uniformiser les résultats des exemples, ceux sont soumis à quelques post-
* **Exemple de résultat:** [formsemestre_etat_evaluations.json](./samples/sample_formsemestre_etat_evaluations.json.md)
+#### **`formsemestre_etud_desinscrit`**
+
+* **Route:** `/ScoDoc/api/formsemestre//etudid//desinscrit`
+* **Méthode:** `POST`
+* **Permission:** `EtudInscrit`
+* **Description:** Désinscrit l'étudiant de ce formsemestre et TOUS ses modules
+
+
+
+#### **`formsemestre_etud_inscrit`**
+
+* **Route:** `/ScoDoc/api/formsemestre//etudid//inscrit`
+* **Méthode:** `POST`
+* **Permission:** `EtudInscrit`
+* **Description:** Inscrit l'étudiant à ce formsemestre et TOUS ses modules STANDARDS
+ (donc sauf les modules bonus sport).
+
+
+
#### **`formsemestre_etudiants(-query)`**
* **Routes:**
@@ -1979,6 +2002,26 @@ Pour uniformiser les résultats des exemples, ceux sont soumis à quelques post-
### API Moduleimpl
+#### **`moduleimpl_etud_desinscrit`**
+
+* **Route:** `/ScoDoc/api/moduleimpl//etudid//desinscrit`
+* **Méthode:** `POST`
+* **Permission:** `ScoView`
+* **Description:** Désinscrit l'étudiant de ce moduleimpl.
+
+* **Exemple de résultat:** [moduleimpl_etud_desinscrit.json](./samples/sample_moduleimpl_etud_desinscrit.json.md)
+
+
+#### **`moduleimpl_etud_inscrit`**
+
+* **Route:** `/ScoDoc/api/moduleimpl//etudid//inscrit`
+* **Méthode:** `POST`
+* **Permission:** `ScoView`
+* **Description:** Inscrit l'étudiant à ce moduleimpl.
+
+* **Exemple de résultat:** [moduleimpl_etud_inscrit.json](./samples/sample_moduleimpl_etud_inscrit.json.md)
+
+
#### **`moduleimpl_inscriptions`**
* **Route:** `/ScoDoc/api/moduleimpl//inscriptions`
@@ -2189,6 +2232,9 @@ Pour uniformiser les résultats des exemples, ceux sont soumis à quelques post-
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.
+!!! info
+ Cette page a été générée par la commande `flask gen-api-doc`, et les exemples de résultats
+ sont créés par `tools/test_api.sh --make-samples`.
!!! note "Voir aussi"
diff --git a/docs/img/API_Chart.svg b/docs/img/API_Chart.svg
index 4c29225c9..7ddd978b5 100644
--- a/docs/img/API_Chart.svg
+++ b/docs/img/API_Chart.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/samples/sample_moduleimpl_etud_desinscrit.json.md b/docs/samples/sample_moduleimpl_etud_desinscrit.json.md
new file mode 100644
index 000000000..a2a8f97ae
--- /dev/null
+++ b/docs/samples/sample_moduleimpl_etud_desinscrit.json.md
@@ -0,0 +1,9 @@
+### moduleimpl_etud_desinscrit
+
+#### POST /moduleimpl/1/etudid/2/desinscrit
+```json
+{
+ "status": "ok"
+}
+```
+
diff --git a/docs/samples/sample_moduleimpl_etud_inscription.json.md b/docs/samples/sample_moduleimpl_etud_inscription.json.md
new file mode 100644
index 000000000..273106a8a
--- /dev/null
+++ b/docs/samples/sample_moduleimpl_etud_inscription.json.md
@@ -0,0 +1,11 @@
+### moduleimpl_etud_inscription
+
+#### POST /moduleimpl/1/etudid/2/inscription
+```json
+{
+ "etudid": 2,
+ "id": 22,
+ "moduleimpl_id": 1
+}
+```
+
diff --git a/docs/samples/sample_moduleimpl_etud_inscrit.json.md b/docs/samples/sample_moduleimpl_etud_inscrit.json.md
new file mode 100644
index 000000000..bcda69136
--- /dev/null
+++ b/docs/samples/sample_moduleimpl_etud_inscrit.json.md
@@ -0,0 +1,11 @@
+### moduleimpl_etud_inscrit
+
+#### POST /moduleimpl/1/etudid/2/inscrit
+```json
+{
+ "etudid": 2,
+ "id": 22,
+ "moduleimpl_id": 1
+}
+```
+