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)
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)
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()))
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)
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)
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)
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)
def _get_filter_keys(form): return OrderedDict(itertools.chain(get_research_criteria(form)))
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)