From 636af5efb22d6c16745f9f146d5a3ef1941422a5 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Sat, 25 Jan 2025 01:29:55 +0100
Subject: [PATCH] =?UTF-8?q?DSN:=20Adminsk=C3=BD=20p=C5=99ehled=20ukazuje,?=
 =?UTF-8?q?=20koho=20se=20nedoru=C4=8Denka=20t=C3=BDk=C3=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/web/admin.py                 |  7 +++++--
 mo/web/templates/parts/dsn.html | 12 ++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/mo/web/admin.py b/mo/web/admin.py
index 71a9e83a..c31dc9d0 100644
--- a/mo/web/admin.py
+++ b/mo/web/admin.py
@@ -1,6 +1,7 @@
 # Web: Nástroje pro správce
 
 from flask import render_template, request
+from sqlalchemy.orm import joinedload
 
 import mo.db as db
 from mo.web import app
@@ -14,8 +15,10 @@ def admin_all_dsn():
         pager.validate()
 
     sess = db.get_session()
-    query = sess.query(db.EmailDSN).order_by(db.EmailDSN.arrived_at.desc())
+    query = (sess.query(db.EmailDSN)
+             .options(joinedload(db.EmailDSN.user), joinedload(db.EmailDSN.reg))
+             .order_by(db.EmailDSN.arrived_at.desc()))
     (count, query) = pager.apply_limits(query, pagesize=20)
     dsns = query.all()
 
-    return render_template('admin_dsn.html', dsns=dsns, pager=pager, count=count)
+    return render_template('admin_dsn.html', dsns=dsns, pager=pager, count=count, admin_list=True)
diff --git a/mo/web/templates/parts/dsn.html b/mo/web/templates/parts/dsn.html
index f7260c86..06d0da26 100644
--- a/mo/web/templates/parts/dsn.html
+++ b/mo/web/templates/parts/dsn.html
@@ -6,6 +6,18 @@
 	<tr>
 		<th>Čas
 		<td>{{ dsn.arrived_at|time_and_timedelta }}
+	{% if admin_list %}
+	<tr>
+		<th>Pro koho
+		{% if dsn.user is not none %}
+			<td>Uživatel {{ dsn.user|user_link }}{{ dsn.user|user_flags }}
+			{% if dsn.user.dsn == dsn %} (primární DSN){% endif %}
+		{% elif dsn.reg_id is not none %}
+		<td>Registrace #{{dsn.reg_id}} ({{dsn.reg.type.name}})
+		{% else %}
+			<td>???
+		{% endif %}
+	{% endif %}
 	<tr>
 		<th>Kód chyby
 		<td>{{ dsn.status|dsn_status }}
-- 
GitLab