Merge branch 'master' of git://gitorious.org/radicale/radicale
Conflicts: radicale/xmlutils.py
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# This file is part of Radicale Server - Calendar Server
|
||||
# Copyright © 2008-2010 Guillaume Ayoub
|
||||
# Copyright © 2008-2011 Guillaume Ayoub
|
||||
# Copyright © 2008 Nicolas Kandel
|
||||
# Copyright © 2008 Pascal Halter
|
||||
#
|
||||
@@ -56,6 +56,11 @@ def _check(request, function):
|
||||
log.log(10, "Check if user has sufficient rights for performing ``request``.")
|
||||
# ``_check`` decorator can access ``request`` protected functions
|
||||
# pylint: disable=W0212
|
||||
|
||||
# If we have no calendar, don't check rights
|
||||
if not request._calendar:
|
||||
return function(request)
|
||||
|
||||
authorization = request.headers.get("Authorization", None)
|
||||
if authorization:
|
||||
challenge = authorization.lstrip("Basic").strip().encode("ascii")
|
||||
@@ -94,6 +99,7 @@ class HTTPServer(server.HTTPServer):
|
||||
class HTTPSServer(HTTPServer):
|
||||
"""HTTPS server."""
|
||||
PROTOCOL = "https"
|
||||
|
||||
def __init__(self, address, handler):
|
||||
"""Create server by wrapping HTTP socket in an SSL socket."""
|
||||
log.log(10, "Create server by wrapping HTTP socket in an SSL socket.")
|
||||
@@ -163,7 +169,8 @@ class CalendarHTTPHandler(server.BaseHTTPRequestHandler):
|
||||
"""Manage GET request."""
|
||||
log.log(10, "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):
|
||||
@@ -180,6 +187,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:
|
||||
@@ -212,12 +220,19 @@ class CalendarHTTPHandler(server.BaseHTTPRequestHandler):
|
||||
# No item or ETag precondition not verified, do not delete item
|
||||
self.send_response(client.PRECONDITION_FAILED)
|
||||
|
||||
@check_rights
|
||||
def do_MKCALENDAR(self):
|
||||
"""Manage MKCALENDAR request."""
|
||||
self.send_response(client.CREATED)
|
||||
self.end_headers()
|
||||
|
||||
def do_OPTIONS(self):
|
||||
"""Manage OPTIONS request."""
|
||||
log.log(10, "Manage OPTIONS request.")
|
||||
self.send_response(client.OK)
|
||||
self.send_header(
|
||||
"Allow", "DELETE, HEAD, GET, OPTIONS, PROPFIND, PUT, REPORT")
|
||||
"Allow", "DELETE, HEAD, GET, MKCALENDAR, "
|
||||
"OPTIONS, PROPFIND, PUT, REPORT")
|
||||
self.send_header("DAV", "1, calendar-access")
|
||||
self.end_headers()
|
||||
|
||||
@@ -227,7 +242,7 @@ class CalendarHTTPHandler(server.BaseHTTPRequestHandler):
|
||||
xml_request = self.rfile.read(int(self.headers["Content-Length"]))
|
||||
self._answer = xmlutils.propfind(
|
||||
self.path, xml_request, self._calendar,
|
||||
self.headers.get("depth", "infinity"), self)
|
||||
self.headers.get("depth", "infinity"))
|
||||
|
||||
self.send_response(client.MULTI_STATUS)
|
||||
self.send_header("DAV", "1, calendar-access")
|
||||
|
Reference in New Issue
Block a user