При попытке использовать
продукт 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.
Комментариев нет:
Отправить комментарий