import time from xml.dom import minidom DAV_NS = "DAV:" def childElements(node, name=None, ns=None): nodes = [] for n in node.childNodes: if (n.nodeType == n.ELEMENT_NODE and ((name is None) or ((n.localName.lower())==name)) and ((ns is None) or (n.namespaceURI==ns))): nodes.append(n) return nodes class DummyLock(object): def __init__(self, context, request): self.context = context self.request = request def LOCK(self): # get the lock scope and type from the incoming request data = self.request.bodyFile data.seek(0) request = minidom.parse(data) lockinfo = childElements(request, 'lockinfo', ns=DAV_NS)[0] lockscope = childElements(lockinfo, 'lockscope', ns=DAV_NS)[0] locktype = childElements(lockinfo, 'locktype', ns=DAV_NS)[0] scope = childElements(lockscope)[0].localName type = childElements(locktype)[0].localName # stub values for everything else owner = '' timeout = 'Second-3600' token = 'opaquelocktoken:' + str(time.time()) depth = 0 body = """\ <%(locktype)s/> <%(lockscope)s/> %(depth)s %(owner)s %(timeout)s %(token)s """ % { 'locktype': type, 'lockscope': scope, 'depth': depth, 'owner': owner, 'timeout': timeout, 'token': token, } self.request.response.setHeader('Lock-Token', token) return body def UNLOCK(self): self.request.response.setStatus(204) return ''