def test_default_ordering_by_deadline_datetime_ascending(self):
     now = timezone.now()
     testuser = mommy.make(settings.AUTH_USER_MODEL, shortname='*****@*****.**', fullname='Test User')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment A')
     make_first_feedbackset_in_group(group=testgroup1, deadline_datetime=now + timezone.timedelta(days=40))
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment B')
     make_first_feedbackset_in_group(group=testgroup2, deadline_datetime=now + timezone.timedelta(days=30))
     testgroup3 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment C')
     mommy.make('core.Candidate', assignment_group=testgroup1, relatedstudent__user=testuser)
     mommy.make('core.Candidate', assignment_group=testgroup2, relatedstudent__user=testuser)
     mommy.make('core.Candidate', assignment_group=testgroup3, relatedstudent__user=testuser)
     selector = self.mock_http200_getrequest_htmls(
         requestuser=mommy.make(settings.AUTH_USER_MODEL, is_superuser=True),
         viewkwargs={'user_id': testuser.id}
     ).selector
     assignment_longname_list = [element.alltext_normalized for element in
                                 selector.list('.django-cradmin-listbuilder-itemvalue-titledescription-title')]
     self.assertListEqual(
         [
             'Assignment C',
             'Assignment B',
             'Assignment A'
         ],
         assignment_longname_list
     )
 def test_merged_feedbackset_only_internal_notes_visible(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testassignment = mommy.make_recipe(
         'devilry.apps.core.assignment_activeperiod_end')
     testgroup = mommy.make('core.AssignmentGroup',
                            parentnode=testassignment)
     merged_feedbackset = mommy.make(
         'devilry_group.FeedbackSet',
         group=testgroup,
         feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT)
     mommy.make(
         'devilry_group.GroupComment',
         feedback_set=merged_feedbackset,
         visibility=GroupComment.VISIBILITY_VISIBLE_TO_EXAMINER_AND_ADMINS)
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         group=testgroup)
     feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset(
         group=testgroup,
         requestuser=testuser,
         devilryrole=self.devilryrole)
     timeline_builder = FeedbackFeedTimelineBuilder(
         assignment=testassignment,
         feedbacksets=feedbackset_queryset,
         group=testgroup)
     timeline_builder.build()
     timeline_list = timeline_builder.get_as_list()
     self.assertEqual(len(timeline_list), 2)
     self.assertEqual(timeline_list[0]['feedbackset'], merged_feedbackset)
     self.assertEqual(timeline_list[1]['feedbackset'], feedbackset)
 def test_merged_feedbackset_only_with_grading_visible(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testassignment = mommy.make_recipe(
         'devilry.apps.core.assignment_activeperiod_end')
     testgroup = mommy.make('core.AssignmentGroup',
                            parentnode=testassignment)
     merged_feedbackset = mommy.make(
         'devilry_group.FeedbackSet',
         grading_published_datetime=timezone.now(),
         group=testgroup,
         feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT)
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         group=testgroup)
     feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset(
         group=testgroup,
         requestuser=testuser,
         devilryrole=self.devilryrole)
     timeline_builder = FeedbackFeedTimelineBuilder(
         assignment=testassignment,
         feedbacksets=feedbackset_queryset,
         group=testgroup)
     timeline_builder.build()
     timeline_list = timeline_builder.get_as_list()
     self.assertEqual(len(timeline_list), 2)
     self.assertEqual(timeline_list[0]['feedbackset'], merged_feedbackset)
     self.assertEqual(timeline_list[1]['feedbackset'], feedbackset)
예제 #4
0
 def test_feedbackset_current_deadline_first_attempt(self):
     test_assignment = mommy.make_recipe(
         'devilry.apps.core.assignment_activeperiod_start')
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
         group__parentnode=test_assignment)
     self.assertEquals(test_feedbackset.current_deadline(),
                       test_assignment.first_deadline)
예제 #5
0
 def test_feedbackset_ignored_without_reason(self):
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
         ignored=True)
     with self.assertRaisesMessage(
             ValidationError,
             'FeedbackSet can not be ignored without a reason'):
         test_feedbackset.full_clean()
예제 #6
0
 def test_feedbackset_not_ignored_with_reason(self):
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
         ignored_reason='dewey was sick!')
     with self.assertRaisesMessage(
             ValidationError,
             'FeedbackSet can not have a ignored reason without being set to ignored.'
     ):
         test_feedbackset.full_clean()
예제 #7
0
 def test_feedbackset_ignored_with_grading_points(self):
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
         ignored=True, ignored_reason='test', grading_points=10)
     with self.assertRaisesMessage(
             ValidationError,
             'Ignored FeedbackSet can not have grading_published_datetime, '
             'grading_points or grading_published_by set.'):
         test_feedbackset.full_clean()
예제 #8
0
 def test_feedbackset_ignored_with_grading_points(self):
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
                                   ignored=True,
                                   ignored_reason='test',
                                   grading_points=10)
     with self.assertRaisesMessage(ValidationError,
                                   'Ignored FeedbackSet can not have grading_published_datetime, '
                                   'grading_points or grading_published_by set.'):
         test_feedbackset.full_clean()
예제 #9
0
 def test_order_deadline_ascending(self):
     now = timezone.now()
     testuser = mommy.make(settings.AUTH_USER_MODEL,
                           shortname='*****@*****.**',
                           fullname='Test User')
     testgroup1 = mommy.make('core.AssignmentGroup',
                             parentnode__long_name='Assignment A')
     make_first_feedbackset_in_group(group=testgroup1,
                                     deadline_datetime=now +
                                     timezone.timedelta(days=40))
     testgroup2 = mommy.make('core.AssignmentGroup',
                             parentnode__long_name='Assignment B')
     make_first_feedbackset_in_group(group=testgroup2,
                                     deadline_datetime=now +
                                     timezone.timedelta(days=30))
     testgroup3 = mommy.make('core.AssignmentGroup',
                             parentnode__long_name='Assignment C')
     mommy.make('core.Candidate',
                assignment_group=testgroup1,
                relatedstudent__user=testuser)
     mommy.make('core.Candidate',
                assignment_group=testgroup2,
                relatedstudent__user=testuser)
     mommy.make('core.Candidate',
                assignment_group=testgroup3,
                relatedstudent__user=testuser)
     selector = self.mock_http200_getrequest_htmls(requestuser=mommy.make(
         settings.AUTH_USER_MODEL, is_superuser=True),
                                                   viewkwargs={
                                                       'user_id':
                                                       testuser.id,
                                                       'filters_string':
                                                       'orderby_deadline-'
                                                   }).selector
     assignment_longname_list = [
         element.alltext_normalized for element in selector.list(
             '.django-cradmin-listbuilder-itemvalue-titledescription-title')
     ]
     self.assertListEqual(['Assignment C', 'Assignment B', 'Assignment A'],
                          assignment_longname_list)
    def test_file_download_user_not_in_group_404(self):
        # Test user can't download if not part of AssignmentGroup
        testgroup = mommy.make('core.AssignmentGroup')
        testuser = mommy.make(settings.AUTH_USER_MODEL, shortname='*****@*****.**', fullname='Dewey Duck')
        testcomment = mommy.make('devilry_group.GroupComment',
                                 user_role='examiner',
                                 feedback_set=devilry_group_mommy_factories.make_first_feedbackset_in_group())
        commentfile = mommy.make('devilry_comment.CommentFile', comment=testcomment, filename='testfile.txt')
        commentfile.file.save('testfile.txt', ContentFile('testcontent'))

        with self.assertRaises(Http404):
            self.mock_getrequest(
                requestuser=testuser,
                cradmin_role=testgroup,
                viewkwargs={
                    'commentfile_id': commentfile.id
                })
 def test_merged_feedbackset_without_with_grading_or_public_commnet_visible(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_end')
     testgroup = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     merged_feedbackset = mommy.make('devilry_group.FeedbackSet',
                                     group=testgroup,
                                     feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT)
     feedbackset = group_mommy.make_first_feedbackset_in_group(group=testgroup)
     feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset(
         group=testgroup, requestuser=testuser, devilryrole=self.devilryrole
     )
     timeline_builder = FeedbackFeedTimelineBuilder(
         assignment=testassignment,
         feedbacksets=feedbackset_queryset,
         group=testgroup
     )
     timeline_builder.build()
     timeline_list = timeline_builder.get_as_list()
     self.assertEqual(len(timeline_list), 1)
     self.assertEqual(timeline_list[0]['feedbackset'], feedbackset)
 def test_merged_feedbackset_only_internal_notes_not_visible(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_end')
     testgroup = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     merged_feedbackset = mommy.make('devilry_group.FeedbackSet',
                                     group=testgroup,
                                     feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT)
     mommy.make('devilry_group.GroupComment', feedback_set=merged_feedbackset,
                visibility=GroupComment.VISIBILITY_VISIBLE_TO_EXAMINER_AND_ADMINS)
     feedbackset = group_mommy.make_first_feedbackset_in_group(group=testgroup)
     feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset(
         group=testgroup, requestuser=testuser, devilryrole=self.devilryrole
     )
     timeline_builder = FeedbackFeedTimelineBuilder(
         assignment=testassignment,
         feedbacksets=feedbackset_queryset,
         group=testgroup
     )
     timeline_builder.build()
     timeline_list = timeline_builder.get_as_list()
     self.assertEqual(len(timeline_list), 1)
     self.assertEqual(timeline_list[0]['feedbackset'], feedbackset)
예제 #13
0
 def test_feedbackset_group(self):
     testgroup = mommy.make('core.AssignmentGroup')
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         group=testgroup)
     self.assertEquals(feedbackset.group, testgroup)
예제 #14
0
 def test_feedbackset_not_ignored_with_reason(self):
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
         ignored_reason='dewey was sick!')
     with self.assertRaisesMessage(ValidationError,
                                   'FeedbackSet can not have a ignored reason without being set to ignored.'):
         test_feedbackset.full_clean()
예제 #15
0
 def test_feedbackset_ignored_without_reason(self):
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(ignored=True)
     with self.assertRaisesMessage(ValidationError, 'FeedbackSet can not be ignored without a reason'):
         test_feedbackset.full_clean()
예제 #16
0
 def test_feedbackset_grading_points(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         grading_points=10)
     self.assertEquals(feedbackset.grading_points, 10)
예제 #17
0
 def test_feedbackset_grading_points_default_none(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertIsNone(feedbackset.grading_points)
예제 #18
0
 def test_feedbackset_current_deadline_is_none(self):
     test_assignment = mommy.make('core.Assignment')
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
         group__parentnode=test_assignment)
     self.assertIsNone(test_feedbackset.current_deadline())
예제 #19
0
 def test_feedbackset_current_deadline_first_attempt(self):
     test_assignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     test_feedbackset = group_mommy.make_first_feedbackset_in_group(
         group__parentnode=test_assignment)
     self.assertEqual(test_feedbackset.current_deadline(), test_assignment.first_deadline)
예제 #20
0
 def test_feedbackset_grading_points_default_none(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertIsNone(feedbackset.grading_points)
예제 #21
0
 def test_feedbackset_grading_published_datetime_default_none(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertIsNone(feedbackset.grading_published_datetime)
예제 #22
0
 def test_feedbackset_created_by(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         created_by=testuser)
     self.assertEqual(feedbackset.created_by, testuser)
예제 #23
0
 def test_feedbackset_group(self):
     testgroup = mommy.make('core.AssignmentGroup')
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         group=testgroup)
     self.assertEqual(feedbackset.group, testgroup)
예제 #24
0
 def test_feedbackset_feedbackset_type_default_first_try(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertEqual(feedbackset.feedbackset_type, group_models.FeedbackSet.FEEDBACKSET_TYPE_FIRST_ATTEMPT)
예제 #25
0
 def test_feedbackset_feedbackset_type_default_first_try(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertEquals(
         feedbackset.feedbackset_type,
         group_models.FeedbackSet.FEEDBACKSET_TYPE_FIRST_ATTEMPT)
예제 #26
0
 def test_feedbackset_created_datetime(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertIsNotNone(feedbackset.created_datetime)
예제 #27
0
 def test_feedbackset_created_by(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         created_by=testuser)
     self.assertEquals(feedbackset.created_by, testuser)
예제 #28
0
 def test_feedbackset_grading_published_datetime(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         grading_published_datetime=timezone.now())
     self.assertIsNotNone(feedbackset.grading_published_datetime)
예제 #29
0
 def test_feedbackset_created_datetime(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertIsNotNone(feedbackset.created_datetime)
예제 #30
0
 def test_feedbackset_grading_points(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group(grading_points=10)
     self.assertEqual(feedbackset.grading_points, 10)
예제 #31
0
 def test_feedbackset_grading_published_datetime_default_none(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertIsNone(feedbackset.grading_published_datetime)
예제 #32
0
 def test_feedbackset_grading_published_datetime(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group(
         grading_published_datetime=timezone.now())
     self.assertIsNotNone(feedbackset.grading_published_datetime)
예제 #33
0
 def test_feedbackset_deadline_datetime_default_none(self):
     feedbackset = group_mommy.make_first_feedbackset_in_group()
     self.assertIsNone(feedbackset.deadline_datetime)