PLone et XML-RPC

2 messages Options
Embed this post
Permalink
Eric Vernichon

PLone et XML-RPC

Reply Threaded More More options
Print post
Permalink
Bonjour,


J'essaye de créer un document plone à partir d'un script python (en
dehors de plone) en utilisant xml-rpc mais je ne trouve pas d'exemple.

La lecture des documents existant sur le serveur de pose pas de problème
mais l'écriture ne fonctionne pas.

Connaissez des sites où je pourrais trouver de tel exemples


Cordialement

--
Eric Vernichon


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

Re: PLone et XML-RPC

Reply Threaded More More options
Print post
Permalink
        Bonjour,

Le 7/05/07 15:10, Eric a écrit :
> Bonjour,
>
> J'essaye de créer un document plone à partir d'un script python (en
> dehors de plone) en utilisant xml-rpc mais je ne trouve pas
> d'exemple.
>
> La lecture des documents existant sur le serveur de pose pas de
> problème mais l'écriture ne fonctionne pas.

   « Ne fonctionne pas » ? Comment faites-vous, quelle erreur survient,
etc. ?

> Connaissez des sites où je pourrais trouver de tel exemples

   Google ou Yahoo, peut-être. ;) Sinon, avez-vous cherché sur plone.org
ou  ZopeLabs.com ?

   Faire un appel XML-RPC sur un site Plone, c'est assez simple. Il
suffit de trouver la bonne méthode à appeler, finalement. À défaut de
méthode, on peut aussi chercher dans les scripts Python (entre autres).
En général, on peut commencer par chercher quel composant (méthode,
script ou autre) est appelé lorsque vous effectuez l'action avec votre
navigateur.

   En l'occurrence, pour créer un élément, vous cliquez sur « ajout d'un
élément » puis sur le lien correspondant à votre type de contenu. L'URL
indique ".../createObject?...". Donc le composant que l'on recherche,
c'est "createObject". C'est un script. Pas de chance, il redirige
l'utilisateur (et, plus généralement, le client : un navigateur ou votre
programme qui fait un appel XML-RPC) vers le formulaire de modification
de l'élément nouvellement créé. Donc ça ne colle pas à votre besoin. Il
vous faudrait donc un script (ou une méthode) qui fasse un peu comme
"createObject", mais sans la redirection. Et qui définisse les valeurs
des champs de votre élément après l'avoir créé, aussi, je suppose. Bref,
quelque chose comme :

     new_id = context.invokeFactory(id=id, type_name='Document')
     obj = context[new_id]
     obj.edit(body=body)
     obj.reindexObject()
     return new_id

    Je vous laisse adapter cela à votre besoin (et notamment reprendre
un peu de logique de "createObject" pour s'arranger lorsque
l'identifiant passé en paramètre est déjà utilisé). Ensuite, côté
XML-RPC, c'est assez simple (ici, le site Plone s'appelle "portal" et le
script ci-dessus se nomme "createViaRPC") :

     >>> portal = ServerProxy('http://user:pwd@localhost:8091/portal')
     >>> portal.createViaRPC('doc', 'Body of document.")
     'doc'

   Et voilà (même si l'appel XML-RPC est bien moche ; mais là n'est pas
la question).

--
Damien Baty
Pilot Systems - 9, rue Desargues - 75011 Paris
Tél : +33 (0)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