On s'apprête à customiser le comportement aux requêtes PUT. Copie telle quelle du...
[Plinn.git] / Folder.py
index 866f630..9808810 100644 (file)
--- 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 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.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
 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 __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):
                
        security.declarePublic('allowedContentTypes')
        def allowedContentTypes(self):