From 9a179a426e76cc5f202a61d5baf1bb1069c92e3c Mon Sep 17 00:00:00 2001 From: Honza Javorek Date: Wed, 8 Aug 2018 22:28:55 +0200 Subject: [PATCH 1/3] add dead simple API --- .gitignore | 3 ++- pyvecorg/__init__.py | 3 +++ pyvecorg/data/meta.yml | 3 +++ pyvecorg/data/meta_schema.json | 3 +++ pyvecorg/templates/index.html | 9 ++++++++- pyvecorg/views.py | 30 ++++++++++++++++++++++-------- 6 files changed, 41 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index f68ec39..a32ebae 100755 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -/_build/ +# Elsa output +_build ### OSX *.DS_Store diff --git a/pyvecorg/__init__.py b/pyvecorg/__init__.py index 17bd296..924b0b0 100644 --- a/pyvecorg/__init__.py +++ b/pyvecorg/__init__.py @@ -21,8 +21,11 @@ def run(self, *args, **kwargs): app = Flask('pyvecorg') +app.config['JSON_AS_ASCII'] = False + from pyvecorg import views from pyvecorg import templating + __all__ = ['app', 'views', 'templating'] diff --git a/pyvecorg/data/meta.yml b/pyvecorg/data/meta.yml index 98e343b..c7755e0 100644 --- a/pyvecorg/data/meta.yml +++ b/pyvecorg/data/meta.yml @@ -68,3 +68,6 @@ downloads: resources: cs: grafika en: resources + json_data: + cs: tato stránka jako JSON + en: this page as JSON diff --git a/pyvecorg/data/meta_schema.json b/pyvecorg/data/meta_schema.json index a2abc1b..048efbd 100644 --- a/pyvecorg/data/meta_schema.json +++ b/pyvecorg/data/meta_schema.json @@ -60,6 +60,9 @@ }, "resources": { "$ref": "definitions/translated_text_schema.json#" + }, + "json_data": { + "$ref": "definitions/translated_text_schema.json#" } }, "additionalProperties": false diff --git a/pyvecorg/templates/index.html b/pyvecorg/templates/index.html index f39fb5a..8f9f87f 100644 --- a/pyvecorg/templates/index.html +++ b/pyvecorg/templates/index.html @@ -3,7 +3,9 @@ - + + + @@ -240,8 +242,13 @@

{{ meta.downloads.heading }}

{{ meta.downloads.charter }}.rtf +
+ {{ meta.downloads.resources }} + + + {{ meta.downloads.json_data }}

diff --git a/pyvecorg/views.py b/pyvecorg/views.py index 1da39ed..a172e4b 100755 --- a/pyvecorg/views.py +++ b/pyvecorg/views.py @@ -2,7 +2,7 @@ from datetime import datetime from flask import (request, render_template, redirect, url_for, - send_from_directory) + send_from_directory, jsonify) from pyvecorg import app from pyvecorg.data import load_data, select_language @@ -11,13 +11,6 @@ data = load_data() -@app.route('/') -def index_redirect(): - if request.accept_languages.best_match(['en', 'cs', 'sk']) == 'en': - return redirect(url_for('index', lang='en')) - return redirect(url_for('index', lang='cs')) - - @app.route('/favicon.ico') def favicon(): static = os.path.join(app.root_path, 'static') @@ -25,9 +18,30 @@ def favicon(): mimetype='image/vnd.microsoft.icon') +@app.route('/') +def index_redirect(): + return redirect(url_for('index', lang=detect_lang(request))) + + @app.route('//') def index(lang): context = select_language(data, lang) context['lang'] = lang context['now'] = datetime.now() return render_template('index.html', **context) + + +@app.route('/api.json') +def api_redirect(): + return redirect(url_for('api', lang=detect_lang(request))) + + +@app.route('//api.json') +def api(lang): + return jsonify(select_language(data, lang)) + + +def detect_lang(request): + if request.accept_languages.best_match(['en', 'cs', 'sk']) == 'en': + return 'en' + return 'cs' From 427b940e0a4e0e8719ffd50480f2a4de52b513ee Mon Sep 17 00:00:00 2001 From: Honza Javorek Date: Fri, 10 Aug 2018 12:42:40 +0200 Subject: [PATCH 2/3] use Czech as default lang detection won't work for a static site - https://github.com/pyvec/pyvec.org/pull/34#discussion_r209192374 let's assume most visitors understand Czech --- pyvecorg/views.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pyvecorg/views.py b/pyvecorg/views.py index a172e4b..348ad7c 100755 --- a/pyvecorg/views.py +++ b/pyvecorg/views.py @@ -20,7 +20,7 @@ def favicon(): @app.route('/') def index_redirect(): - return redirect(url_for('index', lang=detect_lang(request))) + return redirect(url_for('index', lang='cs')) @app.route('//') @@ -33,15 +33,9 @@ def index(lang): @app.route('/api.json') def api_redirect(): - return redirect(url_for('api', lang=detect_lang(request))) + return redirect(url_for('api', lang='cs')) @app.route('//api.json') def api(lang): return jsonify(select_language(data, lang)) - - -def detect_lang(request): - if request.accept_languages.best_match(['en', 'cs', 'sk']) == 'en': - return 'en' - return 'cs' From 09218d3b99c4cd3935408369c26860b9c715476c Mon Sep 17 00:00:00 2001 From: Honza Javorek Date: Fri, 10 Aug 2018 12:46:02 +0200 Subject: [PATCH 3/3] remove API root as it doesn't make much sense --- pyvecorg/views.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pyvecorg/views.py b/pyvecorg/views.py index 348ad7c..9218222 100755 --- a/pyvecorg/views.py +++ b/pyvecorg/views.py @@ -31,11 +31,6 @@ def index(lang): return render_template('index.html', **context) -@app.route('/api.json') -def api_redirect(): - return redirect(url_for('api', lang='cs')) - - @app.route('//api.json') def api(lang): return jsonify(select_language(data, lang))