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

Uploaded Source

Built Distribution

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

Uploaded Python 3

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

Hashes for scrippy-template-1.1.82.tar.gz
Algorithm Hash digest
SHA256 5e4f09a73e357806dca2bcabe247eafd30a5cb5f4c9501f972abf5612c614e36
MD5 e6752ba43ac12217309f12f200e0f2d3
BLAKE2b-256 bff4e04aca02b8c40bf2d9c52fee1a0459032dd695b05506f695de804e8b8da7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scrippy_template-1.1.82-py3-none-any.whl
Algorithm Hash digest
SHA256 3af97574dc57a649a7b3cb70f65e51a51bc2f3f635f03ea985de6e3b2f672561
MD5 64ca2a49533a321f329b084eb52c0c7e
BLAKE2b-256 e2702958da69973ab6db58c3df65ec92d45261ea84cf5a22fbdeae0a3afb6bb8

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