Modèles de documents — clés dynamiques¶
Référence pour créer ou modifier un modèle .docx (/admin/models) : quelles clés {{...}} fonctionnent réellement, et comment en ajouter une nouvelle.
Écran live : /admin/informations (« Clés de modèles »)
Écran fonctionnel (GET /documents/available-attributes), corrigé et ajouté au menu « Documents » le 2026-09-11 (il était orphelin — jamais dans la sidebar). Le réglage backend qui alimente cette liste (AVAILABLE_ATTRIBUTES) était incomplet par rapport à ce qui marche réellement (attribute_getters) ; corrigé et déployé en prod le 2026-09-11 — l'écran renvoie maintenant les 55 clés réelles (32 + 23 manquantes ajoutées), vérifié par diff programmatique contre attribute_getters côté backend. Plus besoin de recouper avec la liste ci-dessous, elle sert de référence lisible en complément.
TEMPLATE_VARIABLES.md (repo backend) reste une checklist de migration ponctuelle, pas une référence exhaustive — à ignorer pour cet usage.
Les 3 façons dont une clé peut fonctionner¶
1. Champ étudiant direct — toujours disponible, zéro configuration¶
N'importe quel champ du dossier étudiant peut être utilisé tel quel dans un modèle : {{nom}}, {{prenom}}, {{login}}, {{nationalite}}, {{ville}}, {{pays}}, {{date_naissance}}, {{ville_naissance}}, {{annee}}, {{section}}, {{promo}}, {{id_etudiant}}, {{nom_mere}}, {{prenom_mere}}, etc. — pas besoin de code ni de déploiement.
2. Champ personnalisé par campus — zéro code, zéro déploiement¶
Un champ propre à un campus (ex. une mention spécifique, une adresse alternative) se déclare dans les champs personnalisés du campus concerné (/admin/campus → onglet Infos) et s'utilise ensuite comme {{campus_extra_<clé>}}. Exemple : un champ personnalisé nommé ape sur le campus Bénin → {{campus_extra_ape}} dans le modèle.
3. Valeur calculée — nécessite un changement de code¶
Les clés ci-dessous sont calculées (accord grammatical, valeur dérivée) : elles n'existent pas comme champ brut, il faut une ligne de code ajoutée par le backend pour en créer une nouvelle de ce type.
Clés calculées disponibles aujourd'hui¶
Accords grammaticaux (dérivés de la civilité) :
| Clé | Exemple (Madame / Monsieur) |
|---|---|
civilite |
Madame / Monsieur |
etudiant_ou_etudiante |
étudiante / étudiant |
ne_ou_nee |
née / né |
autorise_ou_autorisee |
autorisée / autorisé |
fils_ou_fille |
fille / fils |
inscrit_ou_inscrite |
inscrite / inscrit |
lui_elle |
elle / lui |
il_elle |
elle / il |
Dérivées de la promotion/classe :
| Clé | Description |
|---|---|
annee_bachelor_attestation |
Année de fin de cycle Bachelor |
annee_master_attestation |
Année de fin de cycle Master |
annee_fin_cursus |
Année de fin de cursus |
cycle / cycle_short |
Nom du cycle (ex. "Bachelor en Ingénierie Logicielle") / version courte |
class_name |
Nom complet de la classe |
short_classname_min / short_classname_maj |
Nom court de la classe, minuscule/majuscule |
Campus (vide si l'étudiant n'a pas de campus assigné) :
| Clé | Description |
|---|---|
campus_name, campus_city, campus_country, campus_address, campus_phone, campus_email |
Coordonnées du campus |
campus_director_name, campus_director_title |
Directeur du campus |
ville_etude |
Ville d'étude — remplacée par campus_city si l'étudiant a un campus assigné |
Autres :
| Clé | Description |
|---|---|
specialite, nom_pere, prenom_pere |
Champs étudiant additionnels |
current_academic_year |
Année scolaire en cours, calculée automatiquement à la date du jour (rollover 1ᵉʳ septembre) — entièrement automatique, aucune action manuelle |
inscription_year, inscription_month, periode_inscription_debut |
Date d'inscription de l'étudiant |
document_reference |
Référence unique du document généré |
code_qr |
QR code de suivi du document (pas le badge de présence) |
score, english_score, credit, credit_to_pass |
Notes et crédits |
generated_date |
Date de génération du document |
Ajouter une nouvelle clé¶
| Type de clé | Procédure | Déploiement nécessaire |
|---|---|---|
| Champ étudiant qui existe déjà en base | L'utiliser directement dans le .docx |
Non |
| Champ personnalisé par campus | L'ajouter dans les champs personnalisés du campus (/admin/campus) |
Non |
| Valeur calculée (accord grammatical, dérivée...) | Demander l'ajout côté backend (attribute_getters) |
Oui |
Créer un nouveau type de document¶
Deux étapes distinctes :
- Créer le type de document (nom, description, upload du modèle) — se fait depuis
/admin/models, sans changement de code. - Le rendre disponible pour une classe — nécessite un changement de code + déploiement côté backend (chaque classe a sa propre liste de documents autorisés). Sans cette étape, le type existe mais aucun étudiant ne le voit, même après création.
Remplacer le modèle d'un type existant¶
Uploader un nouveau fichier sur /admin/models (ou via un override campus/classe) :
- Prend effet immédiatement pour toutes les prochaines générations.
- Aucun effet rétroactif — les documents déjà générés restent inchangés (ce sont des fichiers PDF indépendants).
- Aucun historique des anciens modèles — une fois remplacé, l'ancien fichier n'est pas récupérable depuis l'interface. Garder une copie avant remplacement si besoin de revenir en arrière.