2010-03-06 8 views
0

J'ai besoin de migrer des données d'un portail Plone vers Liferay. Quelqu'un at-il une idée sur la façon de le faire?Migration de données de Plone à Liferay, ou comment puis-je récupérer des informations à partir de Data.fs de Plone?

Quoi qu'il en soit, j'essaie de récupérer des données de Data.fs et de les stocker dans une représentation plus facile à travailler, comme JSON. Pour le faire, j'ai besoin de savoir quels objets je devrais obtenir de Data.fs. de Plone. J'ai déjà obtenu l'instance Products.CMFPlone.Portal.PloneSite de Data.fs, mais je ne peux rien en tirer. Je voudrais obtenir l'instance PloneSite et faire quelque chose comme ceci:

>>> import ZODB 
>>> from ZODB import FileStorage, DB 
>>> path = r"C:\Arquivos de programas\Plone\var\filestorage\Data.fs" 
>>> storage = FileStorage.FileStorage(path) 
>>> db = DB(storage) 
>>> conn = db.open() 
>>> root = conn.root() 
>>> app = root['Application'] 
>>> plone_site = app.getChildNodes()[13] # 13 would be index of PloneSite object 
>>> a = plone_site.get_articles() 
>>> for article in a: 
... print "Title:", a.title 
... print "Content:", a.content 
Title: <some title> 
Conent: <some content> 
Title: <some title> 
Conent: <some content> 

Bien sûr, il n'a pas besoin d'être si simple. Je veux juste quelques informations sur la structure de PloneSite et comment récupérer ses données. Quelqu'un at-il une idée?

Merci d'avance!

+0

Je fais de petites recherches quel portail correspond le mieux à mes besoins. Je suis vraiment curieux, pourquoi êtes-vous passé de Plone à Liferay? –

+1

@MarcinJancewicz J'ai travaillé pour un partenaire Liferay qui a été contracté pour exécuter la migration. En fait, nous avons fait beaucoup de migrations Plone-Liferay. Plone (ou, plus précisément, Zope) était considéré comme difficile à développer et à maintenir. En outre, ZODB était très enclin à la corruption de base de données. Je n'ai pas travaillé directement avec Plone mais c'était nos clients nous l'ont dit. OTOH, j'ai beaucoup travaillé avec Liferay et c'est un excellent outil. Il est conseillé de connaître JSP, servlets, Struts, Spring etc. et le cours officiel de Liferay vous fera gagner beaucoup de temps et, une fois que vous le saurez, vous serez très productif. – brandizzi

Répondre

2

Une fois que vous avez Ahold de l'objet du site Plone, vous pouvez faire une requête de catalogue pour trouver tous les éléments de contenu dans le site:

>>> brains = site.portal_catalog.unrestrictedSearchResults() 

Ceci retourne une liste des « cerveaux de catalogue », chacun qui contient des métadonnées sur l'élément. Vous pouvez obtenir l'article complet du cerveau:

>>> for b in brains: 
...  obj = b.getObject() 

En supposant que votre site Plone est l'utilisation du contenu à base Archétypes, vous pouvez alors itérer à travers les champs du schéma de l'élément et utilisez la accesseur de chaque champ pour récupérer sa valeur:

>>> for field in obj.Schema().fields(): 
...  field_id = field.__name__ 
...  field_value = field.getAccessor(obj)() 

Depuis la ZODB est une base de données d'objets qui stocke décapés objets Python, vous aurez besoin d'avoir la bonne version actuelle archétypes dans votre environnement Python, ainsi que le package qui définit la classe des objets que vous êtes essayer de récupérer.

Questions connexes