diff --git a/sapl/api/serializers.py b/sapl/api/serializers.py index 5de03819b..87bfc7440 100644 --- a/sapl/api/serializers.py +++ b/sapl/api/serializers.py @@ -62,20 +62,18 @@ class ParlamentarResumeSerializer(serializers.ModelSerializer): partido = serializers.SerializerMethodField('check_partido') def check_titular(self,obj): - if self.context.get('legislatura',None): - legislatura = self.context['legislatura'] - else: - legislatura = Legislatura.objects.first() - - mandato = Mandato.objects.filter(legislatura=legislatura,parlamentar=obj).first() + legislatura = self.context.get('legislatura') + if not legislatura: + legislatura = Legislatura.objects.first().id + mandato = Mandato.objects.filter(legislatura__id=legislatura,parlamentar=obj).first() return mandato.titular if mandato else False def check_partido(self,obj): - if self.context.get('legislatura',None): - legislatura = Legislatura.objects.get(id=self.context['legislatura']) - else: + legislatura_id = self.context.get('legislatura') + if not legislatura_id: legislatura = Legislatura.objects.first() - + else: + legislatura = Legislatura.objects.get(id=legislatura_id) filiacao = filiacao_data(obj, legislatura.data_inicio, legislatura.data_fim) return filiacao diff --git a/sapl/api/views.py b/sapl/api/views.py index c9d99295d..92af46e00 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -31,6 +31,7 @@ from sapl.protocoloadm.models import DocumentoAdministrativo,\ DocumentoAcessorioAdministrativo, TramitacaoAdministrativo, Anexado from sapl.sessao.models import SessaoPlenaria, ExpedienteSessao from sapl.utils import models_with_gr_for_model, choice_anos_com_sessaoplenaria +from sapl.parlamentares.models import Mandato, Parlamentar class BusinessRulesNotImplementedMixin: @@ -303,6 +304,16 @@ class _AutorViewSet: @customize(Parlamentar) class _ParlamentarViewSet: + class ParlamentarPermission(SaplModelPermissions): + def has_permission(self, request, view): + if request.method == 'GET': + return True + else: + perm = super().has_permission(request, view) + return perm + + permission_classes = (ParlamentarPermission, ) + @action(detail=True) def proposicoes(self, request, *args, **kwargs): """ @@ -339,16 +350,13 @@ class _ParlamentarViewSet: """ Pega lista de parlamentares pelo id da legislatura. """ - from sapl.parlamentares.models import Mandato, Parlamentar - mandatos = Mandato.objects.filter(legislatura__id=kwargs['pk']).values_list('parlamentar') - parlamentares = Parlamentar.objects.filter(id__in=[m[0] for m in mandatos]) + parlamentares = Parlamentar.objects.filter(mandato__legislatura=kwargs['pk']) serializer_class = ParlamentarResumeSerializer(parlamentares,many=True,context={'legislatura':kwargs['pk']}) - return Response(serializer_class.data) - @action(detail=False, methods=['post']) + @action(detail=False,methods=['GET']) def search_parlamentares(self,request,*args,**kwargs): - nome = request.data.get('nome_parlamentar','') + nome = request.query_params.get('nome_parlamentar','') parlamentares = Parlamentar.objects.filter(nome_parlamentar__icontains=nome) serializer_class= ParlamentarResumeSerializer(parlamentares,many=True) return Response(serializer_class.data) diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index e576eefc0..6e175bafe 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -96,4 +96,3 @@ urlpatterns = [ get_sessoes_legislatura, name='get_sessoes_legislatura'), ] - diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index a69bab243..af16dd6df 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -1,7 +1,6 @@ from datetime import datetime import json import logging -import os from django.contrib import messages from django.contrib.auth.mixins import PermissionRequiredMixin @@ -22,7 +21,6 @@ from django.views.generic import FormView from django.views.generic.edit import UpdateView from django_filters.views import FilterView from image_cropping.utils import get_backend -from django.core import serializers from sapl.base.forms import SessaoLegislativaForm, PartidoForm @@ -33,7 +31,7 @@ from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud, make_pagination) from sapl.materia.models import Autoria, Proposicao, Relatoria from sapl.parlamentares.apps import AppConfig -from sapl.utils import (parlamentares_ativos, show_results_filter_set,filiacao_data) +from sapl.utils import (parlamentares_ativos, show_results_filter_set) from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, ParlamentarCreateForm, ParlamentarForm, VotanteForm, @@ -1205,4 +1203,4 @@ def get_sessoes_legislatura(request): for s in SessaoLegislativa.objects.filter(legislatura_id=legislatura_id): json_response['sessoes_legislativas'].append( (s.id, str(s)) ) - return JsonResponse(json_response) + return JsonResponse(json_response) \ No newline at end of file