def validar(request): if request.method == 'POST': form = ProdutoForm(request.POST) if form.is_valid(): produto = Produto(**form.cleaned_data) produto.save() produto = Produto.objects.all() return render(request, 'validar.html',{'form':form, 'produto':produto})
def salvaProduto(listaCodigo): categoria = Categoria.objects.get(id=2) for codigo in listaCodigo: payload = { 'apikey': 'e5f8af5a3039686600cd5df81b77bbf244abfacc52bb94424df874630b20384f07939108', 'imagem': 'S' } produto = requests.get( f'https://bling.com.br/Api/v2/produto/{codigo}/json/', params=payload).json() print("antes do try") try: jsonProduto = produto['retorno']['produtos'] jsonProduto[0]['produto']['preco'] = '%.2f' % float( jsonProduto[0]['produto']['preco']) jsonProduto[0]['produto']['preco'] = jsonProduto[0]['produto'][ 'preco'].replace(".", ",") except KeyError: print("produto não encontrado no bling") codigoErro = "Falha" return None try: jsonProduto[0]['produto']['camposCustomizados']['m2PorCaixa'] except: jsonProduto[0]['produto']['camposCustomizados'] = {'m2PorCaixa': 1} try: jsonProduto[0]['produto']['imagem'][0]['link'] except: jsonProduto[0]['produto']['imagem'].append({'link': ""}) print("sucesso2") produto = jsonProduto produtoBling = Produto( codigo=produto[0]['produto']['codigo'], nome=produto[0]['produto']['descricao'], marca=produto[0]['produto']['marca'], imagem=produto[0]['produto']['imagem'][0]['link'], disponivel=True, preco=float(produto[0]['produto']['preco'].replace(",", ".")), altura=float(produto[0]['produto']['alturaProduto']), largura=float(produto[0]['produto']['larguraProduto']), profundidade=float(produto[0]['produto']['profundidadeProduto']), pesoBruto=float(produto[0]['produto']['pesoBruto']), unidadesPorCaixa=float(produto[0]['produto']['itensPorCaixa']), unidadeDeVenda=produto[0]['produto']['unidade'], multiploDeVenda=produto[0]['produto']['camposCustomizados'] ['m2PorCaixa'], descricao=produto[0]['produto']['descricaoCurta'], categoria=categoria, ) print("sucesso3") produtoBling.save() print(f"{produtoBling.codigo} foi salvo")
def listar(self, request): try: m_produto = Produto() retorno_produtos = m_produto.listar() return Response(retorno_produtos.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())
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
def listar(self, request): try: m_produto = self.definir_contexto(Produto()) retorno_produtos = m_produto.listar() return retorno_produtos.gerar_resposta_http() except Exception as e: retorno = Retorno(False, self, 'A consulta a produtos Trisafe falhou.', None, None, e) return retorno.gerar_resposta_http()
def criar_produtos(produtos): Produto.objects.all().delete() aux = [] for produto in produtos: data = dict( produto=produto, importado=choice((True, False)), ncm=Utils.gen_digits(8), preco=random() * randint(10, 50), estoque=randint(10, 200), ) obj = Produto(**data) aux.append(obj) Produto.objects.bulk_create(aux)
def alterar(self, chaves_produtos): try: retorno_cliente = self.cliente.obter() if not retorno_cliente.estado.ok: return retorno_cliente m_produto = self.definir_contexto(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 = self.definir_contexto( TransacaoGerenciaNet()) retorno_transacao = m_transacao_gerencia_net.incluir( d_dados_pedido) if not retorno_transacao.estado.ok: return retorno_transacao self.chave_boleto_ext = m_transacao_gerencia_net.id self.cliente = retorno_cliente.dados self.calcular_valor_total(retorno_produtos.dados) self.aceito = False # Atualiza com os produtos self.produtos_contratados.set(retorno_produtos.dados) # Inclui na base self.save() retorno = Retorno( True, self, 'Contrato gerado com sucesso. Selecione "Contratar" para aceitá-lo.' ) retorno.dados = self return retorno except Exception as e: retorno = Retorno(False, self, 'A atualização do contrato falhou.', None, None, e) return retorno
def add_product(request): #Se o usuario adicionou um novo produto erros = [] retornoAdd = False form = ProdutoForm() if request.POST: d = Draft.objects.all().filter(id=request.POST.get('foto', 0)) if d: p = Produto(foto=d[0].photo) form = ProdutoForm(request.POST, instance=p) else: form = ProdutoForm(request.POST) print form.is_valid() if form.is_valid(): form.save() form = ProdutoForm() else: print form.errors retornoAdd = True #template = loader.get_template('pedidos.html') #html = template.render(Context({'pedidoAbertoList': pedidosAbertos, 'pedidoFechadoList': pedidosFechados, 'clienteList': clienteLista, 'drawings': drawings, 'erros': erros, 'retornoAdd' : retornoAdd})) #return HttpResponse(html) productList = Produto.objects.all() clientList = Cliente.objects.all() drawings = Draft.objects.all() return render( request, 'produtos.html', { "productList": productList, "clienteList": clientList, 'drawings': drawings, 'erros': erros, 'retornoAdd': retornoAdd, 'form': form })
def produtos(request): productList = Produto.objects.all() clientList = Cliente.objects.all() crawl() drawings = Draft.objects.all() erros = [] retornoAdd = False form = ProdutoForm() if request.POST: d = Draft.objects.all().filter(id=request.POST.get('foto', 0)) if d: p = Produto(foto=d[0].photo) form = ProdutoForm(request.POST, instance=p) else: form = ProdutoForm(request.POST) print form.is_valid() if form.is_valid(): form.save() form = ProdutoForm() else: print form.errors retornoAdd = True return render( request, 'produtos.html', { "productList": productList, "clienteList": clientList, 'drawings': drawings, 'erros': erros, 'retornoAdd': retornoAdd, 'form': form })
def apropriar_dados_http_chave(cls, request): m_produto = Produto() m_produto.cpf = request.data['codigo'] return m_produto
def cadastraProdutoPorCodigo(request): # cadastra o produto já buscado no bling com os dados de lá print("cadastro por codigo") produtoDicionario = "" if request.GET: print("é get") try: del request.session['codigoSelecionado'] except KeyError: pass formCodigo = PesquisaPorCodigoForm(request.GET) if formCodigo.is_valid(): codigo = formCodigo.cleaned_data['codigo'] print(f"{codigo} é valido no form") produto = getFromBling(codigo) if not produto: print("produto não encontrado no bling") formCodigo = PesquisaPorCodigoForm() messages.add_message(request, messages.ERROR, 'Produto não encontrado!') return render(request, 'produto/cadastroPorCodigo.html', { 'form': formCodigo, 'produto': "" }) produtoDicionario = { "codigo": produto[0]['produto']['codigo'], "nome": produto[0]['produto']['descricao'], "marca": produto[0]['produto']['marca'], "imagem": produto[0]['produto']['imagem'][0]['link'], "disponivel": True, "preco": produto[0]['produto']['preco'], "altura": produto[0]['produto']['alturaProduto'], "largura": produto[0]['produto']['larguraProduto'], "profundidade": produto[0]['produto']['profundidadeProduto'], "pesoBruto": produto[0]['produto']['pesoBruto'], "unidadesPorCaixa": produto[0]['produto']['itensPorCaixa'], "multiploDeVenda": produto[0]['produto']['camposCustomizados']['m2PorCaixa'], "unidadeDeVenda": produto[0]['produto']['unidade'], "descricao": produto[0]['produto']['descricaoCurta'], } request.session['codigoSelecionado'] = produtoDicionario['codigo'] print("request é:") print( f"{request.session['codigoSelecionado']} custa {produtoDicionario['preco']}" ) elif request.POST: print("é um post") formCategoria = ProdutoCategoriaForm(request.POST) categoria = None if formCategoria.is_valid(): print(type(formCategoria.cleaned_data['categoria'])) categoria = formCategoria.cleaned_data['categoria'] try: produto = get_object_or_404( Produto, codigo=request.session['codigoSelecionado']) messages.add_message( request, messages.ERROR, f'O produto {produto.codigo} já está cadastrado no sistema!') except: produto = getFromBling(request.session['codigoSelecionado']) del request.session['codigoSelecionado'] if not produto: formCodigo = PesquisaPorCodigoForm() return render(request, 'produto/cadastroPorCodigo.html', { 'form': formCodigo, 'produto': "" }) produtoBling = Produto( codigo=produto[0]['produto']['codigo'], nome=produto[0]['produto']['descricao'], marca=produto[0]['produto']['marca'], imagem=produto[0]['produto']['imagem'][0]['link'], disponivel=True, preco=float(produto[0]['produto']['preco'].replace(",", ".")), altura=float(produto[0]['produto']['alturaProduto']), largura=float(produto[0]['produto']['larguraProduto']), profundidade=float( produto[0]['produto']['profundidadeProduto']), pesoBruto=float(produto[0]['produto']['pesoBruto']), unidadesPorCaixa=float(produto[0]['produto']['itensPorCaixa']), unidadeDeVenda=produto[0]['produto']['unidade'], # colocar vinculado a categoria multiploDeVenda=produto[0]['produto']['camposCustomizados'] ['m2PorCaixa'], descricao=produto[0]['produto']['descricaoCurta'], categoria=categoria, ) produtoBling.save() messages.add_message( request, messages.SUCCESS, f'O produto {produtoBling.codigo} foi cadastrado no com sucesso sistema!' ) formCodigo = PesquisaPorCodigoForm() else: print("request inicial") try: del request.session['codigoSelecionado'] except KeyError: pass formCodigo = PesquisaPorCodigoForm() formCategoria = ProdutoCategoriaForm() print(produtoDicionario) return render( request, 'produto/cadastroPorCodigo.html', { 'form': formCodigo, 'formCategoria': formCategoria, 'produto': produtoDicionario })
cat1 = Categoria(nome='Balas', slug='balas') cat2 = Categoria(nome='Chocolate', slug='chocolate') cat3 = Categoria(nome='Especiais', slug='especiais') cat4 = Categoria(nome='Bebidas', slug='bebidas') cat1.save() cat2.save() cat3.save() cat4.save() Loja(nome="Candy Store", logo="candyStoreLogo4.png").save() p = [] p.append( Produto(nome='Confeito M&M chocolate ao leite', imagem='MEM.png', secao='maisVendidos', loja=l)) p.append( Produto(nome='Barra de chocolate lacta laka', imagem='LAKA.png', secao='maisVendidos', loja=l)) p.append( Produto(nome='Chocolate KitKat ao leite', imagem='KITKATAOLEITE.png', secao='maisVendidos', loja=l)) p.append( Produto(nome='Bala de gelatina fini amoras', imagem='FINIAMORAS.png', secao='maisVendidos',
def incluir(self): try: retorno_cliente = self.cliente.obter() if (not retorno_cliente.estado.ok): return retorno_cliente m_produto = self.definir_contexto(Produto()) retorno_produtos = m_produto.listar() if not retorno_produtos.estado.ok: return retorno_produtos chave_doc = '' # Tenta obter o contrato da base, pelo CPF retorno = self.obter_por_cliente() if (retorno.estado.ok): return retorno else: if retorno.estado.codMensagem != 'NaoCadastrado': return retorno else: m_contrato_clicksign = ContratoClicksign(self) retorno = m_contrato_clicksign.incluir( retorno_cliente.dados) if not retorno.estado.ok: return retorno d_dados_doc = retorno.dados if 'document' in d_dados_doc: d_documento = d_dados_doc['document'] if 'key' in d_documento: chave_doc = d_documento['key'] self.cliente = retorno_cliente.dados # Sobram 4, caso necessario mais de um contrato por cliente. self.id_contrato = str( self.cliente.id_cliente_iter).rjust(6, '0') + str( self.cliente.cpf).rjust(6, '0') self.chave_contrato_ext = d_documento['key'] self.calcular_valor_total(retorno_produtos.dados) # Inclui/atualiza na base self.save() # Atualiza com os produtos self.produtos_contratados.add(*retorno_produtos.dados) retorno = Retorno( True, self, 'Contrato gerado com sucesso. Selecione "Contratar" para aceitá-lo.' ) retorno.dados = self return retorno except Exception as e: retorno = Retorno(False, self, 'A inclusão do contrato falhou.', None, None, e) return retorno