Skip to content

Commit

Permalink
Merge pull request #64 from fga-gpp-mds/USB07/procurarProposicao
Browse files Browse the repository at this point in the history
USB07 - Procurar proposição
  • Loading branch information
mateusdemorais authored May 16, 2018
2 parents 7578685 + 1a0d646 commit 2949627
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 2 deletions.
41 changes: 41 additions & 0 deletions api/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from django.db.models import Q


def get_query(self):
query = self.request.GET.get('query')
try:
query_int = int(query)
except (ValueError, TypeError):
query_int = -1

return (query, query_int)


def propositions_filter(self, queryset):
(query, query_int) = get_query(self)

if query:
queryset = queryset.filter(
Q(abstract__contains=query) |
Q(number__contains=query) |
Q(proposition_type__contains=query) |
Q(proposition_type_initials__contains=query) |
Q(year=query_int)
)

return queryset


def user_votes_filter(self, queryset):
(query, query_int) = get_query(self)

if query:
queryset = queryset.filter(
Q(proposition__abstract__contains=query) |
Q(proposition__number__contains=query) |
Q(proposition__proposition_type__contains=query) |
Q(proposition__proposition_type_initials__contains=query) |
Q(proposition__year=query_int)
)

return queryset
8 changes: 6 additions & 2 deletions api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
ParliamentarySerializer, PropositionSerializer,
SocialInformationSerializer, UserSerializer, UserVoteSerializer
)
from .utils import propositions_filter, user_votes_filter


class SocialInformationViewset(mixins.RetrieveModelMixin,
Expand Down Expand Up @@ -517,7 +518,10 @@ class PropositionViewset(mixins.RetrieveModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
serializer_class = PropositionSerializer
queryset = Proposition.objects.all().order_by('-year')

def get_queryset(self):
queryset = Proposition.objects.all().order_by('-year')
return propositions_filter(self, queryset)

@list_route(methods=['get'])
def non_voted(self, request):
Expand Down Expand Up @@ -565,7 +569,7 @@ def get_queryset(self):
else:
queryset = UserVote.objects.none()

return queryset
return user_votes_filter(self, queryset)

def list(self, request):
response = super(UserVoteViewset, self).list(request)
Expand Down

0 comments on commit 2949627

Please sign in to comment.