Explorar el Código

Merge pull request #342 from Unrud/handler

Introduce naming scheme for request handlers
Guillaume Ayoub hace 10 años
padre
commit
c217e5d2ff
Se han modificado 1 ficheros con 25 adiciones y 23 borrados
  1. 25 23
      radicale/__init__.py

+ 25 - 23
radicale/__init__.py

@@ -267,7 +267,7 @@ class Application(object):
         path = environ["PATH_INFO"]
 
         # Get function corresponding to method
-        function = getattr(self, environ["REQUEST_METHOD"].lower())
+        function = getattr(self, "do_%s" % environ["REQUEST_METHOD"].upper())
 
         # Ask authentication backend to check rights
         authorization = environ.get("HTTP_AUTHORIZATION", None)
@@ -325,8 +325,8 @@ class Application(object):
 
         if is_valid_user and (
                 (read_allowed_items or write_allowed_items) or
-                (is_authenticated and function == self.propfind) or
-                function == self.options):
+                (is_authenticated and function == self.do_PROPFIND) or
+                function == self.do_OPTIONS):
             status, headers, answer = function(
                 environ, read_allowed_items, write_allowed_items, content,
                 user)
@@ -365,8 +365,8 @@ class Application(object):
     # All these functions must have the same parameters, some are useless
     # pylint: disable=W0612,W0613,R0201
 
-    def delete(self, environ, read_collections, write_collections, content,
-               user):
+    def do_DELETE(self, environ, read_collections, write_collections, content,
+                  user):
         """Manage DELETE request."""
         if not len(write_collections):
             return NOT_ALLOWED
@@ -392,7 +392,8 @@ class Application(object):
         # No item or ETag precondition not verified, do not delete item
         return client.PRECONDITION_FAILED, {}, None
 
-    def get(self, environ, read_collections, write_collections, content, user):
+    def do_GET(self, environ, read_collections, write_collections, content,
+               user):
         """Manage GET request.
 
         In Radicale, GET requests create collections when the URL is not
@@ -449,15 +450,15 @@ class Application(object):
         answer = answer_text.encode(self.encoding)
         return client.OK, headers, answer
 
-    def head(self, environ, read_collections, write_collections, content,
-             user):
+    def do_HEAD(self, environ, read_collections, write_collections, content,
+                user):
         """Manage HEAD request."""
         status, headers, answer = self.get(
             environ, read_collections, write_collections, content, user)
         return status, headers, None
 
-    def mkcalendar(self, environ, read_collections, write_collections, content,
-                   user):
+    def do_MKCALENDAR(self, environ, read_collections, write_collections,
+                      content, user):
         """Manage MKCALENDAR request."""
         if not len(write_collections):
             return NOT_ALLOWED
@@ -475,8 +476,8 @@ class Application(object):
             collection.write()
         return client.CREATED, {}, None
 
-    def mkcol(self, environ, read_collections, write_collections, content,
-              user):
+    def do_MKCOL(self, environ, read_collections, write_collections, content,
+                 user):
         """Manage MKCOL request."""
         if not len(write_collections):
             return NOT_ALLOWED
@@ -490,8 +491,8 @@ class Application(object):
         collection.write()
         return client.CREATED, {}, None
 
-    def move(self, environ, read_collections, write_collections, content,
-             user):
+    def do_MOVE(self, environ, read_collections, write_collections, content,
+                user):
         """Manage MOVE request."""
         if not len(write_collections):
             return NOT_ALLOWED
@@ -526,8 +527,8 @@ class Application(object):
             # Moving collections, not supported
             return client.FORBIDDEN, {}, None
 
-    def options(self, environ, read_collections, write_collections, content,
-                user):
+    def do_OPTIONS(self, environ, read_collections, write_collections,
+                   content, user):
         """Manage OPTIONS request."""
         headers = {
             "Allow": ("DELETE, HEAD, GET, MKCALENDAR, MKCOL, MOVE, "
@@ -535,8 +536,8 @@ class Application(object):
             "DAV": "1, 2, 3, calendar-access, addressbook, extended-mkcol"}
         return client.OK, headers, None
 
-    def propfind(self, environ, read_collections, write_collections, content,
-                 user):
+    def do_PROPFIND(self, environ, read_collections, write_collections,
+                    content, user):
         """Manage PROPFIND request."""
         # Rights is handled by collection in xmlutils.propfind
         headers = {
@@ -547,8 +548,8 @@ class Application(object):
             environ["PATH_INFO"], content, collections, user)
         return client.MULTI_STATUS, headers, answer
 
-    def proppatch(self, environ, read_collections, write_collections, content,
-                  user):
+    def do_PROPPATCH(self, environ, read_collections, write_collections,
+                     content, user):
         """Manage PROPPATCH request."""
         if not len(write_collections):
             return NOT_ALLOWED
@@ -562,7 +563,8 @@ class Application(object):
             "Content-Type": "text/xml"}
         return client.MULTI_STATUS, headers, answer
 
-    def put(self, environ, read_collections, write_collections, content, user):
+    def do_PUT(self, environ, read_collections, write_collections, content,
+               user):
         """Manage PUT request."""
         if not len(write_collections):
             return NOT_ALLOWED
@@ -597,8 +599,8 @@ class Application(object):
             status = client.PRECONDITION_FAILED
         return status, headers, None
 
-    def report(self, environ, read_collections, write_collections, content,
-               user):
+    def do_REPORT(self, environ, read_collections, write_collections, content,
+                  user):
         """Manage REPORT request."""
         if not len(read_collections):
             return NOT_ALLOWED