def save(self, *args, **kw): user = kw.pop("user") self.instance.last_modified_user = user self.instance.vote_start_date = self.cleaned_data['event_date'] self.instance.vote_end_date = self.cleaned_data['event_date'] self.instance.is_graded = False super().save(*args, **kw) single_result_questionnaire = Questionnaire.get_single_result_questionnaire() single_result_question = single_result_questionnaire.question_set.first() if not Contribution.objects.filter(course=self.instance, responsible=True).exists(): contribution = Contribution(course=self.instance, contributor=self.cleaned_data['responsible'], responsible=True) contribution.save() contribution.questionnaires.add(single_result_questionnaire) # set answers contribution = Contribution.objects.get(course=self.instance, responsible=True) total_votes = 0 for i in range(1,6): count = self.cleaned_data['answer_'+str(i)] total_votes += count RatingAnswerCounter.objects.update_or_create(contribution=contribution, question=single_result_question, answer=i, defaults={'count': count}) self.instance._participant_count = total_votes self.instance._voter_count = total_votes # change state to "reviewed" # works only for single_results so the course and its contribution must be saved first self.instance.single_result_created() self.instance.save()
def test_toggle_no_grades(self): course = mommy.make(Course, name_en="Toggle", vote_start_date=datetime.date.today(), state="reviewed", participants=[ UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), ], voters=[ UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), ] ) contribution = Contribution(course=course, contributor=UserProfile.objects.get(username="******"), responsible=True) contribution.save() contribution.questionnaires = [mommy.make(Questionnaire, is_for_contributors=True)] course.general_contribution.questionnaires = [mommy.make(Questionnaire)] toggle_url = "/grades/semester/"+str(course.semester.id)+"/course/"+str(course.id)+"/togglenogrades" self.assertFalse(course.gets_no_grade_documents) self.get_submit_assert_302(toggle_url, "grade_publisher") course = Course.objects.get(id=course.id) self.assertTrue(course.gets_no_grade_documents) # course should get published here self.assertEqual(course.state, "published") self.assertEqual(len(mail.outbox), course.num_participants + course.contributions.exclude(contributor=None).count()) self.get_submit_assert_302(toggle_url, "grade_publisher") course = Course.objects.get(id=course.id) self.assertFalse(course.gets_no_grade_documents)
def setUpTestData(cls): mommy.make(UserProfile, username="******", groups=[Group.objects.get(name="Grade publisher")]) mommy.make(UserProfile, username="******", email="*****@*****.**") mommy.make(UserProfile, username="******", email="*****@*****.**") mommy.make(UserProfile, username="******", email="*****@*****.**") mommy.make(UserProfile, username="******", email="*****@*****.**") course = mommy.make(Course, name_en="Test", vote_start_date=datetime.date.today(), participants=[ UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), ], voters=[ UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), ] ) contribution = Contribution(course=course, contributor=UserProfile.objects.get(username="******"), responsible=True) contribution.save() contribution.questionnaires = [mommy.make(Questionnaire, is_for_contributors=True)] course.general_contribution.questionnaires = [mommy.make(Questionnaire)] semester_grade_activation = SemesterGradeDownloadActivation(semester=course.semester, is_active=True) semester_grade_activation.save()
def setUpTestData(cls): mommy.make(UserProfile, username="******", groups=[Group.objects.get(name="Grade publisher")]) mommy.make(UserProfile, username="******", email="*****@*****.**") mommy.make(UserProfile, username="******", email="*****@*****.**") mommy.make(UserProfile, username="******", email="*****@*****.**") responsible = mommy.make(UserProfile, username="******", email="*****@*****.**") cls.course = mommy.make(Course, name_en="Test", vote_start_date=datetime.date.today(), participants=[ UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), ], voters=[ UserProfile.objects.get(username="******"), UserProfile.objects.get(username="******"), ] ) contribution = Contribution(course=cls.course, contributor=responsible, responsible=True, can_edit=True, comment_visibility=Contribution.ALL_COMMENTS) contribution.save() contribution.questionnaires.set([mommy.make(Questionnaire, is_for_contributors=True)]) cls.course.general_contribution.questionnaires.set([mommy.make(Questionnaire)]) cls.activation = SemesterGradeDownloadActivation.objects.create(semester=cls.course.semester, is_active=True)
def test_toggle_no_grades(self): course = mommy.make( Course, name_en="Toggle", vote_start_datetime=datetime.now(), state="reviewed", participants=[self.student, self.student2, self.student3], voters=[self.student, self.student2] ) contribution = Contribution(course=course, contributor=UserProfile.objects.get(username="******"), responsible=True, can_edit=True, comment_visibility=Contribution.ALL_COMMENTS) contribution.save() contribution.questionnaires.set([mommy.make(Questionnaire, type=Questionnaire.CONTRIBUTOR)]) course.general_contribution.questionnaires.set([mommy.make(Questionnaire)]) self.assertFalse(course.gets_no_grade_documents) response = self.app.post("/grades/toggle_no_grades", params={"course_id": course.id}, user="******") self.assertEqual(response.status_code, 200) course = Course.objects.get(id=course.id) self.assertTrue(course.gets_no_grade_documents) # course should get published here self.assertEqual(course.state, "published") self.assertEqual(len(mail.outbox), course.num_participants + course.contributions.exclude(contributor=None).count()) response = self.app.post("/grades/toggle_no_grades", params={"course_id": course.id}, user="******") self.assertEqual(response.status_code, 200) course = Course.objects.get(id=course.id) self.assertFalse(course.gets_no_grade_documents)
def test_toggle_no_grades(self): evaluation = mommy.make( Evaluation, name_en="Toggle", vote_start_datetime=datetime.now(), state="reviewed", participants=[self.student, self.student2, self.student3], voters=[self.student, self.student2] ) contribution = Contribution(evaluation=evaluation, contributor=UserProfile.objects.get(username="******"), can_edit=True, textanswer_visibility=Contribution.GENERAL_TEXTANSWERS) contribution.save() contribution.questionnaires.set([mommy.make(Questionnaire, type=Questionnaire.CONTRIBUTOR)]) evaluation.general_contribution.questionnaires.set([mommy.make(Questionnaire)]) self.assertFalse(evaluation.course.gets_no_grade_documents) response = self.app.post("/grades/toggle_no_grades", params={"course_id": evaluation.course.id}, user="******") self.assertEqual(response.status_code, 200) evaluation = Evaluation.objects.get(id=evaluation.id) self.assertTrue(evaluation.course.gets_no_grade_documents) # evaluation should get published here self.assertEqual(evaluation.state, "published") self.assertEqual(len(mail.outbox), evaluation.num_participants + evaluation.contributions.exclude(contributor=None).count()) response = self.app.post("/grades/toggle_no_grades", params={"course_id": evaluation.course.id}, user="******") self.assertEqual(response.status_code, 200) evaluation = Evaluation.objects.get(id=evaluation.id) self.assertFalse(evaluation.course.gets_no_grade_documents)
def test_toggle_no_grades(self): course = mommy.make( Course, name_en="Toggle", vote_start_datetime=datetime.now(), state="reviewed", participants=[self.student, self.student2, self.student3], voters=[self.student, self.student2]) contribution = Contribution( course=course, contributor=UserProfile.objects.get(username="******"), responsible=True, can_edit=True, textanswer_visibility=Contribution.GENERAL_TEXTANSWERS) contribution.save() contribution.questionnaires.set( [mommy.make(Questionnaire, type=Questionnaire.CONTRIBUTOR)]) course.general_contribution.questionnaires.set( [mommy.make(Questionnaire)]) self.assertFalse(course.gets_no_grade_documents) response = self.app.post("/grades/toggle_no_grades", params={"course_id": course.id}, user="******") self.assertEqual(response.status_code, 200) course = Course.objects.get(id=course.id) self.assertTrue(course.gets_no_grade_documents) # course should get published here self.assertEqual(course.state, "published") self.assertEqual( len(mail.outbox), course.num_participants + course.contributions.exclude(contributor=None).count()) response = self.app.post("/grades/toggle_no_grades", params={"course_id": course.id}, user="******") self.assertEqual(response.status_code, 200) course = Course.objects.get(id=course.id) self.assertFalse(course.gets_no_grade_documents)
def questionnaire_view(request, questionnaire_id): questionnaire = get_object_or_404(Questionnaire, id=questionnaire_id) # build forms contribution = Contribution(contributor=request.user) form = QuestionsForm(request.POST or None, contribution=contribution, questionnaire=questionnaire) return render_to_response("fsr_questionnaire_view.html", dict(forms=[form], questionnaire=questionnaire), context_instance=RequestContext(request))
def setUpTestData(cls): mommy.make(UserProfile, username="******", groups=[Group.objects.get(name="Grade publisher")]) cls.student = mommy.make(UserProfile, username="******", email="*****@*****.**") cls.student2 = mommy.make(UserProfile, username="******", email="*****@*****.**") cls.student3 = mommy.make(UserProfile, username="******", email="*****@*****.**") responsible = mommy.make(UserProfile, username="******", email="*****@*****.**") cls.course = mommy.make( Course, name_en="Test", vote_start_datetime=datetime.now() - timedelta(10), vote_end_date=datetime.now() + timedelta(10), participants=[cls.student, cls.student2, cls.student3], voters=[cls.student, cls.student2], ) contribution = Contribution( course=cls.course, contributor=responsible, responsible=True, can_edit=True, comment_visibility=Contribution.ALL_COMMENTS) contribution.save() contribution.questionnaires.set( [mommy.make(Questionnaire, is_for_contributors=True)]) cls.course.general_contribution.questionnaires.set( [mommy.make(Questionnaire)]) cls.activation = SemesterGradeDownloadActivation.objects.create( semester=cls.course.semester, is_active=True)
def save(self, *args, **kw): user = kw.pop("user") self.instance.last_modified_user = user self.instance.vote_start_date = self.cleaned_data['event_date'] self.instance.vote_end_date = self.cleaned_data['event_date'] self.instance.is_graded = False super().save(*args, **kw) if not Contribution.objects.filter(course=self.instance, responsible=True).exists(): contribution = Contribution(course=self.instance, contributor=self.cleaned_data['responsible'], responsible=True) contribution.save() contribution.questionnaires.add(Questionnaire.get_single_result_questionnaire()) # set answers contribution = Contribution.objects.get(course=self.instance, responsible=True) for i in range(1,6): count = {'count': self.cleaned_data['answer_'+str(i)]} answer_counter, created = RatingAnswerCounter.objects.update_or_create(contribution=contribution, question=contribution.questionnaires.first().question_set.first(), answer=i, defaults=count) # change state to "reviewed" # works only for single_results so the course and its contribution must be saved first self.instance.single_result_created() self.instance.save()
def __init__(self, data=None, instance=None, evaluation=None, **kwargs): initial = None copied_instance = Contribution(evaluation=evaluation) if instance: opts = self._meta initial = forms.models.model_to_dict(instance, opts.fields, opts.exclude) del initial['evaluation'] initial[ 'does_not_contribute'] = not instance.questionnaires.exists() super().__init__(data, initial=initial, instance=copied_instance, evaluation=evaluation, **kwargs)
def save(self, *args, **kw): user = kw.pop("user") self.instance.last_modified_user = user self.instance.vote_start_date = self.cleaned_data['event_date'] self.instance.vote_end_date = self.cleaned_data['event_date'] self.instance.is_graded = False super().save(*args, **kw) single_result_questionnaire = Questionnaire.single_result_questionnaire() single_result_question = single_result_questionnaire.question_set.first() if not Contribution.objects.filter(course=self.instance, responsible=True).exists(): contribution = Contribution( course=self.instance, contributor=self.cleaned_data['responsible'], responsible=True, can_edit=True, comment_visibility=Contribution.ALL_COMMENTS ) contribution.save() contribution.questionnaires.add(single_result_questionnaire) # set answers contribution = Contribution.objects.get(course=self.instance, responsible=True) total_votes = 0 for i in range(1, 6): count = self.cleaned_data['answer_' + str(i)] total_votes += count RatingAnswerCounter.objects.update_or_create(contribution=contribution, question=single_result_question, answer=i, defaults={'count': count}) self.instance._participant_count = total_votes self.instance._voter_count = total_votes # change state to "reviewed" # works only for single_results so the course and its contribution must be saved first self.instance.single_result_created() self.instance.save()