Skip to content
This repository has been archived by the owner on Oct 4, 2022. It is now read-only.

Commit

Permalink
fix ParticipantSignup.objects.with_attendance bug
Browse files Browse the repository at this point in the history
Fixing copy-paste error and redirecting back to experiment session
signup when a session is full as there may be more sessions to select.
updating the subject pool test.

TODO: need to wire up waitlist into the front end, and allow for
waitlist confirmation as there may be other selectable sessions.
  • Loading branch information
alee committed Oct 7, 2014
1 parent 3a3dbc2 commit 247db37
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 34 deletions.
3 changes: 1 addition & 2 deletions vcweb/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2896,8 +2896,7 @@ def _experiment_metadata_criteria(self, criteria,
return criteria

def with_attendance(self, attendance, **kwargs):
criteria = self._experiment_metadata_criteria({'attendance': ParticipantSignup.ATTENDANCE.participated},
**kwargs)
criteria = self._experiment_metadata_criteria({'attendance': attendance}, **kwargs)
return self.filter(**criteria)

def registered_or_participated(self, **kwargs):
Expand Down
3 changes: 2 additions & 1 deletion vcweb/core/subjectpool/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -475,9 +475,10 @@ def submit_experiment_session_signup(request):
messages.success(request, _(message))
send_email("email/confirmation-email.txt", {'session': invitation.experiment_session}, "Confirmation Email",
settings.SERVER_EMAIL, [user.email])
return redirect('core:dashboard')
else:
messages.error(request, _("This session is currently full. Please select a different session or try again later to see if any slots have opened up. Thank you for your interest!"))
return redirect('core:dashboard')
return redirect('subjectpool:experiment_session_signup')


@group_required(PermissionGroup.experimenter)
Expand Down
60 changes: 33 additions & 27 deletions vcweb/core/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,11 @@ def test_send_invitations(self):
self.setup_participants()
es_pk_list = self.setup_experiment_sessions()

response = self.post(reverse('subjectpool:send_invites'), {'number_of_people': 30, 'only_undergrad': 'on',
'affiliated_institution': 'Arizona State University',
'invitation_subject': 'Test', 'invitation_text': 'Testing',
'session_pk_list': str(es_pk_list[0])})
response = self.post(reverse('subjectpool:send_invites'),
{'number_of_people': 30, 'only_undergrad': 'on',
'affiliated_institution': 'Arizona State University',
'invitation_subject': 'Test', 'invitation_text': 'Testing',
'session_pk_list': str(es_pk_list[0])})
self.assertEqual(200, response.status_code)

response_dict = json.loads(response.content)
Expand All @@ -266,31 +267,33 @@ def test_manage_experiment_session(self):

# test create experiment session
em = ExperimentMetadata.objects.order_by('?')[0]
response = self.post(reverse('subjectpool:manage_experiment_session'), {'pk': -1, 'experiment_metadata_pk': em.pk,
'start_date': '2014-09-23', 'start_hour': 2,
'start_min': 0, 'capacity': 10, 'location': 'Online',
'end_date': '2014-09-23', 'end_hour': 3, 'end_min': 0,
'request_type': 'create'})
response = self.post(reverse('subjectpool:manage_experiment_session'),
{'pk': -1, 'experiment_metadata_pk': em.pk,
'start_date': '2014-09-23', 'start_hour': 2,
'start_min': 0, 'capacity': 10, 'location': 'Online',
'end_date': '2014-09-23', 'end_hour': 3, 'end_min': 0,
'request_type': 'create'})
self.assertEqual(200, response.status_code)

response_dict = json.loads(response.content)
self.assertTrue(response_dict['success'])

# test edit/update experiment session
response = self.post(reverse('subjectpool:manage_experiment_session'), {'pk': response_dict['session']['pk'],
'experiment_metadata_pk': em.pk,
'start_date': '2014-09-23', 'start_hour': 2,
'start_min': 0, 'capacity': 10, 'location': 'Online',
'end_date': '2014-09-23', 'end_hour': 4,
'end_min': 0, 'request_type': 'update'})
response = self.post(reverse('subjectpool:manage_experiment_session'),
{'pk': response_dict['session']['pk'],
'experiment_metadata_pk': em.pk,
'start_date': '2014-09-23', 'start_hour': 2,
'start_min': 0, 'capacity': 10, 'location': 'Online',
'end_date': '2014-09-23', 'end_hour': 4,
'end_min': 0, 'request_type': 'update'})
self.assertEqual(200, response.status_code)

response_dict = json.loads(response.content)
self.assertTrue(response_dict['success'])

# test delete experiment session
response = self.post(
reverse('subjectpool:manage_experiment_session'), {'pk': response_dict['session']['pk'], 'request_type': 'delete'})
response = self.post(reverse('subjectpool:manage_experiment_session'),
{'pk': response_dict['session']['pk'], 'request_type': 'delete'})
self.assertEqual(200, response.status_code)

response_dict = json.loads(response.content)
Expand All @@ -310,25 +313,24 @@ def test_experiment_session_signup_page(self):
self.assertEqual(200, response.status_code)

self.setup_invitations(x, es_pk_list)
invitation = Invitation.objects.filter(
participant=participant).order_by('?')[0]
invitation = Invitation.objects.filter(participant=participant).order_by('?')[0]

response = self.post(reverse('subjectpool:submit_experiment_session_signup'), {
'invitation_pk': invitation.pk, 'experiment_metadata_pk': invitation.experiment_session.experiment_metadata.pk})
'invitation_pk': invitation.pk,
'experiment_metadata_pk': invitation.experiment_session.experiment_metadata_id
})

self.assertEqual(302, response.status_code)
self.assertTrue(self.dashboard_url in response['Location'])

# test cancel session signup
ps = ParticipantSignup.objects.get(invitation=invitation)
response = self.post(
reverse('subjectpool:cancel_experiment_session_signup'), {'pk': ps.pk})
response = self.post(reverse('subjectpool:cancel_experiment_session_signup'), {'pk': ps.pk})
self.assertEqual(302, response.status_code)
self.assertTrue(self.dashboard_url in response['Location'])

# test canceling an already cancel session signup
response = self.post(
reverse('subjectpool:cancel_experiment_session_signup'), {'pk': ps.pk})
response = self.post(reverse('subjectpool:cancel_experiment_session_signup'), {'pk': ps.pk})
self.assertEqual(302, response.status_code)
self.assertTrue(self.dashboard_url in response['Location'])

Expand All @@ -337,7 +339,11 @@ def test_experiment_session_signup_page(self):
invitation.experiment_session.save()

response = self.post(reverse('subjectpool:submit_experiment_session_signup'), {
'invitation_pk': invitation.pk, 'experiment_metadata_pk': invitation.experiment_session.experiment_metadata.pk})

'invitation_pk': invitation.pk,
'experiment_metadata_pk': invitation.experiment_session.experiment_metadata.pk
})
self.assertEqual(302, response.status_code)
self.assertTrue('/subject-pool/signup/' in response['Location'])
self.assertTrue(reverse('core:dashboard') in response['Location'])
ps = ParticipantSignup.objects.waitlist(experiment_session_pk=invitation.experiment_session_id)
self.assertTrue(ps.exists())
self.assertEqual(ps[0].invitation, invitation)
5 changes: 1 addition & 4 deletions vcweb/experiment/lighterprints/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,12 +220,9 @@ def test_group_score(self):
performed_activities = self.perform_activities()
# expected average points per person is the straight sum of all activities in the performed activities because
# every participant in the group has performed them
logger.error("performed activities: %s", performed_activities)
expected_avg_points_per_person = sum(
[activity.points for activity in performed_activities])
expected_avg_points_per_person = sum([activity.points for activity in performed_activities])
gs = e.groups
group_scores = GroupScores(e, groups=gs)
logger.error(group_scores.scores_dict)
for group in gs:
self.assertEqual(
group_scores.average_daily_points(group), expected_avg_points_per_person)
Expand Down

0 comments on commit 247db37

Please sign in to comment.