Explorar o código

Restore the Lightning + anonymous calendars support

Guillaume Ayoub %!s(int64=14) %!d(string=hai) anos
pai
achega
b8bcf65785
Modificáronse 2 ficheiros con 8 adicións e 5 borrados
  1. 1 3
      radicale/ical.py
  2. 7 2
      radicale/xmlutils.py

+ 1 - 3
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"))

+ 7 - 2
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