-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
85 lines (68 loc) · 2.22 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""
Flask Router
@author: Tilman Kerl
@version: 2020.09
"""
from flask import request, redirect, url_for, render_template, session
from app_init import app, API
import redis
from redis import Redis
from flask_kvsession import KVSessionExtension
from simplekv.memory.redisstore import RedisStore
# flask-kv-session init
store = RedisStore(redis.StrictRedis())
KVSessionExtension(store, app)
# urllib.parse.uses_netloc.append('redis')
# url = urllib.parse.urlparse(REDIS_URL)
conn = Redis(host='redis', port=6379, decode_responses=True) #, db=0, password=url.password)
@app.route('/test')
def test():
redis.incr('hits')
return 'This Compose/Flask demo has been viewed %s time(s).' % redis.get('hits')
@app.route("/analyse", methods=["POST"])
def analyse():
"""
Analyse the article for the given "newsURL",
if param not given -> return error
store results in kv-session
"""
data = request.form
if not "newsURL" in data:
return redirect(url_for("error", msg= "Fehlender Parameter *newsURL in analyse POST"))
url = data["newsURL"]
article = API.news_analysis([url], valid=True)
session["renderArticle"] = article
return redirect(url_for("result", renderArticle="session"))
@app.route("/result")
def result():
"""
displays the results from the analysis
needs the "renderArticle" param to make sure
that the analysis has been performed &
that the session isset
"""
data = request.args
if not "renderArticle" in data:
return redirect(url_for("error", msg= "Fehlender Parameter *article in result"))
article = session["renderArticle"]
return render_template("result.html", article=article)
@app.route("/error")
def error():
"""
error route, displays error messages
optional msg param for extra message
"""
data = request.args
msg = "Bitte versuche es erneut oder eröffne einen Issue auf " \
"<a href='#TODO_GH' target='blank_'>GitHub</a>."
if "msg" in data:
msg += "<br><code>" + data["msg"] + "</code>"
return render_template("error.html", msg=msg)
@app.route("/")
def index():
"""
standard route
"""
return render_template("index.html")
if __name__ == '__main__':
app.run(host='0.0.0.0')