From 04c51d2ced06d1604953335f7cdd190ada9c4cbe Mon Sep 17 00:00:00 2001 From: Unrud Date: Fri, 16 Jun 2017 23:12:08 +0200 Subject: [PATCH] Check if item is collection with storage.BaseCollection The same as in xmlutils.py --- radicale/__init__.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/radicale/__init__.py b/radicale/__init__.py index 9cdc3cc..ef3bb5c 100644 --- a/radicale/__init__.py +++ b/radicale/__init__.py @@ -271,7 +271,7 @@ class Application: for item in items: if not item: continue - if isinstance(item, self.Collection): + if isinstance(item, storage.BaseCollection): path = item.path else: path = item.collection.path @@ -493,9 +493,9 @@ class Application: parent_path = storage.sanitize_path( "/%s/" % posixpath.dirname(path.strip("/"))) allowed = False - if not item or isinstance(item, self.Collection): + if not item or isinstance(item, storage.BaseCollection): allowed |= self.authorized(user, path, permission) - if not item or not isinstance(item, self.Collection): + if not item or not isinstance(item, storage.BaseCollection): allowed |= self.authorized(user, parent_path, permission) return allowed @@ -550,7 +550,7 @@ class Application: if if_match not in ("*", item.etag): # ETag precondition not verified, do not delete item return PRECONDITION_FAILED - if isinstance(item, self.Collection): + if isinstance(item, storage.BaseCollection): xml_answer = xmlutils.delete(base_prefix, path, item) else: xml_answer = xmlutils.delete( @@ -580,7 +580,7 @@ class Application: return NOT_ALLOWED if not item: return NOT_FOUND - if isinstance(item, self.Collection): + if isinstance(item, storage.BaseCollection): collection = item if collection.get_meta("tag") not in ( "VADDRESSBOOK", "VCALENDAR"): @@ -678,11 +678,11 @@ class Application: return NOT_ALLOWED if not item: return NOT_FOUND - if isinstance(item, self.Collection): + if isinstance(item, storage.BaseCollection): return WEBDAV_PRECONDITION_FAILED to_item = next(self.Collection.discover(to_path), None) - if (isinstance(to_item, self.Collection) or + if (isinstance(to_item, storage.BaseCollection) or to_item and environ.get("HTTP_OVERWRITE", "F") != "T"): return WEBDAV_PRECONDITION_FAILED to_parent_path = storage.sanitize_path( @@ -751,7 +751,7 @@ class Application: return BAD_REQUEST with self.Collection.acquire_lock("w", user): item = next(self.Collection.discover(path), None) - if not isinstance(item, self.Collection): + if not isinstance(item, storage.BaseCollection): return WEBDAV_PRECONDITION_FAILED headers = {"DAV": DAV_HEADERS, "Content-Type": "text/xml; charset=%s" % self.encoding} @@ -777,7 +777,7 @@ class Application: parent_item = next(self.Collection.discover(parent_path), None) write_whole_collection = ( - isinstance(item, self.Collection) or + isinstance(item, storage.BaseCollection) or not parent_item or ( not next(parent_item.list(), None) and parent_item.get_meta("tag") not in ( @@ -850,7 +850,7 @@ class Application: return NOT_ALLOWED if not item: return NOT_FOUND - if isinstance(item, self.Collection): + if isinstance(item, storage.BaseCollection): collection = item else: collection = item.collection