Skip to content

Commit ddbfdf4

Browse files
committed
change merge form, accepted vs any state: accepted, pending vs declined: declined
Fixes ietf-tools#1016 - Legacy-Id: 5701
1 parent 3848074 commit ddbfdf4

2 files changed

Lines changed: 36 additions & 17 deletions

File tree

ietf/nomcom/forms.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from ietf.ietfauth.decorators import role_required
1919
from ietf.utils import fields as custom_fields
2020
from ietf.group.models import Group, Role
21-
from ietf.name.models import RoleName, FeedbackType
21+
from ietf.name.models import RoleName, FeedbackType, NomineePositionState
2222
from ietf.person.models import Email, Person
2323
from ietf.nomcom.models import NomCom, Nomination, Nominee, NomineePosition, \
2424
Position, Feedback
@@ -29,6 +29,7 @@
2929
HEADER_QUESTIONNAIRE_TEMPLATE, validate_private_key
3030
from ietf.nomcom.decorators import member_required
3131

32+
3233
ROLODEX_URL = getattr(settings, 'ROLODEX_URL', None)
3334

3435

@@ -342,9 +343,12 @@ def save(self):
342343

343344
if primary_nominee_position:
344345
# if already a nomineeposition object for a position and nominee,
345-
# update the nomineepostion of primary nominee with the state and questionnaire
346-
if nominee_position.time > primary_nominee_position.time:
347-
primary_nominee_position.state = nominee_position.state
346+
# update the nomineepostion of primary nominee with the state
347+
if nominee_position.state.slug == 'accepted' or primary_nominee_position.state.slug == 'accepted':
348+
primary_nominee_position.state = NomineePositionState.objects.get(slug='accepted')
349+
primary_nominee_position.save()
350+
if nominee_position.state.slug == 'declined' and primary_nominee_position.state.slug == 'pending':
351+
primary_nominee_position.state = NomineePositionState.objects.get(slug='declined')
348352
primary_nominee_position.save()
349353
else:
350354
# It is not allowed two or more nomineeposition objects with same position and nominee

ietf/nomcom/tests.py

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ def test_private_merge_view(self):
9494
self.nominate_view(public=True,
9595
nominee_email=nominees[0],
9696
position='IAOC')
97+
self.nominate_view(public=True,
98+
nominee_email=nominees[0],
99+
position='IAB')
100+
self.nominate_view(public=True,
101+
nominee_email=nominees[0],
102+
position='TSV')
97103
self.nominate_view(public=True,
98104
nominee_email=nominees[1],
99105
position='IAOC')
@@ -113,15 +119,10 @@ def test_private_merge_view(self):
113119
nominee_email=nominees[3],
114120
position='TSV')
115121
# Check nominee positions
116-
self.assertEqual(NomineePosition.objects.count(), 4)
117-
self.assertEqual(Feedback.objects.nominations().count(), 8)
122+
self.assertEqual(NomineePosition.objects.count(), 6)
123+
self.assertEqual(Feedback.objects.nominations().count(), 10)
118124

119125
# Accept and declined nominations
120-
nominee_position = NomineePosition.objects.get(position__name='TSV',
121-
nominee__email__address=nominees[3])
122-
nominee_position.state = NomineePositionState.objects.get(slug='accepted')
123-
nominee_position.save()
124-
125126
nominee_position = NomineePosition.objects.get(position__name='IAOC',
126127
nominee__email__address=nominees[0])
127128
nominee_position.state = NomineePositionState.objects.get(slug='accepted')
@@ -132,6 +133,16 @@ def test_private_merge_view(self):
132133
nominee_position.state = NomineePositionState.objects.get(slug='declined')
133134
nominee_position.save()
134135

136+
nominee_position = NomineePosition.objects.get(position__name='IAB',
137+
nominee__email__address=nominees[2])
138+
nominee_position.state = NomineePositionState.objects.get(slug='declined')
139+
nominee_position.save()
140+
141+
nominee_position = NomineePosition.objects.get(position__name='TSV',
142+
nominee__email__address=nominees[3])
143+
nominee_position.state = NomineePositionState.objects.get(slug='accepted')
144+
nominee_position.save()
145+
135146
self.client.logout()
136147

137148
# fill questionnaires (internally the function does new nominations)
@@ -165,14 +176,16 @@ def test_private_merge_view(self):
165176
nominee_email=nominees[2],
166177
position='IAB')
167178
self.feedback_view(public=False,
168-
nominee_email=nominees[03],
179+
nominee_email=nominees[3],
169180
position='TSV')
170181

171182
self.assertEqual(Feedback.objects.comments().count(), 4)
172-
self.assertEqual(Feedback.objects.nominations().count(), 16)
183+
self.assertEqual(Feedback.objects.nominations().count(), 18)
184+
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[0]).count(), 6)
185+
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[1]).count(), 4)
186+
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[2]).count(), 4)
187+
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[3]).count(), 4)
173188
for nominee in nominees:
174-
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominee).count(),
175-
4)
176189
self.assertEqual(Feedback.objects.comments().filter(nominees__email__address=nominee).count(),
177190
1)
178191
self.assertEqual(Feedback.objects.questionnaires().filter(nominees__email__address=nominee).count(),
@@ -231,9 +244,9 @@ def test_private_merge_view(self):
231244

232245
nominee = Nominee.objects.get(email__address=nominees[0])
233246

234-
self.assertEqual(Nomination.objects.filter(nominee=nominee).count(), 16)
247+
self.assertEqual(Nomination.objects.filter(nominee=nominee).count(), 18)
235248
self.assertEqual(Feedback.objects.nominations().filter(nominees__in=[nominee]).count(),
236-
16)
249+
18)
237250
self.assertEqual(Feedback.objects.comments().filter(nominees__in=[nominee]).count(),
238251
4)
239252
self.assertEqual(Feedback.objects.questionnaires().filter(nominees__in=[nominee]).count(),
@@ -253,6 +266,8 @@ def test_private_merge_view(self):
253266
self.assertEqual(NomineePosition.objects.get(position__name='TSV',
254267
nominee=nominee).state.slug, u'accepted')
255268
self.assertEqual(NomineePosition.objects.get(position__name='IAOC',
269+
nominee=nominee).state.slug, u'accepted')
270+
self.assertEqual(NomineePosition.objects.get(position__name='IAB',
256271
nominee=nominee).state.slug, u'declined')
257272

258273
self.client.logout()

0 commit comments

Comments
 (0)