"Gestion simplifiée des fichiers modèles"
Project description
scrippy_template
Gestion simplifiée des fichiers modèles pour le cadriciel Scrippy
.
Prérequis
Modules Python
Liste des modules nécessaires
Les modules listés ci-dessous seront automatiquement installés.
- jinja2
Installation
Manuelle
git clone https://codeberg.org/scrippy/scrippy-template.git
cd scrippy-template.git
sudo python3 -m pip install -r requirements.txt
make install
Avec pip
sudo pip3 install scrippy-template
Utilisation
Ce module permet la génération de document à partir de fichiers modèles à partir du moteur de rendu jinja2
Pour être utilisables les fichiers modèles devront être situés dans le répertoire défini par le paramètre base_path
passé en argument à l'objet template.Renderer
.
Afin de gérer l'interpolation de variables le fichier modèle DOIT accepter un dictionnaire nommé params
comme paramètre.
Les paramètres spécifiques à l'environnement Jinja2 peuvent être modifiés au travers de l'attribut env
de l'objet template.Renderer
.
Ce dictionnaire devra contenir l'ensemble des variables nécessaires au rendu complet du fichier modèle.
Le rendu du fichier modèle est obtenu à partir de l'objet template.Renderer
dont l'instanciation nécessite le nom d'un fichier modèle ainsi que le chemin de base dans lequel chercher le fichier modèle.
Les paramètres spécifiques à l'environnement Jinja2 peuvent être modifiés au travers de l'attribut env
de l'objet template.Renderer
.
Par convention les fichiers modèles utilisés par le cadriciel Scrippy sont rangés dans le répertoire défini par le paramètre de configuration env::templatedirdir
(voir la configuration du cadriciel Scrippy dans la documentation idoine).
Un modèle est un fichier texte simple dont certains passages dûment balisés seront interpolés par les variables passées en paramètres.
La méthode Renderer.render()
renvoie le rendu du fichier modèle.
Les variables doivent être fournies au fichier modèle sous la forme d'un dictionnaire nommé params
.
Le dictionnaire sera transmis au fichier modèle qui sera chargé de faire l'interpolation des variables qu'il contient.
Les fichiers modèles peuvent inclure:
- des structures de contrôle
- des boucles
Fichier modèle simple
Avec le fichier modèle suivant nommé template_test.mod et placé dans le répertoire /var/lib/scrippy/templates
:
Bonjour {{params.user}}
Vous recevez cet e-mail car vous faites partie des administrateurs fonctionnels de l'application {{params.app}}.
L'exécution du script {{params.script}} du {{params.date}} s'est terminé sur le code d'erreur suivant:
- {{params.error.code}}: {{params.error.msg}}
--
Cordialement.
{{params.sender}}
L'utilisation du fichier modèle se fera de la manière suivante:
import datetime
from scrippy_template import template
params = {"user": "Harry Fink",
"app": "Flying Circus",
"script": "dead_parrot.py",
"date": datetime.datetime.now().strftime("%d/%m/%Y"),
"error": {"code": 42,
"msg": "It’s not pinin’! It’s passed on! This parrot is no more!"},
"sender": "Luiggi Vercotti", }
base_path = '/var/lib/scrippy/templates'
template_file = 'template.j2'
renderer = template.Renderer(base_path, template_file)
print(renderer.render(params))
Avec les valeurs par défaut le message affiché en fin de script contiendra:
Bonjour Harry Fink
Vous recevez cet e-mail car vous faites partie des administrateurs fonctionnels de l'application Flying Circus.
L'exécution du script dead_parrot.py du 15/09/2019 s'est terminé sur le code d'erreur suivant:
- 42: It’s not pinin’! It’s passed on! This parrot is no more!
--
Cordialement.
Luigi Vercotti
Fichier modèle avec structures de contrôle
params = {"user": "Harry Fink",
"app": "Flying Circus",
"script": "dead_parrot.py",
"date": datetime.datetime.now().strftime("%d/%m/%Y"),
"num_error": 42,
"sender": "Luiggi Vercotti", }
Bonjour {{params.user}}
Vous recevez cet e-mail car vous faites partie des administrateurs fonctionnels de l'application {{params.app}}.
L'exécution du script {{params.script}} du {{params.date}} s'est terminé:
{% if params.num_errors == 0 %}
- Sans erreur
{% else %}
- avec {{params.num_errors}} erreur(s)
{% endif %}
--
Cordialement.
{{params.sender}}
Fichier modèle avec boucle
params = {"user": "Harry Fink",
"app": "Flying Circus",
"script": "dead_parrot.py",
"date": datetime.datetime.now().strftime("%d/%m/%Y"),
'errors': [{'code': 2, 'msg': "It's not pinin’! It's passed on! This parrot is no more!"},
{'code': 3, 'msg': "Ohh! The cat's eaten it."}],
"sender": "Luiggi Vercotti", }
Bonjour {{params.user}}
Vous recevez cet e-mail car vous faites partie des administrateurs fonctionnels de l'application {{params.app}}.
L'exécution du script {{params.script}} du {{params.date}} s'est terminé avec les erreurs suivantes:
{% for error in params.errors %}
{{ error.code }}: {{ error.msg}}
{% endfor %}
--
Cordialement.
{{params.sender}}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file scrippy-template-1.1.82.tar.gz
.
File metadata
- Download URL: scrippy-template-1.1.82.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e4f09a73e357806dca2bcabe247eafd30a5cb5f4c9501f972abf5612c614e36 |
|
MD5 | e6752ba43ac12217309f12f200e0f2d3 |
|
BLAKE2b-256 | bff4e04aca02b8c40bf2d9c52fee1a0459032dd695b05506f695de804e8b8da7 |
File details
Details for the file scrippy_template-1.1.82-py3-none-any.whl
.
File metadata
- Download URL: scrippy_template-1.1.82-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3af97574dc57a649a7b3cb70f65e51a51bc2f3f635f03ea985de6e3b2f672561 |
|
MD5 | 64ca2a49533a321f329b084eb52c0c7e |
|
BLAKE2b-256 | e2702958da69973ab6db58c3df65ec92d45261ea84cf5a22fbdeae0a3afb6bb8 |