Update of /cvs-repository/Packages/webdav
In directory cvs.zope.org:/tmp/cvs-serv30574/lib/python/webdav

Modified Files:
      Tag: Zope-2_7-branch
        Resource.py 
Log Message:

      - WebDAV COPY and MOVE did not call '_notifyOfCopyTo' and
        '_postCopy' hooks like it was done in
        OFS.CopySupport. Additionally added
        'manage_changeOwnershipType' to make MOVE behave even closer
        to OFS.CopySupport.


=== Packages/webdav/Resource.py 1.55.10.9 => 1.55.10.10 ===
--- Packages/webdav/Resource.py:1.55.10.9       Wed Dec 22 18:29:30 2004
+++ Packages/webdav/Resource.py Tue Jun 21 11:27:30 2005
@@ -377,6 +377,7 @@
             else:
                 raise Locked, 'Destination is locked.'
 
+        self._notifyOfCopyTo(parent, op=0)
         ob = self._getCopy(parent)
         ob._setId(name)
 
@@ -389,6 +390,7 @@
             parent._delObject(name)
         parent._setObject(name, ob)
         ob = parent._getOb(name)
+        ob._postCopy(parent, op=0)
         ob.manage_afterClone(ob)
         # We remove any locks from the copied object because webdav clients
         # don't track the lock status and the lock token for copied resources
@@ -485,7 +487,12 @@
                 raise PreconditionFailed, 'Source is locked and no '\
                       'condition was passed in.'
 
-        ob=aq_base(self._getCopy(parent))
+        # try to make ownership explicit so that it gets carried
+        # along to the new location if needed.
+        self.manage_changeOwnershipType(explicit=1)
+
+        self._notifyOfCopyTo(parent, op=1)
+        ob = aq_base(self._getCopy(parent))
         self.aq_parent._delObject(absattr(self.id))
         ob._setId(name)
         if existing:
@@ -493,6 +500,12 @@
             self.dav__validate(object, 'DELETE', REQUEST)
             parent._delObject(name)
         parent._setObject(name, ob)
+        ob = parent._getOb(name)
+        ob._postCopy(parent, op=1)
+
+        # try to make ownership implicit if possible
+        ob.manage_changeOwnershipType(explicit=0)
+
         RESPONSE.setStatus(existing and 204 or 201)
         if not existing:
             RESPONSE.setHeader('Location', dest)

_______________________________________________
Zope-Checkins maillist  -  Zope-Checkins@zope.org
http://mail.zope.org/mailman/listinfo/zope-checkins

Reply via email to