From 8b6d8c9f4485f6d2d4052217db22f2ce829de4c6 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 9 Jul 2016 16:59:50 +0000
Subject: [PATCH] Replaced the hardcoded 'Area Director' approval role with a
 group-dependent list of approval roles.  Fixes issue #1980.  - Legacy-Id:
 11575

---
 ietf/doc/templatetags/ietf_filters.py               | 11 +++++++++++
 ietf/group/models.py                                |  3 +++
 ietf/templates/meeting/interim_approval_request.txt |  3 ++-
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py
index 7bb4821c6..ccb8b6abb 100644
--- a/ietf/doc/templatetags/ietf_filters.py
+++ b/ietf/doc/templatetags/ietf_filters.py
@@ -620,3 +620,14 @@ def format_timedelta(timedelta):
 @register.filter()
 def nbsp(value):
     return mark_safe("&nbsp;".join(value.split(' ')))
+
+@register.filter()
+def comma_separated_list(seq, end_word="and"):
+    if len(seq) < 2:
+        return u"".join(seq)
+    else:
+        return u", ".join(seq[:-1]) + u" %s %s"%(end_word, seq[-1])
+        
+@register.filter()
+def role_names(roles):
+    return list(set([ r.name.name for r in roles ]))
diff --git a/ietf/group/models.py b/ietf/group/models.py
index 814085341..4c90993c7 100644
--- a/ietf/group/models.py
+++ b/ietf/group/models.py
@@ -53,6 +53,9 @@ class GroupInfo(models.Model):
             kwargs["group_type"] = self.type_id
         return urlreverse(self.features.about_page, kwargs=kwargs)
 
+    def interim_approval_roles(self):
+        return list(set([ role for role in self.parent.role_set.filter(name__in=['ad', 'chair']) ]))
+
     class Meta:
         abstract = True
 
diff --git a/ietf/templates/meeting/interim_approval_request.txt b/ietf/templates/meeting/interim_approval_request.txt
index 1d895efe8..5a7dae034 100644
--- a/ietf/templates/meeting/interim_approval_request.txt
+++ b/ietf/templates/meeting/interim_approval_request.txt
@@ -1,7 +1,8 @@
 {% load ams_filters %}
 A new interim meeting {% if is_series %}series {% endif %}request has just been submitted by {{ requester }}.
 
-This request requires approval by the Area Director.
+This request requires approval by the {{ group.interim_approval_roles|role_names|comma_separated_list:"or" }}
+
 The meeting{{ meetings|pluralize }} can be approved here: 
 {% for url in approval_urls %}{{ url }}
 {% endfor %}