[RFC PATCH v2 03/19] templatetags: Add 'site_admin' tag

Stephen Finucane stephen at that.guru
Thu Sep 2 02:57:40 AEST 2021


This lets us avoid complex templating.

Signed-off-by: Stephen Finucane <stephen at that.guru>
---
 .../templates/patchwork/optin-request.html    |  8 ++---
 .../templates/patchwork/optout-request.html   |  8 ++---
 patchwork/templatetags/admins.py              | 29 +++++++++++++++++++
 3 files changed, 35 insertions(+), 10 deletions(-)
 create mode 100644 patchwork/templatetags/admins.py

diff --git patchwork/templates/patchwork/optin-request.html patchwork/templates/patchwork/optin-request.html
index 3384c462..36744c26 100644
--- patchwork/templates/patchwork/optin-request.html
+++ patchwork/templates/patchwork/optin-request.html
@@ -1,5 +1,7 @@
 {% extends "base.html" %}
 
+{% load admins %}
+
 {% block title %}Opt-in{% endblock %}
 {% block heading %}Opt-in{% endblock %}
 
@@ -40,11 +42,7 @@
 
 {% if error and admins %}
 <p>
-  If you are having trouble opting in, please email
-{% for admin in admins %}
-{% if admins|length > 1 and forloop.last %} or {% endif %}
-{{ admin.0 }} <<a href="mailto:{{ admin.1 }}">{{ admin.1 }}</a>>{% if admins|length > 2 and not forloop.last %}, {% endif %}
-{% endfor %}
+  If you are having trouble opting in, please email {% site_admins %}.
 </p>
 {% endif %}
 {% endif %}
diff --git patchwork/templates/patchwork/optout-request.html patchwork/templates/patchwork/optout-request.html
index 7396fd36..a89f72bb 100644
--- patchwork/templates/patchwork/optout-request.html
+++ patchwork/templates/patchwork/optout-request.html
@@ -1,5 +1,7 @@
 {% extends "base.html" %}
 
+{% load admins %}
+
 {% block title %}Opt-out{% endblock %}
 {% block heading %}Opt-out{% endblock %}
 
@@ -42,11 +44,7 @@
 
 {% if error and admins %}
 <p>
-  If you are having trouble opting out, please email
-{% for admin in admins %}
-{% if admins|length > 1 and forloop.last %} or {% endif %}
-{{ admin.0 }} <<a href="mailto:{{ admin.1 }}">{{ admin.1 }}</a>>{% if admins|length > 2 and not forloop.last %}, {% endif %}
-{% endfor %}
+  If you are having trouble opting out, please email {% site_admins %}.
 </p>
 {% endif %}
 {% endif %}
diff --git patchwork/templatetags/admins.py patchwork/templatetags/admins.py
new file mode 100644
index 00000000..3809655c
--- /dev/null
+++ patchwork/templatetags/admins.py
@@ -0,0 +1,29 @@
+# Patchwork - automated patch tracking system
+# Copyright (C) 2020 Stephen Finucane <stephen at that.guru>
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+from django.conf import settings
+from django import template
+from django.utils.safestring import mark_safe
+
+
+register = template.Library()
+
+
+ at register.simple_tag()
+def site_admins():
+    admins = [
+        f'{admin[0]} <<a href="mailto:{admin[1]}">{admin[1]}</a>>'
+        for admin in settings.ADMINS
+    ]
+
+    if not admins:
+        return ''
+
+    if len(admins) == 1:
+        return mark_safe(admins[0])
+
+    return mark_safe(
+        ', '.join(admins[:-2]) + admins[-2] + ' or ' + admins[-1]
+    )
-- 
2.31.1



More information about the Patchwork mailing list