Esempio n. 1
0
def build_scores_sheet_attachment(list_exam_enrollments):
    name = "%s.pdf" % _('score(s) saved')
    mimetype = "application/pdf"
    content = paper_sheet.build_pdf(
        score_encoding_sheet.scores_sheet_data(list_exam_enrollments,
                                               tutor=None))
    return (name, content, mimetype)
Esempio n. 2
0
def get_json_data_scores_sheets(tutor_global_id):
    try:
        if isinstance(tutor_global_id, bytes):
            tutor_global_id = tutor_global_id.decode('utf-8')
        person = mdl.person.find_by_global_id(tutor_global_id)
        tutor = mdl.tutor.find_by_person(person)
        number_session = mdl.session_exam_calendar.find_session_exam_number()
        academic_yr = mdl.academic_year.current_academic_year()

        if tutor:
            exam_enrollments = list(
                mdl.exam_enrollment.find_for_score_encodings(
                    number_session, tutor=tutor, academic_year=academic_yr))
            return score_encoding_sheet.scores_sheet_data(exam_enrollments,
                                                          tutor=tutor)
        else:

            return {}
    except (PsycopOperationalError, PsycopInterfaceError,
            DjangoOperationalError, DjangoInterfaceError):
        queue_exception_logger.error(
            'Postgres Error during get_json_data_scores_sheets on global_id {} => retried'
            .format(tutor_global_id))
        trace = traceback.format_exc()
        queue_exception_logger.error(trace)
        return get_json_data_scores_sheets(tutor_global_id)
    except Exception:
        logger.warning(
            '(Not PostgresError) during get_json_data_scores_sheets on global_id {}'
            .format(tutor_global_id))
        trace = traceback.format_exc()
        logger.error(trace)
        return {}
    finally:
        close_old_connections()
Esempio n. 3
0
 def test_scores_sheet_deadline(self):
     exam_enrollments = ExamEnrollment.objects.all()
     data_computed = score_encoding_sheet.scores_sheet_data(exam_enrollments)
     # Check the deadline for enrolled/not enrolled students
     for enrollment in data_computed['learning_unit_years'][0]['programs'][0]['enrollments']:
         if enrollment['registration_id'] in (self.student_1.registration_id, self.student_2.registration_id, self.student_3.registration_id):
             self.assertEqual(enrollment['deadline'], self.deadline.strftime(str(_('date_format'))))
         else:
             self.assertEqual(enrollment['deadline'], '')
Esempio n. 4
0
def notes_printing(request, learning_unit_year_id=None, tutor_id=None, offer_id=None):
    is_program_manager = mdl.program_manager.is_program_manager(request.user)
    scores_list_encoded = score_encoding_list.get_scores_encoding_list(
        user=request.user,
        learning_unit_year_id=learning_unit_year_id,
        tutor_id=tutor_id,
        offer_year_id=offer_id
    )
    tutor = mdl.tutor.find_by_user(request.user) if not is_program_manager else None
    sheet_data = score_encoding_sheet.scores_sheet_data(scores_list_encoded.enrollments, tutor=tutor)
    return paper_sheet.print_notes(sheet_data)
Esempio n. 5
0
 def test_scores_sheet_data_no_decimal_scores(self):
     # Get all exam enrollments
     exam_enrollments = ExamEnrollment.objects.all()
     data_computed = score_encoding_sheet.scores_sheet_data(exam_enrollments)
     # Should be a dictionary
     self.assertIsInstance(data_computed, dict)
     # Publication date should be today
     self.assertEqual(data_computed['publication_date'], timezone.now().strftime("%-d/%-m/%Y"))
     self.assertEqual(len(data_computed['learning_unit_years']), 1)
     self.assertFalse(data_computed['learning_unit_years'][0]['decimal_scores'])
     # Check the score responsible and the address
     score_responsible = data_computed['learning_unit_years'][0]['scores_responsible']
     self.assertEqual(score_responsible['first_name'], "Thomas")
     self.assertEqual(score_responsible['last_name'], "Durant")
     self.assertEqual(score_responsible['address']['city'], "Louvain-la-neuve")