[Zope-Checkins] SVN: Zope/trunk/lib/python/webdav/ - converted LockItemInterface to z3 and bridged it back

Yvo Schubbe y.2005- at wcm-solutions.de
Thu Nov 3 02:56:42 EST 2005


Log message for revision 39857:
  - converted LockItemInterface to z3 and bridged it back
  

Changed:
  UU  Zope/trunk/lib/python/webdav/LockItem.py
  U   Zope/trunk/lib/python/webdav/Lockable.py
  U   Zope/trunk/lib/python/webdav/WriteLockInterface.py
  U   Zope/trunk/lib/python/webdav/interfaces.py
  U   Zope/trunk/lib/python/webdav/tests/testLockItem.py

-=-
Modified: Zope/trunk/lib/python/webdav/LockItem.py
===================================================================
--- Zope/trunk/lib/python/webdav/LockItem.py	2005-11-03 01:03:09 UTC (rev 39856)
+++ Zope/trunk/lib/python/webdav/LockItem.py	2005-11-03 07:56:41 UTC (rev 39857)
@@ -7,18 +7,24 @@
 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
+"""WebDAV support - lock item.
 
-__version__ = "$Revision: 1.7 $"[11:-2]
+$Id$
+"""
 
-from Globals import Persistent
-from WriteLockInterface import LockItemInterface
+import time
+
 from AccessControl import ClassSecurityInfo
 from AccessControl.Owned import ownerInfo
+from Globals import Persistent
+from zope.interface import implements
+
 from common import generateLockToken
-import time
+from interfaces import ILockItem
+from WriteLockInterface import LockItemInterface
 
 MAXTIMEOUT = (2L**32)-1                 # Maximum timeout time
 DEFAULTTIMEOUT = 12 * 60L               # Default timeout
@@ -40,6 +46,8 @@
 
 
 class LockItem(Persistent):
+
+    implements(ILockItem)
     __implements__ = (LockItemInterface,)
 
     # Use the Zope 2.3 declarative security to manage access


Property changes on: Zope/trunk/lib/python/webdav/LockItem.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.7
Name: svn:keywords
   + Id

Modified: Zope/trunk/lib/python/webdav/Lockable.py
===================================================================
--- Zope/trunk/lib/python/webdav/Lockable.py	2005-11-03 01:03:09 UTC (rev 39856)
+++ Zope/trunk/lib/python/webdav/Lockable.py	2005-11-03 07:56:41 UTC (rev 39857)
@@ -22,6 +22,7 @@
 from zope.interface import implements
 
 from EtagSupport import EtagSupport
+from interfaces import ILockItem
 from interfaces import IWriteLock
 from WriteLockInterface import LockItemInterface
 from WriteLockInterface import WriteLockInterface
@@ -30,14 +31,13 @@
 class ResourceLockedError(Exception): pass
 
 class LockableItem(EtagSupport):
-    """\
-    Implements the WriteLockInterface, and is inherited by Resource which
-    is then inherited by the majority of Zope objects.  For an object to
-    be lockable, however, it should have the WriteLockInterface in its
-    __implements__ list, ie:
 
-    __implements__ = (WriteLockInterface,)
+    """Implements the WriteLock interface.
+
+    This class is inherited by Resource which is then inherited by the
+    majority of Zope objects.
     """
+
     implements(IWriteLock)
 
     # Protect methods using declarative security
@@ -106,7 +106,8 @@
 
     def wl_setLock(self, locktoken, lock):
         locks = self.wl_lockmapping(create=1)
-        if LockItemInterface.isImplementedBy(lock):
+        if ILockItem.providedBy(lock) or \
+                LockItemInterface.isImplementedBy(lock):
             if locktoken == lock.getLockToken():
                 locks[locktoken] = lock
             else:

Modified: Zope/trunk/lib/python/webdav/WriteLockInterface.py
===================================================================
--- Zope/trunk/lib/python/webdav/WriteLockInterface.py	2005-11-03 01:03:09 UTC (rev 39856)
+++ Zope/trunk/lib/python/webdav/WriteLockInterface.py	2005-11-03 07:56:41 UTC (rev 39857)
@@ -7,7 +7,7 @@
 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
 """Write lock interfaces.
@@ -15,142 +15,16 @@
 $Id$
 """
 
-from Interface import Interface
 
-
-class LockItemInterface(Interface):
-
-    """A LockItem contains information about a lock.
-
-    This includes:
-
-     o The locktoken uri (used to identify the lock by WebDAV)
-
-     o The lock owner (The string passed in the 'owner' property by WebDAV)
-
-     o The lock creator (the Zope user who physically owns the lock)
-
-     o Depth
-
-     o Timeout information
-
-     o Modified time (for calculating timeouts)
-
-     o LockType (only EXCLUSIVE is supported right now)
-
-    """
-
-    # XXX:  WAAAA!  What is a ctor doing in the interface?
-    def __init__(creator, owner, depth=0, timeout='Infinity',
-                 locktype='write', lockscope='exclusive', token=None):
-        """\
-        If any of the  following are untrue, a **ValueError** exception
-        will be raised.
-
-         - **creator** MUST be a Zope user object or string to find a
-           valid user object.
-
-         - **owner** MUST be a nonempty string, or type that can be converted
-           to a nonempty string.
-
-         - **depth** MUST be in the set {0,'infinity'}
-
-         - **timeout** MUST either be an integer, or a string in the form
-           of 'Seconds-nnn' where nnn is an integer.  The timeout value
-           MUST be less than (2^32)-1.  *IF* timeout is the string value
-           'Infinite', the timeout value will be set to 1800 (30 minutes).
-           (Timeout is the value in seconds from creation\modification
-           time until the lock MAY time out).
-
-         - **locktype** not in set {'write'} *this may expand later*
-
-         - **lockscope** not in set {'exclusive'} *this may expand later*
-
-        If the value passed in to 'token' is 'None', the a new locktoken
-        will be generated during the construction process.
-
-        __init__ must generate the opaquelocktoken uri used to identify the
-        lock (if 'token' is 'None')and set all of the above attributes on
-        the object.
-        """
-
-    def getCreator():
-        """ Returns the Zope user who created the lock.  This is returned
-        in a tuple containing the Users ID and the path to the user folder
-        they came from."""
-
-    def getCreatorPath():
-        """ Returns a string of the path to the user object in the user
-        folder they were found in. """
-
-    def getOwner():
-        """ Returns the string value of the 'owner' property sent
-        in by WebDAV """
-
-    def getLockToken():
-        """ returns the opaque lock token """
-
-    def getDepth():
-        """ returns the depth of the lock """
-
-    def getTimeout():
-        """ returns an integer value of the timeout setting """
-
-    def getTimeoutString():
-        """ returns the timeout value in a form acceptable by
-        WebDAV (ie - 'Seconds-40800') """
-
-    def setTimeout(newtimeout):
-        """ refreshes the timeout information """
-
-    def getModifiedTime():
-        """ returns a time.time value of the last time the Lock was
-        modified.  From RFC 2518:
-
-         The timeout counter SHOULD be restarted any time an owner of the
-         lock sends a method to any member of the lock, including unsupported
-         methods or methods which are unsucscessful.   The lock MUST be
-         refreshed if a refresh LOCK method is successfully received.
-
-        The modified time is used to calculate the refreshed value """
-
-    def refresh():
-        """ Tickles the locks modified time by setting it to the current
-        time.time() value.  (As stated in the RFC, the timeout counter
-        SHOULD be restarted for any HTTP method called by the lock owner
-        on the locked object). """
-
-    def isValid():
-        """ Returns true if (self.getModifiedTime() + self.getTimeout())
-        is greater than the current time.time() value. """
-        # now = time.time()
-        # modified = self.getModifiedTime()
-        # timeout = self.getTimeout()
-        #
-        # return (modified + timeout > now)    # there's time remaining
-
-    def getLockType():
-        """ returns the lock type ('write') """
-
-    def getLockScope():
-        """ returns the lock scope ('exclusive') """
-
-    def asLockDiscoveryProperty(ns='d'):
-        """ Return the lock rendered as an XML representation of a
-        WebDAV 'lockdiscovery' property.  'ns' is the namespace identifier
-        used on the XML elements."""
-
-    def asXML():
-        """ Render a full XML representation of a lock for WebDAV,
-        used when returning the value of a newly created lock. """
-
-
 # create WriteLockInterface
 from Interface.bridge import createZope3Bridge
+from interfaces import ILockItem
 from interfaces import IWriteLock
 import WriteLockInterface
 
+createZope3Bridge(ILockItem, WriteLockInterface, 'LockItemInterface')
 createZope3Bridge(IWriteLock, WriteLockInterface, 'WriteLockInterface')
 
 del createZope3Bridge
+del ILockItem
 del IWriteLock

Modified: Zope/trunk/lib/python/webdav/interfaces.py
===================================================================
--- Zope/trunk/lib/python/webdav/interfaces.py	2005-11-03 01:03:09 UTC (rev 39856)
+++ Zope/trunk/lib/python/webdav/interfaces.py	2005-11-03 07:56:41 UTC (rev 39857)
@@ -19,6 +19,133 @@
 from zope.schema import Bool, Tuple
 
 
+class ILockItem(Interface):
+
+    """A LockItem contains information about a lock.
+
+    This includes:
+
+     o The locktoken uri (used to identify the lock by WebDAV)
+
+     o The lock owner (The string passed in the 'owner' property by WebDAV)
+
+     o The lock creator (the Zope user who physically owns the lock)
+
+     o Depth
+
+     o Timeout information
+
+     o Modified time (for calculating timeouts)
+
+     o LockType (only EXCLUSIVE is supported right now)
+
+    """
+
+    # XXX:  WAAAA!  What is a ctor doing in the interface?
+    def __init__(creator, owner, depth=0, timeout='Infinity',
+                 locktype='write', lockscope='exclusive', token=None):
+        """\
+        If any of the  following are untrue, a **ValueError** exception
+        will be raised.
+
+         - **creator** MUST be a Zope user object or string to find a
+           valid user object.
+
+         - **owner** MUST be a nonempty string, or type that can be converted
+           to a nonempty string.
+
+         - **depth** MUST be in the set {0,'infinity'}
+
+         - **timeout** MUST either be an integer, or a string in the form
+           of 'Seconds-nnn' where nnn is an integer.  The timeout value
+           MUST be less than (2^32)-1.  *IF* timeout is the string value
+           'Infinite', the timeout value will be set to 1800 (30 minutes).
+           (Timeout is the value in seconds from creation\modification
+           time until the lock MAY time out).
+
+         - **locktype** not in set {'write'} *this may expand later*
+
+         - **lockscope** not in set {'exclusive'} *this may expand later*
+
+        If the value passed in to 'token' is 'None', the a new locktoken
+        will be generated during the construction process.
+
+        __init__ must generate the opaquelocktoken uri used to identify the
+        lock (if 'token' is 'None')and set all of the above attributes on
+        the object.
+        """
+
+    def getCreator():
+        """ Returns the Zope user who created the lock.  This is returned
+        in a tuple containing the Users ID and the path to the user folder
+        they came from."""
+
+    def getCreatorPath():
+        """ Returns a string of the path to the user object in the user
+        folder they were found in. """
+
+    def getOwner():
+        """ Returns the string value of the 'owner' property sent
+        in by WebDAV """
+
+    def getLockToken():
+        """ returns the opaque lock token """
+
+    def getDepth():
+        """ returns the depth of the lock """
+
+    def getTimeout():
+        """ returns an integer value of the timeout setting """
+
+    def getTimeoutString():
+        """ returns the timeout value in a form acceptable by
+        WebDAV (ie - 'Seconds-40800') """
+
+    def setTimeout(newtimeout):
+        """ refreshes the timeout information """
+
+    def getModifiedTime():
+        """ returns a time.time value of the last time the Lock was
+        modified.  From RFC 2518:
+
+         The timeout counter SHOULD be restarted any time an owner of the
+         lock sends a method to any member of the lock, including unsupported
+         methods or methods which are unsucscessful.   The lock MUST be
+         refreshed if a refresh LOCK method is successfully received.
+
+        The modified time is used to calculate the refreshed value """
+
+    def refresh():
+        """ Tickles the locks modified time by setting it to the current
+        time.time() value.  (As stated in the RFC, the timeout counter
+        SHOULD be restarted for any HTTP method called by the lock owner
+        on the locked object). """
+
+    def isValid():
+        """ Returns true if (self.getModifiedTime() + self.getTimeout())
+        is greater than the current time.time() value. """
+        # now = time.time()
+        # modified = self.getModifiedTime()
+        # timeout = self.getTimeout()
+        #
+        # return (modified + timeout > now)    # there's time remaining
+
+    def getLockType():
+        """ returns the lock type ('write') """
+
+    def getLockScope():
+        """ returns the lock scope ('exclusive') """
+
+    def asLockDiscoveryProperty(ns='d'):
+        """ Return the lock rendered as an XML representation of a
+        WebDAV 'lockdiscovery' property.  'ns' is the namespace identifier
+        used on the XML elements."""
+
+    def asXML():
+        """ Render a full XML representation of a lock for WebDAV,
+        used when returning the value of a newly created lock. """
+
+
 class IWriteLock(Interface):
 
     """Basic protocol needed to support the write lock machinery.

Modified: Zope/trunk/lib/python/webdav/tests/testLockItem.py
===================================================================
--- Zope/trunk/lib/python/webdav/tests/testLockItem.py	2005-11-03 01:03:09 UTC (rev 39856)
+++ Zope/trunk/lib/python/webdav/tests/testLockItem.py	2005-11-03 07:56:41 UTC (rev 39857)
@@ -10,7 +10,14 @@
 
         verifyClass(LockItemInterface, LockItem)
 
+    def test_z3interfaces(self):
+        from webdav.interfaces import ILockItem
+        from webdav.LockItem import LockItem
+        from zope.interface.verify import verifyClass
 
+        verifyClass(ILockItem, LockItem)
+
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(TestLockItem),



More information about the Zope-Checkins mailing list