Merge branch '35-better-error-templates' into 'master'
Resolve "Better Error templates" Closes #35 See merge request BeryJu.org/passbook!20
This commit is contained in:
commit
9a1a0f0aa8
26
passbook/core/templates/error/400.html
Normal file
26
passbook/core/templates/error/400.html
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{% extends 'login/base.html' %}
|
||||||
|
|
||||||
|
{% load static %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load utils %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ block.super }}
|
||||||
|
<style>
|
||||||
|
.pf-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block card %}
|
||||||
|
<header class="login-pf-header">
|
||||||
|
<h1>{% trans 'Bad Request' %}</h1>
|
||||||
|
</header>
|
||||||
|
<form>
|
||||||
|
{% if 'back' in request.GET %}
|
||||||
|
<a href="{% back %}" class="btn btn-primary btn-block btn-lg">{% trans 'Back' %}</a>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
26
passbook/core/templates/error/403.html
Normal file
26
passbook/core/templates/error/403.html
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{% extends 'login/base.html' %}
|
||||||
|
|
||||||
|
{% load static %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load utils %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ block.super }}
|
||||||
|
<style>
|
||||||
|
.pf-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block card %}
|
||||||
|
<header class="login-pf-header">
|
||||||
|
<h1>{% trans 'Forbidden' %}</h1>
|
||||||
|
</header>
|
||||||
|
<form>
|
||||||
|
{% if 'back' in request.GET %}
|
||||||
|
<a href="{% back %}" class="btn btn-primary btn-block btn-lg">{% trans 'Back' %}</a>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
26
passbook/core/templates/error/404.html
Normal file
26
passbook/core/templates/error/404.html
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{% extends 'login/base.html' %}
|
||||||
|
|
||||||
|
{% load static %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load utils %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ block.super }}
|
||||||
|
<style>
|
||||||
|
.pf-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block card %}
|
||||||
|
<header class="login-pf-header">
|
||||||
|
<h1>{% trans 'Not Found' %}</h1>
|
||||||
|
</header>
|
||||||
|
<form>
|
||||||
|
{% if 'back' in request.GET %}
|
||||||
|
<a href="{% back %}" class="btn btn-primary btn-block btn-lg">{% trans 'Back' %}</a>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
26
passbook/core/templates/error/500.html
Normal file
26
passbook/core/templates/error/500.html
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{% extends 'login/base.html' %}
|
||||||
|
|
||||||
|
{% load static %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load utils %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ block.super }}
|
||||||
|
<style>
|
||||||
|
.pf-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block card %}
|
||||||
|
<header class="login-pf-header">
|
||||||
|
<h1>{% trans 'Server Error' %}</h1>
|
||||||
|
</header>
|
||||||
|
<form>
|
||||||
|
{% if 'back' in request.GET %}
|
||||||
|
<a href="{% back %}" class="btn btn-primary btn-block btn-lg">{% trans 'Back' %}</a>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
|
@ -7,13 +7,18 @@ from django.urls import include, path
|
||||||
from django.views.generic import RedirectView
|
from django.views.generic import RedirectView
|
||||||
|
|
||||||
from passbook.core.auth import view
|
from passbook.core.auth import view
|
||||||
from passbook.core.views import authentication, overview, user
|
from passbook.core.views import authentication, error, overview, user
|
||||||
from passbook.lib.utils.reflection import get_apps
|
from passbook.lib.utils.reflection import get_apps
|
||||||
|
|
||||||
LOGGER = getLogger(__name__)
|
LOGGER = getLogger(__name__)
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
admin.site.login = RedirectView.as_view(pattern_name='passbook_core:auth-login')
|
admin.site.login = RedirectView.as_view(pattern_name='passbook_core:auth-login')
|
||||||
|
|
||||||
|
handler400 = error.BadRequestView.as_view()
|
||||||
|
handler403 = error.ForbiddenView.as_view()
|
||||||
|
handler404 = error.NotFoundView.as_view()
|
||||||
|
handler500 = error.BadRequestView.as_view()
|
||||||
|
|
||||||
core_urls = [
|
core_urls = [
|
||||||
# Authentication views
|
# Authentication views
|
||||||
path('auth/login/', authentication.LoginView.as_view(), name='auth-login'),
|
path('auth/login/', authentication.LoginView.as_view(), name='auth-login'),
|
||||||
|
|
60
passbook/core/views/error.py
Normal file
60
passbook/core/views/error.py
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
"""passbook core error views"""
|
||||||
|
|
||||||
|
from django.http.response import (HttpResponseBadRequest,
|
||||||
|
HttpResponseForbidden, HttpResponseNotFound,
|
||||||
|
HttpResponseServerError)
|
||||||
|
from django.template.response import TemplateResponse
|
||||||
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
|
|
||||||
|
class BadRequestTemplateResponse(TemplateResponse, HttpResponseBadRequest):
|
||||||
|
"""Combine Template response with Http Code 400"""
|
||||||
|
|
||||||
|
class ForbiddenTemplateResponse(TemplateResponse, HttpResponseForbidden):
|
||||||
|
"""Combine Template response with Http Code 403"""
|
||||||
|
|
||||||
|
class NotFoundTemplateResponse(TemplateResponse, HttpResponseNotFound):
|
||||||
|
"""Combine Template response with Http Code 404"""
|
||||||
|
|
||||||
|
class ServerErrorTemplateResponse(TemplateResponse, HttpResponseServerError):
|
||||||
|
"""Combine Template response with Http Code 500"""
|
||||||
|
|
||||||
|
class BadRequestView(TemplateView):
|
||||||
|
"""Show Bad Request message"""
|
||||||
|
|
||||||
|
response_class = BadRequestTemplateResponse
|
||||||
|
template_name = 'error/400.html'
|
||||||
|
|
||||||
|
extra_context = {
|
||||||
|
'is_login': True
|
||||||
|
}
|
||||||
|
|
||||||
|
class ForbiddenView(TemplateView):
|
||||||
|
"""Show Forbidden message"""
|
||||||
|
|
||||||
|
response_class = ForbiddenTemplateResponse
|
||||||
|
template_name = 'error/403.html'
|
||||||
|
|
||||||
|
extra_context = {
|
||||||
|
'is_login': True
|
||||||
|
}
|
||||||
|
|
||||||
|
class NotFoundView(TemplateView):
|
||||||
|
"""Show Not Found message"""
|
||||||
|
|
||||||
|
response_class = NotFoundTemplateResponse
|
||||||
|
template_name = 'error/404.html'
|
||||||
|
|
||||||
|
extra_context = {
|
||||||
|
'is_login': True
|
||||||
|
}
|
||||||
|
|
||||||
|
class ServerErrorView(TemplateView):
|
||||||
|
"""Show Server Error message"""
|
||||||
|
|
||||||
|
response_class = ServerErrorTemplateResponse
|
||||||
|
template_name = 'error/500.html'
|
||||||
|
|
||||||
|
extra_context = {
|
||||||
|
'is_login': True
|
||||||
|
}
|
Reference in a new issue