|
10 | 10 |
|
11 | 11 | from ietf.dbtemplate.models import DBTemplate |
12 | 12 | from ietf.dbtemplate.views import template_edit |
| 13 | +from ietf.name.models import NomineePositionState |
13 | 14 | from ietf.nomcom.decorators import member_required, private_key_required |
14 | 15 | from ietf.nomcom.forms import (EditPublicKeyForm, NominateForm, MergeForm, |
15 | 16 | NomComTemplateForm, PositionForm, PrivateKeyForm) |
@@ -55,20 +56,43 @@ def private_key(request, year): |
55 | 56 | @member_required(role='member') |
56 | 57 | def private_index(request, year): |
57 | 58 | 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 | + |
58 | 73 | nominee_positions = NomineePosition.objects.all() |
| 74 | + if filters: |
| 75 | + nominee_positions = nominee_positions.filter(**filters) |
| 76 | + |
59 | 77 | 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() |
60 | 80 | 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() |
64 | 84 | 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() |
66 | 86 |
|
67 | 87 | return render_to_response('nomcom/private_index.html', |
68 | 88 | {'nomcom': nomcom, |
69 | 89 | 'year': year, |
70 | 90 | 'nominee_positions': nominee_positions, |
71 | 91 | 'stats': stats, |
| 92 | + 'states': states, |
| 93 | + 'positions': positions, |
| 94 | + 'selected_state': selected_state, |
| 95 | + 'selected_position': selected_position and int(selected_position) or None, |
72 | 96 | 'selected': 'index'}, RequestContext(request)) |
73 | 97 |
|
74 | 98 |
|
|
0 commit comments