Merged in [14057] from rjsparks@nostrum.com:
Improve the nominee status table to serve as a nomcom dashboard. Fixes #2261.
- Legacy-Id: 14067
Note: SVN reference [14057] has been migrated to Git commit 2dbb0766fd
This commit is contained in:
commit
2b2753635f
|
@ -31,6 +31,7 @@ from ietf.nomcom.utils import (get_nomcom_by_year, store_nomcom_private_key,
|
||||||
get_hash_nominee_position, send_reminder_to_nominees,
|
get_hash_nominee_position, send_reminder_to_nominees,
|
||||||
HOME_TEMPLATE, NOMINEE_ACCEPT_REMINDER_TEMPLATE,NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE)
|
HOME_TEMPLATE, NOMINEE_ACCEPT_REMINDER_TEMPLATE,NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE)
|
||||||
from ietf.ietfauth.utils import role_required
|
from ietf.ietfauth.utils import role_required
|
||||||
|
from ietf.person.models import Person
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -184,13 +185,33 @@ def private_index(request, year):
|
||||||
else:
|
else:
|
||||||
s[state['slug']] = all_nominee_positions.filter(position__name=s['position__name'],
|
s[state['slug']] = all_nominee_positions.filter(position__name=s['position__name'],
|
||||||
state=state['slug']).count()
|
state=state['slug']).count()
|
||||||
s['total'] = all_nominee_positions.filter(position__name=s['position__name']).count()
|
s['nominations'] = Feedback.objects.filter(positions__id=s['position__id'], type='nomina').count()
|
||||||
|
s['nominees'] = all_nominee_positions.filter(position__name=s['position__name']).count()
|
||||||
|
s['comments'] = Feedback.objects.filter(positions__id=s['position__id'], type='comment').count()
|
||||||
|
|
||||||
|
totals = dict()
|
||||||
|
totals['nominations'] = Feedback.objects.filter(nomcom=nomcom, type='nomina').count()
|
||||||
|
totals['nominees'] = all_nominee_positions.count()
|
||||||
|
for state in states:
|
||||||
|
if state['slug'] == questionnaire_state:
|
||||||
|
totals[state['slug']] = Feedback.objects.filter(nomcom=nomcom, type='questio').count()
|
||||||
|
else:
|
||||||
|
totals[state['slug']] = all_nominee_positions.filter(state=state['slug']).count()
|
||||||
|
totals['comments'] = Feedback.objects.filter(nomcom=nomcom, type='comment').count()
|
||||||
|
|
||||||
|
unique_totals = dict()
|
||||||
|
unique_totals['nominees'] = Person.objects.filter(nominee__nomcom=nomcom).distinct().count()
|
||||||
|
for state in states:
|
||||||
|
if state['slug'] != questionnaire_state:
|
||||||
|
unique_totals[state['slug']] = len(set(all_nominee_positions.filter(state=state['slug']).values_list('nominee__person',flat=True)))
|
||||||
|
|
||||||
return render(request, 'nomcom/private_index.html',
|
return render(request, 'nomcom/private_index.html',
|
||||||
{'nomcom': nomcom,
|
{'nomcom': nomcom,
|
||||||
'year': year,
|
'year': year,
|
||||||
'nominee_positions': nominee_positions,
|
'nominee_positions': nominee_positions,
|
||||||
'stats': stats,
|
'stats': stats,
|
||||||
|
'totals': totals,
|
||||||
|
'unique_totals': unique_totals,
|
||||||
'states': states,
|
'states': states,
|
||||||
'positions': positions,
|
'positions': positions,
|
||||||
'selected_state': selected_state,
|
'selected_state': selected_state,
|
||||||
|
|
|
@ -8,30 +8,58 @@
|
||||||
{% origin %}
|
{% origin %}
|
||||||
<h2>Nomination status</h2>
|
<h2>Nomination status</h2>
|
||||||
|
|
||||||
<table class="table table-condensed table-striped">
|
<div class="table-responsive">
|
||||||
|
<table class="table table-condensed table-striped table-hover col-sm-10">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Position</th>
|
<th class="col-sm-3">Position</th>
|
||||||
<th>Accepted</th>
|
<th class="col-sm-1">Nominations</th>
|
||||||
<th>Declined</th>
|
<th class="col-sm-1">Unique Nominees</th>
|
||||||
<th>Pending</th>
|
<th class="col-sm-1">Accepted</th>
|
||||||
<th>Questionnaire response</th>
|
<th class="col-sm-1">Declined</th>
|
||||||
<th>Total</th>
|
<th class="col-sm-1">Pending</th>
|
||||||
|
<th class="col-sm-1">Questionnaire responses</th>
|
||||||
|
<th class="col-sm-1">Comments</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for item in stats %}
|
{% for item in stats %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.position__name }}</td>
|
<td>{{ item.position__name }}</td>
|
||||||
|
<td>{{ item.nominations }}</td>
|
||||||
|
<td>{{ item.nominees }}</td>
|
||||||
<td>{{ item.accepted }}</td>
|
<td>{{ item.accepted }}</td>
|
||||||
<td>{{ item.declined }}</td>
|
<td>{{ item.declined }}</td>
|
||||||
<td>{{ item.pending }}</td>
|
<td>{{ item.pending }}</td>
|
||||||
<td>{{ item.questionnaire }}</td>
|
<td>{{ item.questionnaire }}</td>
|
||||||
<td>{{ item.total }}</td>
|
<td>{{ item.comments }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<th>Totals</th>
|
||||||
|
<th>{{ totals.nominations }}</th>
|
||||||
|
<th>{{ totals.nominees }}</th>
|
||||||
|
<th>{{ totals.accepted }}</th>
|
||||||
|
<th>{{ totals.declined }}</th>
|
||||||
|
<th>{{ totals.pending }}</th>
|
||||||
|
<th>{{ totals.questionnaire }}</th>
|
||||||
|
<th>{{ totals.comments }}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Unique Nominee Totals</th>
|
||||||
|
<th>-</th>
|
||||||
|
<th>{{ unique_totals.nominees }}</th>
|
||||||
|
<th>{{ unique_totals.accepted }}</th>
|
||||||
|
<th>{{ unique_totals.declined }}</th>
|
||||||
|
<th>{{ unique_totals.pending }}</th>
|
||||||
|
<th>-</th>
|
||||||
|
<th>-</th>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h2>Nominees by position</h2>
|
<h2>Nominees by position</h2>
|
||||||
|
|
||||||
|
@ -66,11 +94,12 @@
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="table-responsive">
|
||||||
{% if is_chair and nomcom.group.state_id == 'active' %}
|
{% if is_chair and nomcom.group.state_id == 'active' %}
|
||||||
<form class="form-inline" id="batch-action-form" method="post">{% csrf_token %}
|
<form class="form-inline" id="batch-action-form" method="post">{% csrf_token %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<table class="table table-condensed table-striped">
|
<table class="table table-condensed table-striped table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
{% if is_chair and nomcom.group.state_id == 'active' %}<th colspan="2"><span class="fa fa-check"></span></th>{% endif %}
|
{% if is_chair and nomcom.group.state_id == 'active' %}<th colspan="2"><span class="fa fa-check"></span></th>{% endif %}
|
||||||
|
@ -117,5 +146,6 @@
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
Loading…
Reference in a new issue