diff options
-rw-r--r-- | Bugs-Everywhere-Web/beweb/prest.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Bugs-Everywhere-Web/beweb/prest.py b/Bugs-Everywhere-Web/beweb/prest.py index e6b7cdf..9a6505d 100644 --- a/Bugs-Everywhere-Web/beweb/prest.py +++ b/Bugs-Everywhere-Web/beweb/prest.py @@ -1,5 +1,6 @@ from unittest import TestCase import unittest +from cherrypy import NotFound """A pseudo-REST dispatching method in which only the noun comes from the path. The action performed will depend on kwargs. """ @@ -43,12 +44,20 @@ class PrestHandler(object): if len(path) == 0: resource = None else: - resource = self.instantiate(**data) + try: + resource = self.instantiate(**data) + except NotImplementedError, e: + if e.args[0] is not PrestHandler.instantiate: + raise NotFound() + return self, resource, data, path[1:] if len(path) > 2: data[path[1]] = path[2] return getattr(self, path[1]).decode(path[2:], data) + def instantiate(self, **date): + raise NotImplementedError(PrestHandler.instantiate) + def default(self, *args, **kwargs): child, resource, data, extra = self.decode([None,] + list(args)) action = child.get_action(**kwargs) |