def search(terms,
           active=None,
           visibility=None,
           connected_adviser=None,
           offers=None):
    queryset = PropositionDissertation.objects.all()
    if terms:
        queryset = queryset.filter(
            Q(title__icontains=terms) | Q(description__icontains=terms)
            | Q(author__person__first_name__icontains=terms)
            | Q(author__person__middle_name__icontains=terms)
            | Q(author__person__last_name__icontains=terms)
            | Q(propositionoffer__offer_proposition__acronym__icontains=terms))

    if active:
        queryset = queryset.filter(active=active)

    if offers:
        proposition_ids = proposition_offer.find_by_offers(offers).values(
            'proposition_dissertation_id')
        queryset = queryset.filter(pk__in=proposition_ids)

    if visibility and connected_adviser:
        queryset = queryset.filter(
            Q(visibility=visibility) | Q(author=connected_adviser))

    elif visibility:
        queryset = queryset.filter(visibility=visibility)

    return queryset.distinct()
Beispiel #2
0
def search_by_offers(offers):
    proposition_ids = proposition_offer.find_by_offers(offers).values('proposition_dissertation_id')
    return PropositionDissertation.objects.filter(pk__in=proposition_ids, active=True, visibility=True)
def search_by_offers(offers):
    proposition_ids = proposition_offer.find_by_offers(offers).values('proposition_dissertation_id')
    return PropositionDissertation.objects.filter(pk__in=proposition_ids, active=True, visibility=True)