Merge remote-tracking branch 'http_error/beautify-http-errors'
This commit is contained in:
commit
89bddead35
|
@ -5,6 +5,22 @@
|
||||||
src: local('Grand Hotel'), local('GrandHotel-Regular'), url("fonts/GrandHotel-Regular.ttf") format('truetype');
|
src: local('Grand Hotel'), local('GrandHotel-Regular'), url("fonts/GrandHotel-Regular.ttf") format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html.http-error {
|
||||||
|
margin: 0;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.http-error body {
|
||||||
|
margin: 0;
|
||||||
|
height: 100%;
|
||||||
|
display: table;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.http-error body > div {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
body{background:#f2f2f2}body h2{font-weight:normal;color:#444}
|
body{background:#f2f2f2}body h2{font-weight:normal;color:#444}
|
||||||
body { margin-bottom: 40px;}
|
body { margin-bottom: 40px;}
|
||||||
a{color: #45b29d}a:hover{color: #444;}
|
a{color: #45b29d}a:hover{color: #444;}
|
||||||
|
|
26
cps/templates/http_error.html
Normal file
26
cps/templates/http_error.html
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="http-error" lang="{{ g.user.locale }}">
|
||||||
|
<head>
|
||||||
|
<title>{{ instance }} | HTTP Error ({{ error_code }})</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
|
|
||||||
|
<!-- Bootstrap -->
|
||||||
|
<link rel="apple-touch-icon" sizes="140x140" href="{{ url_for('static', filename='favicon.ico') }}">
|
||||||
|
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
|
||||||
|
<link href="{{ url_for('static', filename='css/libs/bootstrap.min.css') }}" rel="stylesheet" media="screen">
|
||||||
|
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" media="screen">
|
||||||
|
{% if g.user.get_theme == 1 %}
|
||||||
|
<link href="{{ url_for('static', filename='css/caliBlur-style.css') }}" rel="stylesheet" media="screen">
|
||||||
|
{% endif %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container text-center">
|
||||||
|
<h1>{{ error_code }}</h1>
|
||||||
|
<h3>{{ error_name }}</h3>
|
||||||
|
<a href="{{url_for('index')}}" title="{{ _('Back to home') }}">{{_('Back to home')}}</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
18
cps/web.py
18
cps/web.py
|
@ -9,6 +9,8 @@ from flask import (Flask, render_template, request, Response, redirect,
|
||||||
abort, Markup)
|
abort, Markup)
|
||||||
from flask import __version__ as flaskVersion
|
from flask import __version__ as flaskVersion
|
||||||
from werkzeug import __version__ as werkzeugVersion
|
from werkzeug import __version__ as werkzeugVersion
|
||||||
|
from werkzeug.exceptions import default_exceptions
|
||||||
|
|
||||||
from jinja2 import __version__ as jinja2Version
|
from jinja2 import __version__ as jinja2Version
|
||||||
import cache_buster
|
import cache_buster
|
||||||
import ub
|
import ub
|
||||||
|
@ -131,6 +133,21 @@ mimetypes.add_type('application/x-cbt', '.cbt')
|
||||||
mimetypes.add_type('image/vnd.djvu', '.djvu')
|
mimetypes.add_type('image/vnd.djvu', '.djvu')
|
||||||
|
|
||||||
app = (Flask(__name__))
|
app = (Flask(__name__))
|
||||||
|
|
||||||
|
# custom error page
|
||||||
|
def error_http(error):
|
||||||
|
return render_template('http_error.html',
|
||||||
|
error_code=error.code,
|
||||||
|
error_name=error.name,
|
||||||
|
instance=config.config_calibre_web_title
|
||||||
|
), error.code
|
||||||
|
|
||||||
|
# http error handling
|
||||||
|
for ex in default_exceptions:
|
||||||
|
# new routine for all client errors, server errors stay
|
||||||
|
if ex < 500:
|
||||||
|
app.register_error_handler(ex, error_http)
|
||||||
|
|
||||||
app.wsgi_app = ReverseProxied(app.wsgi_app)
|
app.wsgi_app = ReverseProxied(app.wsgi_app)
|
||||||
cache_buster.init_cache_busting(app)
|
cache_buster.init_cache_busting(app)
|
||||||
|
|
||||||
|
@ -171,6 +188,7 @@ def is_gdrive_ready():
|
||||||
os.path.exists(os.path.join(config.get_main_dir, 'gdrive_credentials'))
|
os.path.exists(os.path.join(config.get_main_dir, 'gdrive_credentials'))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@babel.localeselector
|
@babel.localeselector
|
||||||
def get_locale():
|
def get_locale():
|
||||||
# if a user is logged in, use the locale from the user settings
|
# if a user is logged in, use the locale from the user settings
|
||||||
|
|
Loading…
Reference in New Issue
Block a user