def test_setupstudents_copyfromassignment_onlypassing(self):
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1.awesome:candidate(student1):examiner(examiner1).d1')
        self.testhelper.add_to_path('uni;sub.p1.a1.failer:candidate(student2):examiner(examiner2).d1')
        self.testhelper.add_to_path('uni;sub.p1.a1.nofeedback:candidate(student3)')
        self.testhelper.add_delivery(self.testhelper.sub_p1_a1_awesome,
                                     {'f.py': ['print ', 'yeh']})
        self.testhelper.add_feedback(self.testhelper.sub_p1_a1_awesome,
                                     verdict={'grade': 'A', 'points': 100, 'is_passing_grade': True})
        self.testhelper.add_delivery(self.testhelper.sub_p1_a1_failer,
                                     {'f.py': ['print ', 'meh']})
        self.testhelper.add_feedback(self.testhelper.sub_p1_a1_failer,
                                     verdict={'grade': 'F', 'points': 1, 'is_passing_grade': False})

        self.testhelper.add_to_path('uni;sub.p1.a2')
        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)
        self.assertEquals(self.testhelper.sub_p1_a1.assignmentgroups.count(), 3)
        self.assertEquals(self.testhelper.sub_p1_a2.assignmentgroups.count(), 0)

        dao._setup_students(self.testhelper.sub_p1_a2,
                            first_deadline=deadline,
                            copyfromassignment_id=self.testhelper.sub_p1_a1.id,
                            only_copy_passing_groups=True,
                            setupstudents_mode='copyfromassignment',
                            setupexaminers_mode='do_not_setup')
        self.assertEquals(self.testhelper.sub_p1_a2.assignmentgroups.count(), 1)

        group = self.testhelper.sub_p1_a2.assignmentgroups.all()[0]
        self.assertEquals(group.name, 'awesome')
    def test_setupstudents_copyfromassignment(self):
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1.g1:candidate(student1;secret):tags(good,super)')
        self.testhelper.add_to_path('uni;sub.p1.a1.g2:candidate(student2,student3)')
        self.testhelper.add_to_path('uni;sub.p1.a2')
        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)

        self.assertEquals(self.testhelper.sub_p1_a1.assignmentgroups.count(), 2)
        self.assertEquals(self.testhelper.sub_p1_a2.assignmentgroups.count(), 0)
        dao._setup_students(self.testhelper.sub_p1_a2,
                            first_deadline=deadline,
                            copyfromassignment_id=self.testhelper.sub_p1_a1.id,
                            setupstudents_mode='copyfromassignment',
                            setupexaminers_mode='do_not_setup')
        self.assertEquals(self.testhelper.sub_p1_a2.assignmentgroups.count(), 2)

        groups = list(self.testhelper.sub_p1_a2.assignmentgroups.all().order_by('candidates__student__username'))
        self.assertEquals(groups[0].name, 'g1')
        self.assertEquals(groups[0].candidates.all()[0].student.username, 'student1')
        self.assertEquals(groups[0].candidates.all()[0].candidate_id, 'secret')
        self.assertEquals(set([t.tag for t in groups[0].tags.all()]),
                          set(['good', 'super']))
        self.assertEquals(groups[1].name, 'g2')
        self.assertEquals(set([c.student.username for c in groups[1].candidates.all()]),
                          set(['student2', 'student3']))
        self.assertEquals(groups[1].tags.count(), 0)

        self.assertEquals(groups[0].deadlines.all().count(), 1)
        self.assertEquals(groups[1].deadlines.all().count(), 1)
        self.assertEquals(groups[0].deadlines.all()[0].deadline, deadline)
 def test_create_group_from_relatedstudent_non_electronic(self):
     dao = CreateNewAssignmentDao()
     self.testhelper.add_to_path('uni;sub.p1.a1')
     related_louie = self._create_related_student('louie')
     a1 = self.testhelper.sub_p1_a1
     a1.delivery_types = NON_ELECTRONIC
     group = dao._create_group_from_relatedstudent(a1, related_louie, [])
     self.assertEquals(group.deadlines.count(), 1)
    def test_add_all_relatedstudents_autosetup_examiners(self):
        self._create_related_student('louie', tags='bb,aa')
        self._create_related_examiner('examiner2', tags='aa,cc')
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1')

        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)
        dao._add_all_relatedstudents(self.testhelper.sub_p1_a1, deadline,
                                     autosetup_examiners=True)
        group = self.testhelper.sub_p1_a1.assignmentgroups.all()[0]
        self.assertEquals(group.examiners.all().count(), 1)
    def test_setupstudents_copyfromassignment_outofperiod(self):
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1')
        self.testhelper.add_to_path('uni;sub.p2.a1')
        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)

        with self.assertRaises(BadRequestFieldError):
            dao._setup_students(self.testhelper.sub_p1_a1,
                                first_deadline=deadline,
                                copyfromassignment_id=self.testhelper.sub_p2_a1.id,
                                setupstudents_mode='copyfromassignment',
                                setupexaminers_mode='copyfromassignment')
    def test_setupstudents_allrelated_examiners_bytags(self):
        self._create_related_student('louie', tags='bb,aa')
        self._create_related_examiner('examiner2', tags='aa,cc')
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1')

        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)
        dao._setup_students(self.testhelper.sub_p1_a1,
                            first_deadline=deadline,
                            setupstudents_mode='allrelated',
                            setupexaminers_mode='bytags')
        group = self.testhelper.sub_p1_a1.assignmentgroups.all()[0]
        self.assertEquals(group.examiners.all().count(), 1)
 def test_create_assignment(self):
     dao = CreateNewAssignmentDao()
     publishing_time = self.testhelper.sub_p1.start_time + timedelta(days=1)
     first_deadline = self.testhelper.sub_p1.start_time + timedelta(days=2)
     assignment = dao._create_assignment(period=self.testhelper.sub_p1,
                                         short_name='a1', long_name='Assignment 1',
                                         first_deadline = first_deadline,
                                         publishing_time=publishing_time,
                                         delivery_types=0, anonymous=False)
     self.assertEquals(assignment.short_name, 'a1')
     self.assertEquals(assignment.long_name, 'Assignment 1')
     self.assertEquals(assignment.publishing_time, publishing_time)
     self.assertEquals(assignment.first_deadline, first_deadline)
     self.assertEquals(assignment.delivery_types, 0)
     self.assertEquals(assignment.anonymous, False)
    def test_setupstudents_copyfromassignment_withexaminers(self):
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1.g1:candidate(student1):examiner(examiner1,examiner2)')
        self.testhelper.add_to_path('uni;sub.p1.a2')
        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)

        dao._setup_students(self.testhelper.sub_p1_a2,
                            first_deadline=deadline,
                            copyfromassignment_id=self.testhelper.sub_p1_a1.id,
                            setupstudents_mode='copyfromassignment',
                            setupexaminers_mode='copyfromassignment')
        self.assertEquals(self.testhelper.sub_p1_a2.assignmentgroups.count(), 1)

        group = self.testhelper.sub_p1_a2.assignmentgroups.all()[0]
        self.assertEquals(set([c.user.username for c in group.examiners.all()]),
                          set(['examiner1', 'examiner2']))
    def test_setupstudents_copyfromassignment_make_authuser_examiner(self):
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1.g1:candidate(student1)')
        self.testhelper.add_to_path('uni;sub.p1.a2')
        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)

        user = self.testhelper.create_user('superhero')
        dao._setup_students(self.testhelper.sub_p1_a2,
                            first_deadline=deadline,
                            copyfromassignment_id=self.testhelper.sub_p1_a1.id,
                            setupstudents_mode='copyfromassignment',
                            setupexaminers_mode='make_authenticated_user_examiner',
                            user=user)
        self.assertEquals(self.testhelper.sub_p1_a2.assignmentgroups.count(), 1)

        group = self.testhelper.sub_p1_a2.assignmentgroups.all()[0]
        self.assertEquals(set([c.user.username for c in group.examiners.all()]),
                          set(['superhero']))
    def test_create_group_from_relatedstudent(self):
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1')
        related_louie = self._create_related_student('louie')
        group = dao._create_group_from_relatedstudent(self.testhelper.sub_p1_a1, related_louie, [])
        self.assertEquals(group.candidates.all()[0].student.username, 'louie')
        self.assertEquals(group.candidates.all()[0].candidate_id, None)

        related_dewey = self._create_related_student('dewey', candidate_id='dew123',
                                                     tags='bb,aa')
        related_examiner1 = self._create_related_examiner('examiner1', tags='cc,dd')
        related_examiner2 = self._create_related_examiner('examiner2', tags='aa')
        group = dao._create_group_from_relatedstudent(self.testhelper.sub_p1_a1, related_dewey,
                                                      [related_examiner1, related_examiner2])
        self.assertEquals(group.candidates.all()[0].candidate_id, 'dew123')
        self.assertEquals(group.examiners.all().count(), 1)
        tags = group.tags.all().order_by('tag')
        self.assertEquals(len(tags), 2)
        self.assertEquals(tags[0].tag, 'aa')
        self.assertEquals(tags[1].tag, 'bb')
Esempio n. 11
0
    def test_add_all_relatedstudents(self):
        self._create_related_student('louie')
        self._create_related_student('dewey', candidate_id='dew123')
        dao = CreateNewAssignmentDao()
        self.testhelper.add_to_path('uni;sub.p1.a1')

        self.assertEquals(self.testhelper.sub_p1_a1.assignmentgroups.count(), 0)
        deadline = self.testhelper.sub_p1_a1.publishing_time + timedelta(days=1)
        dao._add_all_relatedstudents(self.testhelper.sub_p1_a1, deadline, False)
        self.assertEquals(self.testhelper.sub_p1_a1.assignmentgroups.count(), 2)

        groups = list(self.testhelper.sub_p1_a1.assignmentgroups.all().order_by('candidates__student__username'))
        self.assertEquals(groups[0].candidates.all()[0].student.username, 'dewey')
        self.assertEquals(groups[0].candidates.all()[0].candidate_id, 'dew123')
        self.assertEquals(groups[1].candidates.all()[0].student.username, 'louie')
        self.assertEquals(groups[1].candidates.all()[0].candidate_id, None)

        self.assertEquals(groups[0].deadlines.all().count(), 1)
        self.assertEquals(groups[1].deadlines.all().count(), 1)
        self.assertEquals(groups[0].deadlines.all()[0].deadline, deadline)