Exemple #1
0
    def test_search_too_many_results(self):
        random_luy = LearningUnitYearFactory()

        form = LearningUnitYearForm(
            data={
                'acronym': random_luy.acronym,
                'academic_year_id': random_luy.academic_year.pk
            })
        form.MAX_RECORDS = 0
        self.assertTrue(form.is_valid())

        with self.assertRaises(TooManyResultsException):
            form.get_learning_units()
def learning_units_summary_list(request):
    a_user_person = find_by_user(request.user)
    learning_units_found = []

    initial_academic_year = current_academic_year()
    if academic_calendar.is_academic_calendar_has_started(initial_academic_year, SUMMARY_COURSE_SUBMISSION):
        initial_academic_year = initial_academic_year.next()

    search_form = LearningUnitYearForm(request.GET or None, initial={'academic_year_id': initial_academic_year})
    try:
        if search_form.is_valid():
            learning_units_found_search = search_form.get_learning_units(
                requirement_entities=a_user_person.find_main_entities_version,
                luy_status=True
            )
            learning_units_found = get_learning_units_and_summary_status(learning_units_found_search)
            check_if_display_message(request, learning_units_found_search)
    except TooManyResultsException:
        display_error_messages(request, 'too_many_results')

    responsible_and_learning_unit_yr_list = get_responsible_and_learning_unit_yr_list(learning_units_found)
    learning_units = sorted(learning_units_found, key=lambda learning_yr: learning_yr.acronym)
    errors = [can_learning_unit_year_educational_information_be_udpated(learning_unit_year_id=luy.id)
              for luy in learning_units]
    context = {
        'form': search_form,
        'formset': _get_formset(request, responsible_and_learning_unit_yr_list),
        'learning_units_with_errors': list(zip(learning_units, errors)),
        'experimental_phase': True,
        'search_type': SUMMARY_LIST,
        'is_faculty_manager': a_user_person.is_faculty_manager()
    }

    return layout.render(request, "learning_units.html", context)
Exemple #3
0
    def test_search_too_many_results_is_not_raised_when_borrowed_course_search(
            self):
        random_luy = LearningUnitYearFactory(
            academic_year=self.academic_years[0])

        form = LearningUnitYearForm(data={
            'acronym':
            random_luy.acronym,
            'academic_year_id':
            random_luy.academic_year.pk
        },
                                    borrowed_course_search=True)
        form.MAX_RECORDS = 0

        self.assertTrue(form.is_valid())
        form.get_learning_units()
Exemple #4
0
    def test_search_too_many_results(self):
        cpt = 0
        max_limit_of_results = LearningUnitYearForm.MAX_RECORDS
        while cpt < max_limit_of_results + 1:
            LearningUnitYearFactory(acronym="L{}".format(cpt), )
            cpt += 1
        form = LearningUnitYearForm({
            'acronym': 'L',
            'service_course_search': False
        })
        self.assertTrue(form.is_valid())

        with self.assertRaises(TooManyResultsException):
            form.get_learning_units()

        with self.assertRaises(TooManyResultsException):
            form.get_learning_units_and_summary_status()
Exemple #5
0
def learning_units_summary_list(request):
    a_user_person = find_by_user(request.user)
    learning_units_found = []

    initial_academic_year = current_academic_year()
    if academic_calendar.is_academic_calendar_has_started(
            initial_academic_year, SUMMARY_COURSE_SUBMISSION):
        initial_academic_year = initial_academic_year.next()

    search_form = LearningUnitYearForm(
        request.GET or None,
        initial={'academic_year_id': initial_academic_year})
    try:
        if search_form.is_valid():
            learning_units_found_search = search_form.get_learning_units(
                requirement_entities=a_user_person.find_main_entities_version,
                luy_status=True)

            # TODO refactoring : too many queries
            learning_units_found = get_learning_units_and_summary_status(
                learning_units_found_search)
            check_if_display_message(request, learning_units_found_search)
    except TooManyResultsException:
        display_error_messages(request, 'too_many_results')
    responsible_and_learning_unit_yr_list = get_responsible_and_learning_unit_yr_list(
        learning_units_found)
    learning_units = sorted(learning_units_found,
                            key=lambda learning_yr: learning_yr.acronym)
    errors = [
        can_learning_unit_year_educational_information_be_udpated(
            learning_unit_year_id=luy.id) for luy in learning_units
    ]

    if request.GET.get('xls_status') == "xls_teaching_material":
        try:
            return generate_xls_teaching_material(request.user,
                                                  learning_units_found)
        except ObjectDoesNotExist:
            display_warning_messages(
                request,
                _("the list to generate is empty.").capitalize())

    form_comparison = SelectComparisonYears(
        academic_year=get_academic_year_of_reference(learning_units_found))
    context = {
        'form': search_form,
        'formset': _get_formset(request,
                                responsible_and_learning_unit_yr_list),
        'learning_units_with_errors': list(zip(learning_units, errors)),
        'search_type': SUMMARY_LIST,
        'is_faculty_manager': a_user_person.is_faculty_manager(),
        'form_comparison': form_comparison
    }

    return layout.render(request, "learning_units.html", context)