diff --git a/ordr2/templates/errors/bad_csrf_token.jinja2 b/ordr2/templates/errors/bad_csrf_token.jinja2 new file mode 100644 index 0000000..9a54485 --- /dev/null +++ b/ordr2/templates/errors/bad_csrf_token.jinja2 @@ -0,0 +1,21 @@ +{% extends "ordr2:templates/layout.jinja2" %} + +{% block subtitle %} Whoops! {% endblock subtitle %} + +{% block content %} +
+
+
+ +
+
+

Please try again.

+

There was a problem with your form submission.

+

Maybe it took you too long to fill out the form.

+
+
+ +
+
+
+{% endblock content %} diff --git a/ordr2/templates/errors/exception.jinja2 b/ordr2/templates/errors/exception.jinja2 new file mode 100644 index 0000000..ed45303 --- /dev/null +++ b/ordr2/templates/errors/exception.jinja2 @@ -0,0 +1,20 @@ +{% extends "ordr2:templates/layout.jinja2" %} + +{% block subtitle %} Whoops! {% endblock subtitle %} + +{% block content %} +
+
+
+ +
+
+

Whoops!

+

This really shouldn't happen - You encountered a bug.

+
+
+ +
+
+
+{% endblock content %} diff --git a/ordr2/views/errors.py b/ordr2/views/errors.py index 448ce52..b2ccf0e 100644 --- a/ordr2/views/errors.py +++ b/ordr2/views/errors.py @@ -1,6 +1,11 @@ +''' display error pages ''' + + +from pyramid.exceptions import BadCSRFToken from pyramid.view import ( notfound_view_config, - forbidden_view_config + forbidden_view_config, + view_config ) @@ -13,6 +18,26 @@ def notfound_view(context, request): @forbidden_view_config(renderer='ordr2:templates/errors/forbidden.jinja2') def forbidden_view(context, request): + context.nav_highlight = 'errors' request.response.status = 403 + return {} + + +@view_config( + context=BadCSRFToken, + renderer='ordr2:templates/errors/bad_csrf_token.jinja2' + ) +def bad_csrf_view(context, request): + context.nav_highlight = 'errors' + request.response.status = 400 + return {} + + +@view_config( + context=Exception, + renderer='ordr2:templates/errors/exception.jinja2' + ) +def exception_view(context, request): context.nav_highlight = 'errors' + request.response.status = 500 return {}