Appel d'un script Python avec passage de paramètre dans une ZPT

Document Actions
Réponses: 1   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

Appel d'un script Python avec passage de paramètre dans une ZPT

Posté par sebAma le 29/01/2010 12:32
Bonjour,

Je suis novice dans le langage python et dans Zope. J'utilise le CMS Plone pour gérer un site.
Je souhaiterais lancer un script Python depuis une ZPT pour pouvoir afficher des données. J'ai réussi à trouver un script qui fonctionne, le voici :

- le script Python qui permet de lister les fichiers d'un dossier:

url = "/Plone/files/mondossier";
result = container.portal_catalog.searchResults(
path = {'query':url},
sort_on = "id",
sort_order = "reverse",
review_state = "published");

results =
i=0

for brain in result:
i=i+1
id = brain.getId
if i==2:
key =id[0:15]

if ((id.find("Operational") > -1)):
results.append(brain)
return results


- la page index.html:

<html metal:use-macro="here/main_template/macros/master">
<div metal:fill-slot="main">
<h1 class="documentFirstHeading">Mon titre</h1>

<ul>
<li tal:repeat="item container/list_op">
<a href="Sample.tgz" class="filename"
tal:attributes="href item/getURL"
tal:content="python: here.formatId(item.getId)">Sample.tgz</a><a href="Sample.tgz" class="filename"
tal:attributes="href item/getURL"><img src='/Plone/files/images/pdf.gif' /></a>
<span
tal:define="modificationDate item/Date;
modificationDate python:here.toLocalizedTime(modificationDate)"
tal:content="string: $modificationDate"
>&nbsp;</span>
</li>
</ul>
</div>
</html>

Je souhaiterais passer un paramètre dans le script Python pour pouvoir faire une condition concernant le dossier sur lequel porte le script.
Mais je n'arrive pas malgré mes nombreuses recherches sur le net, à trouver une solution.... Je n'utilise peut-être pas la bonne méthode...

Pourriez-vous m'aider ??

merci beaucoup

Sebastien
  • Re: Appel d'un script Python avec passage de paramètre dans une ZPT

    Posté par airod le 03/02/2010 09:10
    et bien pour faire simple, et ca l'est quand on connais.
    pour passer des paramètres de façon explicite a n'importe quel objet Zope (en l'occurrence un script python) on utilise la notation python.

    exemple:
    "monScript.py" attend comme paramètre "monParametre"

    je veux appeller ce script dans une zpt.

    <span tal:replace="python:context['monScript.py'](monParametre='valeur')"></span>

    bien sur cette notation est identique si tu veux définir une variable a partir du résultat d'un script python.

    <span tal:define="datas python:context['monScript.py'](monParametre='valeur')">.....</span>

    nota: "context" est equivalent a "here" et préférable pour etre en cohérence avec les variables implicites utilisables dans les script python.
    a+

Python.org : Le site officiel du langage Python.
Zope.org : Le site web officiel de Zope.
Daily Python-URL : Actus de l'univers Python.
Tribute to Zyons : Zyons notre ami et membre fondateur de l'Afpy, nous quittait en 2005.