plone, xml-rpc, avoir le "title", "description" et "body"
Le
Mihamina Rakotomandimby
Bonjour
Soit un Plone 2.5
Je souhaite transférer les objets de type "Document" (ou "Page") d'un
Plone à l'autre, mais via XML-RPC.
Il y a deux phases (dans mon processus):
- La lecture
- lister les objets
- stocker les champs (title, description, body)
- L'écriture
Pour l'ecriture, il y a deux document (presque les seuls) qui peuvent
m'aider et dont j'ai déjà tiré un script qui fonctionne.
http://www.zopelabs.com/cookbook/1109890980
http://plone.org/support/region/fr#nabble-td237977
Mon probleme est la lecture.
J'ai créé un Script (Python) via la ZMI dont le contenu est:
return context.objectIds()
J'accède à ce script via XML-RPC.
J'arrive ainsi à avoir dans une liste python des IDs des objets d'un
certain conteneur (le PATH du conteneur a été fourni au proxy).
Mais une fois mes IDs en main, je ne vois plus quoi en faire.
Créer un autre script qui prend un ID en parametre et y mettre
quelquechose comme:
elt={}
elt['title']=ID.getTitle()
elt['description']=ID.getDescription()
elt['body']=ID.getBody()
return elt
ou encore:
elt={}
elt['title']=context.ID.getTitle()
elt['description']=context.ID.getDescription()
elt['body']=context.ID.getBody()
return elt
Le souci est qu'ils considère ID comme une chaine et me dit (evidemment)
que "str" n'a pas de propriété getXXX.
Si j'arrive à avoir le title, la description et le body, j'aurais de
quoi transférer mes petits
Auriez-vous des pistes?
J'ai bien vu ceci:
http://www.ifpeople.net/fairsource/...piPlone_en
mais n'y ai rien trouvé qui m'aide
Merci d'avance.
--
Huile Essentielle de Camphre http://www.huile-camphre.fr
Infogerance http://www.infogerance.us
(Serveurs, Postes de travail, Développement logiciel)
Soit un Plone 2.5
Je souhaite transférer les objets de type "Document" (ou "Page") d'un
Plone à l'autre, mais via XML-RPC.
Il y a deux phases (dans mon processus):
- La lecture
- lister les objets
- stocker les champs (title, description, body)
- L'écriture
Pour l'ecriture, il y a deux document (presque les seuls) qui peuvent
m'aider et dont j'ai déjà tiré un script qui fonctionne.
http://www.zopelabs.com/cookbook/1109890980
http://plone.org/support/region/fr#nabble-td237977
Mon probleme est la lecture.
J'ai créé un Script (Python) via la ZMI dont le contenu est:
return context.objectIds()
J'accède à ce script via XML-RPC.
J'arrive ainsi à avoir dans une liste python des IDs des objets d'un
certain conteneur (le PATH du conteneur a été fourni au proxy).
Mais une fois mes IDs en main, je ne vois plus quoi en faire.
Créer un autre script qui prend un ID en parametre et y mettre
quelquechose comme:
elt={}
elt['title']=ID.getTitle()
elt['description']=ID.getDescription()
elt['body']=ID.getBody()
return elt
ou encore:
elt={}
elt['title']=context.ID.getTitle()
elt['description']=context.ID.getDescription()
elt['body']=context.ID.getBody()
return elt
Le souci est qu'ils considère ID comme une chaine et me dit (evidemment)
que "str" n'a pas de propriété getXXX.
Si j'arrive à avoir le title, la description et le body, j'aurais de
quoi transférer mes petits
Auriez-vous des pistes?
J'ai bien vu ceci:
http://www.ifpeople.net/fairsource/...piPlone_en
mais n'y ai rien trouvé qui m'aide
Merci d'avance.
--
Huile Essentielle de Camphre http://www.huile-camphre.fr
Infogerance http://www.infogerance.us
(Serveurs, Postes de travail, Développement logiciel)

Poser une question


Mauvais newsgroup alors... Il y a une ml Plone, et s'il me souvient bien
une asso de développeurs Zope/Plone/CPS francophones.
Pourquoi donc utiliser une telle usine à gaz, alors que http + n'importe
quel format texte (json anyone ?) suffit ?
<HS>
En supposant que tu appelles ton script dans le contexte du conteneur:
obj = context[ID]
elt = dict(
title=obj.getTitle(),
description = obj.getDescription(),
body = obj.getBody()
)
return elt
</HS>
Json? pour transferer des "document" plone d'un plone à l'autre?
Donne moi quelques mots-clés pour chercher, s'il te plait.
Et qu'est-ce que tu va transférer avec XML-RPC ?
Des "Document" (le type "Docuement" dans un Plone brut de fonderie).
Un serveur dédié arrive à expiration et n'est pas renouvelable car
l'offre commerciale n'est plus d'actualité et pas question pour
l'hébergeur d'upgrader la config matérielle: il faut passer à un autre
serveur.
Le distribution (L'OS) n'est pas la même sur les deux serveurs, ni les
version de Zope et Plone (Mais on reste dans des version suffisament
proches)
Je ne souhaite pas bêtement copier Data.fs.
Donc, sur l'un ou l'autre des serveurs, je mets un script Python qui
fait appel à XML-RPC et qui va pomper le contenu (du Plone) du premier
serveur et va "l'injecter" dans le nouveau.
Tout ne va pas être exactement comme avant dans un premier temps (date
de création et autres broutilles) mais ce n'est pas important pour cette
fois-ci.
Pour moi, vu les contraintes de la manoeuvre, XML-RPC est un bon moyen
de faire.
Mais evidemment, si il y a mieux: pourquoi pas?
Non. Ce que tu va transmettre, ce n'est pas l'objet lui-même, mais une
représentation de l'objet sous forme textuelle.
(snip)
Ok, mais *pourquoi* XML-RPC ????
>
Lesquelles ? Je veux dire, outre le fait de ne pas pouvoir faire un bête
dump du Data.fs ?
Soit quelque chose m'échappe totalement, soit on n'a pas la même
définition de "bon moyen".
Dans la mesure où, si je résume, le but de la manoeuvre est de permettre
de peupler l'instance Plone du nouveau serveur à partir de l'ancien:
Sur l'ancien: une paire de script qui retournent respectivement un
listing (en json) du contenu d'un objet (pour les dossiers et
assimilés), soit un objet sérialisé (documents etc). En utilisant bien
sûr l'acquisition pour exécuter ces scripts dans le contexte qui va bien...
Sur le nouveau: un script qui appelle les scripts sus-mentionnés sur
l'ancien serveur (en partant de la racine), et mets à jour le nouveau à
partir de la désérialisation du json retourné.
Dans la mesure où les objets plone répondent à des schémas bien
déterminés et facilement instrospectibles (c'est français ça ???), je ne
vois pas trop où est la difficulté a priori.