Procházet zdrojové kódy

Add support for iCal (closes #252)

Rémi Hainaud před 15 roky
rodič
revize
474113454b
2 změnil soubory, kde provedl 10 přidání a 5 odebrání
  1. 2 1
      radicale/__init__.py
  2. 8 4
      radicale/xmlutils.py

+ 2 - 1
radicale/__init__.py

@@ -312,7 +312,8 @@ class CalendarHTTPHandler(server.BaseHTTPRequestHandler):
     @log_request_content
     def do_PROPPATCH(self):
         """Manage PROPPATCH request."""
-        self._answer = xmlutils.proppatch()
+        self._answer = xmlutils.proppatch(
+            self.path, self._content, self._calendar)
 
         self.send_response(client.MULTI_STATUS)
         self.send_header("DAV", "1, calendar-access")

+ 8 - 4
radicale/xmlutils.py

@@ -187,10 +187,14 @@ def proppatch(path, xml_request, calendar):
     """
     # Reading request
     root = ET.fromstring(xml_request)
-
-    prop_element = root.find(_tag("D", "prop"))
-    prop_list = prop_element.getchildren()
-    props = [prop.tag for prop in prop_list]
+    props = []
+
+    for action in ("set", "remove"):
+        action_element = root.find(_tag("D", action))
+        if action_element:
+            prop_element = action_element.find(_tag("D", "prop"))
+            prop_list = prop_element.getchildren()
+            props.extend(prop.tag for prop in prop_list)
 
     # Writing answer
     multistatus = ET.Element(_tag("D", "multistatus"))