From ca1f861e016bd6cadc4e8ad54fbb9b375649827f Mon Sep 17 00:00:00 2001 From: Martijn Vermaat <martijn@vermaat.name> Date: Fri, 4 Jul 2014 14:09:01 +0200 Subject: [PATCH] Add 404 not found page --- mutalyzer/website/templates/not-found.html | 23 ++++++++++ mutalyzer/website/views.py | 49 ++++++++++++++++------ 2 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 mutalyzer/website/templates/not-found.html diff --git a/mutalyzer/website/templates/not-found.html b/mutalyzer/website/templates/not-found.html new file mode 100644 index 00000000..75af36c0 --- /dev/null +++ b/mutalyzer/website/templates/not-found.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} + +{% set active_page = "not-found" %} +{% set page_title = "Page Not Found" %} + +{% block content %} + +<p> +Uh oh! Page not found! +</p> + +<p> +The page you are looking for is not here. Let's try one of the following +remedies to get you back on track... +</p> + +<ul> + <li>Go to the <a href="{{ url_for('website.homepage') }}">Mutalyzer homepage</a>.</li> + <li>Search Google for <a href="https://www.google.com/search?q={{ (['mutalyzer'] + terms)|join(' ')|urlencode }}">{{ (['mutalyzer'] + terms)|join(' ') }}</a>.</li> + <li>Notify us if you think <a href="mailto:{{ contact_email }}">this is an error</a>.</li> +</ul> + +{% endblock content %} diff --git a/mutalyzer/website/views.py b/mutalyzer/website/views.py index 9bc65ccb..238a0c09 100644 --- a/mutalyzer/website/views.py +++ b/mutalyzer/website/views.py @@ -34,20 +34,45 @@ from mutalyzer.services import soap website = Blueprint('website', __name__) +global_context = { + 'mutalyzer_version' : mutalyzer.__version__, + 'nomenclature_version': mutalyzer.NOMENCLATURE_VERSION, + 'release_date' : mutalyzer.__date__, + 'release' : mutalyzer.__version_info__[-1] != 'dev', + 'copyright_years' : mutalyzer.COPYRIGHT_YEARS, + 'contact_email' : settings.EMAIL, + 'soap_wsdl_url' : settings.SOAP_WSDL_URL, + 'json_root_url' : settings.JSON_ROOT_URL, + 'piwik' : settings.PIWIK, + 'piwik_base_url' : settings.PIWIK_BASE_URL, + 'piwik_site_id' : settings.PIWIK_SITE_ID, + 'announcement' : announce.get_announcement()} + + @website.context_processor def add_globals(): - return {'mutalyzer_version' : mutalyzer.__version__, - 'nomenclature_version': mutalyzer.NOMENCLATURE_VERSION, - 'release_date' : mutalyzer.__date__, - 'release' : mutalyzer.__version_info__[-1] != 'dev', - 'copyright_years' : mutalyzer.COPYRIGHT_YEARS, - 'contact_email' : settings.EMAIL, - 'soap_wsdl_url' : settings.SOAP_WSDL_URL, - 'json_root_url' : settings.JSON_ROOT_URL, - 'piwik' : settings.PIWIK, - 'piwik_base_url' : settings.PIWIK_BASE_URL, - 'piwik_site_id' : settings.PIWIK_SITE_ID, - 'announcement' : announce.get_announcement()} + return global_context + + +def request_terms(): + """ + List of terms associated with the request (i.e., from the request path and + query string). + """ + terms = request.path.lstrip('/').split('/') + terms += [s for item in request.args.iteritems() for s in item] + return terms + + +@website.errorhandler(404) +def error_not_found(error): + return render_template('not-found.html', terms=request_terms()), 404 + + +@website.app_errorhandler(404) +def app_error_not_found(error): + return render_template('not-found.html', terms=request_terms(), + **global_context), 404 @website.route('/') -- GitLab