Merged in [14505] from rjsparks@nostrum.com:

Make extracting lists of nomcom-related email addresses easier for the nomcom chair. Fixes #1852.
 - Legacy-Id: 14510
Note: SVN reference [14505] has been migrated to Git commit c8b451094a
This commit is contained in:
Henrik Levkowetz 2018-01-11 16:07:21 +00:00
commit 78304b4d57
6 changed files with 66 additions and 0 deletions

View file

@ -1743,6 +1743,12 @@ Junk body for testing
self.assertEqual(len(outbox),1)
self.assertTrue(all([str(x.person.pk) in outbox[0].get_payload(decode=True) for x in [nominee1,nominee2]]))
def test_extract_email(self):
url = reverse('ietf.nomcom.views.extract_email_lists',kwargs={'year':self.nc.year()})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
class NomComIndexTests(TestCase):
def setUp(self):

View file

@ -23,6 +23,7 @@ urlpatterns = [
url(r'^(?P<year>\d{4})/private/merge-nominee/?$', views.private_merge_nominee),
url(r'^(?P<year>\d{4})/private/merge-person/?$', views.private_merge_person),
url(r'^(?P<year>\d{4})/private/send-reminder-mail/(?P<type>\w+)/$', views.send_reminder_mail),
url(r'^(?P<year>\d{4})/private/extract-email-lists/$', views.extract_email_lists),
url(r'^(?P<year>\d{4})/private/edit-members/$', views.edit_members),
url(r'^(?P<year>\d{4})/private/edit-nomcom/$', views.edit_nomcom),
url(r'^(?P<year>\d{4})/private/chair/templates/$', views.list_templates),

View file

@ -1202,3 +1202,23 @@ def edit_members(request, year):
'form': form,
})
@role_required("Nomcom Chair", "Nomcom Advisor")
def extract_email_lists(request, year):
nomcom = get_nomcom_by_year(year)
pending = nomcom.nominee_set.filter(nomineeposition__state='pending').distinct()
accepted = nomcom.nominee_set.filter(nomineeposition__state='accepted').distinct()
noresp = [n for n in accepted if n.nomineeposition_set.without_questionnaire_response().filter(state='accepted')]
bypos = {}
for pos in nomcom.position_set.all():
bypos[pos] = nomcom.nominee_set.filter(nomineeposition__position=pos,nomineeposition__state='accepted').distinct()
return render(request, 'nomcom/extract_email_lists.html',
{'nomcom': nomcom,
'year' : year,
'pending': pending,
'accepted': accepted,
'noresp': noresp,
'bypos': bypos,
})

View file

@ -0,0 +1,6 @@
<div class="panel panel-default">
<div class="panel-heading"><h3>{{title}}</h3></div>
<div class="panel-body">
{% for n in list %}{{n.email.address}}{% if not forloop.last %}, {%endif %}{% endfor %}
</div>
</div>

View file

@ -0,0 +1,32 @@
{% extends "nomcom/nomcom_private_base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load bootstrap3 %}
{% block subtitle %} - Email Lists{% endblock %}
{% block nomcom_content %}
{% origin %}
<h2>Email lists for {{ nomcom.group }}</h2>
{% with title='Nominees Pending Acceptance' list=pending %}
{% include 'nomcom/email_list_panel.html' %}
{% endwith %}
{% with title='Accepted Nominees' list=accepted %}
{% include 'nomcom/email_list_panel.html' %}
{% endwith %}
{% with title='Accepted Nominees Without a Questionnaire Response' list=noresp %}
{% include 'nomcom/email_list_panel.html' %}
{% endwith %}
<div class="panel panel-default">
<div class="panel-heading"><h3>Accepted Nominees by Position</h3></div>
<div class="panel-body">
{% for pos, accepts in bypos.items %}
{% with title=pos.name list=accepts %}
{% include 'nomcom/email_list_panel.html' %}
{% endwith %}
{% endfor %}
</div>
</div>
{% endblock nomcom_content %}

View file

@ -31,6 +31,7 @@
<li {% if selected == "feedback_pending" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.view_feedback_pending' year %}">Classify pending feedback</a></li>
<li {% if selected == "feedback_email" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.private_feedback_email' year %}">Enter email feedback</a></li>
<li {% if selected == "questionnaire" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.private_questionnaire' year %}">Enter questionnaire response</a></li>
<li {% if selected == "extract_email_lists" %}class="active"{% endif %}><a href="{% url 'ietf.nomcom.views.extract_email_lists' year %}">Extract email lists</a></li>
<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>
<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>
<li {% if selected == "merge_person" %}class="active"{% endif %}><a href="{% url "ietf.nomcom.views.private_merge_person" year %}">Request Person Record Merge</a></li>