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

Conflicts:

	radicale/xmlutils.py
This commit is contained in:
System User 2010-12-23 10:10:40 +01:00
commit 3a9226ca80
2 changed files with 12 additions and 9 deletions

View File

@ -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:

View File

@ -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"):