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.