class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracoesSerializer(many=True)
    endereco = EnderecoSerializer()
    comentarios = ComentarioSerializer(many=True)
    avaliacoes = AvaliacaoSerializer(many=True)
    descricao_completa_01 = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        fields = (
            'id',
            'nome',
            'descricao',
            'aprovado',
            'atracoes',
            'comentarios',
            'avaliacoes',
            'endereco',
            'foto',
            'descricao_completa_01',
            'descricao_completa_02',
        )

    def get_descricao_completa_01(self, obj):
        return '{0} - {1}'.format(obj.nome, obj.descricao)
예제 #2
0
class PontoTuristicoSerializer(serializers.ModelSerializer):

    attractions = serializers.StringRelatedField(many=True, read_only=True)

    address = EnderecoSerializer(many=False)
    complete_description = SerializerMethodField(
    )  # serve para retornar um campo customizado

    def get_complete_description(self, obj):
        return '%s - %s ' % (obj.name, obj.description)

    class Meta:
        model = PontoTuristico
        fields = [
            'id', 'name', 'photo', 'attractions', 'description', 'address',
            'complete_description', 'complete_description2'
        ]

    def create(self, validated_data):

        address_data = validated_data.pop('address')
        address = Endereco.objects.create(**address_data)
        ponto_turistico = PontoTuristico.objects.create(address=address,
                                                        **validated_data)

        return ponto_turistico
예제 #3
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracoesSerializer(many=True)
    endereco = EnderecoSerializer()
    doc_id = DocIdentificacaoSerializer()

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        endereco = validated_data['endereco']
        del validated_data['endereco']

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_atracoes(atracoes, ponto)

        end = Endereco.objects.create(**endereco)
        ponto.endereco = end
        ponto.save()
        return ponto

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'status', 'descricacao', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco', 'foto', 'doc_id')
        ready_only_fields = ('comentarios', 'avaliacoes')
예제 #4
0
class pontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)  #relaçao muitos pra muitos
    endereco = EnderecoSerializer()

    class Meta:
        model = pontoTuristico
        fields = ('id', 'nome', 'descricao', 'status', 'endereco', 'foto',
                  'atracoes', 'comentarios')
        read_only_fields = ['comentarios']

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']  #manytomany relacionamentos

        #relacionamento com chave estrangeira FK
        endereco = validated_data['endereco']
        del validated_data['endereco']

        ponto = pontoTuristico.objects.create(**validated_data)
        self.cria_atracoes(atracoes, ponto)

        end = Endereco.objects.create(**endereco)
        ponto.endereco = end
        ponto.save()

        #relacionamento de 1-1

        return ponto
예제 #5
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracoesSerializer(many=True)
    endereco = EnderecoSerializer()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'foto', 'atracoes', 'endereco')
class PontoTuristicoSerializer (ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'atracoes', 'comentarios', 'avaliacoes', 'endereco', 'descricao_completa')
예제 #7
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer(read_only=True)
    comentarios = ComentarioSerializer(many=True, read_only=True)
    avaliacoes = AvaliacaoSerializer(many=True, read_only=True)
    descricao_completa = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco',
                  'descricao_completa', 'teste')
        ready_only_fields = {'comentarios', 'avaliacoes'}

    def cia_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)
        return

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']
        ponto = PontoTuristico.opbjects.create(**validated_data)
        self.cia_atracoes(atracoes, ponto)
        return ponto

    def get_descricao_completa(self, obj):

        return '%s - %s ' % (obj.nome, obj.descricao)
예제 #8
0
class PontoTuristicoSerializer(ModelSerializer):
    Avaliacoes = AvaliacaoSerializer(many=True)
    Comentarios = ComentarioSerializer(many=True)
    atracoes = AtracaoSerializer(many=True)
    Endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        fields = [
            'id',
            'nome',
            'descricao',
            'aprovado',
            'foto',
            # Foreign Keys/ManyToMany
            'atracoes',
            'Comentarios',
            'Avaliacoes',
            'Endereco',
            # Incluido do SerializerMethodField
            'descricao_completa',
        ]

    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #9
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    comentarios = ComentarioSerializer(many=True)
    avaliacoes = AvaliacaoSerializer(many=True)
    enderecos = EnderecoSerializer()
    doc_identificacao = DocIdentificacaoSerializer()
    descricao_completa = SerializerMethodField(read_only=True)
    criado_em = DateTimeField(read_only=True, format="%d/%m/%Y %H:%M:%S")

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'enderecos',
                  'doc_identificacao', 'descricao_completa', 'criado_em')

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def cria_comentarios(self, comentarios, ponto):
        for comentario in comentarios:
            co = Comentario.objects.create(**comentario)
            ponto.comentarios.add(co)

    def cria_avaliacoes(self, avaliacoes, ponto):
        for avaliacao in avaliacoes:
            av = Avaliacao.objects.create(**avaliacao)
            ponto.avaliacoes.add(av)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        enderecos = validated_data['enderecos']
        comentarios = validated_data['comentarios']
        avaliacoes = validated_data['avaliacoes']
        doc = validated_data['doc_identificacao']
        del validated_data['atracoes']
        del validated_data['enderecos']
        del validated_data['comentarios']
        del validated_data['avaliacoes']
        del validated_data['doc_identificacao']

        ponto = PontoTuristico.objects.create(**validated_data)

        self.cria_atracoes(atracoes, ponto)
        self.cria_comentarios(comentarios, ponto)
        self.cria_avaliacoes(avaliacoes, ponto)

        end = Endereco.objects.create(**enderecos)
        ponto.enderecos = end

        doci = DocIdentificacao.objects.create(**doc)
        ponto.doc_identificacao = doci

        ponto.save()
        return ponto

    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #10
0
class CoworkingSerializer(serializers.ModelSerializer):
    endereco = EnderecoSerializer()

    class Meta:
        model = Coworking
        fields = [
            'id', 'logo', 'nome', 'descricao', 'ativo', 'status', 'endereco'
        ]
예제 #11
0
def api_detail_enderecos(request, id):
    try:
        endereco = Endereco.objects.get(id=id)
    except Endereco.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == "GET":
        serializer = EnderecoSerializer(endereco)
        return Response(serializer.data)
예제 #12
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(
        many=True)  # Usamos many quando temos relação de 1 para muitos
    enderecos = EnderecoSerializer()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco')
class PontoTuristicoSerializer(ModelSerializer):
    # NestedRelationShip Carrega os objetos internos
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()

    #doc_identificacao

    class Meta:
        model = PontoTuristico
        fields = [
            'id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
            'comentarios', 'avaliacoes', 'endereco', 'descricao_completa',
            'descricao_completa2'
        ]
        read_only_fields = ('comentarios', 'avaliacoes')

    # Salvando requests com objetos relacionados
    # Modelo ManyToMany
    # Objetos secundarios
    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

# Cria o registro principal e faz a chamada para inserir os objs secundarios

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        print(validated_data)

        endereco = validated_data['endereco']
        del validated_data['endereco']

        #doc = validated_data['doc_identificacao']
        #del validated_data['doc_identificacao']
        #doci = DocIdentificacao.objects.create(**doc)

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_atracoes(atracoes, ponto)

        end = Endereco.objects.create(**endereco)
        ponto.endereco = end
        #ponto.doc_identificacao = doci

        ponto.save()

        return ponto

    # Funciona como um 'transient' (para nao precisar gravar isso no banco)
    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #14
0
class PontoTuristicoSerializer(ModelSerializer):
    descricao_completa = SerializerMethodField()
    atracoes = AtracaoSerializer(many=True, read_only=True)
    endereco = EnderecoSerializer(many=False, read_only=True)

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao_completa', 'descricao_completa2', 'aprovado', 'foto', 'endereco', 'atracoes')

    def get_descricao_completa(self, obj):
        return '%s - %s' % ('Descricao', obj.descricao)
class PontoTuristicoSerializer(ModelSerializer):
    #é preciso botar read_only -> por conta não se obrigado quando for feito o post (assim vai ignorar esse campo memso se mandar
    # atracoes = AtracaoSerializer(many=True, read_only=True)
    #relacionamento manyToMany
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()
    doc_identificador = DocIdentificadorSerializer()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco', 'doc_identificador',
                  'descricao_completa', 'descricao_completa2')
        read_only_fields = ('comentarios', 'avaliacoes')

    def criar_doc_identificador(self, documento, ponto_turistico):
        doc = DocIdentificador.objects.create(**documento)
        ponto_turistico.doc_identificador = doc

    def criar_atracoes(self, atracoes, ponto_turistico):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto_turistico.atracoes.add(at)

    def criar_endereco(self, endereco, ponto_turistico):
        end = Endereco.objects.create(**endereco)
        ponto_turistico.endereco = end

    #para criar a variável que se relaciona
    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        #deletando
        del validated_data['atracoes']
        endereco = validated_data['endereco']
        del validated_data['endereco']

        documento = validated_data['doc_identificador']
        del validated_data['doc_identificador']

        ponto_turistico = PontoTuristico.objects.create(**validated_data)
        self.criar_atracoes(atracoes, ponto_turistico)
        self.criar_endereco(endereco, ponto_turistico)
        self.criar_doc_identificador(documento, ponto_turistico)

        ponto_turistico.save()

        return ponto_turistico

    def get_descricao_completa(self, obj):
        #pode pegar atributos do objeto que nem estão sendo usado
        #nos fields
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #16
0
class PontoTuristicoSerializer(ModelSerializer):
    # *** Nested relationships - Traz todos os campos do models relacionados ***
    # *** O parâmetro read_only=True serve para incluirmos via post os campos que são obrigatórios no model ***
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()
    doc_identificacao = DocIdentificacaoSerializer()

    # comentarios = ComentarioSerializer(many=True, read_only=True)
    # avaliacoes = AvaliacaoSerializer(many=True, read_only=True)

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'descricao_completa',
                  'descricao_completa2', 'aprovado', 'foto', 'atracoes',
                  'avaliacoes', 'comentarios', 'endereco', 'doc_identificacao')
        # *** Corresponde ao read_only=True, quando não são campos extras
        read_only_fields = ('comentarios', )

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        endereco = validated_data['endereco']
        del validated_data['endereco']
        end = Endereco.objects.create(**endereco)

        avaliacoes = validated_data['avaliacoes']
        del validated_data['avaliacoes']

        doc = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']
        doc1 = DocIdentificacao.objects.create(**doc)

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_atracoes(atracoes, ponto)

        ponto.avaliacoes.set(avaliacoes)

        ponto.endereco = end
        ponto.doc_identificacao = doc1

        ponto.save()

        return ponto

    def get_descricao_completa(self, obj):
        return '%s - %s ' % (obj.nome, obj.descricao)
예제 #17
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer(many=False)
    descricao_completa = SerializerMethodField()
    doc_identificacao = DocIdentificacaoSerializer()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco',
                  'descricao_completa', 'descricao_completa2',
                  'doc_identificacao')
        read_only_fields = ('comentarios', 'avaliacoes')

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        ##carregando atracoes
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        ##carregando endereco
        endereco = validated_data['endereco']
        del validated_data['endereco']

        ##carregando doc identificacao
        doc = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']

        ##criando objeto ponto turistico
        ponto = PontoTuristico.objects.create(**validated_data)

        ##preenchendo atracoes ao objeto ponto turistico
        self.cria_atracoes(atracoes, ponto)

        ##preenchendo endereco ao objeto ponto turistico
        end = Endereco.objects.create(**endereco)
        ponto.endereco = end

        ##preenchendo doc_identificacao
        doc1 = DocIdentificacao.objects.create(**doc)
        ponto.doc_identificacao = doc1

        ponto.save()
        ##retornando objeto para gravação
        return ponto

    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #18
0
class PontoTuristicoSerializer(ModelSerializer):
    atracao = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()
    doc_identificacao = DocIndentificacaoSerializer()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracao',
                  'endereco', 'comentarios', 'avaliacoes',
                  'descricao_completa', 'descricao_completa2',
                  'doc_identificacao')
        read_only_fields = ('comentarios', 'avaliacoes')

    ## ManyToMany
    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(
                **atracao)  #criando atracoes no banco de dados
            ponto.atracoes.add(
                at)  ##relacionando atracoes com o ponto turistico

    def create(self, validated_data):

        atracoes = validated_data[
            'atracoes']  ##recebendo os dados e criando uma lista de atracoes
        del validated_data[
            'atracoes']  ## deletando a lista de atracoes da lista recebida.

        endereco = validated_data[
            'endereco']  # recebe os dados enviado e separa o endereco em uma variavel
        del validated_data['endereco']  # deleta variavel

        doc = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']
        doci = DecIdentificacao.objects.create(**doc)

        ponto = PontoTuristico.objects.create(
            **validated_data
        )  #adicionando ponto turistico, depois de excluir atracoes da lista de ados recebido.
        self.cria_atracoes(atracoes, ponto)

        ## Forekey
        end = Endereco.objects.create(**endereco)
        ponto.endereco = end
        ponto.doc_identificacao = doci

        ponto.save()
        return ponto

    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #19
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco',
                  'descricao_completa', 'descricao_completa2')

    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #20
0
class PontoTuristicoSerializer(ModelSerializer):
    recursos = RecursoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()
    doc_identificacao = DocIdentificacaoSerializer()

    #  aprovacao = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        fields = [
            'id', 'nome', 'descricao', 'aprovado', 'recursos', 'comentarios',
            'avaliacoes', 'endereco', 'foto', 'descricao_completa',
            'aprovacao', 'doc_identificacao'
        ]

        read_only_fields = ['comentarios', 'avaliacoes']

    def cria_recursos(self, recursos, ponto):
        for recurso in recursos:
            rc = Recurso.objects.create(**recurso)
            ponto.recursos.add(rc)

    def create(self, validated_data):

        recursos = validated_data['recursos']
        del validated_data['recursos']

        endereco = validated_data['endereco']
        del validated_data['endereco']

        doc = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']
        doci = DocIdentificacao.objects.create(**doc)

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_recursos(recursos, ponto)

        end = Endereco.objects.create(**endereco)
        ponto.endereco = end
        ponto.doc_identificacao = doci

        ponto.save()

        return ponto

    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)

#   def get_aprovacao(self, obj):
#       return '%s - %s' % (obj.id, obj.aprovado)
예제 #21
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()
    doc_identificacao = DocIdentificacaoSerializer()

    class Meta:
        model = PontoTuristico
        fields = (
            'id', 'nome', 'descricao', 'aprovado',
            'atracoes', 'comentarios', 'avaliacoes', 'endereco',
            'descricao_completa', 'descricao_completa2', 'doc_identificacao'
        )

        read_only_fields = ('comentarios',)

    def cria_atracoe(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        endereco = validated_data['endereco']
        del validated_data['endereco']

        avaliacoes = validated_data['avaliacoes']
        del validated_data['avaliacoes']

        doc = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']
        doci = DocIdentificacao.objects.create(**doc)

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_atracoe(atracoes, ponto)

        ponto.avaliacoes.set(avaliacoes)

        end = Endereco.objects.create(**endereco)
        ponto.endereco = end
        ponto.doc_identificacao = doci

        ponto.save()

        return ponto


    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #22
0
class PontoTuristicoSerializer(serializers.ModelSerializer):
    atracoes = RecursoSerializer(many=True)
    avaliacoes = AvaliacaoSerializer(many=True)
    comentarios = ComentarioSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()


    class Meta:
        model = PontoTuristico
        fields = '__all__'
        extra_fields = ['descricao_completa',]

    def get_descricao_completa(self, obj):
        return '%s -> %s' % (obj.nome, obj.descricao)
예제 #23
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(
        many=True)  # Traz a serializacao do modelo atracao
    endereco = EnderecoSerializer(
    )  # many so usa se o relacionamento for many to many
    descricao_completa = SerializerMethodField(
    )  # incluindo informacoes adicionais
    doc_identificacao = DocIdentificacaoSerializer()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco',
                  'descricao_completa', 'descricao_completa2',
                  'doc_identificacao')

        read_only_fields = ('comentarios', 'avaliacoes')

    def cria_atracoes(self, atracoes, ponto):
        # atrela as atracoes ao ponto turistico
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        endereco = validated_data['endereco']  # obtem do post
        del validated_data['endereco']  # deleta

        doc = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']
        doci = DocIdentificacao.objects.create(**doc)

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_atracoes(atracoes, ponto)

        end = Endereco.objects.create(**endereco)  # creia o endereco no BD
        ponto.endereco = end  # atrela o endereco ao ponto
        ponto.doc_identificacao = doci

        ponto.save()

        return ponto

    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #24
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()
    descricao_completa = SerializerMethodField()
    doc_identificacao = DocIdentificacaoSerializer()

    class Meta:
        model = PontoTuristico
        fields = [
            'id', 'nome', 'descricao', 'doc_identificacao', 'aprovado', 'foto',
            'atracoes', 'endereco', 'comentarios', 'avaliacoes',
            'descricao_completa', 'descricao_completa2'
        ]
        read_only_fields = ('comentarios', 'avaliacoes')
        depth = 1

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        endereco = validated_data['endereco']
        del validated_data['endereco']

        docdata = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']

        #** diz que o django vai interar nessa variavel diccionario para criar o ponto turistico no banco de dados
        ponto = PontoTuristico.objects.create(**validated_data)

        self.cria_atracoes(atracoes, ponto)

        end = Endereco.objects.create(**endereco)
        ponto.endereco = end
        doc = DocIdentificacao.objects.create(**docdata)
        ponto.doc_identificacao = doc

        ponto.save()

        return ponto

    def get_descricao_completa(self, obj):
        return "%s - %s" % (obj.nome, obj.descricao)
예제 #25
0
class PontoTuristicoSerializer(serializers.ModelSerializer):
    Atracoes = AtracoesSerializer(many=True)
    Enderecos = EnderecoSerializer()
    descricao_completa = SerializerMethodField()
    doc_identificacao = DocIdentificacaoSerializer()

    class Meta:
        model = PontoTuristico
        fields = ['id', 'Nome', 'Descricao', 'Aprovado', 'Foto',
                  'Atracoes', 'Comentarios', 'Avaliacoes', 'Enderecos',
                  'descricao_completa', 'descricao_completa2', 'doc_identificacao']

    def get_descricao_completa(self, obj):
        return "%s - %s" % (obj.Nome, obj.Descricao)

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        endereco = validated_data['enderecos']
        del validated_data['enderecos']

        doc = validated_data['doc_identificacao']
        del validated_data['doc_identificacao']

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_atracoes(atracoes, ponto)

        end = Endereco.objects.create(**endereco)
        ponto.Enderecos = end

        doci = DocIdentificacao.objects.create(**doc)
        ponto.Doc_Identificacao = doci

        ponto.save()

        return ponto
예제 #26
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer()

    #     comentarios = ComentarioSerializer(many=True)
    #     avaliacoes = AvaliacaoSerializer(many=True)

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco', 'foto')
        read_only_fields = ('comentarios', 'avaliacoes')

    def extract_atracao(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']
        return atracoes

    def extract_endereco(self, validated_data):
        endereco = validated_data['endereco']
        del validated_data['endereco']
        return endereco

    def create_atracoes(self, atracoes, ponto_turistico):
        for atracao in atracoes:
            nova_atracao = Atracao.objects.create(**atracao)
            ponto_turistico.atracoes.add(nova_atracao)

    def create_endereco(self, endereco, ponto_turistico):
        endereco = Endereco.objects.create(**endereco)
        ponto_turistico.endereco = endereco

    def create(self, validated_data):
        atracoes = self.extract_atracao(validated_data)
        endereco = self.extract_endereco(validated_data)
        ponto_turistico = PontoTuristico.objects.create(**validated_data)

        self.create_atracoes(atracoes, ponto_turistico)
        self.create_endereco(endereco, ponto_turistico)
        ponto_turistico.save()

        return ponto_turistico
예제 #27
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    #todo reuso de codigo, atributos.
    endereco = EnderecoSerializer()

    #todo incrementando o meu serializer: com MethodField > adicionando um atributo novo.
    descricao_completa = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        #todo warning cuidado com os espaços ao criar os atributos -  Hehe
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto', 'atracoes',
                  'comentarios', 'avaliacoes', 'endereco',
                  'descricao_completa', 'descricao_completa2')

    #todo descricao_completa2 -> classe modelo hehe

    #todo o retorno serão os atributos concatenados .
    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #28
0
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    avaliacoes = AvaliacaoSerializer(many=True, read_only=True)
    comentarios = ComentarioSerializer(many=True, read_only=True)
    endereco = EnderecoSerializer(many=False)

    descricao_completa = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto',
                  'atracoes', 'comentarios', 'avaliacoes', 'endereco',
                  'descricao_completa')
        # ready_only_fields = ('comentarios', 'avaliacoes', 'atracoes')

    def create_endereco(self, endereco, ponto):
        novo_endereco = Endereco.objects.create(**endereco)
        ponto.endereco = novo_endereco

    def create_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)

    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        endereco = validated_data['endereco']
        del validated_data['endereco']
        
        ponto = PontoTuristico.objects.create(**validated_data)

        self.create_atracoes(atracoes, ponto)
        self.create_endereco(endereco, ponto)

        return ponto

    def get_descricao_completa(self, obj):
        return '{}: {}'.format(obj.nome, obj.descricao)
class PontoTuristicoSerializer(ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    endereco = EnderecoSerializer(read_only=True)
    #avaliacoes = AvaliacaoSerializer(many=True)
    #comentarios = ComentarioSerializer(many=True)
    descricao_completa = SerializerMethodField()

    class Meta:
        model = PontoTuristico
        fields = ('id', 'nome', 'descricao', 'aprovado', 'foto',
                  'atracoes', 'comentarios', 'avaliacoes', 'endereco',
                  'descricao_completa', 'descricao_completa2'
        )

        read_only_fields = ('comentarios', 'avaliacoes')

    def cria_atracoes(self, atracoes, ponto):
        for atracao in atracoes:
            at = Atracao.objects.create(**atracao)
            ponto.atracoes.add(at)


    def create(self, validated_data):
        atracoes = validated_data['atracoes']
        del validated_data['atracoes']

        ponto = PontoTuristico.objects.create(**validated_data)
        self.cria_atracoes(atracoes, ponto)

        return ponto

    """
    forma de manipular dados antes de enviar o retorno (metodo nao recomendado)
    """


    def get_descricao_completa(self, obj):
        return '%s - %s' % (obj.nome, obj.descricao)
예제 #30
0
class PontoTuristicosSerializer(serializers.ModelSerializer):
    atracoes = AtracaoSerializer(many=True)
    comentarios = ComentarioSerializer(many=True)
    avaliacoes = AvaliacaoSerializer(many=True)
    endereco = EnderecoSerializer(many=False)
    doc_identificacao = DocIdentificacaoSerializer(many=False)
    type1 = serializers.PrimaryKeyRelatedField(
        queryset=TypeTest.objects.filter(type='Luis').distinct())
    type2 = serializers.PrimaryKeyRelatedField(
        queryset=TypeTest.objects.filter(type='Jose').distinct())

    class Meta:
        model = PontoTuristicos
        fields = ('id', 'name', 'description', 'aprovado', 'photo', 'atracoes',
                  'type1', 'type2', 'comentarios', 'avaliacoes', 'endereco',
                  'doc_identificacao')
        read_only_fields = ('comentarios', 'avaliacoes', 'endereco')

    def create_relations_many_to_many(self, ponto, *args, **kwargs):
        models = [Atracoes, Comentarios, Avaliacoes]
        campos_pk = [ponto.atracoes, ponto.comentarios, ponto.avaliacoes]

        relations = list(zip(models, campos_pk, args[0]))

        if args.__len__() > 0:
            for rel in relations:
                at = rel[0].objects.create(**rel[2][0])
                rel[1].add(at)

    def create_relations_one_to_one(self, _field_one_to_one, *args, **kwargs):

        _data_one = []

        for one_to_one in _field_one_to_one:
            _data_one.append(args[0][one_to_one])
            del args[0][one_to_one]

        ponto = PontoTuristicos

        models = [Endereco, DocIdentificacao]
        campos_pk = [ponto.endereco, ponto.doc_identificacao]

        relations = list(zip(models, campos_pk, _data_one, _field_one_to_one))
        ponto = PontoTuristicos.objects.create(**args[0])

        if args.__len__() > 0:
            for rel in relations:
                rel_list = list(rel)
                if rel[2] is None:
                    _relation_data = rel_list[0].objects.create()
                    if rel[3] == 'endereco':
                        ponto.endereco = _relation_data

                    elif rel[3] == 'doc_identificacao':
                        ponto.doc_identificacao = _relation_data
                    ponto.save()
                else:
                    _field = rel[2]
                    _relation_data = rel_list[0].objects.create(**_field)

                    if rel[3] == 'endereco':
                        ponto.endereco = _relation_data

                    elif rel[3] == 'doc_identificacao':
                        ponto.doc_identificacao = _relation_data
                    ponto.save()

            return ponto

    def create(self, validated_data):

        _field_many_to_many = ['atracoes', 'comentarios', 'avaliacoes']
        _field_one_to_one = ['endereco', 'doc_identificacao']

        ponto = PontoTuristicos

        _data_many = []
        _data_one = []

        for many_to_many in _field_many_to_many:
            _data_many.append(validated_data[many_to_many])
            del validated_data[many_to_many]

        if _field_one_to_one.__len__() > 1:
            ponto = self.create_relations_one_to_one(_field_one_to_one,
                                                     validated_data)
        else:
            endereco = validated_data[str(_field_one_to_one[0])]
            del validated_data[str(_field_one_to_one[0])]
            one_to_one_model_field = Endereco.objects.create(**endereco)
            ponto = ponto.objects.create(**validated_data)
            ponto.endereco = one_to_one_model_field
            ponto.save()

        self.create_relations_many_to_many(ponto, _data_many)
        return ponto