def comprar(request, producto_pk): template = 'productos/comprar.html' producto_seleccionado = Producto.objects.get(pk=producto_pk) if Compra.objects.filter(comfirmada=False).exists(): compra = Compra.objects.get(comfirmada=False) compra.producto.add(producto_seleccionado) compra.save() else: compra = Compra() compra.save() compra.producto.add(producto_seleccionado) compra.save() lista_productos = compra.producto.all() total = 0 for i in lista_productos: total = total + i.precio if request.method == 'POST': form = CompraForm(request.POST, instance=compra) if form.is_valid(): compra.total = total compra.comfirmada = True compra.save() form.save() #se envia el email al usuario y se redirige a la pagina de exito de compra template_email = get_template('productos/compra_template.txt') mensaje = "<strong>" + compra.usuario + "</strong> - email: " + compra.email mensaje = mensaje + " <br> Usted realizo la compra de:<ul> " for producto in compra.producto.all(): mensaje = mensaje + "<li>" + producto.nombre + " - ₲ " + str(intcomma(producto.precio)) + "</li>" mensaje = mensaje +"</ul>" mensaje = mensaje + "Total: ₲ " + str(intcomma(compra.total)) send_mail('Compra desde la web de Gonzalez Gimenez % s' % (datetime.datetime.now().strftime('%d-%m-%Y %H:%M:%S')), 'Notificacion de compra:', '*****@*****.**', [compra.email], fail_silently=False, html_message=mensaje) return HttpResponseRedirect('/productos/compra_exitosa/') else: form = CompraForm(instance=compra) return render(request, template, locals())
def finalizarCompra(): username = session['username'] print(username) solicitud = request.get_json(force=True) user = User.query.filter_by(username=username).first() libros = Carrito.query.join(Books).filter( Carrito.usuario_id == user.id).add_columns(Books.id, Books.titulo, Books.portada, Books.precio).all() monto = solicitud['total'] compra = Compra(user.id, monto, "rfc") for libro in libros: compra.libroCliente.append(LibroCliente(libro.id, 1, libro.precio)) print(compra.libroCliente) compra.envio = [ Envio(user.pais, user.direccion, user.cp, user.ciudad, user.estado, user.telefono) ] db.session.add(compra) db.session.query(Carrito).filter(Carrito.usuario_id == user.id).delete() db.session.commit() return "ok"
arq = open(config_path, 'r') config = arq.read().splitlines() inicio = datetime.strptime(config[0], '%d/%m/%Y') fim = datetime.strptime(config[1], '%d/%m/%Y') fim += timedelta( days=1) # para, na hora de filtrar, incluir o dia inteiro referente ao fim int_bool = lambda x: x == 1 compras = [] cursor.execute('SELECT * FROM compra') for l in cursor.fetchall(): c = Compra(l[0], l[1], l[2], l[3], datetime.strptime(l[4], '%d/%m/%Y %H:%M:%S'), l[5], int_bool(l[6]), l[7], int_bool(l[8]), int_bool(l[9])) if (c.data >= inicio and c.data <= fim) and not (c.entrega and not c.entregaValidada): compras.append(c) import pizza_totais, pizza_entregas, stacked_clientes, stacked_vendas_por_dia, stacked_vendas_por_horario stacked_vendas_por_horario.gerar_imagem(deepcopy(compras)) ''' stacked_vendas_por_dia.gerar_imagem(deepcopy(compras)) stacked_clientes.gerar_imagem(deepcopy(compras)) pizza_totais.gerar_imagem(deepcopy(compras)) pizza_entregas.gerar_imagem(deepcopy(compras))
def compra(request): context = {} camisas = Camisa.objects.all() operadoras = Operadora.objects.all() contas = FormaPagamento.objects.all() context['camisas'] = camisas context['operadoras'] = operadoras context['contas'] = contas if request.method == 'POST': erro = False operadora = request.POST.get('operadora') email = request.POST.get('email') nome = request.POST.get('nome') ciente = request.POST.get('ciente') celular = request.POST.get('celular') facebook = request.POST.get('facebook') conta = request.POST.get('conta') if 'comprovante' not in request.FILES: context['msg'] = 'Por favor, anexe o seu comprovante!' erro = True if not operadora: erro = True context['msg'] = 'Por favor, escolha uma operadora!' if not email: erro = True context['msg'] = 'O email é obrigatório!' if not nome: erro = True context['msg'] = 'O nome é obrigatório!' if not conta: erro = True context['msg'] = 'Escolha a conta em que fez o depósito!' if not erro: user, create = User.objects.get_or_create(username=email[:29]) if create: #user.first_name = nome user.email = email user.save() userp, createp = Usuario.objects.get_or_create(user=user) if createp: userp.user = user userp.nome = nome userp.ciente = ciente userp.facebook = facebook celular = Celular(numero=celular, operadora_id=operadora) celular.save() userp.celular = celular userp.save() compra = Compra() compra.usuario = userp compra.formaPagamento_id = conta compra.save() for camisa in [x for x in request.POST if x.startswith('camisa_')]: if request.POST[camisa] != '0': item = Item() item.camisa_id = camisa[7:] item.quantidade = request.POST[camisa] item.save() compra.itens.add(item) handle_uploaded_file(request.FILES['comprovante'], '%s_%s'%(user.email, userp.id), 'comprovantes') context['sucesso'] = 'Compra registrada.' else: # Caso tenha dado erro context['operadora'] = operadora context['email'] = email context['nome'] = nome context['ciente'] = ciente context['celular'] = celular context['facebook'] = facebook context['conta_id'] = int(conta) return render(request, 'form_compra.html', context)