]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/modules/decorators.py
Applies some of the Justin Grant's patches.
[osqa.git] / forum / modules / decorators.py
index 13bddac89357785c8df24e9402483de3b5724e02..3c53412dc0505c4c92bbe183a6709ca007dc5a34 100644 (file)
@@ -47,7 +47,10 @@ class DecoratableObject(object):
     def __call__(self, *args, **kwargs):\r
         if self._params_decoration:\r
             for dec in self._params_decoration:\r
-                args, kwargs = dec(*args, **kwargs)\r
+                try:\r
+                    args, kwargs = dec(*args, **kwargs)\r
+                except ReturnImediatelyException, e:\r
+                    return e.ret\r
 \r
         res = self._callable(*args, **kwargs)\r
 \r
@@ -60,6 +63,11 @@ class DecoratableObject(object):
 \r
         return res\r
 \r
+class ReturnImediatelyException(Exception):\r
+    def __init__(self, ret):\r
+        super(Exception, self).__init__()\r
+        self.ret = ret\r
+\r
 def _check_decoratable(origin, install=True):\r
     if not isinstance(origin, DecoratableObject):\r
         if inspect.ismethod(origin) and not hasattr(origin, '_decoratable_obj'):\r