X-Git-Url: https://svn.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/31f40c1330738960568a49dac57def289415db5d..f1f87a16121bd95bd750f9ffe9ee1a5f36f78bdc:/Folder.py?ds=sidebyside diff --git a/Folder.py b/Folder.py index 866f630..9808810 100644 --- a/Folder.py +++ b/Folder.py @@ -33,10 +33,16 @@ from cgi import escape from OFS import Moniker from ZODB.POSException import ConflictError import OFS.subscribers +from webdav.NullResource import NullResource from zope.event import notify from zope.lifecycleevent import ObjectCopiedEvent -from zope.app.container.contained import ObjectMovedEvent -from zope.app.container.contained import notifyContainerModified +try : + from zope.app.container.contained import notifyContainerModified + from zope.app.container.contained import ObjectMovedEvent +except ImportError : + ## Zope-2.13 compat + from zope.container.contained import notifyContainerModified + from zope.container.contained import ObjectMovedEvent from OFS.event import ObjectClonedEvent from OFS.event import ObjectWillBeMovedEvent from zope.component.factory import Factory @@ -76,6 +82,18 @@ class PlinnFolder(CMFCatalogAware, PortalFolder, DefaultDublinCoreImpl) : def __init__( self, id, title='' ) : PortalFolder.__init__(self, id) DefaultDublinCoreImpl.__init__(self, title = title) + + def __getitem__(self, key): + if key in self: + return self._getOb(key, None) + request = getattr(self, 'REQUEST', None) + if not isinstance(request, (str, NoneType)): + method=request.get('REQUEST_METHOD', 'GET') + if (request.maybe_webdav_client and + method not in ('GET', 'POST')): + return NullResource(self, key, request).__of__(self) + raise KeyError, key + security.declarePublic('allowedContentTypes') def allowedContentTypes(self):