]> git.ipfire.org Git - ipfire.org.git/commitdiff
web: Use a proper handler to render 404
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 12 Jul 2018 17:13:12 +0000 (18:13 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 12 Jul 2018 17:13:12 +0000 (18:13 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/web/__init__.py
src/web/handlers_base.py

index 5f94d90588194a410535fe6437ddad3661ebc99e..c424cd65fed5a09eaad59798ccffd907bce251f9 100644 (file)
@@ -69,6 +69,9 @@ class Application(tornado.web.Application):
                                "TalkLines"            : TalkLinesModule,
                                "TalkOngoingCalls"     : TalkOngoingCallsModule,
                        },
+
+                       # Call this when a page wasn't found
+                       "default_handler_class" : NotFoundHandler,
                }
                settings.update(kwargs)
 
index 03d1114a1110a5b0e9625e612f8d78dbfea7d731..8bd4a83b33ab2c90723614791f0c8ea71bac9fad 100644 (file)
@@ -57,17 +57,6 @@ class BaseHandler(tornado.web.RequestHandler):
                kwargs.update(_kwargs)
                return tornado.web.RequestHandler.render_string(self, *args, **kwargs)
 
-       def write_error(self, status_code, **kwargs):
-               if status_code in (404, 500):
-                       render_args = ({
-                               "code"      : status_code,
-                               "exception" : kwargs.get("exception", None),
-                               "message"   : httplib.responses[status_code],
-                       })
-                       self.render("error-%s.html" % status_code, **render_args)
-               else:
-                       return tornado.web.RequestHandler.write_error(self, status_code, **kwargs)
-
        def get_remote_ip(self):
                # Fix for clients behind a proxy that sends "X-Forwarded-For".
                remote_ips = self.request.remote_ip.split(", ")
@@ -251,3 +240,14 @@ class LogoutHandler(BaseHandler):
 
                # Get back to the start page
                self.redirect("/")
+
+
+class NotFoundHandler(BaseHandler):
+       def prepare(self):
+               # Raises 404 as soon as it is called
+               raise tornado.web.HTTPError(404)
+
+       def write_error(self, status_code, **kwargs):
+               assert status_code == 404
+
+               self.render("error-404.html")