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:
commit
78304b4d57
|
@ -1743,6 +1743,12 @@ Junk body for testing
|
||||||
self.assertEqual(len(outbox),1)
|
self.assertEqual(len(outbox),1)
|
||||||
self.assertTrue(all([str(x.person.pk) in outbox[0].get_payload(decode=True) for x in [nominee1,nominee2]]))
|
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):
|
class NomComIndexTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
|
@ -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-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/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/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-members/$', views.edit_members),
|
||||||
url(r'^(?P<year>\d{4})/private/edit-nomcom/$', views.edit_nomcom),
|
url(r'^(?P<year>\d{4})/private/edit-nomcom/$', views.edit_nomcom),
|
||||||
url(r'^(?P<year>\d{4})/private/chair/templates/$', views.list_templates),
|
url(r'^(?P<year>\d{4})/private/chair/templates/$', views.list_templates),
|
||||||
|
|
|
@ -1202,3 +1202,23 @@ def edit_members(request, year):
|
||||||
'form': form,
|
'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,
|
||||||
|
})
|
||||||
|
|
6
ietf/templates/nomcom/email_list_panel.html
Normal file
6
ietf/templates/nomcom/email_list_panel.html
Normal 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>
|
32
ietf/templates/nomcom/extract_email_lists.html
Normal file
32
ietf/templates/nomcom/extract_email_lists.html
Normal 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 %}
|
|
@ -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_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 == "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 == "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_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 == "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>
|
<li {% if selected == "merge_person" %}class="active"{% endif %}><a href="{% url "ietf.nomcom.views.private_merge_person" year %}">Request Person Record Merge</a></li>
|
||||||
|
|
Loading…
Reference in a new issue