Skip to content

Commit 7118f9c

Browse files
committed
Add filter to nominations
See ietf-tools#965 - Legacy-Id: 5480
1 parent f2681fe commit 7118f9c

1 file changed

Lines changed: 28 additions & 4 deletions

File tree

ietf/nomcom/views.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from ietf.dbtemplate.models import DBTemplate
1212
from ietf.dbtemplate.views import template_edit
13+
from ietf.name.models import NomineePositionState
1314
from ietf.nomcom.decorators import member_required, private_key_required
1415
from ietf.nomcom.forms import (EditPublicKeyForm, NominateForm, MergeForm,
1516
NomComTemplateForm, PositionForm, PrivateKeyForm)
@@ -55,20 +56,43 @@ def private_key(request, year):
5556
@member_required(role='member')
5657
def private_index(request, year):
5758
nomcom = get_nomcom_by_year(year)
59+
60+
filters = {}
61+
selected_state = request.GET.get('state')
62+
selected_position = request.GET.get('position')
63+
64+
if selected_state:
65+
if selected_state == 'questionnaire':
66+
filters['questionnaires__isnull'] = False
67+
else:
68+
filters['state__slug'] = selected_state
69+
70+
if selected_position:
71+
filters['position__id'] = selected_position
72+
5873
nominee_positions = NomineePosition.objects.all()
74+
if filters:
75+
nominee_positions = nominee_positions.filter(**filters)
76+
5977
stats = NomineePosition.objects.values('position__name').annotate(total=Count('position'))
78+
states = list(NomineePositionState.objects.values('slug', 'name')) + [{'slug': u'questionnaire', 'name': u'Questionnaire'}]
79+
positions = NomineePosition.objects.values('position__name', 'position__id').distinct()
6080
for s in stats:
61-
for state in ['pending', 'accepted', 'declined', 'questionnaire', 'pending']:
62-
if state == 'questionnaire':
63-
s[state] = NomineePosition.objects.filter(position__name=s['position__name'], questionnaires__isnull=False).count()
81+
for state in states:
82+
if state['slug'] == 'questionnaire':
83+
s[state['slug']] = NomineePosition.objects.filter(position__name=s['position__name'], questionnaires__isnull=False).count()
6484
else:
65-
s[state] = NomineePosition.objects.filter(position__name=s['position__name'], state=state).count()
85+
s[state['slug']] = NomineePosition.objects.filter(position__name=s['position__name'], state=state['slug']).count()
6686

6787
return render_to_response('nomcom/private_index.html',
6888
{'nomcom': nomcom,
6989
'year': year,
7090
'nominee_positions': nominee_positions,
7191
'stats': stats,
92+
'states': states,
93+
'positions': positions,
94+
'selected_state': selected_state,
95+
'selected_position': selected_position and int(selected_position) or None,
7296
'selected': 'index'}, RequestContext(request))
7397

7498

0 commit comments

Comments
 (0)