コード例 #1
0
 def test_new_attempt_button_not_rendered_if_no_groups_have_been_corrected(
         self):
     testassignment = mommy.make_recipe(
         'devilry.apps.core.assignment_activeperiod_start')
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testgroup1 = mommy.make('core.AssignmentGroup',
                             parentnode=testassignment)
     testgroup2 = mommy.make('core.AssignmentGroup',
                             parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup1)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup2)
     mommy.make('core.Examiner',
                assignmentgroup=testgroup1,
                relatedexaminer__user=testuser)
     mommy.make('core.Examiner',
                assignmentgroup=testgroup2,
                relatedexaminer__user=testuser)
     mockresponse = self.mock_http200_getrequest_htmls(
         cradmin_instance=self.__get_mock_instance(testassignment),
         cradmin_role=testassignment,
         cradmin_app=self.__get_mock_app(user=testuser),
         requestuser=testuser)
     self.assertFalse(
         mockresponse.selector.exists(
             '#devilry_manage_deadline_{}_new_attempt_all_link'.format(
                 datetimeutils.datetime_to_url_string(
                     testassignment.first_deadline))))
     self.assertFalse(
         mockresponse.selector.exists(
             '#devilry_manage_deadline_{}_new_attempt_select_link'.format(
                 datetimeutils.datetime_to_url_string(
                     testassignment.first_deadline))))
コード例 #2
0
 def test_all_groups_added_to_form_hidden(self):
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup1)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup2)
     testgroup3 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup3)
     testgroup4 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup4)
     testuser = self._get_admin_user(testassignment.parentnode)
     mockresponse = self.mock_http200_getrequest_htmls(
         cradmin_role=testassignment,
         cradmin_instance=self._get_mock_instance(testassignment),
         cradmin_app=self._get_mock_app(user=testuser),
         requestuser=testuser,
         viewkwargs={
             'deadline': datetimeutils.datetime_to_url_string(testassignment.first_deadline),
             'handle_deadline': self.handle_deadline
         }
     )
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_0').__str__().decode('utf-8'))
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_1').__str__().decode('utf-8'))
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_2').__str__().decode('utf-8'))
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_3').__str__().decode('utf-8'))
     self.assertIn('value="{}"'.format(testgroup1.id), mockresponse.selector.one('#id_selected_items_0').__str__().decode('utf-8'))
     self.assertIn('value="{}"'.format(testgroup2.id), mockresponse.selector.one('#id_selected_items_1').__str__().decode('utf-8'))
     self.assertIn('value="{}"'.format(testgroup3.id), mockresponse.selector.one('#id_selected_items_2').__str__().decode('utf-8'))
     self.assertIn('value="{}"'.format(testgroup4.id), mockresponse.selector.one('#id_selected_items_3').__str__().decode('utf-8'))
コード例 #3
0
 def get_filterlist_url(self, filters_string):
     return self.request.cradmin_app.reverse_appurl(
         'select-groups-manually-filter', kwargs={
             'deadline': datetimeutils.datetime_to_url_string(self.deadline),
             'handle_deadline': self.handle_deadline_type,
             'filters_string': filters_string
         })
コード例 #4
0
 def test_post_from_previous_view_selected_groups_are_hidden(self):
     # By adding the post_type_received_data to the key, we are simulating that the
     # post comes from a different view.
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup1)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup2)
     testuser = self._get_admin_user(testassignment.parentnode)
     mommy.make('core.Examiner', assignmentgroup=testgroup1, relatedexaminer__user=testuser)
     mommy.make('core.Examiner', assignmentgroup=testgroup2, relatedexaminer__user=testuser)
     mockresponse = self.mock_http200_postrequest_htmls(
         cradmin_role=testassignment,
         cradmin_instance=self._get_mock_instance(testassignment),
         cradmin_app=self._get_mock_app(user=testuser),
         requestuser=testuser,
         viewkwargs={
             'deadline': datetimeutils.datetime_to_url_string(testassignment.first_deadline),
             'handle_deadline': self.handle_deadline
         },
         requestkwargs={
             'data': {
                 'post_type_received_data': '',
                 'selected_items': [testgroup1.id, testgroup2.id]
             }
         }
     )
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_0').__str__())
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_1').__str__())
     self.assertIn('value="{}"'.format(testgroup1.id), mockresponse.selector.one('#id_selected_items_0').__str__())
     self.assertIn('value="{}"'.format(testgroup2.id), mockresponse.selector.one('#id_selected_items_1').__str__())
コード例 #5
0
 def test_post_groups_published_raises_error(self):
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup1)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup2)
     testuser = self._get_admin_user(testassignment.parentnode)
     mommy.make('core.Examiner', assignmentgroup=testgroup1, relatedexaminer__user=testuser)
     mommy.make('core.Examiner', assignmentgroup=testgroup2, relatedexaminer__user=testuser)
     new_deadline = timezone.now() + timezone.timedelta(days=3)
     new_deadline = new_deadline.replace(microsecond=0)
     with self.assertRaises(http.Http404):
         self.mock_http302_postrequest(
             cradmin_role=testassignment,
             cradmin_instance=self._get_mock_instance(testassignment),
             cradmin_app=self._get_mock_app(user=testuser),
             requestuser=testuser,
             viewkwargs={
                 'deadline': datetimeutils.datetime_to_url_string(testassignment.first_deadline),
                 'handle_deadline': self.handle_deadline
             },
             requestkwargs={
                 'data': {
                     'new_deadline': isoformat_withseconds(timezone.localtime(new_deadline)),
                     'comment_text': 'You have been given a new attempt.',
                     'selected_items': [testgroup1.id, testgroup2.id]
                 }
             }
         )
     self.assertEqual(2, group_models.FeedbackSet.objects.count())
コード例 #6
0
 def test_post_groups_published_raises_error(self):
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup1)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup2)
     testuser = self._get_admin_user(testassignment.parentnode)
     mommy.make('core.Examiner', assignmentgroup=testgroup1, relatedexaminer__user=testuser)
     mommy.make('core.Examiner', assignmentgroup=testgroup2, relatedexaminer__user=testuser)
     new_deadline = timezone.now() + timezone.timedelta(days=3)
     new_deadline = new_deadline.replace(microsecond=0)
     with self.assertRaises(http.Http404):
         self.mock_http302_postrequest(
             cradmin_role=testassignment,
             cradmin_instance=self._get_mock_instance(testassignment),
             cradmin_app=self._get_mock_app(user=testuser),
             requestuser=testuser,
             viewkwargs={
                 'deadline': datetimeutils.datetime_to_url_string(testassignment.first_deadline),
                 'handle_deadline': self.handle_deadline
             },
             requestkwargs={
                 'data': {
                     'new_deadline': isoformat_withseconds(timezone.localtime(new_deadline)),
                     'comment_text': 'You have been given a new attempt.',
                     'selected_items': [testgroup1.id, testgroup2.id]
                 }
             }
         )
     self.assertEquals(2, group_models.FeedbackSet.objects.count())
コード例 #7
0
 def test_post_from_previous_view_selected_groups_are_hidden(self):
     # By adding the post_type_received_data to the key, we are simulating that the
     # post comes from a different view.
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup1)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_unpublished(group=testgroup2)
     testuser = self._get_admin_user(testassignment.parentnode)
     mommy.make('core.Examiner', assignmentgroup=testgroup1, relatedexaminer__user=testuser)
     mommy.make('core.Examiner', assignmentgroup=testgroup2, relatedexaminer__user=testuser)
     mockresponse = self.mock_http200_postrequest_htmls(
         cradmin_role=testassignment,
         cradmin_instance=self._get_mock_instance(testassignment),
         cradmin_app=self._get_mock_app(user=testuser),
         requestuser=testuser,
         viewkwargs={
             'deadline': datetimeutils.datetime_to_url_string(testassignment.first_deadline),
             'handle_deadline': self.handle_deadline
         },
         requestkwargs={
             'data': {
                 'post_type_received_data': '',
                 'selected_items': [testgroup1.id, testgroup2.id]
             }
         }
     )
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_0').__str__().decode('utf-8'))
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_1').__str__().decode('utf-8'))
     self.assertIn('value="{}"'.format(testgroup1.id), mockresponse.selector.one('#id_selected_items_0').__str__().decode('utf-8'))
     self.assertIn('value="{}"'.format(testgroup2.id), mockresponse.selector.one('#id_selected_items_1').__str__().decode('utf-8'))
コード例 #8
0
 def test_all_groups_added_to_form_hidden(self):
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup1)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup2)
     testgroup3 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup3)
     testgroup4 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup4)
     testuser = self._get_admin_user(testassignment.parentnode)
     mockresponse = self.mock_http200_getrequest_htmls(
         cradmin_role=testassignment,
         cradmin_instance=self._get_mock_instance(testassignment),
         cradmin_app=self._get_mock_app(user=testuser),
         requestuser=testuser,
         viewkwargs={
             'deadline': datetimeutils.datetime_to_url_string(testassignment.first_deadline),
             'handle_deadline': self.handle_deadline
         }
     )
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_0').__str__())
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_1').__str__())
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_2').__str__())
     self.assertIn('type="hidden"', mockresponse.selector.one('#id_selected_items_3').__str__())
     self.assertIn('value="{}"'.format(testgroup1.id), mockresponse.selector.one('#id_selected_items_0').__str__())
     self.assertIn('value="{}"'.format(testgroup2.id), mockresponse.selector.one('#id_selected_items_1').__str__())
     self.assertIn('value="{}"'.format(testgroup3.id), mockresponse.selector.one('#id_selected_items_2').__str__())
     self.assertIn('value="{}"'.format(testgroup4.id), mockresponse.selector.one('#id_selected_items_3').__str__())
コード例 #9
0
 def test_url_convert_to_string_and_back(self):
     datetime_original = timezone.now().replace(microsecond=0)
     print repr(timezone.now())
     datetime_as_string = datetimeutils.datetime_to_url_string(
         datetime_original)
     datetime_converted_back = datetimeutils.datetime_url_string_to_datetime(
         datetime_as_string)
     self.assertEquals(datetime_original, datetime_converted_back)
コード例 #10
0
 def __init__(self, assignment_groups, assignment, devilryrole, **kwargs):
     super(SelectDeadlineItemValue, self).__init__(**kwargs)
     self.num_assignment_groups = len(assignment_groups)
     self.assignment_groups = assignment_groups
     self.num_corrected_assignment_groups = self.__get_num_corrected_groups()
     self.assignment = assignment
     self.devilryrole = devilryrole
     self.deadline_as_string = datetimeutils.datetime_to_url_string(self.value)
コード例 #11
0
 def get_backlink_url(self):
     return self.request.cradmin_app.reverse_appurl(
         viewname='select-groups-manually',
         kwargs={
             'deadline': datetimeutils.datetime_to_url_string(self.deadline),
             'handle_deadline': self.handle_deadline_type
         }
     )
コード例 #12
0
 def get_backlink_url(self):
     return self.request.cradmin_app.reverse_appurl(
         viewname='select-groups-manually',
         kwargs={
             'deadline':
             datetimeutils.datetime_to_url_string(self.deadline),
             'handle_deadline': self.handle_deadline_type
         })
コード例 #13
0
 def get_filterlist_url(self, filters_string):
     return self.request.cradmin_app.reverse_appurl(
         'select-groups-manually-filter',
         kwargs={
             'deadline':
             datetimeutils.datetime_to_url_string(self.deadline),
             'handle_deadline': self.handle_deadline_type,
             'filters_string': filters_string
         })
コード例 #14
0
 def get_target_renderer_kwargs(self):
     kwargs = super(AssignmentGroupMultiSelectListFilterView, self).get_target_renderer_kwargs()
     kwargs['form_action'] = self.request.cradmin_app.reverse_appurl(
         viewname='manage-deadline-post',
         kwargs={
             'deadline': datetimeutils.datetime_to_url_string(self.deadline),
             'handle_deadline': self.handle_deadline_type
         })
     return kwargs
コード例 #15
0
 def test_post_new_attempt(self):
     testassignment = mommy.make_recipe(
         'devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup',
                             parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup1)
     testgroup2 = mommy.make('core.AssignmentGroup',
                             parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup2)
     testuser = self._get_admin_user(testassignment.parentnode)
     mommy.make('core.Examiner',
                assignmentgroup=testgroup1,
                relatedexaminer__user=testuser)
     mommy.make('core.Examiner',
                assignmentgroup=testgroup2,
                relatedexaminer__user=testuser)
     new_deadline = timezone.now() + timezone.timedelta(days=3)
     new_deadline = new_deadline.replace(microsecond=0)
     self.mock_postrequest(
         cradmin_role=testassignment,
         cradmin_instance=self._get_mock_instance(testassignment),
         cradmin_app=self._get_mock_app(user=testuser),
         requestuser=testuser,
         viewkwargs={
             'deadline':
             datetimeutils.datetime_to_url_string(
                 testassignment.first_deadline),
             'handle_deadline':
             'new-attempt'
         },
         requestkwargs={
             'data': {
                 'new_deadline':
                 isoformat_withseconds(timezone.localtime(new_deadline)),
                 'comment_text':
                 'You have been given a new attempt.',
                 'selected_items': [testgroup1.id, testgroup2.id]
             }
         })
     self.assertEqual(4, group_models.FeedbackSet.objects.count())
     self.assertEqual(2, group_models.GroupComment.objects.count())
     group_comments = group_models.GroupComment.objects.all()
     last_feedbackset_group1 = AssignmentGroupCachedData.objects.get(
         group_id=testgroup1.id).last_feedbackset
     last_feedbackset_group2 = AssignmentGroupCachedData.objects.get(
         group_id=testgroup2.id).last_feedbackset
     self.assertEqual(last_feedbackset_group1.deadline_datetime,
                      new_deadline)
     self.assertEqual(last_feedbackset_group2.deadline_datetime,
                      new_deadline)
     self.assertEqual(last_feedbackset_group1.last_updated_by, testuser)
     self.assertEqual(last_feedbackset_group2.last_updated_by, testuser)
     self.assertEqual('You have been given a new attempt.',
                      group_comments[0].text)
     self.assertEqual('You have been given a new attempt.',
                      group_comments[1].text)
コード例 #16
0
 def get_target_renderer_kwargs(self):
     kwargs = super(AssignmentGroupMultiSelectListFilterView,
                    self).get_target_renderer_kwargs()
     kwargs['form_action'] = self.request.cradmin_app.reverse_appurl(
         viewname='manage-deadline-post',
         kwargs={
             'deadline':
             datetimeutils.datetime_to_url_string(self.deadline),
             'handle_deadline': self.handle_deadline_type
         })
     return kwargs
コード例 #17
0
 def test_post_new_attempt(self):
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup1)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group_mommy.feedbackset_first_attempt_published(group=testgroup2)
     testuser = self._get_admin_user(testassignment.parentnode)
     mommy.make('core.Examiner', assignmentgroup=testgroup1, relatedexaminer__user=testuser)
     mommy.make('core.Examiner', assignmentgroup=testgroup2, relatedexaminer__user=testuser)
     new_deadline = timezone.now() + timezone.timedelta(days=3)
     new_deadline = new_deadline.replace(microsecond=0)
     self.mock_postrequest(
         cradmin_role=testassignment,
         cradmin_instance=self._get_mock_instance(testassignment),
         cradmin_app=self._get_mock_app(user=testuser),
         requestuser=testuser,
         viewkwargs={
             'deadline': datetimeutils.datetime_to_url_string(testassignment.first_deadline),
             'handle_deadline': 'new-attempt'
         },
         requestkwargs={
             'data': {
                 'new_deadline': isoformat_withseconds(timezone.localtime(new_deadline)),
                 'comment_text': 'You have been given a new attempt.',
                 'selected_items': [testgroup1.id, testgroup2.id]
             }
         }
     )
     self.assertEqual(4, group_models.FeedbackSet.objects.count())
     self.assertEqual(2, group_models.GroupComment.objects.count())
     group_comments = group_models.GroupComment.objects.all()
     last_feedbackset_group1 = AssignmentGroupCachedData.objects.get(group_id=testgroup1.id).last_feedbackset
     last_feedbackset_group2 = AssignmentGroupCachedData.objects.get(group_id=testgroup2.id).last_feedbackset
     self.assertEqual(last_feedbackset_group1.deadline_datetime, new_deadline)
     self.assertEqual(last_feedbackset_group2.deadline_datetime, new_deadline)
     self.assertEqual(last_feedbackset_group1.last_updated_by, testuser)
     self.assertEqual(last_feedbackset_group2.last_updated_by, testuser)
     self.assertEqual('You have been given a new attempt.', group_comments[0].text)
     self.assertEqual('You have been given a new attempt.', group_comments[1].text)
コード例 #18
0
 def deadline_as_string(self):
     return datetimeutils.datetime_to_url_string(
         self.feedbackset.deadline_datetime)
コード例 #19
0
 def test_url_patternmatcher(self):
     self.assertIsNotNone(
         re.match(r'\w+',
                  datetimeutils.datetime_to_url_string(timezone.now())))
コード例 #20
0
 def test_url_patternmatcher(self):
     self.assertIsNotNone(re.match(r'\w+', datetimeutils.datetime_to_url_string(timezone.now())))
コード例 #21
0
 def test_url_convert_to_string_and_back(self):
     datetime_original = timezone.now().replace(microsecond=0)
     print(repr(timezone.now()))
     datetime_as_string = datetimeutils.datetime_to_url_string(datetime_original)
     datetime_converted_back = datetimeutils.datetime_url_string_to_datetime(datetime_as_string)
     self.assertEqual(datetime_original, datetime_converted_back)
コード例 #22
0
 def deadline_as_string(self):
     return datetimeutils.datetime_to_url_string(
         self.value.deadline_datetime)