Exemplo n.º 1
0
    def test_single_result_form_saves_participant_and_voter_count(self):
        course = mommy.make(Course)
        evaluation = Evaluation(course=course, is_single_result=True)
        form_data = {
            "name_de": "qwertz",
            "name_en": "qwertz",
            "weight": 1,
            "event_date": "2014-01-01",
            "answer_1": 6,
            "answer_2": 0,
            "answer_3": 2,
            "answer_4": 0,
            "answer_5": 2,
            "course": course.pk
        }
        form = SingleResultForm(form_data,
                                instance=evaluation,
                                semester=evaluation.course.semester)
        self.assertTrue(form.is_valid())

        form.save(user=mommy.make(UserProfile))

        evaluation = Evaluation.objects.get()
        self.assertEqual(evaluation.num_participants, 10)
        self.assertEqual(evaluation.num_voters, 10)
Exemplo n.º 2
0
 def store_in_database(self, vote_start_datetime, vote_end_date, semester):
     course_type = CourseType.objects.get(name_de=self.type_name)
     # This is safe because the user's email address is checked before in the importer (see #953)
     responsible_dbobj = UserProfile.objects.get(
         email=self.responsible_email)
     course = Course(
         name_de=self.name_de,
         name_en=self.name_en,
         type=course_type,
         is_graded=self.is_graded,
         semester=semester,
     )
     course.save()
     course.responsibles.set([responsible_dbobj])
     for degree_name in self.degree_names:
         course.degrees.add(Degree.objects.get(name_de=degree_name))
     evaluation = Evaluation(
         vote_start_datetime=vote_start_datetime,
         vote_end_date=vote_end_date,
         course=course,
     )
     evaluation.save()
     evaluation.contributions.create(
         contributor=responsible_dbobj,
         evaluation=evaluation,
         can_edit=True,
         textanswer_visibility=Contribution.TextAnswerVisibility.
         GENERAL_TEXTANSWERS)
Exemplo n.º 3
0
    def test_single_result_form_can_change_responsible(self):
        responsible = mommy.make(UserProfile)
        course_type = mommy.make(CourseType)
        evaluation = Evaluation(course=mommy.make(Course),
                                is_single_result=True)
        form_data = {
            "name_de": "qwertz",
            "name_en": "qwertz",
            "type": course_type.pk,
            "degrees": [1],
            "event_date": "2014-01-01",
            "responsible": responsible.pk,
            "answer_1": 6,
            "answer_2": 0,
            "answer_3": 2,
            "answer_4": 0,
            "answer_5": 2,
            "semester": evaluation.course.semester.pk
        }
        form = SingleResultForm(form_data, instance=evaluation)
        self.assertTrue(form.is_valid())

        form.save(user=mommy.make(UserProfile))
        self.assertEqual(evaluation.course.responsibles.first(), responsible)

        new_responsible = mommy.make(UserProfile)
        form_data["responsible"] = new_responsible.pk
        form = SingleResultForm(form_data, instance=evaluation)
        self.assertTrue(form.is_valid())

        form.save(user=mommy.make(UserProfile))
        self.assertEqual(evaluation.course.responsibles.first(),
                         new_responsible)
Exemplo n.º 4
0
 def store_in_database(self, vote_start_datetime, vote_end_date, semester):
     assert not self.errors
     # This is safe because the user's email address is checked before in the importer (see #953)
     responsible_dbobj = UserProfile.objects.get(
         email=self.responsible_email)
     course = Course(
         name_de=self.name_de,
         name_en=self.name_en,
         type=self.course_type,
         semester=semester,
     )
     course.save()
     course.responsibles.set([responsible_dbobj])
     course.degrees.set(self.degrees)
     evaluation = Evaluation(
         vote_start_datetime=vote_start_datetime,
         vote_end_date=vote_end_date,
         course=course,
         wait_for_grade_upload_before_publishing=self.is_graded,
     )
     evaluation.save()
     evaluation.contributions.create(
         evaluation=evaluation,
         contributor=responsible_dbobj,
         role=Contribution.Role.EDITOR,
         textanswer_visibility=Contribution.TextAnswerVisibility.
         GENERAL_TEXTANSWERS,
     )
Exemplo n.º 5
0
    def test_single_result_form_saves_participant_and_voter_count(self):
        responsible = mommy.make(UserProfile)
        course_type = mommy.make(CourseType)
        evaluation = Evaluation(course=mommy.make(Course),
                                is_single_result=True)
        form_data = {
            "name_de": "qwertz",
            "name_en": "qwertz",
            "type": course_type.pk,
            "degrees": [1],
            "event_date": "2014-01-01",
            "responsible": responsible.pk,
            "answer_1": 6,
            "answer_2": 0,
            "answer_3": 2,
            "answer_4": 0,
            "answer_5": 2,
            "semester": evaluation.course.semester.pk
        }
        form = SingleResultForm(form_data, instance=evaluation)
        self.assertTrue(form.is_valid())

        form.save(user=mommy.make(UserProfile))

        evaluation = Evaluation.objects.get()
        self.assertEqual(evaluation.num_participants, 10)
        self.assertEqual(evaluation.num_voters, 10)
Exemplo n.º 6
0
    def save(self, commit=True):
        new_course: Course = super().save()
        # we need to create copies of evaluations and their participation as well
        for old_evaluation in self.old_course.evaluations.exclude(
                is_single_result=True):
            new_evaluation = Evaluation(
                **{
                    field: getattr(old_evaluation, field)
                    for field in self.EVALUATION_COPIED_FIELDS
                },
                can_publish_text_results=False,
                course=new_course,
                vote_start_datetime=self.cleaned_data["vote_start_datetime"],
                vote_end_date=self.cleaned_data["vote_end_date"],
            )
            new_evaluation.save()

            new_evaluation.contributions.all().delete(
            )  # delete default general contribution
            for old_contribution in old_evaluation.contributions.all():
                new_contribution = Contribution(
                    **{
                        field: getattr(old_contribution, field)
                        for field in self.CONTRIBUTION_COPIED_FIELDS
                    },
                    evaluation=new_evaluation,
                )
                new_contribution.save()
                new_contribution.questionnaires.set(
                    old_contribution.questionnaires.all())

        return new_course
Exemplo n.º 7
0
 def test_initial_from_original(self):
     evaluation = Evaluation()
     form = ContributionCopyForm(None, instance=self.contribution, evaluation=evaluation)
     self.assertEqual(form['evaluation'].initial, None)
     self.assertEqual(form['contributor'].initial, self.contributor.pk)
     self.assertCountEqual(form['questionnaires'].initial, self.questionnaires)
     self.assertEqual(form['order'].initial, 2)
     self.assertEqual(form['role'].initial, Contribution.Role.EDITOR)
     self.assertEqual(form['textanswer_visibility'].initial, Contribution.TextAnswerVisibility.GENERAL_TEXTANSWERS)
     self.assertEqual(form['label'].initial, 'Teacher')
     self.assertEqual(form.evaluation, evaluation)
Exemplo n.º 8
0
 def test_initial_from_original(self):
     evaluation = Evaluation()
     form = ContributionCopyForm(None,
                                 instance=self.contribution,
                                 evaluation=evaluation)
     self.assertEqual(form["evaluation"].initial, None)
     self.assertEqual(form["contributor"].initial, self.contributor.pk)
     self.assertCountEqual(form["questionnaires"].initial,
                           self.questionnaires)
     self.assertEqual(form["order"].initial, 2)
     self.assertEqual(form["role"].initial, Contribution.Role.EDITOR)
     self.assertEqual(form["textanswer_visibility"].initial,
                      Contribution.TextAnswerVisibility.GENERAL_TEXTANSWERS)
     self.assertEqual(form["label"].initial, "Teacher")
     self.assertEqual(form.evaluation, evaluation)
Exemplo n.º 9
0
 def test_no_original_given(self):
     new_evaluation = Evaluation()
     form = ContributionCopyForm(None,
                                 instance=None,
                                 evaluation=new_evaluation)
     self.assertEqual(form.evaluation, new_evaluation)