[Zope-Checkins] CVS: Zope/lib/python/webdav - common.py:1.15 LockItem.py:1.6

Andreas Jung andreas@digicool.com
Wed, 9 Jan 2002 13:38:12 -0500


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

Modified Files:
	common.py LockItem.py 
Log Message:
Collector #126: merge from 2.5 branch fixes LOCK-stealing problem
with cadaver


=== Zope/lib/python/webdav/common.py 1.14 => 1.15 ===
 from App.Common import iso8601_date, rfc850_date, rfc1123_date
 from App.Common import aq_base
+import random
+
+_randGen = random.Random(time.time())
 
 def absattr(attr):
     if callable(attr):
@@ -53,10 +56,10 @@
 
 def generateLockToken():
     # Generate a lock token
-    # XXX This is simple right now, just lifted from the original shortcut
-    # in Resource.dav__genlocktoken, but should be replaced by something
-    # better.
-    return 'AA9F6414-1D77-11D3-B825-00105A989226:%.03f' % time.time()
+    return '%s-%s-00105A989226:%.03f' %  \
+         (_randGen.random(),_randGen.random(),time.time())
+
+    
 
 def tokenFinder(token):
     # takes a string like '<opaquelocktoken:afsdfadfadf> and returns the token


=== Zope/lib/python/webdav/LockItem.py 1.5 => 1.6 ===
 __version__ = "$Revision$"[11:-2]
 
-
 from Globals import Persistent
 from WriteLockInterface import LockItemInterface
 from AccessControl import ClassSecurityInfo
@@ -142,7 +141,10 @@
     def getLockScope(self):
         return self._lockscope
 
-    def asLockDiscoveryProperty(self, ns='d'):
+    def asLockDiscoveryProperty(self, ns='d',fake=0):
+
+        if fake: token = 'this-is-a-faked-no-permission-token'
+        else:    token = self._token
         s = (' <%(ns)s:activelock>\n'
              '  <%(ns)s:locktype><%(ns)s:%(locktype)s/></%(ns)s:locktype>\n'
              '  <%(ns)s:lockscope><%(ns)s:%(lockscope)s/></%(ns)s:lockscope>\n'
@@ -160,11 +162,12 @@
                'depth': self._depth,
                'owner': self._owner,
                'timeout': self.getTimeoutString(),
-               'locktoken': self._token,
+               'locktoken': token,
                }
         return s
 
     def asXML(self):
+
         s = """<?xml version="1.0" encoding="utf-8" ?>
 <d:prop xmlns:d="DAV:">
  <d:lockdiscovery>