示例#1
0
文件: forms.py 项目: anukat2015/EvaP
    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()
示例#2
0
文件: tests.py 项目: klaraseitz/EvaP
    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)
示例#3
0
文件: tests.py 项目: anukat2015/EvaP
    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()
示例#4
0
    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)
示例#5
0
文件: tests.py 项目: PFischbeck/EvaP
    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)
示例#6
0
文件: tests.py 项目: fsr-itse/EvaP
    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)
示例#7
0
    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)
示例#8
0
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))
示例#9
0
    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)
示例#10
0
    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()
示例#11
0
文件: forms.py 项目: rgwohlbold/EvaP
 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)
示例#12
0
    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()