Browse Source

Refatora SessaoPlenariaSerializer (#1144)

* Refatora SessaoPlenariaSerializer
	Mapeia informações do JSON para padrão E-Cidadania

Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com>

* Corrige erro de migração
	A migração do app 'base' só é executada após o job de migração passar
	pelo app 'api'. Dessa maneira, o atributo
	'SessaoPlenariaSerializer.casa' gerava um erro na base de dados.

Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com>
pull/1192/head
Eliseu Egewarth 8 years ago
committed by Edward
parent
commit
8107a6947f
  1. 124
      sapl/api/serializers.py

124
sapl/api/serializers.py

@ -1,8 +1,8 @@
from rest_framework import serializers from rest_framework import serializers
from sapl.base.models import Autor from sapl.base.models import Autor, CasaLegislativa
from sapl.materia.models import MateriaLegislativa from sapl.materia.models import MateriaLegislativa
from sapl.sessao.models import SessaoPlenaria from sapl.sessao.models import SessaoPlenaria, OrdemDia
class ChoiceSerializer(serializers.Serializer): class ChoiceSerializer(serializers.Serializer):
@ -58,21 +58,113 @@ class MateriaLegislativaSerializer(serializers.ModelSerializer):
class SessaoPlenariaSerializer(serializers.ModelSerializer): class SessaoPlenariaSerializer(serializers.ModelSerializer):
tipo = serializers.StringRelatedField(many=False) codReuniao = serializers.SerializerMethodField('get_pk_sessao')
sessao_legislativa = serializers.StringRelatedField(many=False) codReuniaoPrincipal = serializers.SerializerMethodField('get_pk_sessao')
legislatura = serializers.StringRelatedField(many=False) 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: class Meta:
model = SessaoPlenaria model = SessaoPlenaria
fields = ('pk', fields = (
'tipo', 'codReuniao',
'sessao_legislativa', 'codReuniaoPrincipal',
'legislatura', 'txtTituloReuniao',
'data_inicio', 'txtSiglaOrgao',
'hora_inicio', 'txtApelido',
'hora_fim', 'txtNomeOrgao',
'url_video', 'codEstadoReuniao',
'iniciada', 'txtTipoReuniao',
'finalizada', 'txtObjeto',
'interativa' 'txtLocal',
'bolReuniaoConjunta',
'bolHabilitarEventoInterativo',
'idYoutube',
'codEstadoTransmissaoYoutube',
'datReuniaoString'
) )
def __init__(self, *args, **kwargs):
super(SessaoPlenariaSerializer, self).__init__(args, kwargs)
casa = CasaLegislativa.objects.first()
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

Loading…
Cancel
Save