change merge form, accepted vs any state: accepted, pending vs declined: declined
Fixes #1016 - Legacy-Id: 5701
This commit is contained in:
parent
38480747b4
commit
ddbfdf4b7b
|
@ -18,7 +18,7 @@ from ietf.utils.mail import send_mail, send_mail_text
|
|||
from ietf.ietfauth.decorators import role_required
|
||||
from ietf.utils import fields as custom_fields
|
||||
from ietf.group.models import Group, Role
|
||||
from ietf.name.models import RoleName, FeedbackType
|
||||
from ietf.name.models import RoleName, FeedbackType, NomineePositionState
|
||||
from ietf.person.models import Email, Person
|
||||
from ietf.nomcom.models import NomCom, Nomination, Nominee, NomineePosition, \
|
||||
Position, Feedback
|
||||
|
@ -29,6 +29,7 @@ from ietf.nomcom.utils import QUESTIONNAIRE_TEMPLATE, NOMINATION_EMAIL_TEMPLATE,
|
|||
HEADER_QUESTIONNAIRE_TEMPLATE, validate_private_key
|
||||
from ietf.nomcom.decorators import member_required
|
||||
|
||||
|
||||
ROLODEX_URL = getattr(settings, 'ROLODEX_URL', None)
|
||||
|
||||
|
||||
|
@ -342,9 +343,12 @@ class MergeForm(BaseNomcomForm, forms.Form):
|
|||
|
||||
if primary_nominee_position:
|
||||
# if already a nomineeposition object for a position and nominee,
|
||||
# update the nomineepostion of primary nominee with the state and questionnaire
|
||||
if nominee_position.time > primary_nominee_position.time:
|
||||
primary_nominee_position.state = nominee_position.state
|
||||
# update the nomineepostion of primary nominee with the state
|
||||
if nominee_position.state.slug == 'accepted' or primary_nominee_position.state.slug == 'accepted':
|
||||
primary_nominee_position.state = NomineePositionState.objects.get(slug='accepted')
|
||||
primary_nominee_position.save()
|
||||
if nominee_position.state.slug == 'declined' and primary_nominee_position.state.slug == 'pending':
|
||||
primary_nominee_position.state = NomineePositionState.objects.get(slug='declined')
|
||||
primary_nominee_position.save()
|
||||
else:
|
||||
# It is not allowed two or more nomineeposition objects with same position and nominee
|
||||
|
|
|
@ -94,6 +94,12 @@ class NomcomViewsTest(TestCase):
|
|||
self.nominate_view(public=True,
|
||||
nominee_email=nominees[0],
|
||||
position='IAOC')
|
||||
self.nominate_view(public=True,
|
||||
nominee_email=nominees[0],
|
||||
position='IAB')
|
||||
self.nominate_view(public=True,
|
||||
nominee_email=nominees[0],
|
||||
position='TSV')
|
||||
self.nominate_view(public=True,
|
||||
nominee_email=nominees[1],
|
||||
position='IAOC')
|
||||
|
@ -113,15 +119,10 @@ class NomcomViewsTest(TestCase):
|
|||
nominee_email=nominees[3],
|
||||
position='TSV')
|
||||
# Check nominee positions
|
||||
self.assertEqual(NomineePosition.objects.count(), 4)
|
||||
self.assertEqual(Feedback.objects.nominations().count(), 8)
|
||||
self.assertEqual(NomineePosition.objects.count(), 6)
|
||||
self.assertEqual(Feedback.objects.nominations().count(), 10)
|
||||
|
||||
# Accept and declined nominations
|
||||
nominee_position = NomineePosition.objects.get(position__name='TSV',
|
||||
nominee__email__address=nominees[3])
|
||||
nominee_position.state = NomineePositionState.objects.get(slug='accepted')
|
||||
nominee_position.save()
|
||||
|
||||
nominee_position = NomineePosition.objects.get(position__name='IAOC',
|
||||
nominee__email__address=nominees[0])
|
||||
nominee_position.state = NomineePositionState.objects.get(slug='accepted')
|
||||
|
@ -132,6 +133,16 @@ class NomcomViewsTest(TestCase):
|
|||
nominee_position.state = NomineePositionState.objects.get(slug='declined')
|
||||
nominee_position.save()
|
||||
|
||||
nominee_position = NomineePosition.objects.get(position__name='IAB',
|
||||
nominee__email__address=nominees[2])
|
||||
nominee_position.state = NomineePositionState.objects.get(slug='declined')
|
||||
nominee_position.save()
|
||||
|
||||
nominee_position = NomineePosition.objects.get(position__name='TSV',
|
||||
nominee__email__address=nominees[3])
|
||||
nominee_position.state = NomineePositionState.objects.get(slug='accepted')
|
||||
nominee_position.save()
|
||||
|
||||
self.client.logout()
|
||||
|
||||
# fill questionnaires (internally the function does new nominations)
|
||||
|
@ -165,14 +176,16 @@ class NomcomViewsTest(TestCase):
|
|||
nominee_email=nominees[2],
|
||||
position='IAB')
|
||||
self.feedback_view(public=False,
|
||||
nominee_email=nominees[03],
|
||||
nominee_email=nominees[3],
|
||||
position='TSV')
|
||||
|
||||
self.assertEqual(Feedback.objects.comments().count(), 4)
|
||||
self.assertEqual(Feedback.objects.nominations().count(), 16)
|
||||
self.assertEqual(Feedback.objects.nominations().count(), 18)
|
||||
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[0]).count(), 6)
|
||||
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[1]).count(), 4)
|
||||
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[2]).count(), 4)
|
||||
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominees[3]).count(), 4)
|
||||
for nominee in nominees:
|
||||
self.assertEqual(Feedback.objects.nominations().filter(nominees__email__address=nominee).count(),
|
||||
4)
|
||||
self.assertEqual(Feedback.objects.comments().filter(nominees__email__address=nominee).count(),
|
||||
1)
|
||||
self.assertEqual(Feedback.objects.questionnaires().filter(nominees__email__address=nominee).count(),
|
||||
|
@ -231,9 +244,9 @@ class NomcomViewsTest(TestCase):
|
|||
|
||||
nominee = Nominee.objects.get(email__address=nominees[0])
|
||||
|
||||
self.assertEqual(Nomination.objects.filter(nominee=nominee).count(), 16)
|
||||
self.assertEqual(Nomination.objects.filter(nominee=nominee).count(), 18)
|
||||
self.assertEqual(Feedback.objects.nominations().filter(nominees__in=[nominee]).count(),
|
||||
16)
|
||||
18)
|
||||
self.assertEqual(Feedback.objects.comments().filter(nominees__in=[nominee]).count(),
|
||||
4)
|
||||
self.assertEqual(Feedback.objects.questionnaires().filter(nominees__in=[nominee]).count(),
|
||||
|
@ -253,6 +266,8 @@ class NomcomViewsTest(TestCase):
|
|||
self.assertEqual(NomineePosition.objects.get(position__name='TSV',
|
||||
nominee=nominee).state.slug, u'accepted')
|
||||
self.assertEqual(NomineePosition.objects.get(position__name='IAOC',
|
||||
nominee=nominee).state.slug, u'accepted')
|
||||
self.assertEqual(NomineePosition.objects.get(position__name='IAB',
|
||||
nominee=nominee).state.slug, u'declined')
|
||||
|
||||
self.client.logout()
|
||||
|
|
Loading…
Reference in a new issue