Appel d'un script python dans une page template

3 messages Options
Embed this post
Permalink
stouil

Appel d'un script python dans une page template

Reply Threaded More More options
Print post
Permalink
Bonjour,

J'utilise Plone 3.0 avec la version de python qui va avec.
Je dois trier une liste de fichier de la forme 08.07 A, 08.09 S, 08.10 A, 08.101 S, pour l'afficher correctement.
J'ai crée un script python qui me permet de trier cette liste par ordre alphabétique croissant.

script python dans plone:
Non de la fonction: comp_file(x,y)
Code de la fonction:
x2=x.split('.')
y2=y.split('.')
if int(x2[1]) > int(y2[1]):
return 1
if int(x2[1]) < int(y2[1]):
return -1
return 0

ensuite je dois appeler ce script dans une page template de plone (.pt)

source de la page template:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en"
metal:use-macro="here/main_template/macros/master"
i18n:domain="plone">

<metal:block fill-slot="top_slot"
tal:define="dummy python:request.set('disable_border',1)" />

<div metal:fill-slot="main">
<table tal:define="results here/objectValues;
dummy python: results.sort(comp_file)">

<tr tal:repeat="item results">
<td tal:content="item/title">title</td>
</tr>
</table>
</div>

</html>

je test et j'ai le message d'erreur suivant:

Time 2009/04/24 19:25:00.881 GMT+2
User Name (User Id) manager (manager)
Request URL http://localhost:8080/GCA/SENTENCE/YearList 
Exception Type NameError
Exception Value name 'comp_file' is not defined

Il ne connait pas la fonction comp_file ???

Ma question est comment faire pour appeler cette fonction dans ma page template.

Merci d'avance.
Alexandre Garel

Re: Appel d'un script python dans une page template

Reply Threaded More More options
Print post
Permalink
stouil a écrit :

> Bonjour,
>
> J'utilise Plone 3.0 avec la version de python qui va avec.
> Je dois trier une liste de fichier de la forme 08.07 A, 08.09 S, 08.10 A,
> 08.101 S, pour l'afficher correctement.
> J'ai crée un script python qui me permet de trier cette liste par ordre
> alphabétique croissant.
>
> script python dans plone:
> Non de la fonction: comp_file(x,y)
> Code de la fonction:
> x2=x.split('.')
> y2=y.split('.')
> if int(x2[1]) > int(y2[1]):
> return 1
> if int(x2[1]) < int(y2[1]):
> return -1
> return 0
>
> ensuite je dois appeler ce script dans une page template de plone (.pt)
>
> source de la page template:
>
> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
> lang="en"
> metal:use-macro="here/main_template/macros/master"
> i18n:domain="plone">
>
> <metal:block fill-slot="top_slot"
> tal:define="dummy python:request.set('disable_border',1)" />
>
> <div metal:fill-slot="main">
> <table tal:define="results here/objectValues;
> dummy python: results.sort(comp_file)">
>
> <tr tal:repeat="item results">
> <td tal:content="item/title">title</td>
> </tr>
> </table>
> </div>
>
> </html>
>
> je test et j'ai le message d'erreur suivant:
>
> Time 2009/04/24 19:25:00.881 GMT+2
> User Name (User Id) manager (manager)
> Request URL http://localhost:8080/GCA/SENTENCE/YearList 
> Exception Type NameError
> Exception Value name 'comp_file' is not defined
>
> Il ne connait pas la fonction comp_file ???
>
> Ma question est comment faire pour appeler cette fonction dans ma page
> template.
>  
Ton script python est dans le portal_skins et tu peux le retrouver par
acquisition sur le contexte soit context.comp_file
Ceci dit je ne suis pas sur que ça fonctionnera ainsi car un script
python est plus qu'une fonction et je ne suis pas sur que tu puisse
l'utiliser en argument de 'sort'.

Il vaut mieux que ton script prenne en paramètre la liste et renvoie une
liste triée (et ton comparateur sera définie comme une fonction dans ton
script).

ainsi tu fera un tal:define="results python:context.sort_file(results)"
et plop tu auras ta liste triée dans results.

Alex

--
Alexandre Garel - [hidden email]
Pilot Systems - 9, rue Desargues - 75011 Paris
Tel : +33 1 44 53 05 55 - http://www.pilotsystems.net
Hébergement Zope et Plone gratuit - http://www.objectis.org



_______________________________________________
Plone-FR mailing list
[hidden email]
http://lists.plone.org/mailman/listinfo/plone-fr
Thomas Desvenain-2

Re: Appel d'un script python dans une page template

Reply Threaded More More options
Print post
Permalink
AMA fais plutôt un script qui appelle lui même here.objectValues et
trie la liste dedans :
j'ai l'impression que tu n'utilises pas results ailleurs...

par ailleurs, regarde si tu ne peux pas plutôt utiliser une recherche
catalogue pour récupérer tes résultats,
et travailler avec des brains.
objectValues est très gourmand

2009/4/27 Alexandre Garel <[hidden email]>:

> stouil a écrit :
>> Bonjour,
>>
>> J'utilise Plone 3.0 avec la version de python qui va avec.
>> Je dois trier une liste de fichier de la forme 08.07 A, 08.09 S, 08.10 A,
>> 08.101 S, pour l'afficher correctement.
>> J'ai crée un script python qui me permet de trier cette liste par ordre
>> alphabétique croissant.
>>
>> script python dans plone:
>> Non de la fonction: comp_file(x,y)
>> Code de la fonction:
>> x2=x.split('.')
>> y2=y.split('.')
>> if int(x2[1]) > int(y2[1]):
>> return 1
>> if int(x2[1]) < int(y2[1]):
>> return -1
>> return 0
>>
>> ensuite je dois appeler ce script dans une page template de plone (.pt)
>>
>> source de la page template:
>>
>> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
>> lang="en"
>> metal:use-macro="here/main_template/macros/master"
>> i18n:domain="plone">
>>
>> <metal:block fill-slot="top_slot"
>> tal:define="dummy python:request.set('disable_border',1)" />
>>
>> <div metal:fill-slot="main">
>> <table tal:define="results here/objectValues;
>> dummy python: results.sort(comp_file)">
>>
>> <tr tal:repeat="item results">
>> <td tal:content="item/title">title</td>
>> </tr>
>> </table>
>> </div>
>>
>> </html>
>>
>> je test et j'ai le message d'erreur suivant:
>>
>> Time 2009/04/24 19:25:00.881 GMT+2
>> User Name (User Id) manager (manager)
>> Request URL http://localhost:8080/GCA/SENTENCE/YearList
>> Exception Type NameError
>> Exception Value name 'comp_file' is not defined
>>
>> Il ne connait pas la fonction comp_file ???
>>
>> Ma question est comment faire pour appeler cette fonction dans ma page
>> template.
>>
>
> Ton script python est dans le portal_skins et tu peux le retrouver par
> acquisition sur le contexte soit context.comp_file
> Ceci dit je ne suis pas sur que ça fonctionnera ainsi car un script
> python est plus qu'une fonction et je ne suis pas sur que tu puisse
> l'utiliser en argument de 'sort'.
>
> Il vaut mieux que ton script prenne en paramètre la liste et renvoie une
> liste triée (et ton comparateur sera définie comme une fonction dans ton
> script).
>
> ainsi tu fera un tal:define="results python:context.sort_file(results)"
> et plop tu auras ta liste triée dans results.
>
> Alex
>
> --
> Alexandre Garel - [hidden email]
> Pilot Systems - 9, rue Desargues - 75011 Paris
> Tel : +33 1 44 53 05 55 - http://www.pilotsystems.net
> Hébergement Zope et Plone gratuit - http://www.objectis.org
>
>
>
> _______________________________________________
> Plone-FR mailing list
> [hidden email]
> http://lists.plone.org/mailman/listinfo/plone-fr
>
>



--

Thomas DESVENAIN - Développeur
Ingeniweb, Alterway Solutions
1, rue Royale
227, Les Bureaux de la Colline - Bat D
92213  - Saint Cloud Cedex
Tél : 01 78 15 24 00 / Fax : 01 46 02 44 04
http://www.ingeniweb.com
--

_______________________________________________
Plone-FR mailing list
[hidden email]
http://lists.plone.org/mailman/listinfo/plone-fr