From cfd9e1ebcafc1c5e400eab3c05f37e2f3c753f58 Mon Sep 17 00:00:00 2001
From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz>
Date: Fri, 2 Jul 2021 19:48:29 +0200
Subject: [PATCH] =?UTF-8?q?Ozna=C4=8Den=C3=AD=20neaktivovan=C3=BDch=20?=
 =?UTF-8?q?=C3=BA=C4=8Dt=C5=AF=20--=20vytvo=C5=99en=C3=AD=20user=5Fhtml=5F?=
 =?UTF-8?q?flags?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Vytvoření funkce a jinja filtru, které z uživatele vytvoří html
obsahující `*` s popiskem pro různé flagy uživatele.
Aktuálně podporované flagy jsou test user (náhrada za podbarvení
šrafováním) a doposud neaktivní účet.
Cílem je vytvořit rozhraní na přikreslování flagů k uživatelů, které se
použije všude, kde se mluví o uživatelích.
---
 mo/web/jinja.py |  5 +++++
 mo/web/util.py  | 11 +++++++++++
 static/mo.css   |  3 +++
 3 files changed, 19 insertions(+)

diff --git a/mo/web/jinja.py b/mo/web/jinja.py
index 59c744f1..50328316 100644
--- a/mo/web/jinja.py
+++ b/mo/web/jinja.py
@@ -13,6 +13,7 @@ import mo.util_format as util_format
 from mo.web import app
 from mo.web.org_contest import contest_breadcrumbs
 from mo.web.org_place import place_breadcrumbs
+from mo.web.util import user_html_flags
 
 # Konfigurace Jinjy
 
@@ -100,3 +101,7 @@ def json_pretty(js: Any) -> str:
 @app.template_global()
 def log_url(typ: str, id: int) -> str:
     return url_for('org_log', typ=typ, id=id)
+
+@app.template_filter()
+def user_flags(u: db.User) -> Markup:
+    return user_html_flags(u)
diff --git a/mo/web/util.py b/mo/web/util.py
index 4f10a68d..11e5541e 100644
--- a/mo/web/util.py
+++ b/mo/web/util.py
@@ -9,6 +9,7 @@ import werkzeug.exceptions
 import werkzeug.utils
 import wtforms
 from wtforms.fields.html5 import DecimalField
+from markupsafe import Markup
 
 import mo.db as db
 import mo.jobs
@@ -145,3 +146,13 @@ class MODecimalField(DecimalField):
                 d /= 10
 
         return super(MODecimalField, self)._value()
+
+def user_html_flags(u: db.User) -> Markup:
+    r = []
+    if u.is_test:
+        r.append("<span class='user-test' title='Testovací uživatel'>*</span>")
+    if u.is_inactive():
+        r.append("<span class='user-inactive' title='Účet dosud nebyl aktivován'>*</span>")
+    if len(r) == 0:
+        return Markup("")
+    return Markup(" " + "".join(r))
diff --git a/static/mo.css b/static/mo.css
index 2de94b23..0c84556d 100644
--- a/static/mo.css
+++ b/static/mo.css
@@ -256,6 +256,9 @@ table.data tbody tr.job-failed:hover {
 
 /* Users */
 
+.user-test {
+	color: green;
+}
 .user-inactive {
 	color: red;
 }
-- 
GitLab