Skip to content

Commit c8b4510

Browse files
committed
Make extracting lists of nomcom-related email addresses easier for the nomcom chair. Fixes ietf-tools#1852. Commit ready for merge.
- Legacy-Id: 14505
1 parent 94f4e9a commit c8b4510

6 files changed

Lines changed: 66 additions & 0 deletions

File tree

ietf/nomcom/tests.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1743,6 +1743,12 @@ def test_request_merge(self):
17431743
self.assertEqual(len(outbox),1)
17441744
self.assertTrue(all([str(x.person.pk) in outbox[0].get_payload(decode=True) for x in [nominee1,nominee2]]))
17451745

1746+
def test_extract_email(self):
1747+
url = reverse('ietf.nomcom.views.extract_email_lists',kwargs={'year':self.nc.year()})
1748+
login_testing_unauthorized(self,self.chair.user.username,url)
1749+
response = self.client.get(url)
1750+
self.assertEqual(response.status_code, 200)
1751+
17461752

17471753
class NomComIndexTests(TestCase):
17481754
def setUp(self):

ietf/nomcom/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
url(r'^(?P<year>\d{4})/private/merge-nominee/?$', views.private_merge_nominee),
2424
url(r'^(?P<year>\d{4})/private/merge-person/?$', views.private_merge_person),
2525
url(r'^(?P<year>\d{4})/private/send-reminder-mail/(?P<type>\w+)/$', views.send_reminder_mail),
26+
url(r'^(?P<year>\d{4})/private/extract-email-lists/$', views.extract_email_lists),
2627
url(r'^(?P<year>\d{4})/private/edit-members/$', views.edit_members),
2728
url(r'^(?P<year>\d{4})/private/edit-nomcom/$', views.edit_nomcom),
2829
url(r'^(?P<year>\d{4})/private/chair/templates/$', views.list_templates),

ietf/nomcom/views.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,3 +1202,23 @@ def edit_members(request, year):
12021202
'form': form,
12031203
})
12041204

1205+
@role_required("Nomcom Chair", "Nomcom Advisor")
1206+
def extract_email_lists(request, year):
1207+
nomcom = get_nomcom_by_year(year)
1208+
1209+
pending = nomcom.nominee_set.filter(nomineeposition__state='pending').distinct()
1210+
accepted = nomcom.nominee_set.filter(nomineeposition__state='accepted').distinct()
1211+
noresp = [n for n in accepted if n.nomineeposition_set.without_questionnaire_response().filter(state='accepted')]
1212+
1213+
bypos = {}
1214+
for pos in nomcom.position_set.all():
1215+
bypos[pos] = nomcom.nominee_set.filter(nomineeposition__position=pos,nomineeposition__state='accepted').distinct()
1216+
1217+
return render(request, 'nomcom/extract_email_lists.html',
1218+
{'nomcom': nomcom,
1219+
'year' : year,
1220+
'pending': pending,
1221+
'accepted': accepted,
1222+
'noresp': noresp,
1223+
'bypos': bypos,
1224+
})
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<div class="panel panel-default">
2+
<div class="panel-heading"><h3>{{title}}</h3></div>
3+
<div class="panel-body">
4+
{% for n in list %}{{n.email.address}}{% if not forloop.last %}, {%endif %}{% endfor %}
5+
</div>
6+
</div>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{% extends "nomcom/nomcom_private_base.html" %}
2+
{# Copyright The IETF Trust 2015, All Rights Reserved #}
3+
{% load origin %}
4+
{% load bootstrap3 %}
5+
6+
{% block subtitle %} - Email Lists{% endblock %}
7+
8+
{% block nomcom_content %}
9+
{% origin %}
10+
<h2>Email lists for {{ nomcom.group }}</h2>
11+
12+
{% with title='Nominees Pending Acceptance' list=pending %}
13+
{% include 'nomcom/email_list_panel.html' %}
14+
{% endwith %}
15+
{% with title='Accepted Nominees' list=accepted %}
16+
{% include 'nomcom/email_list_panel.html' %}
17+
{% endwith %}
18+
{% with title='Accepted Nominees Without a Questionnaire Response' list=noresp %}
19+
{% include 'nomcom/email_list_panel.html' %}
20+
{% endwith %}
21+
<div class="panel panel-default">
22+
<div class="panel-heading"><h3>Accepted Nominees by Position</h3></div>
23+
<div class="panel-body">
24+
{% for pos, accepts in bypos.items %}
25+
{% with title=pos.name list=accepts %}
26+
{% include 'nomcom/email_list_panel.html' %}
27+
{% endwith %}
28+
{% endfor %}
29+
</div>
30+
</div>
31+
32+
{% endblock nomcom_content %}

ietf/templates/nomcom/nomcom_private_base.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ <h1>NomCom {{ year }} {% if nomcom.group.state_id == 'conclude' %}(Concluded){%
3131
<li {% if selected == "feedback_pending" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.view_feedback_pending' year %}">Classify pending feedback</a></li>
3232
<li {% if selected == "feedback_email" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.private_feedback_email' year %}">Enter email feedback</a></li>
3333
<li {% if selected == "questionnaire" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.private_questionnaire' year %}">Enter questionnaire response</a></li>
34+
<li {% if selected == "extract_email_lists" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.extract_email_lists' year %}">Extract email lists</a></li>
3435
<li {% if selected == "send_accept_reminder" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.send_reminder_mail' year "accept" %}">Send accept reminder</a></li>
3536
<li {% if selected == "send_questionnaire_reminder" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.send_reminder_mail' year "questionnaire" %}">Send questionnaire reminder</a></li>
3637
<li {% if selected == "merge_person" %}class="active"{% endif %}><a href="{% url "ietf.nomcom.views.private_merge_person" year %}">Request Person Record Merge</a></li>

0 commit comments

Comments
 (0)