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.netHébergement Zope et Plone gratuit -
http://www.objectis.org_______________________________________________
Plone-FR mailing list
[hidden email]
http://lists.plone.org/mailman/listinfo/plone-fr