From 3403dc5e04265f374b465dd020171552e4987a32 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 12 Jul 2018 18:13:12 +0100 Subject: [PATCH] web: Use a proper handler to render 404 Signed-off-by: Michael Tremer --- src/web/__init__.py | 3 +++ src/web/handlers_base.py | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/web/__init__.py b/src/web/__init__.py index 5f94d905..c424cd65 100644 --- a/src/web/__init__.py +++ b/src/web/__init__.py @@ -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) diff --git a/src/web/handlers_base.py b/src/web/handlers_base.py index 03d1114a..8bd4a83b 100644 --- a/src/web/handlers_base.py +++ b/src/web/handlers_base.py @@ -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") -- 2.39.2