Aller au contenu

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 :

  1. Créer le type de document (nom, description, upload du modèle) — se fait depuis /admin/models, sans changement de code.
  2. 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.

Voir aussi