Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-03-15

Ошибки при использовании ExtFile в Zope 2.13.13

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

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)