Add pretty handler for 404
authorSimo Sorce <simo@redhat.com>
Tue, 7 Oct 2014 01:48:58 +0000 (21:48 -0400)
committerPatrick Uiterwijk <puiterwijk@redhat.com>
Tue, 7 Oct 2014 14:48:25 +0000 (16:48 +0200)
Signed-off-by: Simo Sorce <simo@redhat.com>
Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
ipsilon/root.py
ipsilon/util/errors.py
ipsilon/util/page.py
templates/notfound.html [new file with mode: 0644]

index 0046ddf..b2654ac 100755 (executable)
@@ -43,6 +43,7 @@ class Root(Page):
         # set up error pages
         cherrypy.config['error_page.400'] = errors.Error_400(self._site)
         cherrypy.config['error_page.401'] = errors.Error_401(self._site)
         # set up error pages
         cherrypy.config['error_page.400'] = errors.Error_400(self._site)
         cherrypy.config['error_page.401'] = errors.Error_401(self._site)
+        cherrypy.config['error_page.404'] = errors.Error_404(self._site)
         cherrypy.config['error_page.500'] = errors.Errors(self._site)
 
         # now set up the default login plugins
         cherrypy.config['error_page.500'] = errors.Errors(self._site)
 
         # now set up the default login plugins
index 3d7ea28..2f3cc3d 100755 (executable)
@@ -54,3 +54,10 @@ class Error_401(Errors):
     def handler(self, status, message, traceback, version):
         return self._error_template('unauthorized.html',
                                     title='Unauthorized', message=message)
     def handler(self, status, message, traceback, version):
         return self._error_template('unauthorized.html',
                                     title='Unauthorized', message=message)
+
+
+class Error_404(Errors):
+
+    def handler(self, status, message, traceback, version):
+        return self._error_template('notfound.html',
+                                    title='Not Found', message=message)
index 1548d47..a99d2f4 100755 (executable)
@@ -108,7 +108,7 @@ class Page(Log):
         return t.render(**m)
 
     def default(self, *args, **kwargs):
         return t.render(**m)
 
     def default(self, *args, **kwargs):
-        raise cherrypy.HTTPError(404)
+        raise cherrypy.NotFound()
 
     def add_subtree(self, name, page):
         self.__dict__[name] = page
 
     def add_subtree(self, name, page):
         self.__dict__[name] = page
diff --git a/templates/notfound.html b/templates/notfound.html
new file mode 100644 (file)
index 0000000..71743b5
--- /dev/null
@@ -0,0 +1,13 @@
+{% extends "master.html" %}
+{% block main %}
+<div class="col-sm-12">
+  <h1>404 - Not Found</h1>
+  {% if message: %}
+    <p>{{ message }}</p>
+  {% else %}
+    <p>This page does not exist.</p>
+  {% endif %}
+  <p>If you think this is an error, contact the server administrator to
+     resolve the problem.</p>
+</div>
+{% endblock %}