Skip to main content

"Gestion simplifiée des fichiers modèles"

Project description

Build Status License Language

Scrippy, mon ami le scrangourou

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

scrippy-template-1.1.84.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

scrippy_template-1.1.84-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file scrippy-template-1.1.84.tar.gz.

File metadata

  • Download URL: scrippy-template-1.1.84.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for scrippy-template-1.1.84.tar.gz
Algorithm Hash digest
SHA256 2684165887cf307350d128eb5228dddd54406a80f176bc7e39537a01f51eca4f
MD5 f28090e7cdfc311018bb310bd9f7f37d
BLAKE2b-256 896aa81e1bfcfd8d3fa45e22a6449a4581583b45eafb8b4da5f851dcae39cda8

See more details on using hashes here.

File details

Details for the file scrippy_template-1.1.84-py3-none-any.whl.

File metadata

File hashes

Hashes for scrippy_template-1.1.84-py3-none-any.whl
Algorithm Hash digest
SHA256 de4b48b8cbb265a2f7c9a2f285280e46b6796bf22db88f36e1cf7f758cfbd5df
MD5 55069be3e91a62f86d915db5e59a14ae
BLAKE2b-256 d7ec06e9218c19f2c8cf8b425bd2552ca3f45b62c4bd8b0331e6553ef06ba539

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page