ترحيل البيانات من PLONE إلى Liferay ، أو كيف يمكنني استرداد المعلومات من بيانات PLONE.FS

StackOverflow https://stackoverflow.com/questions/2394493

سؤال

أحتاج إلى ترحيل البيانات من بوابة قائمة على PLONE إلى Liferay. هل لدى أي شخص فكرة عن كيفية القيام بذلك؟

على أي حال ، أحاول استرداد البيانات من data.fs وتخزينها في تمثيل أسهل في العمل ، مثل JSON. للقيام بذلك ، أحتاج إلى معرفة الكائنات التي يجب أن أحصل عليها من بيانات PLONE.FS. لقد حصلت بالفعل على Products.CMFPlone.Portal.PloneSite مثيل من data.fs ، لكن لا يمكنني الحصول على أي شيء منه. أود الحصول على PloneSite على سبيل المثال وافعل شيئًا كهذا:

>>> 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>

بالطبع ، لم يكن بحاجة إلى أن يكون واضحًا جدًا. أنا فقط أريد بعض المعلومات حول بنية PloneSite وكيفية استرداد بياناتها. هل لدى أي شخص فكرة؟

شكرا لكم مقدما!

هل كانت مفيدة؟

المحلول

بمجرد أن تحصل على كائن موقع PLONE ، يمكنك إجراء استعلام كتالوج للعثور على جميع عناصر المحتوى في الموقع:

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

هذا يعيد قائمة "أدمغة الكتالوج" ، كل منها يحتوي على بعض البيانات الوصفية حول العنصر. يمكنك الحصول على العنصر الكامل من الدماغ:

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

على افتراض أن موقع PLONE يستخدم المحتوى القائم على النماذج الأصلية ، يمكنك بعد ذلك التكرار من خلال حقول مخطط العنصر واستخدام ملحق كل حقل لاسترداد قيمته:

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

نظرًا لأن ZODB عبارة عن قاعدة بيانات كائن تخزن كائنات Python المخللة ، ستحتاج إلى الحصول على الإصدار الصحيح من النماذج الأصلية الموجودة في بيئة Python الخاصة بك ، وكذلك الحزمة التي تحدد فئة الكائنات التي تحاول استردادها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top