При попытке использовать
продукт ExtFile/ExtImage
2.0.2 в свежей сборке
Zope 2 (2.13), лезут
ошибки. Связано это, с одной стороны, с
прекращением поддержки ExtFile
в 2008 году, а с другой стороны, с
деятельностью авторов Zope2, которые
занимаются неслабым рефакторингом
кода. Я продукт подлечил и заставил
ExtFile работать как положено.
Прилагаю таблетку.
Ошибка
ImportError: No module named ZRDB.TM
устранилась
добавлением к Zope пакета Products.ZSQLMethods
через билдаут
eggs = Zope2 Products.ZSQLMethods
Борьба с билдаутом расписана
тут.
Ошибка
ImportError: No module
named WriteLockInterface
File "c:\d\Zope\custom\zope\inst\Products\ExtFile\ExtImage.py", line 61, in <module> from webdav.WriteLockInterface import WriteLockInterface zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "c:\d\Zope\custom\zope\inst\etc\site.zcml", line 16.2-16.23 ZopeXMLConfigurationError: File "c:\d\Zope\custom\zope\inst\Products\ExtFile\configure.zcml", line 23.2-27.6 ImportError: No module named WriteLockInterface |
устраняется
(http://community.webfaction.com/questions/1401/extfileextimage-problems-in-zope)
заменой пары строк в двух файлах
было
from webdav.WriteLockInterface import WriteLockInterface
стало
from webdav.interfaces import IWriteLock as WriteLockInterface
Ошибка
ImportError: Couldn't
import zope.app.container.interfaces, No module named
container.interfaces
File "c:\d\zope\custom\zope\inst\eggs\zope.configuration-3.7.4-py2.7.egg\zope\configuration\fields.py", line 229, in fromUnicode raise InvalidToken("%s in %s" % (v, u)) zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "c:\d\Zope\custom\zope\inst\etc\site.zcml", line 16.2-16.23 ZopeXMLConfigurationError: File "c:\d\Zope\custom\zope\inst\Products\ExtFile\configure.zcml", line 5.2-9.6 ConfigurationError: ('Invalid value for', 'for', "ImportError: Couldn't import zope.app.container.interfaces, No module named container.interfaces in .interfaces.IExtFile zope.app.container.interfaces.IObjectMovedEvent") |
Module zope.interface.adapter, line 585, in subscribers Module Products.ExtFile.ExtFile, line 1065, in afterAdd ImportError: No module named container.interfaces |
устраняется
(http://bluebream.zope.org/doc/1.0/new/whatsnew-1.0.html)
заменой шести строк в трех файлах
C:\d\Zope\custom\zope\inst\Products\ExtFile\configure.zcml
zope.app.container.interfaces → zope.container.interfaces
и в C:\d\Zope\custom\zope\inst\Products\ExtFile\Ext(File|Image).py
from zope.app.container.interfaces... → from zope.container.interfaces...
Если сложить все вместе,
то выходит такой diff:
--- configure.zcml Mon Oct 29 20:03:45 2007 +++ configure.zcml Mon Oct 29 20:03:45 2007 @@ -3,11 +3,11 @@ i18n_domain="extfile"> <subscriber handler=".ExtFile.afterAdd" for=".interfaces.IExtFile - zope.app.container.interfaces.IObjectMovedEvent" + zope.container.interfaces.IObjectMovedEvent" /> <subscriber handler=".ExtFile.afterClone" for=".interfaces.IExtFile @@ -21,11 +21,11 @@ /> <subscriber handler=".ExtImage.afterAdd" for=".interfaces.IExtImage - zope.app.container.interfaces.IObjectMovedEvent" + zope.container.interfaces.IObjectMovedEvent" /> <subscriber handler=".ExtImage.afterClone" for=".interfaces.IExtImage --- ExtFile.py Mon Oct 29 20:10:23 2007 +++ ExtFile.py Mon Oct 29 20:10:23 2007 @@ -65,11 +65,11 @@ from Products.ExtFile import TM from zExceptions import Redirect from ZPublisher.Iterators import IStreamIterator from DocumentTemplate.html_quote import html_quote -from webdav.WriteLockInterface import WriteLockInterface +from webdav.interfaces import IWriteLock as WriteLockInterface from zope import interface from interfaces import IExtFile from zope import event from interfaces import ExtFileUpdatedEvent @@ -1059,12 +1059,12 @@ external files doesn't exist yet, otherwise it was renamed to .undo by beforeDelete before and must be restored by _undo(). Subscriber for (IExtFile, IObjectMovedEvent) """ - from zope.app.container.interfaces import IObjectAddedEvent - from zope.app.container.interfaces import IObjectRemovedEvent + from zope.container.interfaces import IObjectAddedEvent + from zope.container.interfaces import IObjectRemovedEvent # If this is a Removed event we are done if IObjectRemovedEvent.providedBy(event): return --- ExtImage.py Mon Oct 29 20:10:28 2007 +++ ExtImage.py Mon Oct 29 20:10:28 2007 @@ -56,11 +56,11 @@ from OFS.Image import getImageInfo from OFS.Image import Pdata from Acquisition import aq_base from DocumentTemplate.html_quote import html_quote -from webdav.WriteLockInterface import WriteLockInterface +from webdav.interfaces import IWriteLock as WriteLockInterface from zope import interface from interfaces import IExtImage from zope import event from interfaces import ExtImageUpdatedEvent @@ -673,12 +673,12 @@ external files doesn't exist yet, otherwise it was renamed to .undo by beforeDelete before and must be restored by _undo(). Subscriber for (IExtImage, IObjectMovedEvent) """ - from zope.app.container.interfaces import IObjectAddedEvent - from zope.app.container.interfaces import IObjectRemovedEvent + from zope.container.interfaces import IObjectAddedEvent + from zope.container.interfaces import IObjectRemovedEvent # If this is a Removed event we are done if IObjectRemovedEvent.providedBy(event): return |
Все вышенаписанное
справедливо для Zope Version (2.13.13, python 2.7.2,
win32); ExtFile/ExtImage 2.0.2.
Комментариев нет:
Отправить комментарий