From 7c20f4e776c45c12eaf4fe2ad56806a20c9e7e3c Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Fri, 24 Jan 2025 23:49:10 +0100 Subject: [PATCH] =?UTF-8?q?DSN:=20Org=20si=20m=C5=AF=C5=BEe=20nechat=20zob?= =?UTF-8?q?razit=20nedoru=C4=8Denky=20k=20=C3=BA=C4=8Dtu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/web/org_users.py | 20 ++++++++++++++++++++ mo/web/templates/org_user_dsn.html | 24 ++++++++++++++++++++++++ mo/web/templates/parts/dsn.html | 28 ++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 mo/web/templates/org_user_dsn.html create mode 100644 mo/web/templates/parts/dsn.html diff --git a/mo/web/org_users.py b/mo/web/org_users.py index fdf5587f..43f104b0 100644 --- a/mo/web/org_users.py +++ b/mo/web/org_users.py @@ -823,3 +823,23 @@ def org_user_delete(user_id: int): return redirect(url_for('org_orgs') if user.is_org else url_for('org_users')) return render_template('org_user_delete.html', user=user, form=form, warnings=warnings, errors=errors) + + +@app.route('/org/user/<int:user_id>/dsn') +@app.route('/org/org/<int:user_id>/dsn', endpoint='org_org_dsn') +def org_user_dsn(user_id: int): + sess = db.get_session() + user = mo.users.user_by_uid(user_id) + if not user: + raise werkzeug.exceptions.NotFound() + + rr = g.gatekeeper.rights_generic() + if not rr.can_view_user(user): + raise werkzeug.exceptions.Forbidden() + + dsns = (sess.query(db.EmailDSN) + .filter_by(user=user) + .order_by(db.EmailDSN.arrived_at.desc()) + .all()) + + return render_template('org_user_dsn.html', user=user, dsns=dsns) diff --git a/mo/web/templates/org_user_dsn.html b/mo/web/templates/org_user_dsn.html new file mode 100644 index 00000000..f766a824 --- /dev/null +++ b/mo/web/templates/org_user_dsn.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} +{% block title %}Nedoručenky pro {{ user.email }}{% endblock %} +{% block body %} + +{% if dsns %} + +<p> + Tuto e-mailovou adresu považujeme za nefunkční, protože pošta na ni poslaná + se vrátila jako nedoručitelná. Zde jsou zprávy o nedoručitelnosti e-mailů z nedávné doby. +</p> + +{% include "parts/dsn.html" %} + +{% else %} + +<p><em>Momentálně neevidujeme žádnou nedoručitelnou poštu.</em></p> + +{% endif %} + +<div class="btn-group"> + <a class='btn btn-primary' href="{{ user|user_url }}">Zpět na stránku uživatele</a> +</div> + +{% endblock %} diff --git a/mo/web/templates/parts/dsn.html b/mo/web/templates/parts/dsn.html new file mode 100644 index 00000000..5feed019 --- /dev/null +++ b/mo/web/templates/parts/dsn.html @@ -0,0 +1,28 @@ +{# Výpis mailových nedoručenek #} + +{% for dsn in dsns %} + +<table class=data> + <tr> + <th>Čas + <td>{{ dsn.arrived_at|time_and_timedelta }} + <tr> + <th>Kód chyby + <td>{{ dsn.status }} + <tr> + <th>Chybová zpráva + <td>{{ dsn.diag_code|or_dash }} + <tr> + <th>Vzdálený server + <td>{{ dsn.remote_mta|or_dash }} + {% if g.user and g.user.is_admin %} + <tr> + <th>DSN token + <td>{{ dsn.token|or_dash }} + <tr> + <th>DSN Message-ID + <td>{{ dsn.message_id|or_dash }} + {% endif %} +</table> + +{% endfor %} -- GitLab