예제 #1
0
    def incluir_signatario(self, m_cliente):
        url = "https://sandbox.clicksign.com/api/v1/signers%s" % (
            self.querystring_access_token)

        d_signatario_clicksign = self.__montar_dic_signatario(m_cliente)

        if (not self.headers_clicksign):
            return self.retorno_autenticacao

        r = requests.post(url,
                          headers=self.headers_clicksign,
                          data=d_signatario_clicksign)

        retorno = self.__tratarRespostaHTTP(r)

        if not retorno.estado.ok:
            return retorno

        d_dados_signatario = retorno.dados
        tem_chave = False
        chave_signatario = ''

        if (d_dados_signatario):
            if 'signer' in d_dados_signatario:
                d_signatario = d_dados_signatario['signer']
                if 'key' in d_signatario:

                    chave_signatario = d_signatario['key']

                    if (chave_signatario
                            and len(str(chave_signatario).strip()) > 0):
                        tem_chave = True

        if tem_chave:
            retorno = Retorno(True, self)
            retorno.dados = chave_signatario
        else:
            retorno = Retorno(
                False, self,
                'Não foi possível obter o documento do contrato. Os dados retornaram vazios',
                '', 404)

        return retorno
예제 #2
0
    def incluir(self, chaves_produtos):
        try:

            retorno_cliente = self.cliente.obter()

            if not retorno_cliente.estado.ok:
                return retorno_cliente

            m_produto = Produto()
            retorno_produtos = m_produto.listar_especificos(chaves_produtos)
            
            if not retorno_produtos.estado.ok:
                return retorno_produtos

            d_dados_pedido = self.gerar_dados_pedido_transacao_gerencia_net(retorno_produtos.dados)

            m_transacao_gerencia_net = TransacaoGerenciaNet()

            retorno_transacao = m_transacao_gerencia_net.incluir(d_dados_pedido)

            if not retorno_transacao.estado.ok:
                return retorno_transacao
            
            self.charge_id = m_transacao_gerencia_net.id            
            self.id_contrato = str(self.cliente.id_cliente_iter).rjust(6, '0') + str(self.charge_id).rjust(10, '0')
            self.cliente = retorno_cliente.dados
            self.calcular_valor_total(retorno_produtos.dados)

            # Inclui na base
            self.save()

            # Atualiza com os produtos
            self.produtos_contratados.add(*retorno_produtos.dados)

            retorno = Retorno(True, 'Seu contrato foi gerado e será efetivado após o pagamento do boleto.')
            retorno.dados = self

            return retorno
        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True)
                    
            retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #3
0
    def alterar(self):
        try:
            retorno = Cliente.validar_dados_obrigatorios(self)

            if not retorno.estado.ok:
                return retorno

            # Valida se o cliente já está cadastrado.
            retorno = Cliente.obter(self)

            if not retorno.estado.ok:
                return retorno

            m_cliente = retorno.dados

            if (self.credencial_iter.chave_iter_cli
                    and len(self.credencial_iter.chave_iter_cli) > 0):
                self.id_cliente_iter = m_cliente.id_cliente_iter

                o_cliente_iter = ClienteIter(self)
                # Alteracao na Iter.
                retorno = o_cliente_iter.alterar(self)

                if not retorno.estado.ok:
                    return retorno

                m_cliente.converter_de_cliente_iter(retorno.json())

            m_cliente.id_signatario_contrato = self.id_signatario_contrato
            m_cliente.save()

            retorno = Retorno(True, self, 'Cadastro atualizado com sucesso.',
                              '', 200, None)
            retorno.dados = m_cliente

            return retorno
        except Exception as e:

            retorno = Retorno(False, self,
                              'A atualização dos dados cadastrais falhou.',
                              None, None, e)
            return retorno
예제 #4
0
    def incluir(self, d_dados_pedido):
        try:
            m_gerencia_net = Gerencianet(credentials)

            d_charge = m_gerencia_net.create_charge(body=d_dados_pedido)
            self.converter_de_gerencia_net(d_charge)

            retorno = Retorno(True)
            retorno.dados = self

            return retorno

        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__),
                  file=sys.stderr,
                  flush=True)

            retorno = Retorno(
                False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #5
0
    def __autenticar_clicksign(self):
        self.headers_clicksign = None
        chave_clicksign_cliente = ''
        chave_clicksign_servidor = config('CHAVE_CLICKSIGN')
        token_clicksign = ''

        if (self.credencial_clicksign):
            chave_clicksign_cliente = self.credencial_clicksign.chave_clicksign_cli
            token_clicksign = self.credencial_clicksign.token_clicksign

        # Cria uma credencial completa, com a chave parcial do servidor,
        # pois o atributo "self.credencial_clicksign" vem soh com a chave parcial do cliente.
        self.credencial_clicksign = Credencial(chave_clicksign_cliente,
                                               chave_clicksign_servidor)
        self.credencial_clicksign.token_clicksign = token_clicksign

        retorno = Retorno(True, self)

        if not self.credencial_clicksign.token_clicksign or len(
                self.credencial_clicksign.token_clicksign) <= 0:
            # Le o token criptografado do arquivo e atribui para a credencial.
            arquivo_iter = open('.env_access_clicksign', 'rb')

            token_clicksign = arquivo_iter.read()

            if (token_clicksign):
                self.credencial_clicksign.token_clicksign = token_clicksign

        retorno.dados = self.credencial_clicksign
        token = self.credencial_clicksign.get_token_clicksign()

        self.headers_clicksign = {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }

        self.querystring_access_token = '?access_token=%s' % (token)

        self.chave_template_contrato = config('CHAVE_TEMPLATE_CONTRATO_CS')

        self.retorno_autenticacao = retorno
예제 #6
0
    def aceitar(self, request):
        try:
            m_contrato = ContratoViewSet.apropriar_dados_http(request)

            retorno = m_contrato.aceitar()

            if not retorno.estado.ok:
                return retorno

            # m_boleto = BoletoGerenciaNet()
            # retorno = m_boleto.gerar(m_contrato)

            return Response(retorno.json())
        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__),
                  file=sys.stderr,
                  flush=True)

            retorno = Retorno(
                False, 'Falha de comunicação. Em breve será normalizado.', '')
            return Response(retorno.json())
예제 #7
0
 def registrar_do_cliente(self, d_registros_log):
     try:
         if not d_registros_log or len(d_registros_log) <= 0:
             return Retorno(False, self, 'Nenhum registro de log recebido.')
         
         if(len(d_registros_log) > 0):
             
             logger_cliente_app_fluxo.info('+++ REGISTROS DO CLIENTE - INICIO +++ %s' % (self.get_dados_dispositivo_str()))
             
             for d_registro_log in d_registros_log:
                 # Add the line
                 logger_cliente_app_fluxo.info("[%s] %s" % (d_registro_log['data_hora'], d_registro_log['mensagem_log']))
             
             logger_cliente_app_fluxo.info('--- REGISTROS DO CLIENTE - FIM --- %s' % (self.get_dados_dispositivo_str()))
             logger_cliente_app_fluxo.info('')
             
         return Retorno(True, self)
     except Exception as e:
                 
         retorno = Retorno(False, self, 'O registro de log do cliente falhou.', None, None, e)
         return retorno
예제 #8
0
    def excluir_contrato(self):
        try:
            nome_arquivo = "Contrato_%s.pdf" % self.id_contrato
            caminho_arquivo = os.path.join(BASE_DIR, "data", "contratos",
                                           nome_arquivo)

            if (os.path.exists(caminho_arquivo)):
                os.remove(caminho_arquivo)

            caminho_diretorio = os.path.join(BASE_DIR, "data", "contratos")
            if (not os.path.exists(caminho_diretorio)):
                os.makedirs(caminho_diretorio)

            retorno = Retorno(True, self)
            return retorno

        except Exception as e:

            retorno = Retorno(False, self, 'A exclusão do contrato falhou.',
                              None, None, e)
            return retorno
예제 #9
0
    def incluir(self):
        try:
            retorno = Cliente.validar_dados_obrigatorios(self)

            if not retorno.estado.ok:
                return retorno

            # Valida se o cliente já está cadastrado.
            retorno = Cliente.obter(self)

            if retorno.estado.codMensagem != 'NaoCadastrado':
                return retorno

            # Inclusao na Iter.
            cIter = ClienteIter()
            retorno = cIter.incluir(self)

            if not retorno.estado.ok:
                return retorno

            d_cliente_iter = retorno.json()
            self.id_cliente_iter = d_cliente_iter['id']

            if not retorno.estado.ok:
                return retorno

            self.save()

            retorno = Retorno(True, 'Cadastro realizado com sucesso.', 200)
            retorno.dados = self

            return retorno
        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__),
                  file=sys.stderr,
                  flush=True)

            retorno = Retorno(
                False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #10
0
    def obter_ultimo(self):
        try:
            retorno = Retorno(False, self)
            # Valida se o cliente já está cadastrado.
            lista_clientes = Cliente.objects.filter()
            if lista_clientes:
                m_cliente = lista_clientes[lista_clientes.count() - 1]
                if m_cliente:
                    o_cliente_iter = ClienteIter(self)
                    # Obtem o cadastro na Iter.
                    retorno = o_cliente_iter.obter(m_cliente)

                    if not retorno.estado.ok:
                        return retorno

                    m_cliente.converter_de_cliente_iter(retorno.json())
                    m_cliente.nome_usuario = m_cliente.nome_usuario

                    retorno.dados = self.definir_contexto(m_cliente)

            return retorno
        except Exception as e:

            retorno = Retorno(False, self,
                              'A consulta dos dados cadastrais falhou.', None,
                              None, e)
            return retorno
예제 #11
0
    def incluir_signatario_contrato(self):
        try:

            m_contrato_clicksign = ContratoClicksign(self)

            retorno_signatario = self.incluir_signatario()

            if not retorno_signatario.estado.ok:
                return retorno_signatario

            m_cliente = retorno_signatario.dados.cliente
            ids_assinaturas_clicksign = m_cliente.id_signatario_contrato.split(
                sep="|-|")

            if isinstance(ids_assinaturas_clicksign,
                          list) and len(ids_assinaturas_clicksign) > 1:
                return retorno_signatario

            m_contrato = retorno_signatario.dados
            retorno_chave_signatario = m_contrato_clicksign.incluir_signatario_contrato(
                m_contrato)

            if not retorno_chave_signatario.estado.ok:
                return retorno_chave_signatario

            retorno_cliente = self.cliente.obter()

            if not retorno_cliente.estado.ok:
                return retorno_cliente

            m_cliente = retorno_cliente.dados
            m_cliente.id_signatario_contrato = '%s|-|%s' % (
                m_cliente.id_signatario_contrato,
                retorno_chave_signatario.dados)

            retorno = m_cliente.alterar()

            if not retorno.estado.ok:
                retorno.dados = self

            retorno = self.obter()

            if (retorno.estado.ok):
                m_contrato_clicksign.solicitar_assinatura(retorno.dados)

            return retorno
        except Exception as e:

            retorno = Retorno(
                False, self, 'A atualização do signatário do contrato falhou.',
                None, None, e)
            return retorno
예제 #12
0
    def gerar(self, m_contrato):
        try:
            # m_contrato_cadastro = Contrato()
            # if len(str(m_contrato.id_contrato)) > 0:
            #     m_contrato_cadastro.id_contrato = m_contrato.id_contrato

            #     retorno_contrato = m_contrato_cadastro.obter()
            #     if not retorno_contrato.estado.ok:
            #         if len(str(m_contrato.cliente.cpf)) > 0:
            #             m_cliente = Cliente()
            #             m_cliente.cpf = m_contrato_cadastro.cliente.cpf
            #             m_contrato.cliente = m_cliente
            #             retorno_contrato = m_contrato.obter_por_cliente()

            #             if not retorno_contrato.estado.ok:
            #                 return retorno_contrato

            # m_contrato_cadastro = retorno_contrato.dados

            today = date.today()
            data_vencimento = today.strftime("%Y-%m-%d")

            params = {'id': m_contrato.chave_boleto_ext}

            body = {
                'payment': {
                    'banking_billet': {
                        'expire_at': data_vencimento,
                        'customer': {
                            'name': m_contrato.cliente.nome,
                            'email': m_contrato.cliente.email,
                            'cpf': m_contrato.cliente.cpf,
                            # 'birth': m_contrato.cliente.,
                            'phone_number': m_contrato.cliente.telefone
                        }
                    }
                }
            }
            m_gerencia_net = Gerencianet(credentials)
            d_billet = m_gerencia_net.pay_charge(params=params, body=body)

            retorno = self.tratar_retorno_gerencia_net(d_billet)
            retorno.dados = self

            return retorno

        except Exception as e:

            retorno = Retorno(False, self, 'A geração do boleto falhou.', None,
                              None, e)
            return retorno
예제 #13
0
    def obter_url_contrato_pdf(self):
        try:
            retorno = Retorno(False, self, 'Contrato não localizado.',
                              'NaoCadastrado')

            m_contratos = Contrato.objects.filter(
                cliente__cpf=self.cliente.cpf)

            if m_contratos:
                m_contrato = m_contratos[0]
                if m_contrato:

                    m_contrato_clicksign = ContratoClicksign(self)
                    retorno = m_contrato_clicksign.obter_url_contrato_pdf(
                        m_contrato.chave_contrato_ext)

            return retorno

        except Exception as e:

            retorno = Retorno(False, self, 'A consulta do contrato falhou.',
                              None, None, e)
            return retorno
예제 #14
0
    def incluir(self):
        try:
            retorno = Produto.validar_dados_obrigatorios(self)
            
            if not retorno.estado.ok:
                return retorno

            # Valida se o produto já está cadastrado.
            retorno = Produto.obter(self)

            if retorno.estado.codMensagem != 'NaoCadastrado':
                return retorno

            self.save()
            
            retorno = Retorno(True, self, 'Cadastro realizado com sucesso.', 200)
            retorno.dados = self

            return retorno
        except Exception as e:
                    
            retorno = Retorno(False, self, 'A inclusão de produto Trisafe falhou.', None, None, e)
            return retorno
예제 #15
0
    def incluir(self):
        try:
            retorno = Produto.validar_dados_obrigatorios(self)
            
            if not retorno.estado.ok:
                return retorno

            # Valida se o produto já está cadastrado.
            retorno = Produto.obter(self)

            if retorno.estado.codMensagem != 'NaoCadastrado':
                return retorno

            self.save()
            
            retorno = Retorno(True, 'Cadastro realizado com sucesso.', 200)
            retorno.dados = self

            return retorno
        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True)
                    
            retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #16
0
    def incluir(self, d_dados_pedido):
        try:
            m_gerencia_net = Gerencianet(credentials)

            d_charge = m_gerencia_net.create_charge(body=d_dados_pedido)
            retorno = self.tratar_retorno_gerencia_net(d_charge)

            retorno.dados = self

            return retorno

        except Exception as e:

            retorno = Retorno(False, self,
                              'A inclusão de transação para boleto falhou.',
                              None, None, e)
            return retorno
예제 #17
0
    def obter(self):
        try:
            retorno = Cliente.validar_dados_obrigatorios_chaves(self)

            if not retorno.estado.ok:
                return retorno

            retorno = Retorno(False, self, 'Cliente não cadastrado',
                              'NaoCadastrado', 406)

            # Valida se o cliente já está cadastrado.
            lista_clientes = Cliente.objects.filter(cpf=self.cpf)
            if lista_clientes:

                m_cliente = lista_clientes[0]

                if m_cliente:
                    self.definir_contexto(m_cliente)
                    retorno = Retorno(True, self)

                    if (self.credencial_iter.chave_iter_cli
                            and len(self.credencial_iter.chave_iter_cli) > 0):
                        o_cliente_iter = ClienteIter(self)
                        # Obtem o cadastro na Iter.
                        retorno = o_cliente_iter.obter(m_cliente)

                        if not retorno.estado.ok:
                            return retorno

                        m_cliente.converter_de_cliente_iter(retorno.json())
                        m_cliente.nome_usuario = m_cliente.nome_usuario

                    retorno.dados = self.definir_contexto(m_cliente)

            return retorno
        except Exception as e:

            retorno = Retorno(False, self,
                              'A consulta dos dados cadastrais falhou.', None,
                              None, e)
            return retorno
예제 #18
0
    def obter(self):
        try:
            retorno = Retorno(False, self, 'Contrato não localizado.')
            m_contratos = Contrato.objects.filter(id_contrato=self.id_contrato)

            if m_contratos:
                m_contrato = m_contratos[0]
                if m_contrato:
                    retorno = Retorno(True, self)
                    retorno.dados = self.definir_contexto(m_contrato)

            return retorno
        except Exception as e:

            retorno = Retorno(False, self, 'A consulta do contrato falhou.',
                              None, None, e)
            return retorno
예제 #19
0
    def gerar(self, m_contrato):
        try:
            # t = TransacaoGerenciaNet()

            # retorno = t.incluir()
            # if not retorno.estado.ok:
            #     return retorno

            today = date.today()

            data_vencimento = today.strftime("%Y-%m-%d")

            params = {'id': m_contrato.charge_id}

            body = {
                'payment': {
                    'banking_billet': {
                        'expire_at': data_vencimento,
                        'customer': {
                            'name': m_contrato.cliente.nome,
                            'email': m_contrato.cliente.email,
                            'cpf': m_contrato.cliente.cpf,
                            # 'birth': m_contrato.cliente.,
                            'phone_number': m_contrato.cliente.telefone
                        }
                    }
                }
            }
            m_gerencia_net = Gerencianet(credentials)
            d_billet = m_gerencia_net.pay_charge(params=params, body=body)

            retorno = self.tratar_retorno_gerencia_net(d_billet)

            return retorno

        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__),
                  file=sys.stderr,
                  flush=True)

            retorno = Retorno(
                False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #20
0
    def incluir_signatario(self):
        try:
            retorno = self.obter_signatario()

            if retorno.estado.ok:
                return retorno
            elif retorno.estado.codMensagem != 'SignatarioNaoCadastrado':
                return retorno

            m_contrato_clicksign = ContratoClicksign(self)

            retorno_chave_signatario = m_contrato_clicksign.incluir_signatario(
                self.cliente)

            if not retorno_chave_signatario.estado.ok:
                return retorno_chave_signatario

            retorno_cliente = self.cliente.obter()

            if not retorno_cliente.estado.ok:
                return retorno_cliente

            m_cliente = retorno_cliente.dados
            m_cliente.id_signatario_contrato = retorno_chave_signatario.dados

            retorno_cliente = m_cliente.alterar()

            if not retorno_cliente.estado.ok:
                return retorno_cliente

            retorno = self.obter()

            return retorno

        except Exception as e:

            retorno = Retorno(
                False, self, 'A atualização do signatário do contrato falhou.',
                None, None, e)
            return retorno
예제 #21
0
    def listar(self):
        try:
            retorno = Retorno(False, self, 'Nenhum Produto TriSafe está cadastrado.', 'NaoCadastrado', 406)

            # Lista os produtos cadastrados.
            lista_produtos = Produto.objects.all()
            if lista_produtos:
                lista_produtos_json = []
                for m_produto in lista_produtos:
                    lista_produtos_json.append(m_produto)

                retorno = Retorno(True, self)
                retorno.dados = lista_produtos
                
            return retorno
            
        except Exception as e:
                    
            retorno = Retorno(False, self, 'A consulta a produtos Trisafe falhou.', None, None, e)
            return retorno
예제 #22
0
    def listar_por_cliente(self):
        try:
            retorno = Retorno(False, self,
                              'Nenhum veículo cadastrado para rastreamento.',
                              'NaoCadastrado')

            m_veiculos = Veiculo.objects.filter(cliente__cpf=self.cliente.cpf)

            if m_veiculos:
                retorno = Retorno(True, self)
                retorno.dados = m_veiculos

            return retorno

        except Exception as e:

            retorno = Retorno(False, self,
                              'A consulta aos veículos do cliente falhou.',
                              None, None, e)
            return retorno
예제 #23
0
    def listar(self):
        try:
            retorno = Retorno(False, 'Nenhum Produto TriSafe está cadastrado.', 'NaoCadastrado', 406)

            # Lista os produtos cadastrados.
            lista_produtos = Produto.objects.all()
            if lista_produtos:
                lista_produtos_json = []
                for m_produto in lista_produtos:
                    lista_produtos_json.append(m_produto)

                retorno = Retorno(True)
                retorno.dados = lista_produtos
                
            return retorno
            
        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True)
                    
            retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #24
0
    def obter(self):
        try:
            retorno = Produto.validar_dados_obrigatorios_chaves(self)
                
            if not retorno.estado.ok:
                return retorno

            retorno = Retorno(False, self, 'Produto não cadastrado', 'NaoCadastrado', 406)
            
            lista_produtos = Produto.objects.filter(nome=self.nome)
            if lista_produtos:
                m_produto = lista_produtos[0]
                if m_produto:
                    retorno = Retorno(True, self)
                    retorno.dados = m_produto
            
            return retorno

        except Exception as e:
                    
            retorno = Retorno(False, self, 'A consulta a produtos Trisafe falhou.', None, None, e)
            return retorno
예제 #25
0
    def registrar_do_cliente(self, request):
        try:
            retorno = Retorno(True, self)

            if 'registros_log' in request.data:
                d_registros_log = request.data['registros_log']

            m_gerenciador_log = self.definir_contexto(GerenciadorLog())

            retorno = m_gerenciador_log.registrar_do_cliente(d_registros_log)

            return retorno.gerar_resposta_http()

        except Exception as e:

            retorno = Retorno(False, self,
                              'O registro de log do cliente falhou.', None,
                              None, e)
            return retorno.gerar_resposta_http()
예제 #26
0
    def obter(self):
        try:
            retorno = Produto.validar_dados_obrigatorios_chaves(self)
                
            if not retorno.estado.ok:
                return retorno

            retorno = Retorno(False, 'Produto não cadastrado', 'NaoCadastrado', 406)
            
            lista_produtos = Produto.objects.filter(nome=self.nome)
            if lista_produtos:
                m_produto = lista_produtos[0]
                if m_produto:
                    retorno = Retorno(True)
                    retorno.dados = m_produto
            
            return retorno

        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True)
                    
            retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #27
0
    def obter_por_cliente(self):
        try:
            retorno = Retorno(False, self, 'Contrato não localizado.',
                              'NaoCadastrado')

            m_contratos = Contrato.objects.filter(
                cliente__cpf=self.cliente.cpf)

            if m_contratos:
                m_contrato = m_contratos[0]

                if m_contrato:
                    retorno = Retorno(True, self)
                    retorno.dados = self.definir_contexto(m_contrato)
                    self.definir_contexto(m_contrato.cliente)

            return retorno

        except Exception as e:

            retorno = Retorno(False, self, 'A consulta do contrato falhou.',
                              None, None, e)
            return retorno
예제 #28
0
    def obter(self):
        try:
            retorno = Cliente.validar_dados_obrigatorios_chaves(self)

            if not retorno.estado.ok:
                return retorno

            retorno = Retorno(False, 'Cliente não cadastrado', 'NaoCadastrado',
                              406)

            # Valida se o cliente já está cadastrado.
            lista_clientes = Cliente.objects.filter(cpf=self.cpf)
            if lista_clientes:
                m_cliente = lista_clientes[0]
                if m_cliente:
                    # Obtem o cadastro na Iter.
                    retorno_cliente_iter = ClienteIter.obter(
                        self, m_cliente.id_cliente_iter)

                    if not retorno_cliente_iter.estado.ok:
                        return retorno_cliente_iter

                    self.converter_de_cliente_iter(retorno_cliente_iter.json())

                    retorno = Retorno(True)
                    retorno.dados = self

            return retorno
        except Exception as e:
            print(traceback.format_exception(None, e, e.__traceback__),
                  file=sys.stderr,
                  flush=True)

            retorno = Retorno(
                False, 'Falha de comunicação. Em breve será normalizado.')
            return retorno
예제 #29
0
    def incluir(self):
        try:
            retorno = self.validar_dados_obrigatorios()

            if not retorno.estado.ok:
                return retorno

            # Valida se o veiculo já está cadastrado.
            retorno = self.contar_por_chave()

            if not retorno.estado.ok:
                return retorno

            if (retorno.dados > 0):
                return Retorno(
                    False, self,
                    'Já existe um veículo cadastrado com esta placa.')

            # Obtem os dados do cliente para associar.
            retorno_cliente = self.cliente.obter()
            if not retorno_cliente.estado.ok:
                return retorno_cliente

            self.cliente = retorno_cliente.dados
            self.save()

            retorno = Retorno(True, self, 'Cadastro realizado com sucesso.',
                              200)
            retorno.dados = self

            return retorno
        except Exception as e:

            retorno = Retorno(
                False, self,
                'A inclusão dos dados cadastrais do veículo falhou.', None,
                None, e)
            return retorno
예제 #30
0
    def validar_dados_obrigatorios_chaves(self):
        if self.codigo <= 0 or len(str(self.nome).strip()) <= 0 :
            return Retorno(False, self, "Informe o código ou o nome completo do produto.", 406)

        return Retorno(True, self)