Regroup the view-feedback view to make it easier to see where to spend review effort. Fixes #1866.

- Legacy-Id: 10592
This commit is contained in:
Robert Sparks 2015-12-14 21:05:52 +00:00
parent 9ddcd62c44
commit 5e0632e8eb
2 changed files with 58 additions and 27 deletions

View file

@ -598,8 +598,23 @@ def view_feedback(request, year):
feedback_types.append(ft) feedback_types.append(ft)
else: else:
independent_feedback_types.append(ft) independent_feedback_types.append(ft)
nominees_feedback = {} nominees_feedback = []
def nominee_staterank(nominee):
states=nominee.nomineeposition_set.values_list('state_id',flat=True)
if 'accepted' in states:
return 0
elif 'pending' in states:
return 1
else:
return 2
for nominee in nominees: for nominee in nominees:
nominee.staterank = nominee_staterank(nominee)
sorted_nominees = sorted(nominees,key=lambda x:x.staterank)
for nominee in sorted_nominees:
last_seen = FeedbackLastSeen.objects.filter(reviewer=request.user.person,nominee=nominee).first() last_seen = FeedbackLastSeen.objects.filter(reviewer=request.user.person,nominee=nominee).first()
nominee_feedback = [] nominee_feedback = []
for ft in feedback_types: for ft in feedback_types:
@ -612,7 +627,7 @@ def view_feedback(request, year):
else: else:
newflag = qs.filter(time__gt=last_seen.time).exists() newflag = qs.filter(time__gt=last_seen.time).exists()
nominee_feedback.append( (ft.name,count,newflag) ) nominee_feedback.append( (ft.name,count,newflag) )
nominees_feedback.update({nominee: nominee_feedback}) nominees_feedback.append( {'nominee':nominee, 'feedback':nominee_feedback} )
independent_feedback = [ft.feedback_set.get_by_nomcom(nomcom).count() for ft in independent_feedback_types] independent_feedback = [ft.feedback_set.get_by_nomcom(nomcom).count() for ft in independent_feedback_types]
return render_to_response('nomcom/view_feedback.html', return render_to_response('nomcom/view_feedback.html',

View file

@ -10,32 +10,48 @@
{% origin %} {% origin %}
<h2>Feedback related to nominees</h2> <h2>Feedback related to nominees</h2>
<table class="table table-condensed table-striped"> {% regroup nominees_feedback by nominee.staterank as stateranked_nominees %}
<thead> {% for staterank in stateranked_nominees %}
<tr> <div class="panel panel-default">
<th class="col-sm-9">Nominee</th> <div class="panel-heading">
{% for ft in feedback_types %} {% if staterank.grouper == 0 %}
<th class="col-sm-1 text-center">{{ ft.name }}</th> Accepted nomination for at least one position
{% endfor %} {% elif staterank.grouper == 1 %}
</tr> Pending for at least one position and has not accepted any nomination
</thead> {% else %}
<tbody> Declined each nominated position
{% for nominee, feedback in nominees_feedback.items %} {% endif %}
<tr> </div>
<td> <div class="panel-body">
<a href="{% url "nomcom_view_feedback_nominee" year nominee.id %}">{{ nominee.name }}</a> <table class="table table-condensed table-striped">
<span class="hidden-xs">&lt;{{nominee.email.address}}&gt;</span> <thead>
</td> <tr>
{% for f in feedback %} <th class="col-sm-9">Nominee</th>
<td class="text-right"> {% for ft in feedback_types %}
{% if f.2 %}<span class="label label-success">New</span>{% endif %} <th class="col-sm-1 text-center">{{ ft.name }}</th>
{{ f.1 }} {% endfor %}
</td> </tr>
</thead>
<tbody>
{% for fb_dict in staterank.list %}
<tr>
<td>
<a href="{% url "nomcom_view_feedback_nominee" year fb_dict.nominee.id %}">{{ fb_dict.nominee.name }}</a>
<span class="hidden-xs">&lt;{{fb_dict.nominee.email.address}}&gt;</span>
</td>
{% for fbtype_name, fbtype_count, fbtype_newflag in fb_dict.feedback %}
<td class="text-right">
{% if fbtype_newflag %}<span class="label label-success">New</span>{% endif %}
{{ fbtype_count }}
</td>
{% endfor %}
</tr>
{% endfor %} {% endfor %}
</tr> </tbody>
{% endfor %} </table>
</tbody> </div>
</table> </div>
{% endfor %}
{% if independent_feedback_types %} {% if independent_feedback_types %}
<h2>Feedback not related to Nominees</h2> <h2>Feedback not related to Nominees</h2>