From 794dea37acfcf1b6473def4446b6efddc0844631 Mon Sep 17 00:00:00 2001 From: LeandroJatai Date: Sat, 17 Sep 2022 14:46:52 -0300 Subject: [PATCH] elimina endpoint obsoleto e migra outro" --- sapl/api/deprecated.py | 145 +-------------------------------------- sapl/api/serializers.py | 116 +++++++++++++++++++++++++++++++ sapl/api/urls.py | 11 +-- sapl/api/views_sessao.py | 13 +++- 4 files changed, 137 insertions(+), 148 deletions(-) diff --git a/sapl/api/deprecated.py b/sapl/api/deprecated.py index 5e6e53306..e13d612f6 100644 --- a/sapl/api/deprecated.py +++ b/sapl/api/deprecated.py @@ -18,7 +18,7 @@ from rest_framework.relations import StringRelatedField from rest_framework.viewsets import GenericViewSet from sapl.api.serializers import AutorSerializer, ModelChoiceSerializer,\ - ChoiceSerializer + ChoiceSerializer, SessaoPlenariaECidadaniaSerializer from sapl.base.models import TipoAutor, Autor, CasaLegislativa from sapl.materia.models import MateriaLegislativa from sapl.parlamentares.models import Legislatura @@ -265,131 +265,6 @@ class AutorChoiceSerializer(ModelChoiceSerializer): fields = ['id', 'nome'] -class MateriaLegislativaOldSerializer(serializers.ModelSerializer): - - class Meta: - model = MateriaLegislativa - fields = '__all__' - - -class SessaoPlenariaOldSerializer(serializers.ModelSerializer): - - codReuniao = serializers.SerializerMethodField('get_pk_sessao') - codReuniaoPrincipal = serializers.SerializerMethodField('get_pk_sessao') - txtTituloReuniao = serializers.SerializerMethodField('get_name') - txtSiglaOrgao = serializers.SerializerMethodField('get_sigla_orgao') - txtApelido = serializers.SerializerMethodField('get_name') - txtNomeOrgao = serializers.SerializerMethodField('get_nome_orgao') - codEstadoReuniao = serializers.SerializerMethodField( - 'get_estadoSessaoPlenaria') - txtTipoReuniao = serializers.SerializerMethodField('get_tipo_sessao') - txtObjeto = serializers.SerializerMethodField('get_assunto_sessao') - txtLocal = serializers.SerializerMethodField('get_endereco_orgao') - bolReuniaoConjunta = serializers.SerializerMethodField( - 'get_reuniao_conjunta') - bolHabilitarEventoInterativo = serializers.SerializerMethodField( - 'get_iterativo') - idYoutube = serializers.SerializerMethodField('get_url') - codEstadoTransmissaoYoutube = serializers.SerializerMethodField( - 'get_estadoTransmissaoYoutube') - datReuniaoString = serializers.SerializerMethodField('get_date') - - # Constantes SessaoPlenaria (de 1-9) (apenas 3 serão usados) - SESSAO_FINALIZADA = 4 - SESSAO_EM_ANDAMENTO = 3 - SESSAO_CONVOCADA = 2 - - # Constantes EstadoTranmissaoYoutube (de 0 a 2) - TRANSMISSAO_ENCERRADA = 2 - TRANSMISSAO_EM_ANDAMENTO = 1 - SEM_TRANSMISSAO = 0 - - class Meta: - model = SessaoPlenaria - fields = ( - 'codReuniao', - 'codReuniaoPrincipal', - 'txtTituloReuniao', - 'txtSiglaOrgao', - 'txtApelido', - 'txtNomeOrgao', - 'codEstadoReuniao', - 'txtTipoReuniao', - 'txtObjeto', - 'txtLocal', - 'bolReuniaoConjunta', - 'bolHabilitarEventoInterativo', - 'idYoutube', - 'codEstadoTransmissaoYoutube', - 'datReuniaoString' - ) - - def __init__(self, *args, **kwargs): - super(SessaoPlenariaOldSerializer, self).__init__(args, kwargs) - - def get_pk_sessao(self, obj): - return obj.pk - - def get_name(self, obj): - return obj.__str__() - - def get_estadoSessaoPlenaria(self, obj): - if obj.finalizada: - return self.SESSAO_FINALIZADA - elif obj.iniciada: - return self.SESSAO_EM_ANDAMENTO - else: - return self.SESSAO_CONVOCADA - - def get_tipo_sessao(self, obj): - return obj.tipo.__str__() - - def get_url(self, obj): - return obj.url_video if obj.url_video else None - - def get_iterativo(self, obj): - return obj.interativa if obj.interativa else False - - def get_date(self, obj): - return "{} {}{}".format( - obj.data_inicio.strftime("%d/%m/%Y"), - obj.hora_inicio, - ":00" - ) - - def get_estadoTransmissaoYoutube(self, obj): - if obj.url_video: - if obj.finalizada: - return self.TRANSMISSAO_ENCERRADA - else: - return self.TRANSMISSAO_EM_ANDAMENTO - else: - return self.SEM_TRANSMISSAO - - def get_assunto_sessao(self, obj): - pauta_sessao = '' - ordem_dia = OrdemDia.objects.filter(sessao_plenaria=obj.pk) - pauta_sessao = ', '.join([i.materia.__str__() for i in ordem_dia]) - - return str(pauta_sessao) - - def get_endereco_orgao(self, obj): - return self.casa().endereco - - def get_reuniao_conjunta(self, obj): - return False - - def get_sigla_orgao(self, obj): - return self.casa().sigla - - def get_nome_orgao(self, obj): - return self.casa().nome - - def casa(self): - casa = CasaLegislativa.objects.first() - return casa - - class AutorListView(ListAPIView): """ Deprecated @@ -617,22 +492,6 @@ class AutoresPossiveisListView(ListAPIView): serializer_class = AutorChoiceSerializer -class MateriaLegislativaViewSet(ListModelMixin, - RetrieveModelMixin, - GenericViewSet): - """ - Deprecated - - TODO Migrar para customização na api automática - """ - - permission_classes = (IsAuthenticated,) - serializer_class = MateriaLegislativaOldSerializer - queryset = MateriaLegislativa.objects.all() - filter_backends = (DjangoFilterBackend,) - filter_fields = ('numero', 'ano', 'tipo',) - - class SessaoPlenariaViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): @@ -643,7 +502,7 @@ class SessaoPlenariaViewSet(ListModelMixin, """ permission_classes = (AllowAny,) - serializer_class = SessaoPlenariaOldSerializer + serializer_class = SessaoPlenariaECidadaniaSerializer queryset = SessaoPlenaria.objects.all() filter_backends = (DjangoFilterBackend,) filter_fields = ('data_inicio', 'data_fim', 'interativa') diff --git a/sapl/api/serializers.py b/sapl/api/serializers.py index 1a779770e..3fae6240d 100644 --- a/sapl/api/serializers.py +++ b/sapl/api/serializers.py @@ -10,6 +10,7 @@ from rest_framework.fields import SerializerMethodField from sapl.base.models import Autor, CasaLegislativa, Metadata from sapl.parlamentares.models import Parlamentar, Mandato, Legislatura +from sapl.sessao.models import OrdemDia, SessaoPlenaria class SaplSerializerMixin(serializers.ModelSerializer): @@ -195,3 +196,118 @@ class ParlamentarSerializerVerbose(SaplSerializerMixin): model = Parlamentar fields = ['id', 'nome_parlamentar', 'fotografia_cropped', 'fotografia', 'ativo', 'partido', 'titular', ] + + +class SessaoPlenariaECidadaniaSerializer(serializers.ModelSerializer): + + codReuniao = serializers.SerializerMethodField('get_pk_sessao') + codReuniaoPrincipal = serializers.SerializerMethodField('get_pk_sessao') + txtTituloReuniao = serializers.SerializerMethodField('get_name') + txtSiglaOrgao = serializers.SerializerMethodField('get_sigla_orgao') + txtApelido = serializers.SerializerMethodField('get_name') + txtNomeOrgao = serializers.SerializerMethodField('get_nome_orgao') + codEstadoReuniao = serializers.SerializerMethodField( + 'get_estadoSessaoPlenaria') + txtTipoReuniao = serializers.SerializerMethodField('get_tipo_sessao') + txtObjeto = serializers.SerializerMethodField('get_assunto_sessao') + txtLocal = serializers.SerializerMethodField('get_endereco_orgao') + bolReuniaoConjunta = serializers.SerializerMethodField( + 'get_reuniao_conjunta') + bolHabilitarEventoInterativo = serializers.SerializerMethodField( + 'get_iterativo') + idYoutube = serializers.SerializerMethodField('get_url') + codEstadoTransmissaoYoutube = serializers.SerializerMethodField( + 'get_estadoTransmissaoYoutube') + datReuniaoString = serializers.SerializerMethodField('get_date') + + # Constantes SessaoPlenaria (de 1-9) (apenas 3 serão usados) + SESSAO_FINALIZADA = 4 + SESSAO_EM_ANDAMENTO = 3 + SESSAO_CONVOCADA = 2 + + # Constantes EstadoTranmissaoYoutube (de 0 a 2) + TRANSMISSAO_ENCERRADA = 2 + TRANSMISSAO_EM_ANDAMENTO = 1 + SEM_TRANSMISSAO = 0 + + class Meta: + model = SessaoPlenaria + fields = ( + 'codReuniao', + 'codReuniaoPrincipal', + 'txtTituloReuniao', + 'txtSiglaOrgao', + 'txtApelido', + 'txtNomeOrgao', + 'codEstadoReuniao', + 'txtTipoReuniao', + 'txtObjeto', + 'txtLocal', + 'bolReuniaoConjunta', + 'bolHabilitarEventoInterativo', + 'idYoutube', + 'codEstadoTransmissaoYoutube', + 'datReuniaoString' + ) + + def get_pk_sessao(self, obj): + return obj.pk + + def get_name(self, obj): + return obj.__str__() + + def get_estadoSessaoPlenaria(self, obj): + if obj.finalizada: + return self.SESSAO_FINALIZADA + elif obj.iniciada: + return self.SESSAO_EM_ANDAMENTO + else: + return self.SESSAO_CONVOCADA + + def get_tipo_sessao(self, obj): + return obj.tipo.__str__() + + def get_url(self, obj): + return obj.url_video if obj.url_video else None + + def get_iterativo(self, obj): + return obj.interativa if obj.interativa else False + + def get_date(self, obj): + return "{} {}{}".format( + obj.data_inicio.strftime("%d/%m/%Y"), + obj.hora_inicio, + ":00" + ) + + def get_estadoTransmissaoYoutube(self, obj): + if obj.url_video: + if obj.finalizada: + return self.TRANSMISSAO_ENCERRADA + else: + return self.TRANSMISSAO_EM_ANDAMENTO + else: + return self.SEM_TRANSMISSAO + + def get_assunto_sessao(self, obj): + pauta_sessao = '' + ordem_dia = OrdemDia.objects.filter(sessao_plenaria=obj.pk) + pauta_sessao = ', '.join([i.materia.__str__() for i in ordem_dia]) + + return str(pauta_sessao) + + def get_endereco_orgao(self, obj): + return self.casa().endereco + + def get_reuniao_conjunta(self, obj): + return False + + def get_sigla_orgao(self, obj): + return self.casa().sigla + + def get_nome_orgao(self, obj): + return self.casa().nome + + def casa(self): + casa = CasaLegislativa.objects.first() + return casa diff --git a/sapl/api/urls.py b/sapl/api/urls.py index 50d7241a7..3032f1707 100644 --- a/sapl/api/urls.py +++ b/sapl/api/urls.py @@ -3,9 +3,8 @@ from django.conf.urls import include, url from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, \ SpectacularRedocView from rest_framework.authtoken.views import obtain_auth_token -from rest_framework.routers import DefaultRouter -from sapl.api.deprecated import MateriaLegislativaViewSet, SessaoPlenariaViewSet, \ +from sapl.api.deprecated import SessaoPlenariaViewSet, \ AutoresProvaveisListView, AutoresPossiveisListView, AutorListView from sapl.api.views import AppVersionView, recria_token,\ SaplApiViewSetConstrutor @@ -17,8 +16,12 @@ app_name = AppConfig.name router = SaplApiViewSetConstrutor.router() -router.register(r'materia$', MateriaLegislativaViewSet) -router.register(r'sessao-plenaria', SessaoPlenariaViewSet) +# TODO: eliminar endpoint, transferido para SaplApiViewSetConstrutor +# verificar se ainda permanece necessidade desses endpoint's +# /api/sessao-planaria -> /api/sessao/sessaoplenaria/ecidadania +# /api/sessao-planaria/{pk} -> /api/sessao/sessaoplenaria/{pk}/ecidadania +router.register(r'sessao-plenaria', SessaoPlenariaViewSet, + basename='sessao_plenaria_old') urlpatterns_router = router.urls diff --git a/sapl/api/views_sessao.py b/sapl/api/views_sessao.py index fc6f20a5b..44d157773 100644 --- a/sapl/api/views_sessao.py +++ b/sapl/api/views_sessao.py @@ -5,7 +5,8 @@ from rest_framework.response import Response from drfautoapi.drfautoapi import ApiViewSetConstrutor, \ customize, wrapper_queryset_response_for_drf_action -from sapl.api.serializers import ChoiceSerializer +from sapl.api.serializers import ChoiceSerializer,\ + SessaoPlenariaECidadaniaSerializer from sapl.sessao.models import SessaoPlenaria, ExpedienteSessao from sapl.utils import choice_anos_com_sessaoplenaria @@ -34,3 +35,13 @@ class _SessaoPlenariaViewSet: @wrapper_queryset_response_for_drf_action(model=ExpedienteSessao) def get_expedientes(self): return self.get_queryset().filter(sessao_plenaria_id=self.kwargs['pk']) + + @action(detail=True) + def ecidadania(self, request, *args, **kwargs): + self.serializer_class = SessaoPlenariaECidadaniaSerializer + return self.retrieve(request, *args, **kwargs) + + @action(detail=False, url_path='ecidadania') + def ecidadania_list(self, request, *args, **kwargs): + self.serializer_class = SessaoPlenariaECidadaniaSerializer + return self.list(request, *args, **kwargs)