Browse Source

PROPFIND: only one privilege per privilege element

Before: <privilege><read /><write /></privilege>
After: <privilege><read /></privilege><privilege><write /></privilege>
Unrud 9 năm trước cách đây
mục cha
commit
a7f12b5fac
1 tập tin đã thay đổi với 9 bổ sung7 xóa
  1. 9 7
      radicale/xmlutils.py

+ 9 - 7
radicale/xmlutils.py

@@ -669,14 +669,16 @@ def _propfind_response(base_prefix, path, item, props, user, write=False,
             tag.text = _href(base_prefix, ("/%s/" % user) if user else "/")
             element.append(tag)
         elif tag == _tag("D", "current-user-privilege-set"):
-            privilege = ET.Element(_tag("D", "privilege"))
+            privileges = [("D", "read")]
             if write:
-                privilege.append(ET.Element(_tag("D", "all")))
-                privilege.append(ET.Element(_tag("D", "write")))
-                privilege.append(ET.Element(_tag("D", "write-properties")))
-                privilege.append(ET.Element(_tag("D", "write-content")))
-            privilege.append(ET.Element(_tag("D", "read")))
-            element.append(privilege)
+                privileges.append(("D", "all"))
+                privileges.append(("D", "write"))
+                privileges.append(("D", "write-properties"))
+                privileges.append(("D", "write-content"))
+            for ns, privilege_name in privileges:
+                privilege = ET.Element(_tag("D", "privilege"))
+                privilege.append(ET.Element(_tag(ns, privilege_name)))
+                element.append(privilege)
         elif tag == _tag("D", "supported-report-set"):
             for report_name in (
                     "principal-property-search", "sync-collection",