Génération de docx et pdf¶
Librairie docxtpl¶
Cette librairie utilise jinja2 et python-docx pour permettre de réaliser du templating jinja à l’intérieur de fichiers docx.
https://docxtpl.readthedocs.io/en/latest/
Nous utilisons cette librairie pour générer les différents documents.
Templates docx¶
Le dossier documents
contient des fichiers docx utilisés pour générer les documents de conventions, d’avenants et la fiche caf.
Le contenu suit la syntaxe de templating Jinja, permettant aux documents d’être complétés avec les informations entrés sur APiLos.
Ce tableau liste les templates existants.
Nom |
Type |
Nature |
Bailleur |
---|---|---|---|
Avenant-template |
Avenant |
Logements ordinaires |
x |
FicheCAF-template |
Fiche CAF |
x |
x |
Foyer-template |
Convention |
Foyers |
x |
FoyerResidence-Avenant-template |
Avenant |
Foyers et résidences |
x |
HLM-template |
Convention |
Logements ordinaires |
HLM |
Residence-template |
Convention |
Residences |
x |
SEM-template |
Convention |
Logements ordinaires |
SEM |
Type1-template |
Convention |
Logements ordinaires |
Type 1 |
Type2-template |
Convention |
Logements ordinaires |
Type 2 |
Ce tableau permet de retrouver quels documents sont utilisés pour quelles conventions. C’est utile pour prendre en compte les modifications apportées aux formulaires APILos dans les templates de documents.
Par exemple un nouveau champ est ajouté aux conventions logements ordinaires sur le site APiLos. Il faut alors mettre à jour les documents relatifs aux logements ordinaires pour y ajouter ce champ à l’endroit convenu avec le métier. Cela implique pour le cas des logements ordinaires la modification de 5 templates.
Génération de docx¶
Le code responsable de la génération des documents est situé dans conventions/services/convention_generator.py
La fonction generate_convention_doc
génère le document de convention ou d’avenant. Elle construit le contexte qui va être utilisé pour générer le document à partir du templating.
Conversion en pdf¶
Toujours dans le fichier conventions/services/convention_generator.py
, la fonction generate_pdf
a pour rôle de convertir un fichier docx en pdf, en utilisant libreoffice.
La variable d’environnement LIBREOFFICE_EXEC
contient le chemin vers l’executable de libreoffice.