示例#1
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
class MunicipioLinkSerializer(hal_serializers.HalModelSerializer):
    self = HalHyperlinkedIdentityField(view_name='api:municipio-detail')

    class Meta:
        model = Municipio
        fields = ('self', )
示例#8
0
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',
        )
示例#9
0
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