From b8bcf65785e79c58b218d1c6106ae9e572ed6772 Mon Sep 17 00:00:00 2001 From: Guillaume Ayoub Date: Wed, 8 Jun 2011 07:43:40 +0200 Subject: [PATCH] Restore the Lightning + anonymous calendars support --- radicale/ical.py | 4 +--- radicale/xmlutils.py | 9 +++++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/radicale/ical.py b/radicale/ical.py index 96ead4f..d0eca6b 100644 --- a/radicale/ical.py +++ b/radicale/ical.py @@ -194,7 +194,7 @@ class Calendar(object): path = "/".join(attributes[:min(len(attributes), 2)]) path = path.replace("/", os.sep) abs_path = os.path.join(FOLDER, path) - if os.path.isdir(abs_path) or len(attributes) == 1: + if os.path.isdir(abs_path): if depth == "0": result.append(cls(path, principal=True)) else: @@ -297,8 +297,6 @@ class Calendar(object): def write(self, headers=None, items=None): """Write calendar with given parameters.""" - if self.is_principal: - return headers = headers or self.headers or ( Header("PRODID:-//Radicale//NONSGML Radicale Server//EN"), Header("VERSION:2.0")) diff --git a/radicale/xmlutils.py b/radicale/xmlutils.py index f02175b..66b69b4 100644 --- a/radicale/xmlutils.py +++ b/radicale/xmlutils.py @@ -264,9 +264,11 @@ def _propfind_response(path, item, props, user): if tag == _tag("D", "getcontenttype"): element.text = "text/calendar" elif tag == _tag("D", "resourcetype"): - if not item.is_principal: - tag = ET.Element(_tag("C", "calendar")) + if item.is_principal: + tag = ET.Element(_tag("D", "principal")) element.append(tag) + tag = ET.Element(_tag("C", "calendar")) + element.append(tag) tag = ET.Element(_tag("D", "collection")) element.append(tag) elif tag == _tag("D", "owner") and item.owner_url: @@ -284,6 +286,9 @@ def _propfind_response(path, item, props, user): # Not for calendars elif tag == _tag("D", "getcontenttype"): element.text = "text/calendar; component=%s" % item.tag.lower() + elif tag == _tag("D", "resourcetype"): + # resourcetype must be returned empty for non-collection elements + pass else: is404 = True