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.83.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: scrippy-template-1.1.83.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

Hashes for scrippy-template-1.1.83.tar.gz
Algorithm Hash digest
SHA256 8987752d1cc58c5827ee5749e874721e96977e665269dd0d49c5d94e13c7124a
MD5 853177e5cdb9f9c6986cd28547a24aa7
BLAKE2b-256 97641dc76695e469c6ed1485244c59d0f07db88106c3c9c2b2be663ac8d8d059

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrippy_template-1.1.83-py3-none-any.whl
Algorithm Hash digest
SHA256 775ae0e327e6d97a01bc1b1b83468e48f9d4ad0c422f3c214b98561a088f4731
MD5 510afdadc0aa25acc952441063eebd47
BLAKE2b-256 b3f06889693e853c91205f53b7e9c08faf69226b883b78e1178ea543a8cb84b7

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