Le templating dans l’Ead2

L’agrégateur compile les données venant du serveur de commande ainsi que le template. Dans un premier temps, il récupère un dictionnaire contenant les variables à passer au template, le nom du template et le nom des modules inclues dans le template:

result = urllib.unquote(result)
content = eval(result)
# les données annexes
data = content['data']
# le template lié à l'action
template = content['template']
# récupération des modules de templatisation (creation d'élément de formulaire...)
plugins = data['templates']

Les modules complémentaires

On commence par charger et écrire les modules complémentaires:

content_plug = proxy.get_template(plugin, magic_nb)[1]
write_template(plugin, content_plug)

On les compile:

compile_template(plugin)

La compilation produit des fichiers .py qui sont donc importables depuis le pythonpath et donc dans un template.

Note

Si vous travaillez sur des modifications sur les modules, il faudra redémarrer le service ead-web, cd qui n’est pas nécessaire dans le cas de template.

Le template

Si le template n’est pas téléchargé dans le répertoire temporaire de l’:term:agrégateur, on va le chercher auprès du serveur de commande:

code, content_template = proxy.get_template(template, magic_nb)

Note

Si vous travaillez sur des templates (dans /usr/share/ead/backend/template/ du backend), il faut supprimer les références les versions téléchargées auprès de l’:term:agrégateur.

Le lancement du templating

Une fois toute les données récoltés, on peut templatiser:

res = instanciate_template(template, content)

On passe des paramètres à la templatisation:

class CheetahTemplate(ChtTemplate):
    """personnalise et facilite la construction
        du template Cheetah
    """
    def __init__(self, filename, context):
        self.context = context
        builtins = {}
        ChtTemplate.__init__(self, file=filename, searchList=[context, builtins, {'is_defined':self.is_defined}])

    def is_defined(self, varname):
        """filtre permettant de ne pas lever d'exception au cas où
           la variable ne serait pas définie
        """
        return varname in self.context

Table des matières

Sujet précédent

Description des urls de l’ead

Sujet suivant

Chargement d’un rôle

Cette page