示例#1
0
def expedient_list(request):
    form = ExpedientListFilterForm(request.GET)
    expedients = ExpedientService.find_all()

    if form.is_valid():
        search_term = form.cleaned_data["keyword"] or None
        selected_branch_id = form.cleaned_data["branch"] or None
        selected_headquarters_id = form.cleaned_data["headquarters"] or None
        selected_state = form.cleaned_data["state"] or None
        selected_customers = form.cleaned_data["customers"] or None

        if search_term:
            expedients = expedients.filter(Q(id__icontains=search_term) | Q(description__icontains=search_term))

        # Remember -> -1 equals "without" and None is "all"
        if selected_branch_id:
            if selected_branch_id == "-1":
                # Filter expedients without branch
                expedients = expedients.filter(phase__isnull=True)
            else:
                expedients = expedients.filter(phase__law_branch__id=selected_branch_id)

        if selected_headquarters_id:
            if selected_headquarters_id == "-1":
                # Filter expedients without headquarters
                expedients = expedients.filter(headquarters__isnull=True)
            else:
                expedients = expedients.filter(headquarters__id=selected_headquarters_id)

        if selected_state:
            expedients = expedients.filter(state=selected_state)

        if selected_customers:
            expedients = expedients.filter(
                expperrol__person__in=selected_customers, expperrol__role__text_help__iexact="CLIENTE"
            ).distinct()

    return render_to_response(
        "expedient/list.html", {"expedients": expedients, "filter_form": form}, context_instance=RequestContext(request)
    )