File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
17471753class NomComIndexTests (TestCase ):
17481754 def setUp (self ):
Original file line number Diff line number Diff line change 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 ),
Original file line number Diff line number Diff 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+ })
Original file line number Diff line number Diff line change 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 >
Original file line number Diff line number Diff line change 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 %}
Original file line number Diff line number Diff 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 >
You can’t perform that action at this time.
0 commit comments