Пример #1
0
def learning_units_proposal_search(request):
    search_form = LearningUnitProposalForm(request.GET or None, initial={'academic_year_id': current_academic_year()})
    user_person = get_object_or_404(Person, user=request.user)
    proposals = []
    research_criteria = []
    try:
        if search_form.is_valid():
            research_criteria = get_research_criteria(search_form)
            proposals = search_form.get_proposal_learning_units()
            check_if_display_message(request, proposals)
    except TooManyResultsException:
        display_error_messages(request, 'too_many_results')

    if request.GET.get('xls_status') == "xls":
        return create_xls_proposal(request.user, proposals, _get_filter(search_form, PROPOSAL_SEARCH))

    if request.POST:
        selected_proposals_id = request.POST.getlist("selected_action", default=[])
        selected_proposals = ProposalLearningUnit.objects.filter(id__in=selected_proposals_id)
        messages_by_level = apply_action_on_proposals(selected_proposals, user_person, request.POST, research_criteria)
        display_messages_by_level(request, messages_by_level)
        return redirect(reverse("learning_unit_proposal_search") + "?{}".format(request.GET.urlencode()))

    context = {
        'form': search_form,
        'form_proposal_state': ProposalStateModelForm(),
        'academic_years': get_last_academic_years(),
        'current_academic_year': current_academic_year(),
        'experimental_phase': True,
        'search_type': PROPOSAL_SEARCH,
        'proposals': proposals,
        'is_faculty_manager': user_person.is_faculty_manager(),
        'form_comparison': SelectComparisonYears(academic_year=get_academic_year_of_reference(proposals)),
    }
    return layout.render(request, "learning_units.html", context)
Пример #2
0
 def test_get_research_criteria_with_choice_field(self):
     self.data.update({
         "academic_year": str(self.academic_years[0].id),
         "container_type": learning_container_year_types.COURSE
     })
     form = LearningUnitFilter(self.data).form
     self.assertTrue(form.is_valid())
     expected_research_criteria = [(_('Ac yr.'), self.academic_years[0]),
                                   (_('Type'), _("Course"))]
     actual_research_criteria = get_research_criteria(form)
     self.assertListEqual(expected_research_criteria,
                          actual_research_criteria)
Пример #3
0
    def post(self, request, *args, **kwargs):
        user_person = get_object_or_404(Person, user=self.request.user)

        search_form = ProposalLearningUnitFilter(request.GET or None, person=user_person)
        research_criteria = get_research_criteria(search_form.form) if search_form.is_valid() else []

        selected_proposals_acronym = request.POST.getlist("selected_action", default=[])
        selected_proposals = ProposalLearningUnit.objects.filter(
            learning_unit_year__acronym__in=selected_proposals_acronym
        )
        messages_by_level = apply_action_on_proposals(selected_proposals, user_person, request.POST, research_criteria)
        display_messages_by_level(request, messages_by_level)
        return redirect(reverse("learning_unit_proposal_search") + "?{}".format(request.GET.urlencode()))
Пример #4
0
 def test_get_research_criteria(self):
     self.data.update({
         "requirement_entity": "INFO",
         "tutor": "Jean Marcel",
         "academic_year": str(self.academic_years[0].id),
     })
     form = LearningUnitFilter(self.data).form
     self.assertTrue(form.is_valid())
     expected_research_criteria = [(_('Ac yr.'), self.academic_years[0]),
                                   (_('Req. Entity'), "INFO"),
                                   (_('Tutor'), "Jean Marcel")]
     actual_research_criteria = get_research_criteria(form)
     self.assertListEqual(expected_research_criteria,
                          actual_research_criteria)
Пример #5
0
 def test_get_research_criteria(self):
     data = QueryDict(mutable=True)
     data.update({
         "requirement_entity_acronym": "INFO",
         "tutor": "Jean Marcel",
         "academic_year_id": str(self.academic_years[0].id),
     })
     form = LearningUnitSearchForm(data)
     self.assertTrue(form.is_valid())
     expected_research_criteria = [(_('Ac yr.'), self.academic_years[0]),
                                   (_('Req. Entity'), "INFO"),
                                   (_('Tutor'), "Jean Marcel")]
     actual_research_criteria = get_research_criteria(form)
     self.assertListEqual(expected_research_criteria,
                          actual_research_criteria)
Пример #6
0
 def test_get_research_criteria_with_choice_field(self):
     data = QueryDict(mutable=True)
     data.update({
         "academic_year_id": str(self.academic_years[0].id),
         "container_type": learning_container_year_types.COURSE
     })
     form = LearningUnitYearForm(data)
     self.assertTrue(form.is_valid())
     expected_research_criteria = [
         (_('academic_year_small'), self.academic_years[0]),
         (_('type'), _(learning_container_year_types.COURSE))
     ]
     actual_research_criteria = get_research_criteria(form)
     self.assertListEqual(expected_research_criteria,
                          actual_research_criteria)
Пример #7
0
def learning_units_proposal_search(request):
    search_form = LearningUnitProposalForm(
        request.GET or None,
        initial={'academic_year_id': current_academic_year()}
    )
    user_person = get_object_or_404(Person, user=request.user)
    found_learning_units = LearningUnitYear.objects.none()

    if search_form.is_valid():
        found_learning_units = search_form.get_proposal_learning_units()
        check_if_display_message(request, found_learning_units)

    if request.POST.get('xls_status_proposal') == "xls":
        return create_xls_proposal(
            user_person.user,
            list(found_learning_units),
            _get_filter(search_form, PROPOSAL_SEARCH)
        )

    if request.POST:
        research_criteria = get_research_criteria(search_form) if search_form.is_valid() else []

        selected_proposals_id = request.POST.getlist("selected_action", default=[])
        selected_proposals = ProposalLearningUnit.objects.filter(id__in=selected_proposals_id)
        messages_by_level = apply_action_on_proposals(selected_proposals, user_person, request.POST, research_criteria)
        display_messages_by_level(request, messages_by_level)
        return redirect(reverse("learning_unit_proposal_search") + "?{}".format(request.GET.urlencode()))

    context = {
        'form': search_form,
        'form_proposal_state': ProposalStateModelForm(),
        'academic_years': get_last_academic_years(),
        'current_academic_year': current_academic_year(),
        'experimental_phase': True,
        'search_type': PROPOSAL_SEARCH,
        'learning_units_count': found_learning_units.count(),
        'is_faculty_manager': user_person.is_faculty_manager,
        'form_comparison': SelectComparisonYears(academic_year=get_academic_year_of_reference(found_learning_units)),
        'page_obj': paginate_queryset(found_learning_units, request.GET),
    }
    return render(request, "learning_units.html", context)
Пример #8
0
def _get_filter_keys(form):
    return OrderedDict(itertools.chain(get_research_criteria(form)))
Пример #9
0
def _get_filter(form, search_type):
    criterias = itertools.chain([(_('search_type'), _get_search_type_label(search_type))], get_research_criteria(form))
    return collections.OrderedDict(criterias)