Example #1
0
    def test_course_type_ordering(self):
        course_type_1 = mommy.make(CourseType, order=1)
        course_type_2 = mommy.make(CourseType, order=2)
        semester = mommy.make(Semester)
        course_1 = mommy.make(Course, semester=semester, type=course_type_1, state='published', _participant_count=2, _voter_count=2)
        course_2 = mommy.make(Course, semester=semester, type=course_type_2, state='published', _participant_count=2, _voter_count=2)

        questionnaire = mommy.make(Questionnaire)
        question = mommy.make(Question, type=Question.LIKERT, questionnaire=questionnaire)

        course_1.general_contribution.questionnaires.set([questionnaire])
        mommy.make(RatingAnswerCounter, question=question, contribution=course_1.general_contribution, answer=3, count=2)

        course_2.general_contribution.questionnaires.set([questionnaire])
        mommy.make(RatingAnswerCounter, question=question, contribution=course_2.general_contribution, answer=3, count=2)

        binary_content = BytesIO()
        ExcelExporter(semester).export(binary_content, [[course_type_1.id, course_type_2.id]], True, True)
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(0)[1], course_1.name)
        self.assertEqual(workbook.sheets()[0].row_values(0)[2], course_2.name)

        course_type_2.order = 0
        course_type_2.save()

        binary_content = BytesIO()
        ExcelExporter(semester).export(binary_content, [[course_type_1.id, course_type_2.id]], True, True)
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(0)[1], course_2.name)
        self.assertEqual(workbook.sheets()[0].row_values(0)[2], course_1.name)
Example #2
0
    def test_view_excel_file_sorted(self):
        semester = mommy.make(Semester)
        course_type = mommy.make(CourseType)
        course1 = mommy.make(Course, state='published', type=course_type,
                             name_de='A - Course1', name_en='B - Course1', semester=semester)

        course2 = mommy.make(Course, state='published', type=course_type,
                             name_de='B - Course2', name_en='A - Course2', semester=semester)

        content_de = BytesIO()
        with translation.override("de"):
            ExcelExporter(semester).export(content_de, [[course_type.id]], True, True)

        content_en = BytesIO()
        with translation.override("en"):
            ExcelExporter(semester).export(content_en, [[course_type.id]], True, True)

        content_de.seek(0)
        content_en.seek(0)

        # Load responses as Excel files and check for correct sorting
        workbook = xlrd.open_workbook(file_contents=content_de.read())
        self.assertEqual(workbook.sheets()[0].row_values(0)[1], "A - Course1")
        self.assertEqual(workbook.sheets()[0].row_values(0)[2], "B - Course2")

        workbook = xlrd.open_workbook(file_contents=content_en.read())
        self.assertEqual(workbook.sheets()[0].row_values(0)[1], "A - Course2")
        self.assertEqual(workbook.sheets()[0].row_values(0)[2], "B - Course1")
Example #3
0
    def test_view_excel_file_sorted(self):
        semester = baker.make(Semester)
        course_type = baker.make(CourseType)
        degree = baker.make(Degree)
        baker.make(Evaluation,
                   state='published',
                   course=baker.make(Course,
                                     degrees=[degree],
                                     type=course_type,
                                     semester=semester,
                                     name_de="A",
                                     name_en="B"),
                   name_de='Evaluation1',
                   name_en='Evaluation1')
        baker.make(Evaluation,
                   state='published',
                   course=baker.make(Course,
                                     degrees=[degree],
                                     type=course_type,
                                     semester=semester,
                                     name_de="B",
                                     name_en="A"),
                   name_de='Evaluation2',
                   name_en='Evaluation2')

        content_de = BytesIO()
        with translation.override("de"):
            ExcelExporter().export(content_de, [semester],
                                   [([degree.id], [course_type.id])], True,
                                   True)

        content_en = BytesIO()
        with translation.override("en"):
            ExcelExporter().export(content_en, [semester],
                                   [([degree.id], [course_type.id])], True,
                                   True)

        content_de.seek(0)
        content_en.seek(0)

        # Load responses as Excel files and check for correct sorting
        workbook = xlrd.open_workbook(file_contents=content_de.read())
        self.assertEqual(workbook.sheets()[0].row_values(0)[1],
                         "A – Evaluation1\n")
        self.assertEqual(workbook.sheets()[0].row_values(0)[2],
                         "B – Evaluation2\n")

        workbook = xlrd.open_workbook(file_contents=content_en.read())
        self.assertEqual(workbook.sheets()[0].row_values(0)[1],
                         "A – Evaluation2\n")
        self.assertEqual(workbook.sheets()[0].row_values(0)[2],
                         "B – Evaluation1\n")
Example #4
0
 def test_grade_color_calculation(self):
     exporter = ExcelExporter(Semester())
     self.assertEqual(exporter.STEP, 0.2)
     self.assertEqual(exporter.normalize_number(1.94999999999), 1.8)
     # self.assertEqual(exporter.normalize_number(1.95), 2.0)  # floats ftw
     self.assertEqual(exporter.normalize_number(1.95000000001), 2.0)
     self.assertEqual(exporter.normalize_number(1.99999999999), 2.0)
     self.assertEqual(exporter.normalize_number(2.0), 2.0)
     self.assertEqual(exporter.normalize_number(2.00000000001), 2.0)
     self.assertEqual(exporter.normalize_number(2.1), 2.0)
     self.assertEqual(exporter.normalize_number(2.149999999999), 2.0)
     # self.assertEqual(exporter.normalize_number(2.15), 2.2)  # floats again
     self.assertEqual(exporter.normalize_number(2.150000000001), 2.2)
     self.assertEqual(exporter.normalize_number(2.8), 2.8)
Example #5
0
File: views.py Project: mswart/EvaP
def semester_export(request, semester_id):
    semester = get_object_or_404(Semester, id=semester_id)
    
    filename = "Evaluation-%s-%s.xls" % (semester.name, get_language())
    
    response = HttpResponse(mimetype="application/vnd.ms-excel")
    response["Content-Disposition"] = "attachment; filename=\"%s\"" % filename
    
    exporter = ExcelExporter(semester)
    
    if 'all' in request.GET:
        exporter.export(response, True)
    else:
        exporter.export(response)
    
    return response
Example #6
0
def semester_export(request, semester_id):
    semester = get_object_or_404(Semester, id=semester_id)

    ExportSheetFormset = formset_factory(form=ExportSheetForm,
                                         can_delete=True,
                                         extra=0,
                                         min_num=1,
                                         validate_min=True)
    formset = ExportSheetFormset(request.POST or None,
                                 form_kwargs={'semester': semester})

    if formset.is_valid():
        ignore_not_enough_answers = request.POST.get(
            'ignore_not_enough_answers') == 'on'
        include_unpublished = request.POST.get('include_unpublished') == 'on'
        course_types_list = []
        for form in formset:
            if 'selected_course_types' in form.cleaned_data:
                course_types_list.append(
                    form.cleaned_data['selected_course_types'])

        filename = "Evaluation-%s-%s.xls" % (semester.name, get_language())
        response = HttpResponse(content_type="application/vnd.ms-excel")
        response[
            "Content-Disposition"] = "attachment; filename=\"%s\"" % filename
        ExcelExporter(semester).export(response, course_types_list,
                                       ignore_not_enough_answers,
                                       include_unpublished)
        return response
    else:
        return render(request, "staff_semester_export.html",
                      dict(semester=semester, formset=formset))
Example #7
0
    def test_course_type_ordering(self):
        degree = baker.make(Degree)
        course_type_1 = baker.make(CourseType, order=1)
        course_type_2 = baker.make(CourseType, order=2)
        semester = baker.make(Semester)
        evaluation_1 = baker.make(Evaluation,
            course=baker.make(Course, semester=semester, degrees=[degree], type=course_type_1),
            state='published',
            _participant_count=2,
            _voter_count=2
        )
        evaluation_2 = baker.make(Evaluation,
            course=baker.make(Course, semester=semester, degrees=[degree], type=course_type_2),
            state='published',
            _participant_count=2,
            _voter_count=2
        )

        questionnaire = baker.make(Questionnaire)
        question = baker.make(Question, type=Question.LIKERT, questionnaire=questionnaire)

        evaluation_1.general_contribution.questionnaires.set([questionnaire])
        baker.make(RatingAnswerCounter, question=question, contribution=evaluation_1.general_contribution, answer=3, count=2)

        evaluation_2.general_contribution.questionnaires.set([questionnaire])
        baker.make(RatingAnswerCounter, question=question, contribution=evaluation_2.general_contribution, answer=3, count=2)

        binary_content = BytesIO()
        ExcelExporter().export(binary_content, [semester], [([degree.id], [course_type_1.id, course_type_2.id])], True, True)
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(0)[1], evaluation_1.full_name + "\n")
        self.assertEqual(workbook.sheets()[0].row_values(0)[2], evaluation_2.full_name + "\n")

        course_type_2.order = 0
        course_type_2.save()

        binary_content = BytesIO()
        ExcelExporter().export(binary_content, [semester], [([degree.id], [course_type_1.id, course_type_2.id])], True, True)
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(0)[1], evaluation_2.full_name + "\n")
        self.assertEqual(workbook.sheets()[0].row_values(0)[2], evaluation_1.full_name + "\n")
Example #8
0
File: tests.py Project: kateyy/EvaP
 def test_grade_color_calculation(self):
     exporter = ExcelExporter(Semester())
     self.assertEqual(exporter.STEP, 0.2)
     self.assertEqual(exporter.normalize_number(1.94999999999), 1.8)
     #self.assertEqual(exporter.normalize_number(1.95), 2.0) # floats ftw
     self.assertEqual(exporter.normalize_number(1.95000000001), 2.0)
     self.assertEqual(exporter.normalize_number(1.99999999999), 2.0)
     self.assertEqual(exporter.normalize_number(2.0), 2.0)
     self.assertEqual(exporter.normalize_number(2.00000000001), 2.0)
     self.assertEqual(exporter.normalize_number(2.1), 2.0)
     self.assertEqual(exporter.normalize_number(2.149999999999), 2.0)
     #self.assertEqual(exporter.normalize_number(2.15), 2.2) # floats again
     self.assertEqual(exporter.normalize_number(2.150000000001), 2.2)
     self.assertEqual(exporter.normalize_number(2.8), 2.8)
Example #9
0
def export_contributor_results(contributor):
    filename = "Evaluation_{}.xls".format(contributor.full_name)
    response = FileResponse(filename, content_type="application/vnd.ms-excel")
    ExcelExporter().export(response,
                           Semester.objects.all(),
                           [(Degree.objects.all(), CourseType.objects.all())],
                           include_not_enough_voters=True,
                           include_unpublished=False,
                           contributor=contributor)
    return response
Example #10
0
    def test_heading_question_filtering(self):
        degree = baker.make(Degree)
        evaluation = baker.make(Evaluation,
                                course=baker.make(Course, degrees=[degree]),
                                state='published',
                                _participant_count=2,
                                _voter_count=2)
        contributor = baker.make(UserProfile)
        evaluation.general_contribution.questionnaires.set(
            [baker.make(Questionnaire)])

        questionnaire = baker.make(Questionnaire)
        baker.make(Question,
                   type=Question.HEADING,
                   questionnaire=questionnaire,
                   order=0)
        heading_question = baker.make(Question,
                                      type=Question.HEADING,
                                      questionnaire=questionnaire,
                                      order=1)
        likert_question = baker.make(Question,
                                     type=Question.LIKERT,
                                     questionnaire=questionnaire,
                                     order=2)
        baker.make(Question,
                   type=Question.HEADING,
                   questionnaire=questionnaire,
                   order=3)

        contribution = baker.make(Contribution,
                                  evaluation=evaluation,
                                  questionnaires=[questionnaire],
                                  contributor=contributor)
        baker.make(RatingAnswerCounter,
                   question=likert_question,
                   contribution=contribution,
                   answer=3,
                   count=100)

        binary_content = BytesIO()
        ExcelExporter().export(
            binary_content, [evaluation.course.semester], [([
                course_degree.id
                for course_degree in evaluation.course.degrees.all()
            ], [evaluation.course.type.id])], True, True)
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(4)[0],
                         questionnaire.name)
        self.assertEqual(workbook.sheets()[0].row_values(5)[0],
                         heading_question.text)
        self.assertEqual(workbook.sheets()[0].row_values(6)[0],
                         likert_question.text)
        self.assertEqual(workbook.sheets()[0].row_values(7)[0], "")
Example #11
0
    def test_questionnaire_ordering(self):
        degree = baker.make(Degree)
        evaluation = baker.make(
            Evaluation,
            course=baker.make(Course, degrees=[degree]),
            state='published',
            _participant_count=2,
            _voter_count=2
        )

        questionnaire_1 = baker.make(Questionnaire, order=1, type=Questionnaire.Type.TOP)
        questionnaire_2 = baker.make(Questionnaire, order=4, type=Questionnaire.Type.TOP)
        questionnaire_3 = baker.make(Questionnaire, order=1, type=Questionnaire.Type.BOTTOM)
        questionnaire_4 = baker.make(Questionnaire, order=4, type=Questionnaire.Type.BOTTOM)

        question_1 = baker.make(Question, type=Question.LIKERT, questionnaire=questionnaire_1)
        question_2 = baker.make(Question, type=Question.LIKERT, questionnaire=questionnaire_2)
        question_3 = baker.make(Question, type=Question.LIKERT, questionnaire=questionnaire_3)
        question_4 = baker.make(Question, type=Question.LIKERT, questionnaire=questionnaire_4)

        evaluation.general_contribution.questionnaires.set([questionnaire_1, questionnaire_2, questionnaire_3, questionnaire_4])

        baker.make(RatingAnswerCounter, question=question_1, contribution=evaluation.general_contribution, answer=3, count=100)
        baker.make(RatingAnswerCounter, question=question_2, contribution=evaluation.general_contribution, answer=3, count=100)
        baker.make(RatingAnswerCounter, question=question_3, contribution=evaluation.general_contribution, answer=3, count=100)
        baker.make(RatingAnswerCounter, question=question_4, contribution=evaluation.general_contribution, answer=3, count=100)

        binary_content = BytesIO()
        ExcelExporter().export(
            binary_content,
            [evaluation.course.semester],
            [([course_degree.id for course_degree in evaluation.course.degrees.all()], [evaluation.course.type.id])],
            True,
            True
        )
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(4)[0], questionnaire_1.name)
        self.assertEqual(workbook.sheets()[0].row_values(5)[0], question_1.text)

        self.assertEqual(workbook.sheets()[0].row_values(7)[0], questionnaire_2.name)
        self.assertEqual(workbook.sheets()[0].row_values(8)[0], question_2.text)

        self.assertEqual(workbook.sheets()[0].row_values(10)[0], questionnaire_3.name)
        self.assertEqual(workbook.sheets()[0].row_values(11)[0], question_3.text)

        self.assertEqual(workbook.sheets()[0].row_values(13)[0], questionnaire_4.name)
        self.assertEqual(workbook.sheets()[0].row_values(14)[0], question_4.text)
Example #12
0
    def test_heading_question_filtering(self):
        course = mommy.make(Course,
                            state='published',
                            _participant_count=2,
                            _voter_count=2)
        contributor = mommy.make(UserProfile)
        course.general_contribution.questionnaires.set(
            [mommy.make(Questionnaire)])

        questionnaire = mommy.make(Questionnaire)
        mommy.make(Question, type="H", questionnaire=questionnaire, order=0)
        heading_question = mommy.make(Question,
                                      type="H",
                                      questionnaire=questionnaire,
                                      order=1)
        likert_question = mommy.make(Question,
                                     type="L",
                                     questionnaire=questionnaire,
                                     order=2)
        mommy.make(Question, type="H", questionnaire=questionnaire, order=3)

        contribution = mommy.make(Contribution,
                                  course=course,
                                  questionnaires=[questionnaire],
                                  contributor=contributor)
        mommy.make(RatingAnswerCounter,
                   question=likert_question,
                   contribution=contribution,
                   answer=3,
                   count=100)

        binary_content = BytesIO()
        ExcelExporter(course.semester).export(binary_content,
                                              [[course.type.id]], True, True)
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(2)[0],
                         questionnaire.name)
        self.assertEqual(workbook.sheets()[0].row_values(3)[0],
                         heading_question.text)
        self.assertEqual(workbook.sheets()[0].row_values(4)[0],
                         likert_question.text)
        self.assertEqual(workbook.sheets()[0].row_values(5)[0], "")
Example #13
0
def semester_export(request, semester_id):
    semester = get_object_or_404(Semester, id=semester_id)

    filename = "Evaluation-%s-%s.xls" % (semester.name, get_language())

    response = HttpResponse(mimetype="application/vnd.ms-excel")
    response["Content-Disposition"] = "attachment; filename=\"%s\"" % filename

    exporter = ExcelExporter(semester)

    if 'all' in request.GET:
        exporter.export(response, True)
    else:
        exporter.export(response)

    return response
Example #14
0
    def test_questionnaire_ordering(self):
        course = mommy.make(Course, state='published', _participant_count=2, _voter_count=2)

        questionnaire_1 = mommy.make(Questionnaire, order=1, type=Questionnaire.TOP)
        questionnaire_2 = mommy.make(Questionnaire, order=4, type=Questionnaire.TOP)
        questionnaire_3 = mommy.make(Questionnaire, order=1, type=Questionnaire.BOTTOM)
        questionnaire_4 = mommy.make(Questionnaire, order=4, type=Questionnaire.BOTTOM)

        question_1 = mommy.make(Question, type=Question.LIKERT, questionnaire=questionnaire_1)
        question_2 = mommy.make(Question, type=Question.LIKERT, questionnaire=questionnaire_2)
        question_3 = mommy.make(Question, type=Question.LIKERT, questionnaire=questionnaire_3)
        question_4 = mommy.make(Question, type=Question.LIKERT, questionnaire=questionnaire_4)

        course.general_contribution.questionnaires.set([questionnaire_1, questionnaire_2, questionnaire_3, questionnaire_4])

        mommy.make(RatingAnswerCounter, question=question_1, contribution=course.general_contribution, answer=3, count=100)
        mommy.make(RatingAnswerCounter, question=question_2, contribution=course.general_contribution, answer=3, count=100)
        mommy.make(RatingAnswerCounter, question=question_3, contribution=course.general_contribution, answer=3, count=100)
        mommy.make(RatingAnswerCounter, question=question_4, contribution=course.general_contribution, answer=3, count=100)

        binary_content = BytesIO()
        ExcelExporter(course.semester).export(binary_content, [[course.type.id]], True, True)
        binary_content.seek(0)
        workbook = xlrd.open_workbook(file_contents=binary_content.read())

        self.assertEqual(workbook.sheets()[0].row_values(2)[0], questionnaire_1.name)
        self.assertEqual(workbook.sheets()[0].row_values(3)[0], question_1.text)

        self.assertEqual(workbook.sheets()[0].row_values(5)[0], questionnaire_2.name)
        self.assertEqual(workbook.sheets()[0].row_values(6)[0], question_2.text)

        self.assertEqual(workbook.sheets()[0].row_values(8)[0], questionnaire_3.name)
        self.assertEqual(workbook.sheets()[0].row_values(9)[0], question_3.text)

        self.assertEqual(workbook.sheets()[0].row_values(11)[0], questionnaire_4.name)
        self.assertEqual(workbook.sheets()[0].row_values(12)[0], question_4.text)