class CustomResourceSerializer(HalModelSerializer): related_resource_2 = RelatedResource2Serializer(read_only=True) related_resource_3 = HalHyperlinkedIdentityField( read_only=True, view_name='relatedresource3-detail', lookup_field='name') custom_link = HalHyperlinkedSerializerMethodField() custom_link_empty = HalHyperlinkedSerializerMethodField() name = HalContributeToLinkField(place_on='related_resource_3', property_name='title') class Meta: model = CustomResource fields = ( 'self', 'name', 'related_resource_2', 'related_resource_3', 'custom_link', 'custom_link_empty', ) def get_name(self, obj): return obj.name def get_custom_link(self, obj): return 'http://www.example.com' def get_custom_link_empty(self, obj): return None
class SistemaCulturaDetailSerializer(PlanoTrabalhoSCSerializer): self = HalHyperlinkedIdentityField(view_name='api:planotrabalho-detail') sistema_cultura_local = \ HalHyperlinkedIdentityField(view_name='api:sistemacultura-detail') class Meta: model = SistemaCultura fields = ("self", "id", "criacao_lei_sistema", "criacao_orgao_gestor", "criacao_conselho_cultural", "criacao_fundo_cultura", "criacao_plano_cultura", "sistema_cultura_local") def to_representation(self, instance): context = super(SistemaCulturaDetailSerializer, self).\ to_representation(instance) embedded = context.pop('_embedded') responseContext = context.copy() responseContext.update(embedded) return responseContext
class PlanoTrabalhoSCSerializer(hal_serializers.HalModelSerializer): criacao_lei_sistema = ComponenteSCSerializer(source='legislacao') criacao_orgao_gestor = ComponenteSCSerializer(source='orgao_gestor') criacao_plano_cultura = ComponenteSCSerializer(source='plano') criacao_fundo_cultura = FundoComponenteSerializer(source='fundo_cultura') criacao_conselho_cultural = ComponenteSCSerializer(source='conselho') # _embedded = serializers.SerializerMethodField(method_name='get_embedded') self = HalHyperlinkedIdentityField(view_name='api:planotrabalho-detail') class Meta: model = SistemaCultura fields = ('id', 'self', 'criacao_lei_sistema', 'criacao_orgao_gestor', 'criacao_plano_cultura', 'criacao_fundo_cultura', 'criacao_conselho_cultural')
class SistemaCulturaSerializer(hal_serializers.HalModelSerializer): self = HalHyperlinkedIdentityField(view_name='api:sistemacultura-detail') acoes_plano_trabalho = serializers.SerializerMethodField() ente_federado = EnteFederadoSerializer() governo = GestorSerializer(source='gestor') situacao_adesao = serializers.CharField( source='get_estado_processo_display') cod_situacao_adesao = serializers.CharField(source='estado_processo') data_adesao = serializers.DateField(source='data_publicacao_acordo') conselho = ConselhoComponenteSerializer() sede = SedeSerializer() class Meta: model = SistemaCultura fields = ("id", "self", "data_adesao", "situacao_adesao", "cod_situacao_adesao", "conferencia_nacional", "acoes_plano_trabalho", "ente_federado", "governo", "conselho", "sede") def get_acoes_plano_trabalho(self, obj): planotrabalho = PlanoTrabalhoSCSerializer(instance=obj, context=self.context) return planotrabalho.data
class PlanoTrabalhoSerializer(hal_serializers.HalModelSerializer): criacao_lei_sistema_cultura = serializers.SerializerMethodField( source='criacao_sistema') criacao_orgao_gestor = serializers.SerializerMethodField( source='orgao_gestor') criacao_plano_cultura = serializers.SerializerMethodField( source='plano_cultura') criacao_fundo_cultura = serializers.SerializerMethodField( source='fundo_cultura') criacao_conselho_cultural = serializers.SerializerMethodField( source='conselho_cultural') _embedded = serializers.SerializerMethodField(method_name='get_embedded') self = HalHyperlinkedIdentityField(view_name='api:planotrabalho-detail') class Meta: model = PlanoTrabalho fields = ('id', 'self', 'criacao_lei_sistema_cultura', 'criacao_orgao_gestor', 'criacao_conselho_cultural', 'criacao_fundo_cultura', 'criacao_plano_cultura', '_embedded') def get_sistema_cultura_local(self, obj): try: obj.usuario except Usuario.DoesNotExist: return None if obj.usuario.municipio is not None: context = {} context['request'] = self.context['request'] serializer = MunicipioLinkSerializer(obj.usuario.municipio, context=context) return serializer.data else: return None def get_embedded(self, obj): municipio = self.get_sistema_cultura_local(obj=obj) embedded = ({'sistema_cultura_local': municipio}) return embedded def get_criacao_orgao_gestor(self, obj): if obj.orgao_gestor is not None: serializer = OrgaoGestorSerializer(obj.orgao_gestor) return serializer.data else: return None def get_criacao_plano_cultura(self, obj): if obj.plano_cultura is not None: serializer = PlanoCulturaSerializer(obj.plano_cultura) return serializer.data else: return None def get_criacao_fundo_cultura(self, obj): if obj.fundo_cultura is not None: serializer = FundoCulturaSerializer(obj.fundo_cultura) return serializer.data else: return None def get_criacao_lei_sistema_cultura(self, obj): if obj.criacao_sistema is not None: serializer = CriacaoSistemaSerializer(obj.criacao_sistema) return serializer.data else: return None def get_criacao_conselho_cultural(self, obj): if obj.conselho_cultural is not None: serializer = ConselhoCulturalSerializer(obj.conselho_cultural) return serializer.data else: return None
class MunicipioSerializer(hal_serializers.HalModelSerializer): ente_federado = serializers.SerializerMethodField() governo = serializers.SerializerMethodField() conselho = serializers.SerializerMethodField() _embedded = serializers.SerializerMethodField(method_name='get_embedded') situacao_adesao = serializers.SerializerMethodField() data_adesao = serializers.DateField( source='usuario.data_publicacao_acordo') self = HalHyperlinkedIdentityField(view_name='api:municipio-detail') class Meta: model = Municipio fields = ('id', 'self', '_embedded', 'ente_federado', 'governo', 'conselho', 'situacao_adesao', 'data_adesao') def get_conselho(self, obj): try: conselho = obj.usuario.plano_trabalho.conselho_cultural conselheiros = conselho.conselheiro_set.filter( conselho_id=conselho) except AttributeError: return None lista = list(range(len(conselheiros))) for i in range(len(conselheiros)): while i <= len(conselheiros): serializer = ConselheiroSerializer(conselheiros[i]) lista[i] = serializer.data break if conselheiros is None: return None else: return ({'conselheiros': lista}) def get_embedded(self, obj): embedded = ({ 'acoes_plano_trabalho': self.get_acoes_plano_trabalho(obj=obj) }) return embedded def get_acoes_plano_trabalho(self, obj): try: plano_trabalho = obj.usuario.plano_trabalho assert plano_trabalho except (Usuario.DoesNotExist, AssertionError): return None context = {} context['request'] = self.context['request'] serializer = PlanoTrabalhoSerializer(instance=plano_trabalho, context=context) return serializer.data def get_ente_federado(self, obj): localizacao = Localizacao(estado=obj.estado, cidade=obj.cidade, cep=obj.cep, bairro=obj.bairro, endereco=obj.endereco, complemento=obj.complemento) telefones = Telefones(telefone_um=obj.telefone_um, telefone_dois=obj.telefone_dois, telefone_tres=obj.telefone_tres) ente_federado = EnteFederado( cnpj_prefeitura=obj.cnpj_prefeitura, localizacao=localizacao, endereco_eletronico=obj.endereco_eletronico, telefones=telefones) serializer = EnteFederadoSerializer(ente_federado) return serializer.data def get_governo(self, obj): governo = Governo( nome_prefeito=obj.nome_prefeito, email_institucional_prefeito=obj.email_institucional_prefeito, termo_posse_prefeito=obj.termo_posse_prefeito) serializer = GovernoSerializer(governo) return serializer.data def get_situacao_adesao(self, obj): try: processo = obj.usuario.get_estado_processo_display() serializer = {'situacao_adesao': processo} except AttributeError: serializer = None return serializer
class MunicipioLinkSerializer(hal_serializers.HalModelSerializer): self = HalHyperlinkedIdentityField(view_name='api:municipio-detail') class Meta: model = Municipio fields = ('self', )
class PlanoTrabalhoSCSerializer(hal_serializers.HalModelSerializer): criacao_lei_sistema = ComponenteSCSerializer(source='legislacao') criacao_orgao_gestor = OrgaoComponenteSerializer(source='orgao_gestor') criacao_orgao_gestor_cnpj = serializers.SerializerMethodField() criacao_conselho_cultural_ata = ComponenteSCSerializer(source='conselho') criacao_conselho_cultural_lei = serializers.SerializerMethodField() criacao_fundo_cultura = FundoComponenteSerializer(source='fundo_cultura') criacao_fundo_cultura_cnpj = serializers.SerializerMethodField() criacao_plano_cultura = ComponenteSCSerializer(source='plano') criacao_plano_metas = serializers.SerializerMethodField() self = HalHyperlinkedIdentityField(view_name='api:planotrabalho-detail') def get_criacao_conselho_cultural_lei(self, obj): if getattr(obj.conselho, 'lei', None): return ComponenteSCSerializer(instance=obj.conselho.lei, context=self.context).data context = super(PlanoTrabalhoSCSerializer, self).to_representation(instance) context['_embedded']['criacao_conselho_cultural_lei'] = context[ 'criacao_conselho_cultural_lei'] del context['criacao_conselho_cultural_lei'] return None def get_criacao_fundo_cultura_cnpj(self, obj): if getattr(obj.fundo_cultura, 'comprovante_cnpj', None): return ComponenteSCSerializer( instance=obj.fundo_cultura.comprovante_cnpj, context=self.context).data return None def get_criacao_orgao_gestor_cnpj(self, obj): if getattr(obj.orgao_gestor, 'comprovante_cnpj', None): return ComponenteSCSerializer( instance=obj.orgao_gestor.comprovante_cnpj, context=self.context).data return None def get_criacao_plano_metas(self, obj): if getattr(obj.plano, 'metas', None): return ComponenteSCSerializer(instance=obj.plano.metas, context=self.context).data return None def to_representation(self, instance): context = super(PlanoTrabalhoSCSerializer, self).to_representation(instance) context['_embedded']['criacao_orgao_gestor_cnpj'] = context[ 'criacao_orgao_gestor_cnpj'] del context['criacao_orgao_gestor_cnpj'] context['_embedded']['criacao_conselho_cultural_lei'] = context[ 'criacao_conselho_cultural_lei'] del context['criacao_conselho_cultural_lei'] context['_embedded']['criacao_fundo_cultura_cnpj'] = context[ 'criacao_fundo_cultura_cnpj'] del context['criacao_fundo_cultura_cnpj'] context['_embedded']['criacao_plano_metas'] = context[ 'criacao_plano_metas'] del context['criacao_plano_metas'] return context class Meta: model = SistemaCultura fields = ( 'id', 'self', 'criacao_lei_sistema', 'criacao_orgao_gestor', 'criacao_orgao_gestor_cnpj', 'criacao_conselho_cultural_lei', 'criacao_conselho_cultural_ata', 'criacao_fundo_cultura', 'criacao_fundo_cultura_cnpj', 'criacao_plano_cultura', 'criacao_plano_metas', )
class MunicipioSerializer(hal_serializers.HalModelSerializer): ente_federado = serializers.SerializerMethodField() governo = serializers.SerializerMethodField() conselho = serializers.SerializerMethodField() _embedded = serializers.SerializerMethodField(method_name='get_embedded') situacao_adesao = serializers.SerializerMethodField() self = HalHyperlinkedIdentityField(view_name='api:municipio-detail') class Meta: model = Municipio fields = ('id','self','_embedded','ente_federado','governo','conselho', 'situacao_adesao',) # Retornando a lista de conselheiros do ConselhoCultural def get_conselho(self, obj): try: conselho = obj.usuario.plano_trabalho.conselho_cultural conselheiros = conselho.conselheiro_set.filter(conselho_id=conselho) except AttributeError: return None lista = list(range(len(conselheiros))) for i in range(len(conselheiros)): while i <= len(conselheiros): serializer = ConselheiroSerializer(conselheiros[i]) lista[i] = serializer.data break if conselheiros is None: return None else: return ({'conselheiros': lista}) # Retorna recursos embedded seguindo o padrão hal def get_embedded(self,obj): embedded = ({'acoes_plano_trabalho':self.get_acoes_plano_trabalho(obj=obj)}) return embedded # Retorna o plano de trabalho do municipio def get_acoes_plano_trabalho(self,obj): # Checa se existe usuário atrelado ao muncipio try: plano_trabalho = obj.usuario.plano_trabalho except Usuario.DoesNotExist: return None # Checa se o usuario tem um plano de trabalho válido if(plano_trabalho is None): return None # Request Context context = {} context['request'] = self.context['request'] serializer = PlanoTrabalhoSerializer(instance=plano_trabalho,context=context) return serializer.data # Estrutura dados no objeto ente_federado def get_ente_federado(self,obj): localizacao = Localizacao(estado=obj.estado, cidade=obj.cidade, cep=obj.cep, bairro=obj.bairro, endereco=obj.endereco, complemento=obj.complemento) telefones = Telefones(telefone_um=obj.telefone_um, telefone_dois=obj.telefone_dois, telefone_tres=obj.telefone_tres) ente_federado = EnteFederado(cnpj_prefeitura=obj.cnpj_prefeitura,localizacao=localizacao, endereco_eletronico=obj.endereco_eletronico, telefones=telefones) serializer = EnteFederadoSerializer(ente_federado) return serializer.data # Estrutura dados no objeto governo def get_governo(self,obj): governo = Governo(nome_prefeito=obj.nome_prefeito, email_institucional_prefeito=obj.email_institucional_prefeito, termo_posse_prefeito=obj.termo_posse_prefeito) serializer = GovernoSerializer(governo) return serializer.data def get_situacao_adesao(self,obj): try: processo = obj.usuario.get_estado_processo_display() serializer = {'situacao_adesao': processo} except AttributeError: serializer = None return serializer