On va faire autrement pour le PUT, car passer par NullRessource ne résoudra pas le...
[Plinn.git] / Folder.py
index 76d4ee1..9a992f9 100644 (file)
--- a/Folder.py
+++ b/Folder.py
@@ -33,7 +33,6 @@ 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
 try :
 from zope.event import notify
 from zope.lifecycleevent import ObjectCopiedEvent
 try :
@@ -54,6 +53,7 @@ from Products.CMFCore.permissions import ListFolderContents, View, ViewManagemen
                                          ManagePortal, ModifyPortalContent
 from permissions import DeletePortalContents, DeleteObjects, DeleteOwnedObjects, SetLocalRoles, CheckMemberPermission
 from Products.CMFCore.utils import _checkPermission, getToolByName
                                          ManagePortal, ModifyPortalContent
 from permissions import DeletePortalContents, DeleteObjects, DeleteOwnedObjects, SetLocalRoles, CheckMemberPermission
 from Products.CMFCore.utils import _checkPermission, getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
 from Products.CMFCore.PortalFolder import PortalFolder, ContentFilter
 from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
 from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
 from Products.CMFCore.PortalFolder import PortalFolder, ContentFilter
 from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
@@ -83,20 +83,7 @@ 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')):
-                id = makeValidId(self, key)
-                return NullResource(self, id, request).__of__(self)
-        raise KeyError, key
-    
-        
+            
     security.declarePublic('allowedContentTypes')
     def allowedContentTypes(self):
         """
     security.declarePublic('allowedContentTypes')
     def allowedContentTypes(self):
         """
@@ -268,11 +255,10 @@ class PlinnFolder(CMFCatalogAware, PortalFolder, DefaultDublinCoreImpl) :
         """ query catalog and returns brains of contents.
             Requires ExtendedPathIndex
         """
         """ query catalog and returns brains of contents.
             Requires ExtendedPathIndex
         """
-        ctool = getToolByName(self, 'portal_catalog')
+        ctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICatalogTool')
         contentFilter['path'] = {'query':'/'.join(self.getPhysicalPath()),
                                 'depth':1}
         contentFilter['path'] = {'query':'/'.join(self.getPhysicalPath()),
                                 'depth':1}
-        return ctool(sort_on='position', **contentFilter)
-    
+        return ctool(sort_on='position', **contentFilter)    
 
     security.declarePublic('synContentValues')
     def synContentValues(self):
 
     security.declarePublic('synContentValues')
     def synContentValues(self):
@@ -295,6 +281,15 @@ class PlinnFolder(CMFCatalogAware, PortalFolder, DefaultDublinCoreImpl) :
         if REQUEST is not None:
             return self.folder_contents( # XXX: ick!
                 self, REQUEST, portal_status_message="Folder added")
         if REQUEST is not None:
             return self.folder_contents( # XXX: ick!
                 self, REQUEST, portal_status_message="Folder added")
+    
+    
+    security.declareProtected(AddPortalContent, 'put_upload')
+    def put_upload(self, REQUEST, RESPONSE):
+        """ Upload a content thru webdav put method.
+            The default behavior (NullRessource.PUT + PortalFolder.PUT_factory)
+            disallow files names with '_' at the begining.
+        """
+        pass
 
     
 #   ## overload to maintain ownership if authenticated user has 'Manage portal' permission
 
     
 #   ## overload to maintain ownership if authenticated user has 'Manage portal' permission