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
|
import configparser
import webbrowser
import database
import services
import flask
app = flask.Flask(__name__)
CONFIG = configparser.ConfigParser()
CONFIG.read("edaweb.conf")
def get_template_items(title, db):
return {
"links": db.get_header_links(),
"image": db.get_image("twitterpic"),
"title": title,
"articles": db.get_header_articles()
}
@app.route("/")
def index():
with database.Database() as db:
return flask.render_template(
"index.html",
**get_template_items("edaweb.co.uk", db)
)
@app.route("/discord")
def discord():
with database.Database() as db:
return flask.render_template(
"discord.html",
**get_template_items("discord", db),
discord = CONFIG["discord"]["username"]
)
@app.route("/services")
def serve_services():
with database.Database() as db:
return flask.render_template(
"services.html",
**get_template_items("services", db),
docker = services.get_docker_stats(),
qbit = services.get_qbit_stats(),
trans = services.get_trans_stats(),
pihole = services.get_pihole_stats()
)
@app.route("/preview")
def preview():
import os
if "PREVIEW" in os.environ:
with database.Database() as db:
return flask.render_template_string(os.environ["PREVIEW"], **get_template_items(os.environ["PREVIEW_TITLE"], db))
else:
return "page for internal use only"
if __name__ == "__main__":
app.run(host = "0.0.0.0", debug = True)
|