Моя задача — выгрузить контент с веб-сайта Plone 3.1.2 и загрузить информацию о контенте в базу данных SQL + файловую систему.
Я воссоздал веб-сайт, получил доступ к ZODB и воссоздал структуру объектов и папок. Я также могу читать свойства папок, файлов и документов. Я не могу заставить работать метод .getText() ATDocument. Трассировка выглядит так:
Traceback (последний последний вызов):
File "C:\Users\jan\Eclipse_workspace\Plone\start.py", line 133, in ?
main()
File "C:\Users\jan\Eclipse_workspace\Plone\start.py", line 118, in main
print dokument.getText()
File "e:\Program Files\Plone 3\Data\Products\Archetypes\ClassGen.py", line 54, in generatedAccessor
File "e:\Program Files\Plone 3\Data\Products\Archetypes\BaseObject.py", line 828, in Schema
TypeError: ('Could not adapt', <ATDocument at /*object_path*>, <InterfaceClass Products.Archetypes.interfaces._schema.ISchema>)
Подозреваю, что есть проблема с подключением объекта к интерфейсу ISchema, но я никогда раньше не работал с Plone и не знаю его объектной модели.
Любые предложения, что может быть не так или отсутствует, как я могу это исправить и/или что делать дальше? Я подозреваю, что мне нужно как-то связать класс интерфейса ISchema с этим объектом, но понятия не имею, с чего начать. Какие-либо предложения?
Я буду благодарен за любую помощь, так как я застрял на 2 дня и не продвигаюсь вперед.
Я ничего не знаю о формате ZCML или о том, как его редактировать. Поскольку после >>> print dokument.getText() в режиме отладки скрипт переходит к методу makeMethod() в классе Generator, я предполагаю, что скрипт не выполняет .getText(), а вместо этого пытается создать этот метод.
Поскольку inspect.getmembers(dokument) возвращает метод getText(), я действительно запутался. Знаете ли вы, какой файл ZCML может быть связан с классом ATDocument? Или где можно поискать любую информацию по этому вопросу?
Мой файл start.py не делает ничего, кроме следующего импорта:
from ZODB.FileStorage import FileStorage
from ZODB.DB import DB
from OFS.Application import Application
from BTrees import OOBTree
from Products.CMFPlone.Portal import PloneSite
затем он получает доступ к объекту документа и пытается выполнить .getText()
Редактировать 213-03-26 15:27 (GMT):
О файлах .zcml На сайте, который я получил, было 3 папки: Products (извлеченные в \Plone 3\Data), lib и package-includes.
Внутри библиотеки есть папка python, содержащая 3 подпапки: «common», «abc» и «def» (имена изменены, чтобы не раскрывать информацию о клиенте). Каждая из этих подпапок содержит файл configure.zcml, одна из них также содержит файл override.zcml.
В папке package-include есть 4 файла по 1 строке каждый. Они содержат следующие строки:
<include package="abc" file="configure.zcml" />
<include package="def" file="overrides.zcml" />
<include package="common" file="configure.zcml" />
<include package="def" file="configure.zcml" />
Эти файлы zcml в данный момент не копируются. Где я могу скопировать их, чтобы импортировать?
start.pyкода. - person Martijn Pieters   schedule 26.03.2013start.pyисточник, чтобы мы могли помочь вам сделать это правильно. - person Martijn Pieters   schedule 26.03.2013bin/instance fgили что-то подобное, чтобы запустить сайт, есть гораздо более простой путь к тому, что вы хотите. - person Martijn Pieters   schedule 26.03.2013