X-Git-Url: https://svn.cri.mines-paristech.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):