def delete(self, collection, filename=''): """ Delete """ ife = self._if_header_evaluate() if ife!=None and ife=={}: raise web.HTTPError(412) dav_object = self._object(parent = collection, name = filename) if not dav_object.is_exists() or \ not dav_object.is_collection() and filename == '': raise web.HTTPError(404) if dav_object.is_collection() and filename != '': self.moved_permanatly() return self._is_locked( dav_object, ife ) self._has_dependent_lock ( dav_object, ife ) rc = dav_object.delete() if rc/100!=2: raise web.HTTPError(rc) adapter = DbAdapter(self.application.db) if dav_object.is_collection(): adapter.delete_collection(self.request.uri) else: adapter.delete_properties(self.request.uri) self.set_status(rc) self.finish()
def copy(self, collection, filename='', move=False): """ Copy / Move method """ ife = self._if_header_evaluate() if ife != None and ife == {}: raise web.HTTPError(412) dav_object = self._object(parent=collection, name=filename) if not dav_object.is_exists() or \ not dav_object.is_collection() and filename == '': raise web.HTTPError(404) if dav_object.is_collection() and filename != '': self.moved_permanatly() return overwrite_header = self.request.headers.get('overwrite') destination = self.request.headers.get('destination') if destination == None: raise web.HTTPError(400) urld = urlsplit(destination) if urld.path == '': raise web.HTTPError(400) # cannot copy on itself if re.match(urld.path, self.request.uri) != None: raise web.HTTPError(409) if move: # check locks on source if move self._is_locked(dav_object, ife) self._has_dependent_lock(dav_object, ife) d = self._object_fromuri(urld.path) self._is_locked(d, ife) self._has_dependent_lock(d, ife) if move: rc = dav_object.move(d.filename, overwrite_header) else: rc = dav_object.copy(d.filename, overwrite_header) if rc / 100 != 2: raise web.HTTPError(rc) adapter = DbAdapter(self.application.db) if move: if dav_object.is_collection(): adapter.move_collection(self.request.uri, urld.path) else: adapter.move_properties(self.request.uri, urld.path) else: if dav_object.is_collection(): adapter.copy_collection(self.request.uri, urld.path) else: adapter.copy_properties(self.request.uri, urld.path) self.set_status(rc) self.finish()
def copy(self, collection, filename='', move=False): """ Copy / Move method """ ife = self._if_header_evaluate() if ife!=None and ife=={}: raise web.HTTPError(412) dav_object = self._object(parent = collection, name = filename) if not dav_object.is_exists() or \ not dav_object.is_collection() and filename == '': raise web.HTTPError(404) if dav_object.is_collection() and filename != '': self.moved_permanatly() return overwrite_header = self.request.headers.get('overwrite') destination = self.request.headers.get('destination') if destination==None: raise web.HTTPError(400) urld = urlsplit (destination) if urld.path=='': raise web.HTTPError(400) # cannot copy on itself if re.match(urld.path, self.request.uri)!=None: raise web.HTTPError(409) if move: # check locks on source if move self._is_locked( dav_object, ife ) self._has_dependent_lock ( dav_object, ife ) d = self._object_fromuri(urld.path) self._is_locked( d, ife ) self._has_dependent_lock ( d, ife ) if move: rc = dav_object.move( d.filename, overwrite_header ) else: rc = dav_object.copy( d.filename, overwrite_header ) if rc/100!=2: raise web.HTTPError(rc) adapter = DbAdapter(self.application.db) if move: if dav_object.is_collection(): adapter.move_collection( self.request.uri, urld.path ) else: adapter.move_properties( self.request.uri, urld.path ) else: if dav_object.is_collection(): adapter.copy_collection( self.request.uri, urld.path ) else: adapter.copy_properties( self.request.uri, urld.path ) self.set_status(rc) self.finish()
def delete(self, collection, filename=''): """ Delete """ ife = self._if_header_evaluate() if ife != None and ife == {}: raise web.HTTPError(412) dav_object = self._object(parent=collection, name=filename) if not dav_object.is_exists() or \ not dav_object.is_collection() and filename == '': raise web.HTTPError(404) if dav_object.is_collection() and filename != '': self.moved_permanatly() return self._is_locked(dav_object, ife) self._has_dependent_lock(dav_object, ife) rc = dav_object.delete() if rc / 100 != 2: raise web.HTTPError(rc) adapter = DbAdapter(self.application.db) if dav_object.is_collection(): adapter.delete_collection(self.request.uri) else: adapter.delete_properties(self.request.uri) self.set_status(rc) self.finish()