Glasnost

API pour les templates

Un système de templates n'est pas très utile sans un moyen d'accéder à diverses informations internes à Glasnost.

Cet article expose brièvement l'API (Application Programmer Interface) de Glasnost.

Objets

Le type d'objet le plus fréquemment rencontré est de type GlasnostObject, il s'agit en fait des objets Glasnost tels que articles, groupes, rubriques…

Un attribut label est défini pour chacun des objets. Il reprend ce qui a été défini comme "étiquette" pour un objet (par exemple, pour un article, son titre, pour une personne, son nom et son prénom…).

Les attributs propres à chacun de ces objets sont évidemment disponibles  [1]. Par exemple: article.title pour accèder au titre de l'objet article

Ces attributs peuvent également être préfixés de t8d_ pour accéder à une traduction de l'attribut (exemple: article.t8d_title).

Un attribut isAccessible indique finalement si l'objet est accessible en lecture.

Un GlasnostObject s'instancie sur l'id d'un objet.

Exemple:

GlasnostObject('glasnost://site/articles/1')

Les deux autres types d'objets sont les serverRoles qui représente (en gros) un type d'objet connu par Glasnost et GlasnostTime qui est utilisé pour les champs de type Time des GlasnostObject.

GlasnostServerRole possède les attributs label et url.

GlasnostTime possède les attributs suivants:

Ainsi que:

Variables

currentObject est un GlasnostObject défini pour les pages affichant un objet (ex: http://site/articles/1 définira currentObject comme étant l'article numéro 1).

userToken est une variable qui contient le jeton de l'utilisateur ou rien si l'utilisateur n'est pas loggé.

Fonctions

canAddObject(objectType) retourne un booléen indiquant si l'utilisateur a les permissions nécessaires pour créer un objet du type objectType.

parseSpip(text) retourne le paramètre text au format SPIP converti en HTML.

pretion(text) crée et retourne une liste divisant le texte selon les balises <hr /> s'y trouvant.

getLastObjects(serverRole, number) retourne les number objets les plus récents pour le serverRole serverRole.

getMainRubric() retourne la rubrique définie comme rubrique principale.

getPathToObject(object) retourne une liste des rubriques à parcourir pour atteindre l'objet ou None si aucun chemin vers l'article n'est trouvé.

Exemple:

<p tal:on-error="nothing">
  Vous êtes ici:
  <span tal:repeat="s getPathToObject(GlasnostObject( \
                        'glasnost://entrouvert.theridion.lan/articles/22'))"
        tal:replace="'/ ' + s.label">Chemin</span>
</p>

getServerRoles() retourne la liste des serverRoles connus.

getSetContainedObjects(set, serverRoles=[], sortOn=None) retourne la liste des objets contenus dans la liste set dont le serverRole correspond à un des serverRole listé dans serverRoles et triés sur l'attribut sortOn.

Exemple:

<ul>
  <li tal:repeat="a2 getSetContainedObjects(r.membersSet, \
                  ['articles'], sortOn='modificationTime')"
      tal:content="a2.label">un article</li>
</ul>

Remarque: le backslash permet d'écrire une longue expression Python sur plusieurs lignes.

Modules

Les modules standards Python suivants sont accessibles depuis les templates: math et time.

[1] se référer à une documentation énumérant les objets et leurs attributs respectifs