diff --git a/ffmap/usertools.py b/ffmap/usertools.py index a4904e4..7e21882 100644 --- a/ffmap/usertools.py +++ b/ffmap/usertools.py @@ -143,3 +143,23 @@ def set_user_abuse(mysql, nickname, abuse): LIMIT 1 """,(abuse,nickname,)) mysql.commit() + +def users_v2(mysql): + data = mysql.fetchall(""" + SELECT contact, COUNT(id) AS count, v2 + FROM router + GROUP BY contact, v2 + """) + + datasort = {} + for d in data: + contact = d["contact"].lower() + if not contact in datasort: + datasort[contact] = {"v2":0, "v1":0} + if d["v2"]: + datasort[contact]["v2"] = d["count"] + else: + datasort[contact]["v1"] = d["count"] + + return datasort + diff --git a/ffmap/web/application.py b/ffmap/web/application.py index d7277ad..63f078d 100755 --- a/ffmap/web/application.py +++ b/ffmap/web/application.py @@ -399,13 +399,15 @@ def user_list(): mysql = FreifunkMySQL() users = mysql.fetchall("SELECT id, nickname, email, created, admin FROM users ORDER BY nickname COLLATE utf8_unicode_ci ASC") user_routers = stattools.router_user_sum(mysql) + usersv2 = users_v2(mysql) mysql.close() users = mysql.utcawaretuple(users,"created") - + return render_template("user_list.html", user_routers = user_routers, users = users, - users_count = len(users) + users_count = len(users), + users_v2 = usersv2 ) @app.route('/users/', methods=['GET', 'POST']) diff --git a/ffmap/web/filters.py b/ffmap/web/filters.py index 8d721af..9edbf4b 100644 --- a/ffmap/web/filters.py +++ b/ffmap/web/filters.py @@ -21,6 +21,32 @@ filters = Blueprint("filters", __name__) def sumdict(d): return sum(d.values()) +@filters.app_template_filter('v2userpercent') +def v2formatpercent(d): + return "{:.0f}".format(v2numberpercent(d)) + +def v2numberpercent(d): + if d.get("v1",0) > 0 or d.get("v2",0) > 0: + return d["v2"] * 100 / ( d["v1"] + d["v2"] ) + else: + return 0.0 + +@filters.app_template_filter('v2colorpercent') +def v2colorpercent(d): + pc = v2numberpercent(d) + color = "000000" + if pc > 99: + color = "008800" + elif pc > 75: + color = "00d93d" + elif pc > 50: + color = "ffc926" + elif pc > 25: + color = "ff9326" + elif pc > 1: + color = "ff0000" + return "color:#" + color + @filters.app_template_filter('longip') def longip(d): if len(d) > 32: diff --git a/ffmap/web/templates/user_list.html b/ffmap/web/templates/user_list.html index c06a54c..a6fd125 100644 --- a/ffmap/web/templates/user_list.html +++ b/ffmap/web/templates/user_list.html @@ -24,6 +24,7 @@ E-Mail Admin Created + V2 Routers Clients @@ -41,6 +42,7 @@ {%- endif -%} + {{ users_v2.get(user.email.lower(), {})|v2userpercent }} % {{ user_routers.get(user.email.lower(), {}).get('routers', 0) }} {{ user_routers.get(user.email.lower(), {}).get('clients', 0) }}