Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

plone, xml-rpc, avoir le "title", "description" et "body"

5 réponses
Avatar
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/courses/material/apiPlone_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)

5 réponses

Avatar
Bruno Desthuilliers
Mihamina Rakotomandimby a écrit :
Bonjour
Soit un Plone 2.5



Mauvais newsgroup alors... Il y a une ml Plone, et s'il me souvient bien
une asso de développeurs Zope/Plone/CPS francophones.

Je souhaite transférer les objets de type "Document" (ou "Page") d'un
Plone à l'autre, mais via XML-RPC.



Pourquoi donc utiliser une telle usine à gaz, alors que http + n'importe
quel format texte (json anyone ?) suffit ?


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.



<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>
Avatar
Mihamina Rakotomandimby (R12y)
>> Je souhaite transférer les objets de type "Document" (ou "Page") d'un
Plone à l'autre, mais via XML-RPC.


Pourquoi donc utiliser une telle usine à gaz, alors que http + n'importe
quel format texte (json anyone ?) suffit ?



Json? pour transferer des "document" plone d'un plone à l'autre?
Donne moi quelques mots-clés pour chercher, s'il te plait.
Avatar
Bruno Desthuilliers
Mihamina Rakotomandimby (R12y) a écrit :
Je souhaite transférer les objets de type "Document" (ou "Page") d'un
Plone à l'autre, mais via XML-RPC.


Pourquoi donc utiliser une telle usine à gaz, alors que http +
n'importe quel format texte (json anyone ?) suffit ?



Json? pour transferer des "document" plone d'un plone à l'autre?



Et qu'est-ce que tu va transférer avec XML-RPC ?
Avatar
Mihamina Rakotomandimby (R12y)
Bruno Desthuilliers wrote:
Je souhaite transférer les objets de type "Document" (ou "Page")
d'un Plone à l'autre, mais via XML-RPC.


Pourquoi donc utiliser une telle usine à gaz, alors que http +
n'importe quel format texte (json anyone ?) suffit ?



Json? pour transferer des "document" plone d'un plone à l'autre?



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?
Avatar
Bruno Desthuilliers
Mihamina Rakotomandimby (R12y) a écrit :
Bruno Desthuilliers wrote:
Je souhaite transférer les objets de type "Document" (ou "Page")
d'un Plone à l'autre, mais via XML-RPC.


Pourquoi donc utiliser une telle usine à gaz, alors que http +
n'importe quel format texte (json anyone ?) suffit ?



Json? pour transferer des "document" plone d'un plone à l'autre?



Et qu'est-ce que tu va transférer avec XML-RPC ?



Des "Document"



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)
Donc, sur l'un ou l'autre des serveurs, je mets un script Python qui
fait appel à XML-RPC



Ok, mais *pourquoi* 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,



Lesquelles ? Je veux dire, outre le fait de ne pas pouvoir faire un bête
dump du Data.fs ?

XML-RPC est un bon moyen
de faire.



Soit quelque chose m'échappe totalement, soit on n'a pas la même
définition de "bon moyen".

Mais evidemment, si il y a mieux: pourquoi pas?



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.