Просмотр исходного кода

Merge branch 'master' of git://gitorious.org/radicale/radicale

Conflicts:

	radicale/xmlutils.py
System User 15 лет назад
Родитель
Сommit
3a9226ca80
2 измененных файлов с 12 добавлено и 9 удалено
  1. 3 1
      radicale/__init__.py
  2. 9 8
      radicale/xmlutils.py

+ 3 - 1
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:

+ 9 - 8
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):
@@ -97,22 +98,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 +139,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.tag
+                element.text = item.etag
             elif tag == _tag("D", "displayname"):
                 element.text = calendar.name
             elif tag == _tag("D", "supported-report-set"):