[Zope-Checkins] CVS: Zope/lib/python/webdav - Collection.py:1.24 EtagSupport.py:1.8 LockItem.py:1.7 Lockable.py:1.8 NullResource.py:1.38 Resource.py:1.52 WriteLockInterface.py:1.6 __init__.py:1.7 client.py:1.20 common.py:1.17 davcmds.py:1.20 xmltools.py:1.13

Martijn Pieters mj@zope.com
Wed, 14 Aug 2002 18:11:40 -0400


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

Modified Files:
	Collection.py EtagSupport.py LockItem.py Lockable.py 
	NullResource.py Resource.py WriteLockInterface.py __init__.py 
	client.py common.py davcmds.py xmltools.py 
Log Message:
Clean up indentation and trailing whitespace.


=== Zope/lib/python/webdav/Collection.py 1.23 => 1.24 ===
--- Zope/lib/python/webdav/Collection.py:1.23	Thu Nov 29 13:18:16 2001
+++ Zope/lib/python/webdav/Collection.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 """WebDAV support - collection objects."""
@@ -25,7 +25,7 @@
 
 class Collection(Resource):
     """The Collection class provides basic WebDAV support for
-    collection objects. It provides default implementations 
+    collection objects. It provides default implementations
     for all supported WebDAV HTTP methods. The behaviors of some
     WebDAV HTTP methods for collections are slightly different
     than those for non-collection resources."""
@@ -119,12 +119,12 @@
         else:
             # There were no conflicts, so we can go ahead and delete
             # ajung: additional check if we really could delete the collection
-            # (Collector #2196) 
+            # (Collector #2196)
             if parent.manage_delObjects([name],REQUEST=None)  is None:
                 RESPONSE.setStatus(204)
             else:
                 RESPONSE.setStatus(403)
-            
+
         return RESPONSE
 
 


=== Zope/lib/python/webdav/EtagSupport.py 1.7 => 1.8 ===
--- Zope/lib/python/webdav/EtagSupport.py:1.7	Fri Jun 21 10:13:53 2002
+++ Zope/lib/python/webdav/EtagSupport.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 __version__ = "$Revision$"[11:-2]
@@ -93,8 +93,8 @@
         for match in matchlist:
             if match == '*': r.insert(0, match)
             elif (match[0] + match[-1] == '""') and (len(match) > 2):
-                    r.append(match[1:-1])
-            
+                r.append(match[1:-1])
+
         return tuple(r)
 
     def http__processMatchHeaders(self, REQUEST=None):
@@ -134,5 +134,3 @@
             raise "Precondition Failed"
         elif self.http__etag() not in nonelist:
             return 1
-        
-


=== Zope/lib/python/webdav/LockItem.py 1.6 => 1.7 ===
--- Zope/lib/python/webdav/LockItem.py:1.6	Wed Jan  9 13:38:11 2002
+++ Zope/lib/python/webdav/LockItem.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 __version__ = "$Revision$"[11:-2]
@@ -52,7 +52,7 @@
                               'setTimeout', 'refresh')
     security.declareProtected('Access contents information',
                               'getCreator', 'getCreatorPath')
-    
+
     def __init__(self, creator, owner='', depth=0, timeout='Infinite',
                  locktype='write', lockscope='exclusive', token=None):
         errors = []
@@ -76,7 +76,7 @@
         # AccessControl.Owned.ownerInfo returns the id of the creator
         # and the path to the UserFolder they're defined in
         self._creator = ownerInfo(creator)
-        
+
         self._owner = owner
         self._depth = depth
         self._timeout = timeout
@@ -175,4 +175,3 @@
  </d:lockdiscovery>
 </d:prop>""" % self.asLockDiscoveryProperty(ns="d")
         return s
-    


=== Zope/lib/python/webdav/Lockable.py 1.7 => 1.8 ===
--- Zope/lib/python/webdav/Lockable.py:1.7	Wed Nov 28 10:51:22 2001
+++ Zope/lib/python/webdav/Lockable.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 __version__ = "$Revision$"[11:-2]
@@ -133,7 +133,7 @@
         # with the state of empty locks.
         if hasattr(Acquisition.aq_base(self), '__no_valid_write_locks__'):
             self.__no_valid_write_locks__()
-    
+
 
 import Globals
 Globals.default__class_init__(LockableItem)


=== Zope/lib/python/webdav/NullResource.py 1.37 => 1.38 ===
--- Zope/lib/python/webdav/NullResource.py:1.37	Wed Aug 14 12:50:53 2002
+++ Zope/lib/python/webdav/NullResource.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 """WebDAV support - null resource objects."""
@@ -68,7 +68,7 @@
         if name and name.endswith('.pt'):
             from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
             ob = ZopePageTemplate(name, body, content_type=typ)
-        elif typ in ('text/html', 'text/xml', 'text/plain'):      
+        elif typ in ('text/html', 'text/xml', 'text/plain'):
             from OFS.DTMLDocument import DTMLDocument
             ob = DTMLDocument( '', __name__=name )
         elif typ[:6]=='image/':
@@ -179,7 +179,7 @@
         elif ifhdr:
             # There was an If header, but the parent is not locked.
             raise 'Precondition Failed'
-        
+
         # The logic involved in locking a null resource is simpler than
         # a regular resource, since we know we're not already locked,
         # and the lock isn't being refreshed.
@@ -241,7 +241,7 @@
         # now.
         parent = Acquisition.aq_parent(self)
         if parent: parent._delObject(self.id)
-                       
+
     def __init__(self, name):
         self.id = self.__name__ = name
         self.title = "LockNull Resource '%s'" % name
@@ -288,7 +288,7 @@
                 RESPONSE.setStatus(412) # Precondition failed
 
         return RESPONSE
-        
+
 
     def UNLOCK(self, REQUEST, RESPONSE):
         """ Unlocking a Null Resource removes it from its parent """
@@ -424,6 +424,6 @@
         RESPONSE.setStatus(201)
         RESPONSE.setBody('')
         return RESPONSE
-    
-        
+
+
 Globals.default__class_init__(LockNullResource)


=== Zope/lib/python/webdav/Resource.py 1.51 => 1.52 ===
--- Zope/lib/python/webdav/Resource.py:1.51	Wed Aug 14 12:50:53 2002
+++ Zope/lib/python/webdav/Resource.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 """WebDAV support - resource objects."""
@@ -92,7 +92,7 @@
         ifhdr = request.get_header('If', None)
         if Lockable.wl_isLocked(self) and (not ifhdr):
             raise "Locked", "Resource is locked."
-        
+
         if not ifhdr: return None
         if not Lockable.wl_isLocked(self): return None
 
@@ -101,7 +101,7 @@
         # header, we're only going to worry about if the paths compare
         if url is None: url = urlfix(request['URL'], method)
         url = urlbase(url)              # Gets just the path information
-        
+
         # if 'col' is passed in, an operation is happening on a submember
         # of a collection, while the Lock may be on the parent.  Lob off
         # the final part of the URL  (ie '/a/b/foo.html' becomes '/a/b/')
@@ -111,7 +111,7 @@
         found = 0; resourcetagged = 0
         taglist = IfParser(ifhdr)
         for tag in taglist:
-            
+
             if not tag.resource:
                 # There's no resource (url) with this tag
                 tag_list = map(tokenFinder, tag.list)
@@ -146,7 +146,7 @@
     def HEAD(self, REQUEST, RESPONSE):
         """Retrieve resource information without a response body."""
         self.dav__init(REQUEST, RESPONSE)
-        
+
         content_type=None
         if hasattr(self, 'content_type'):
             content_type=absattr(self.content_type)
@@ -172,7 +172,7 @@
         return RESPONSE
 
     def PUT(self, REQUEST, RESPONSE):
-        """Replace the GET response entity of an existing resource.        
+        """Replace the GET response entity of an existing resource.
         Because this is often object-dependent, objects which handle
         PUT should override the default PUT implementation with an
         object-specific implementation. By default, PUT requests
@@ -233,7 +233,7 @@
         if parent.manage_delObjects([name],REQUEST=None)  is None:
             RESPONSE.setStatus(204)
         else:
-            
+
             RESPONSE.setStatus(403)
 
         return RESPONSE
@@ -270,7 +270,7 @@
         return RESPONSE
 
     def MKCOL(self, REQUEST, RESPONSE):
-        """Create a new collection resource. If called on an existing 
+        """Create a new collection resource. If called on an existing
         resource, MKCOL must fail with 405 (Method Not Allowed)."""
         self.dav__init(REQUEST, RESPONSE)
         raise 'Method Not Allowed', 'The resource already exists.'
@@ -280,7 +280,7 @@
         """Create a duplicate of the source resource whose state
         and behavior match that of the source resource as closely
         as possible. Though we may later try to make a copy appear
-        seamless across namespaces (e.g. from Zope to Apache), COPY 
+        seamless across namespaces (e.g. from Zope to Apache), COPY
         is currently only supported within the Zope namespace."""
         self.dav__init(REQUEST, RESPONSE)
         if not hasattr(aq_base(self), 'cb_isCopyable') or \
@@ -457,7 +457,7 @@
         if existing:
             object=getattr(parent, name)
             self.dav__validate(object, 'DELETE', REQUEST)
-            parent._delObject(name)            
+            parent._delObject(name)
         parent._setObject(name, ob)
         RESPONSE.setStatus(existing and 204 or 201)
         if not existing:
@@ -523,7 +523,7 @@
                 if found: break
             if not found:
                 RESPONSE.setStatus(412) # Precondition failed
-                    
+
         return RESPONSE
 
     def UNLOCK(self, REQUEST, RESPONSE):
@@ -537,7 +537,7 @@
 
         cmd = davcmds.Unlock()
         result = cmd.apply(self, token, url)
-        
+
         if result:
             RESPONSE.setStatus(207)
             RESPONSE.setHeader('Content-Type', 'text/xml; charset="utf-8"')


=== Zope/lib/python/webdav/WriteLockInterface.py 1.5 => 1.6 ===
--- Zope/lib/python/webdav/WriteLockInterface.py:1.5	Wed Mar 13 11:39:05 2002
+++ Zope/lib/python/webdav/WriteLockInterface.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 __version__='$Revision$'[11:-2]
@@ -138,7 +138,7 @@
     def asXML():
         """ Render a full XML representation of a lock for WebDAV,
         used when returning the value of a newly created lock. """
-        
+
 class WriteLockInterface(Interface.Base):
     """\
     This represents the basic protocol needed to support the write lock
@@ -173,7 +173,7 @@
 
     """
 
-    
+
     def wl_lockItems(killinvalids=0):
         """ Returns (key, value) pairs of locktoken, lock.
 
@@ -207,8 +207,7 @@
 
     def wl_delLock(locktoken):
         """ Deletes the locktoken identified by the locktokenuri """
-        
+
     def wl_clearLocks():
         """ Deletes ALL DAV locks on the object - should only be called
         by lock management machinery. """
-        


=== Zope/lib/python/webdav/__init__.py 1.6 => 1.7 ===
--- Zope/lib/python/webdav/__init__.py:1.6	Wed Nov 28 10:51:22 2001
+++ Zope/lib/python/webdav/__init__.py	Wed Aug 14 18:11:40 2002
@@ -1,20 +1,20 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 """The webdav package provides WebDAV capability for common Zope objects.
 
    Current WebDAV support in Zope provides for the correct handling of HTTP
-   GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, 
+   GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL,
    COPY and MOVE methods, as appropriate for the object that is the target
    of the operation. Objects which do not support a given operation should
    respond appropriately with a "405 Method Not Allowed" response.
@@ -22,17 +22,17 @@
    Note that the ability of a Zope installation to support WebDAV HTTP methods
    depends on the willingness of the web server to defer handling of those
    methods to the Zope process. In most cases, servers will allow the process
-   to handle any request, so the Zope portion of your url namespace may well 
-   be able to handle WebDAV operations even though your web server software 
+   to handle any request, so the Zope portion of your url namespace may well
+   be able to handle WebDAV operations even though your web server software
    is not WebDAV-aware itself. Zope installations which use bundled server
-   implementations such as ZopeHTTPServer or ZServer should fully support 
+   implementations such as ZopeHTTPServer or ZServer should fully support
    WebDAV functions.
 
 
    References:
-   
-   [WebDAV] Y. Y. Goland, E. J. Whitehead, Jr., A. Faizi, S. R. Carter, D. 
-   Jensen, "HTTP Extensions for Distributed Authoring - WebDAV." RFC 2518.  
+
+   [WebDAV] Y. Y. Goland, E. J. Whitehead, Jr., A. Faizi, S. R. Carter, D.
+   Jensen, "HTTP Extensions for Distributed Authoring - WebDAV." RFC 2518.
    Microsoft, U.C. Irvine, Netscape, Novell.  February, 1999."""
 
 __version__='$Revision$'[11:-2]


=== Zope/lib/python/webdav/client.py 1.19 => 1.20 ===
--- Zope/lib/python/webdav/client.py:1.19	Wed Apr 10 22:59:17 2002
+++ Zope/lib/python/webdav/client.py	Wed Aug 14 18:11:40 2002
@@ -13,7 +13,7 @@
 from urllib import quote
 
 
-    
+
 
 class HTTP(httplib.HTTP):
     # A revised version of the HTTP class that can do basic
@@ -37,11 +37,11 @@
         try:
             [ver, code, msg] = line.split( None, 2)
         except ValueError:
-          try:
-              [ver, code] = line.split( None, 1)
-              msg = ""
-          except ValueError:
-              return -1, line, None
+            try:
+                [ver, code] = line.split( None, 1)
+                msg = ""
+            except ValueError:
+                return -1, line, None
         if ver[:5] != 'HTTP/':
             return -1, line, None
         code=int(code)
@@ -59,7 +59,7 @@
         self.url=url
 
         mo = urlreg.match(url)
-        if mo: 
+        if mo:
             host,port,uri=mo.group(1,2,3)
             self.host=host
             self.port=port and int(port[1:]) or 80
@@ -92,7 +92,7 @@
         if atype=='Basic':
             headers['Authorization']=(
                 "Basic %s" % (encodestring('%s:%s' % (self.username,self.password))).replace(
-					    '\012',''))
+                                            '\012',''))
             return headers
         raise ValueError, 'Unknown authentication scheme: %s' % atype
 
@@ -126,7 +126,7 @@
         except:
             raise 'NotAvailable', sys.exc_value
         return http_response(ver, code, msg, hdrs, data)
-    
+
     # HTTP methods
 
     def get(self, **kw):
@@ -374,8 +374,8 @@
 """
 
 funny="""<?xml version="1.0" encoding="utf-8"?>
- <d:propertyupdate xmlns:d="DAV:" 
-    xmlns:z="http://www.zope.org/propsets/default" 
+ <d:propertyupdate xmlns:d="DAV:"
+    xmlns:z="http://www.zope.org/propsets/default"
     xmlns:q="http://www.something.com/foo/bar">
  <d:set>
  <d:prop>
@@ -449,7 +449,7 @@
         tp=type(v)
         if tp in (lt, tt):
             raise TypeError, 'Invalid recursion in data to be marshaled.'
-        result.append(marshal_var("%s:%s" % (name, tname), v))    
+        result.append(marshal_var("%s:%s" % (name, tname), v))
     return '&'.join(result)
 
 def marshal_tuple(name, seq):
@@ -538,7 +538,7 @@
         return '%s_%s_%s' % (int(time.time()), os.getpid(), random())
 
     def render(self):
-        
+
         h=self._headers
         s=[]
 
@@ -611,4 +611,3 @@
               username='brian',
               password='123')
 adav=Resource('http://tarzan.digicool.com/dev/dav/')
-


=== Zope/lib/python/webdav/common.py 1.16 => 1.17 ===
--- Zope/lib/python/webdav/common.py:1.16	Wed Aug 14 12:50:53 2002
+++ Zope/lib/python/webdav/common.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 """Commonly used functions for WebDAV support modules."""


=== Zope/lib/python/webdav/davcmds.py 1.19 => 1.20 ===
--- Zope/lib/python/webdav/davcmds.py:1.19	Wed Aug 14 12:50:53 2002
+++ Zope/lib/python/webdav/davcmds.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 """WebDAV xml request objects."""
@@ -54,7 +54,7 @@
         self.propname=0
         self.propnames=[]
         self.parse(request)
-        
+
     def parse(self, request, dav='DAV:'):
         self.depth=request.get_header('Depth', 'infinity')
         if not (self.depth in ('0','1','infinity')):
@@ -107,7 +107,7 @@
                 if hasattr(aq_base(ps), 'dav__allprop'):
                     stats.append(ps.dav__allprop())
             stats=''.join(stats) or '<d:status>200 OK</d:status>\n'
-            result.write(stats)            
+            result.write(stats)
         elif self.propname:
             stats=[]
             for ps in propsets:
@@ -139,7 +139,7 @@
                              '</d:propstat>\n' % key
                              )
         else: raise 'Bad Request', 'Invalid request'
-        result.write('</d:response>\n')        
+        result.write('</d:response>\n')
         if depth in ('1', 'infinity') and iscol:
             for ob in obj.objectValues():
                 if hasattr(ob,"meta_type"):
@@ -155,7 +155,7 @@
                     if dflag: ob._p_deactivate()
         if not top: return result
         result.write('</d:multistatus>')
-        
+
         return result.getvalue()
 
 
@@ -243,7 +243,7 @@
                 propset=propsets.get(ns, None)
                 if propset is None or not propset.hasProperty(name):
                     # removing a non-existing property is not an error!
-                    # according to RFC 2518                    
+                    # according to RFC 2518
                     status='200 OK'
                 else:
                     try: propset._delProperty(name)
@@ -333,7 +333,7 @@
             lock = LockItem(creator, self.owner, depth, self.timeout,
                             self.type, self.scope, token)
             if token is None: token = lock.getLockToken()
-            
+
         except ValueError, valerrors:
             errmsg = "412 Precondition Failed"
         except:
@@ -361,7 +361,7 @@
                     errmsg = "403 Forbidden"
         except:
             errmsg = "403 Forbidden"
-            
+
         if errmsg:
             if top and ((depth in (0, '0')) or (not iscol)):
                 # We don't need to raise multistatus errors
@@ -388,7 +388,7 @@
             result.write('</d:multistatus>')
             get_transaction().abort() # This *SHOULD* clear all succesful locks
         return token, result.getvalue()
-    
+
 
 class Unlock:
     """ Model an Unlock request """
@@ -408,7 +408,7 @@
             method = getattr(obj, 'wl_delLock')
             vld = getSecurityManager().validate(None,obj,'wl_delLock',method)
             if vld: obj.wl_delLock(token)
-            else: 
+            else:
                 errmsg = "403 Forbidden"
         elif not islockable:
             # Only set an error message if the command is being applied
@@ -444,7 +444,7 @@
             result.write('</d:multistatus>')
             get_transaction().abort()
         return result.getvalue()
-    
+
 
 class DeleteCollection:
     """ With WriteLocks in the picture, deleting a collection involves
@@ -497,4 +497,3 @@
             # element
             result.write('</d:multistatus>\n')
         return result.getvalue()
-    


=== Zope/lib/python/webdav/xmltools.py 1.12 => 1.13 ===
--- Zope/lib/python/webdav/xmltools.py:1.12	Thu Nov 29 13:18:16 2001
+++ Zope/lib/python/webdav/xmltools.py	Wed Aug 14 18:11:40 2002
@@ -1,14 +1,14 @@
 ##############################################################################
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-# 
+#
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 # 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
-# 
+#
 ##############################################################################
 
 """WebDAV XML parsing tools. Note that this module does just
@@ -49,7 +49,7 @@
     def value(self): return self.__value__
     def nodes(self): return self.__nodes__
     def nskey(self): return self.__nskey__
-    
+
     def addNode(self, node):
         self.__nodes__.append(node.__of__(self))
 
@@ -72,7 +72,7 @@
                ((ns is None) or (node.namespace()==ns)):
                 nodes.append(node)
         return nodes
-    
+
     def __getitem__(self, n):
         return self.__nodes__[n]
 
@@ -95,7 +95,7 @@
         self.encoding=encoding
         self.stdalone=stdalone
         self.document=self
-        
+
     def toxml(self):
         result=['<?xml version="1.0" encoding="%s"?>' % self.encoding]
         for node in self.__nodes__:
@@ -105,10 +105,10 @@
     #def __del__(self):
     #    self.document=None
     #    print 'bye!'
-        
+
 class Element(Node):
     __type__=type_element
-    
+
     def __init__(self, name, attrs={}):
         self.__name__ =name
         self.__attrs__=[]
@@ -123,7 +123,7 @@
         if len(parts) > 1:
             self.__nskey__=parts[0]
             self.__name__=':'.join(parts[1:])
-            
+
     def ns_parse(self):
         nsdef=self.__nsdef__={}
         for attr in self.attrs():
@@ -136,7 +136,7 @@
 
     def fixup(self):
         self.__attrs__=map(lambda n, s=self: n.__of__(s), self.__attrs__)
-        
+
     def get_attr(self, name, ns=None, default=None):
         for attr in self.__attrs__:
             if attr.name()==name and (ns is None) or (ns==attr.namespace()):
@@ -234,7 +234,7 @@
         ns=self.__nskey__
         if ns: ns='%s:' % ns
         return ' %s%s="%s"' % (ns, self.__name__, self.__value__)
-        
+
 class Text(Node):
     __name__='#text'
     __type__=type_text
@@ -255,7 +255,7 @@
     __name__='#entityref'
     __type__=type_entityref
     def __init__(self, val):
-        self.__value__=val        
+        self.__value__=val
     def toxml(self):
         return '&%s;' % self.__value__
 
@@ -292,12 +292,12 @@
         Shared.DC.xml.xmllib.XMLParser.__init__(self)
         self.root=None
         self.node=None
-        
+
     def parse(self, data):
         self.feed(data)
         self.close()
         return self.root
-    
+
     def add(self, node):
         self.node.addNode(node)