def test_find_by_tutor_with_none_argument(self): self.assertEquals(attribution.find_by_tutor(None), None)
def find_for_score_encodings(session_exam_number, learning_unit_year_id=None, learning_unit_year_ids=None, tutor=None, offer_year_id=None, offers_year=None, with_justification_or_score_final=False, with_justification_or_score_draft=False, registration_id=None, student_last_name=None, student_first_name=None, justification=None, academic_year=None, with_session_exam_deadline=True): """ :param session_exam_number: Integer represents the number_session of the Session_exam (1,2,3,4 or 5). It's a mandatory field to not confuse exam scores from different sessions. :param learning_unit_year_id: Filter OfferEnrollments by learning_unit_year. :param learning_unit_year_ids: Filter OfferEnrollments by a list of learning_unit_year. :param tutor: Filter OfferEnrollments by Tutor. :param offer_year_id: Filter OfferEnrollments by Offer year ids :param offers_year: Filter OfferEnrollments by OfferYear. :param with_justification_or_score_final: If True, only examEnrollments with a score_final or a justification_final are returned. :param with_justification_or_score_draft: If True, only examEnrollments with a score_draft or a justification_draft are returned. :return: All filtered examEnrollments. """ if not academic_year: academic_year = academic_yr.current_academic_year() queryset = ExamEnrollment.objects.filter( session_exam__number_session=session_exam_number, learning_unit_enrollment__learning_unit_year__academic_year= academic_year, enrollment_state=enrollment_states.ENROLLED) if learning_unit_year_id: queryset = queryset.filter( learning_unit_enrollment__learning_unit_year_id= learning_unit_year_id) elif learning_unit_year_ids is not None: queryset = queryset.filter( learning_unit_enrollment__learning_unit_year_id__in= learning_unit_year_ids) if tutor: # Filter by Tutor is like filter by a list of learningUnits # It's not necessary to add a filter if learningUnitYear or learningUnitYearIds are already defined if not learning_unit_year_id and not learning_unit_year_ids: learning_unit_years = attribution.find_by_tutor(tutor) queryset = queryset.filter( learning_unit_enrollment__learning_unit_year_id__in= learning_unit_years) if offer_year_id: queryset = queryset.filter( learning_unit_enrollment__offer_enrollment__offer_year_id= offer_year_id) elif offers_year: queryset = queryset.filter( learning_unit_enrollment__offer_enrollment__offer_year_id__in= offers_year) if with_justification_or_score_final: queryset = queryset.exclude(score_final=None, justification_final=None) if with_justification_or_score_draft: queryset = queryset.exclude(score_draft=None, justification_draft=None) if registration_id: queryset = queryset.filter( learning_unit_enrollment__offer_enrollment__student__registration_id =registration_id) if justification: if justification == justification_types.SCORE_MISSING: # Show only empty values queryset = queryset.filter(justification_final__isnull=True, score_final__isnull=True) else: queryset = queryset.filter(justification_final=justification) if student_last_name: queryset = queryset.filter( learning_unit_enrollment__offer_enrollment__student__person__last_name__icontains =student_last_name) if student_first_name: queryset = queryset.filter( learning_unit_enrollment__offer_enrollment__student__person__first_name__icontains =student_first_name) if with_session_exam_deadline: queryset = queryset.prefetch_related( models.Prefetch( 'learning_unit_enrollment__offer_enrollment__sessionexamdeadline_set', queryset=session_exam_deadline.filter_by_nb_session( session_exam_number), to_attr="session_exam_deadlines")) return queryset.select_related('learning_unit_enrollment__offer_enrollment__offer_year') \ .select_related('session_exam')\ .select_related('learning_unit_enrollment__offer_enrollment__student__person')\ .select_related('learning_unit_enrollment__learning_unit_year')
def find_for_score_encodings(session_exam_number, learning_unit_year_id=None, learning_unit_year_ids=None, tutor=None, offer_year_id=None, offers_year=None, with_justification_or_score_final=False, with_justification_or_score_draft=False, registration_id=None, student_last_name=None, student_first_name=None, justification=None, academic_year=None, with_session_exam_deadline=True, only_enrolled=False): """ :param session_exam_number: Integer represents the number_session of the Session_exam (1,2,3,4 or 5). It's a mandatory field to not confuse exam scores from different sessions. :param learning_unit_year_id: Filter OfferEnrollments by learning_unit_year. :param learning_unit_year_ids: Filter OfferEnrollments by a list of learning_unit_year. :param tutor: Filter OfferEnrollments by Tutor. :param offer_year_id: Filter OfferEnrollments by Offer year ids :param offers_year: Filter OfferEnrollments by OfferYear. :param with_justification_or_score_final: If True, only examEnrollments with a score_final or a justification_final are returned. :param with_justification_or_score_draft: If True, only examEnrollments with a score_draft or a justification_draft are returned. :return: All filtered examEnrollments. """ if not academic_year: academic_year = academic_yr.current_academic_year() queryset = ExamEnrollment.objects.filter( session_exam__number_session=session_exam_number, learning_unit_enrollment__learning_unit_year__academic_year=academic_year ) if only_enrolled: queryset = queryset.filter(enrollment_state=enrollment_states.ENROLLED) if learning_unit_year_id: queryset = queryset.filter(learning_unit_enrollment__learning_unit_year_id=learning_unit_year_id) elif learning_unit_year_ids is not None: queryset = queryset.filter(learning_unit_enrollment__learning_unit_year_id__in=learning_unit_year_ids) if tutor: # Filter by Tutor is like filter by a list of learningUnits # It's not necessary to add a filter if learningUnitYear or learningUnitYearIds are already defined if not learning_unit_year_id and not learning_unit_year_ids: learning_unit_years = attribution.find_by_tutor(tutor) queryset = queryset.filter(learning_unit_enrollment__learning_unit_year_id__in=learning_unit_years) if offer_year_id: queryset = queryset.filter(learning_unit_enrollment__offer_enrollment__offer_year_id=offer_year_id) elif offers_year: queryset = queryset.filter(learning_unit_enrollment__offer_enrollment__offer_year_id__in=offers_year) if with_justification_or_score_final: queryset = queryset.exclude(score_final=None, justification_final=None) if with_justification_or_score_draft: queryset = queryset.exclude(score_draft=None, justification_draft=None) if registration_id: queryset = queryset.filter(learning_unit_enrollment__offer_enrollment__student__registration_id=registration_id) if justification: if justification == justification_types.SCORE_MISSING: # Show only empty values queryset = queryset.filter(justification_final__isnull=True, score_final__isnull=True) else: queryset = queryset.filter(justification_final=justification) if student_last_name: queryset = queryset.filter( learning_unit_enrollment__offer_enrollment__student__person__last_name__icontains=student_last_name) if student_first_name: queryset = queryset.filter( learning_unit_enrollment__offer_enrollment__student__person__first_name__icontains=student_first_name) if with_session_exam_deadline: queryset = queryset.prefetch_related( models.Prefetch('learning_unit_enrollment__offer_enrollment__sessionexamdeadline_set', queryset=session_exam_deadline.filter_by_nb_session(session_exam_number), to_attr="session_exam_deadlines") ) return queryset.select_related('learning_unit_enrollment__offer_enrollment__offer_year') \ .select_related('session_exam') \ .select_related('learning_unit_enrollment__offer_enrollment__student__person') \ .select_related('learning_unit_enrollment__learning_unit_year')