From: Aaron Bentley Date: Wed, 12 Apr 2006 14:38:01 +0000 (-0400) Subject: Teach PrestHandler to handle bad paths cleanly X-Git-Tag: 1.0.0~188 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=17694fa83dbb2e237173de89610c82988405ca37;p=be.git Teach PrestHandler to handle bad paths cleanly --- 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)