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)
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)
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)
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, )
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)
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
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)
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)
def test_no_original_given(self): new_evaluation = Evaluation() form = ContributionCopyForm(None, instance=None, evaluation=new_evaluation) self.assertEqual(form.evaluation, new_evaluation)