From 72f3af9ab9e89164276d64357e534487ac664965 Mon Sep 17 00:00:00 2001 From: Guillaume Ayoub Date: Fri, 17 Dec 2010 17:19:39 +0100 Subject: [PATCH 1/2] Fix bug caused by commit:673da6a9 --- radicale/xmlutils.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/radicale/xmlutils.py b/radicale/xmlutils.py index b49666c7..7ff759b0 100644 --- a/radicale/xmlutils.py +++ b/radicale/xmlutils.py @@ -97,22 +97,22 @@ def propfind(path, xml_request, calendar, depth, request): multistatus = ET.Element(_tag("D", "multistatus")) if depth == "0": - elements = [calendar] + items = [calendar] elif depth == "1": - elements = [calendar] + calendar.events + calendar.todos + items = [calendar] + calendar.events + calendar.todos else: # depth is infinity or not specified # we limit ourselves to depth == 1 - elements = [calendar] + calendar.events + calendar.todos + items = [calendar] + calendar.events + calendar.todos - for element in elements: - is_calendar = isinstance(element, ical.Calendar) + for item in items: + is_calendar = isinstance(item, ical.Calendar) response = ET.Element(_tag("D", "response")) multistatus.append(response) href = ET.Element(_tag("D", "href")) - href.text = path if is_calendar else "%s/%s" % (path, element.name) + href.text = path if is_calendar else "%s/%s" % (path, item.name) response.append(href) propstat = ET.Element(_tag("D", "propstat")) @@ -138,7 +138,7 @@ def propfind(path, xml_request, calendar, depth, request): elif tag == _tag("D", "getcontenttype"): element.text = "text/calendar" elif tag == _tag("D", "getetag"): - element.text = element.etag + element.text = item.etag elif tag == _tag("D", "displayname"): element.text = calendar.name elif tag == _tag("D", "supported-report-set"): From 091d89889d152ec2b3013a2b24f7548b53a9f30c Mon Sep 17 00:00:00 2001 From: Guillaume Ayoub Date: Mon, 20 Dec 2010 15:49:48 +0100 Subject: [PATCH 2/2] Fix get requests for whole calendar --- radicale/__init__.py | 4 +++- radicale/xmlutils.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/radicale/__init__.py b/radicale/__init__.py index 2fc3f804..64b58335 100644 --- a/radicale/__init__.py +++ b/radicale/__init__.py @@ -154,7 +154,8 @@ class CalendarHTTPHandler(server.BaseHTTPRequestHandler): def do_GET(self): """Manage GET request.""" self.do_HEAD() - self.wfile.write(self._answer) + if self._answer: + self.wfile.write(self._answer) @check_rights def do_HEAD(self): @@ -170,6 +171,7 @@ class CalendarHTTPHandler(server.BaseHTTPRequestHandler): headers=self._calendar.headers, items=items) etag = item.etag else: + self._answer = None self.send_response(client.GONE) return else: diff --git a/radicale/xmlutils.py b/radicale/xmlutils.py index 7ff759b0..ddf0a7f1 100644 --- a/radicale/xmlutils.py +++ b/radicale/xmlutils.py @@ -52,7 +52,8 @@ def _response(code): def name_from_path(path): """Return Radicale item name from ``path``.""" - return path.split("/")[-1] + path_parts = path.strip("/").split("/") + return path_parts[-1] if len(path_parts) > 2 else None def delete(path, calendar):