From 6935a6ae71ca65b790f9946cd2c351834a019831 Mon Sep 17 00:00:00 2001
From: Yusur Princeps
Date: Mon, 7 Jul 2025 14:42:52 +0200
Subject: [PATCH] add account status to user list
---
freak/filters.py | 6 ++++++
freak/templates/admin/admin_users.html | 3 ++-
freak/website/admin.py | 17 ++++++++++++++++-
3 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/freak/filters.py b/freak/filters.py
index df56edd..f085ef9 100644
--- a/freak/filters.py
+++ b/freak/filters.py
@@ -40,3 +40,9 @@ def append(text, l: list):
l.append(text)
return None
+@app.template_filter()
+def faint_paren(text: str):
+ if not '(' in text:
+ return text
+ t1, t2, t3 = text.partition('(')
+ return Markup('{0} {1}').format(t1, t2 + t3)
\ No newline at end of file
diff --git a/freak/templates/admin/admin_users.html b/freak/templates/admin/admin_users.html
index 3ec789d..58991fc 100644
--- a/freak/templates/admin/admin_users.html
+++ b/freak/templates/admin/admin_users.html
@@ -15,8 +15,9 @@
- Age: {{ u.age() }} years old ({{ u.gdpr_birthday.strftime("%B %d, %Y") }})
- - Registered at: {{ u.joined_at }}
+ - Registered at: {{ u.joined_at.strftime("%B %d, %Y %H:%M %z") }}
- Registered from IP address: {{ u.joined_ip }}
+ - Status: {{ account_status_string(u) | faint_paren }}
{% endfor %}
diff --git a/freak/website/admin.py b/freak/website/admin.py
index 04b1806..2cfe919 100644
--- a/freak/website/admin.py
+++ b/freak/website/admin.py
@@ -30,6 +30,21 @@ TARGET_TYPES = {
Comment: REPORT_TARGET_COMMENT
}
+def account_status_string(u: User):
+ if u.is_active:
+ return 'Active'
+ elif u.banned_at:
+ s = 'Suspended'
+ if u.banned_until:
+ s += f' until {u.banned_until:%b %d, %Y %H:%M}'
+ if u.banned_reason in REPORT_REASON_STRINGS:
+ s += f' ({REPORT_REASON_STRINGS[u.banned_reason]})'
+ return s
+ elif u.is_disabled_by_user:
+ return 'Paused'
+ else:
+ return 'Inactive'
+
def remove_content(target, reason_code: int):
if isinstance(target, Post):
target.removed_at = datetime.datetime.now()
@@ -153,4 +168,4 @@ def strikes():
def users():
user_list = db.paginate(select(User).order_by(User.joined_at.desc()))
return render_template('admin/admin_users.html',
- user_list=user_list)
+ user_list=user_list, account_status_string=account_status_string)