user_list.html: Show V2 router percentage as column

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
Adrian Schmutzler 2018-09-24 18:57:06 +02:00
parent 0f82f43385
commit c23561a8f8
4 changed files with 52 additions and 2 deletions

View File

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

View File

@ -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/<nickname>', methods=['GET', 'POST'])

View File

@ -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:

View File

@ -24,6 +24,7 @@
<th style="padding-right: 5px;">E-Mail</th>
<th style="padding-right: 5px;">Admin</th>
<th style="padding-right: 5px;">Created</th>
<th style="padding-right: 5px;">V2</th>
<th style="padding-right: 5px;">Routers</th>
<th style="padding-right: 5px;">Clients</th>
</tr>
@ -41,6 +42,7 @@
<span class="glyphicon glyphicon-remove" title="Automatically imported stub from netmon"></span>
{%- endif -%}
</td>
<td style="{{users_v2.get(user.email.lower(), {})|v2colorpercent }}" data-order="{{ users_v2.get(user.email.lower(), {})|v2userpercent }}">{{ users_v2.get(user.email.lower(), {})|v2userpercent }} %</td>
<td>{{ user_routers.get(user.email.lower(), {}).get('routers', 0) }}</td>
<td>{{ user_routers.get(user.email.lower(), {}).get('clients', 0) }}</td>
</tr>