-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
67 lines (54 loc) · 1.94 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
# -*- coding: utf-8 -*-
#
# This file is part of Tool DB Usage
#
# Copyright (C) 2017 Bryan Davis and contributors
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
import flask
import werkzeug.middleware.proxy_fix
import db_usage
# Create the Flask application
app = flask.Flask(__name__)
# Add the ProxyFix middleware which reads X-Forwarded-* headers
app.wsgi_app = werkzeug.middleware.proxy_fix.ProxyFix(app.wsgi_app)
HOSTS = {
"ToolsDB": "tools.db.svc.wikimedia.cloud",
}
@app.route("/")
def index():
"""Application landing page."""
cached = "purge" not in flask.request.args
usage = {
name: db_usage.dbusage(host, cached=cached)
for name, host in HOSTS.items()
}
return flask.render_template("index.html", usage=usage)
@app.route("/owner/<user>")
def owner_usage(user):
cached = "purge" not in flask.request.args
usage = db_usage.owner_usage(user, HOSTS, cached=cached)
name = db_usage.owner_name(user, cached=cached)
return flask.render_template(
"owner.html", user=user, name=name, usage=usage
)
@app.template_filter("owner_url")
def owner_url(owner):
if owner and owner.startswith("tools."):
base = "https://toolsadmin.wikimedia.org/tools/id/"
page = owner[6:]
else:
base = "https://wikitech.wikimedia.org/wiki/User:"
page = owner
return "{}{}".format(base, page)