diff --git a/warp/crud/render.py b/warp/crud/render.py index 12002b1..bddac01 100644 --- a/warp/crud/render.py +++ b/warp/crud/render.py @@ -142,9 +142,18 @@ def _getViewTemplate(self): _getEditTemplate = _getViewTemplate + def getRequestObject(self, request): + try: + objID = int(request.resource.args[0]) + except Exception: + return None + return request.store.get(self.model, objID) + def render_view(self, request): - objID = int(request.resource.args[0]) - obj = request.store.get(self.model, objID) + obj = self.getRequestObject(request) + if obj is None: + template = templateLookup.get_template("/error_404.mak") + return helpers.renderTemplateObj(request, template) return helpers.renderTemplateObj(request, self._getViewTemplate(), @@ -154,8 +163,11 @@ def render_view(self, request): def render_edit(self, request): - objID = int(request.resource.args[0]) - obj = request.store.get(self.model, objID) + obj = self.getRequestObject(request) + if obj is None: + template = templateLookup.get_template("/error_404.mak") + return helpers.renderTemplateObj(request, template) + crud = self.crudModel(obj) return helpers.renderTemplateObj(request, diff --git a/warp/templates/error_404.mak b/warp/templates/error_404.mak new file mode 100644 index 0000000..8da7e2e --- /dev/null +++ b/warp/templates/error_404.mak @@ -0,0 +1,4 @@ +<%inherit file="/site.mak"/> + +

Error 404

+
The requested URL cannot be found.