diff --git a/app.py b/app.py index e7c947c..161516c 100644 --- a/app.py +++ b/app.py @@ -58,13 +58,18 @@ DEFAULT_CONF = { _cfp = ConfigParser() if _cfp.read([APP_BASE_DIR + '/site.conf']): @lru_cache(maxsize=50) - def _getconf(k1, k2, fallback=None): + def _getconf(k1, k2, fallback=None, cast=None): if fallback is None: fallback = DEFAULT_CONF.get((k1, k2)) v = _cfp.get(k1, k2, fallback=fallback) + if cast in (int, float, str): + try: + v = cast(v) + except ValueError: + v = fallback return v else: - def _getconf(k1, k2, fallback=None): + def _getconf(k1, k2, fallback=None, cast=None): if fallback is None: fallback = DEFAULT_CONF.get((k1, k2)) return fallback @@ -516,8 +521,9 @@ def _inject_variables(): @app.route('/') def homepage(): + page_limit = _getconf("appearance","items_per_page",20,cast=int) return render_template('home.html', new_notes=Page.select() - .order_by(Page.touched.desc()).limit(20), + .order_by(Page.touched.desc()).limit(page_limit), gallery=make_gallery((x, '') for x in Upload.select().order_by(Upload.upload_date.desc()).limit(3))) @app.route('/robots.txt') @@ -534,6 +540,10 @@ def favicon(): def error_404(body): return render_template('notfound.html'), 404 +@app.errorhandler(403) +def error_403(body): + return render_template('forbidden.html'), 403 + # Middle point during page editing. def savepoint(form, is_preview=False): diff --git a/templates/forbidden.html b/templates/forbidden.html new file mode 100644 index 0000000..8ac8560 --- /dev/null +++ b/templates/forbidden.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% block title %}Access Denied - {{ app_name }}{% endblock %} + +{% block content %} +

Forbidden

+ +

You don’t have permission to access this resource.

+{% endblock %}