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))