From debba3c7a11e598e9cb44988c396e93c33ec1912 Mon Sep 17 00:00:00 2001 From: Unrud Date: Sat, 22 Jul 2017 21:25:28 +0200 Subject: [PATCH] Don't serialize collection for etag --- radicale/storage.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/radicale/storage.py b/radicale/storage.py index 23d629b..7ee34a7 100644 --- a/radicale/storage.py +++ b/radicale/storage.py @@ -445,7 +445,10 @@ class BaseCollection: @property def etag(self): """Encoded as quoted-string (see RFC 2616).""" - return get_etag(self.serialize()) + etag = md5() + for item in self.get_all(): + etag.update((item.href + "/" + item.etag).encode("utf-8")) + return '"%s"' % etag.hexdigest() @classmethod def create_collection(cls, href, collection=None, props=None): @@ -1328,10 +1331,7 @@ class Collection(BaseCollection): def etag(self): # reuse cached value if the storage is read-only if self._writer or self._etag_cache is None: - etag = md5() - for item in self.get_all(): - etag.update((item.href + "/" + item.etag).encode("utf-8")) - self._etag_cache = '"%s"' % etag.hexdigest() + self._etag_cache = super().etag return self._etag_cache _lock = threading.Lock()