def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) tarjeta = orden.metodo_pago metodo_pago = Tarjeta.objects.get(pk=tarjeta.pk) metodo_pago.actualizar_saldo(-orden.get_total()) libros = carrito.libros_relacionados() if request.user.id != orden.usuario_id: return redirect('carrito:miCarrito') for item in libros: libro = Libro.objects.get(pk=item.libro.pk) libro.actualizar_existencias(-item.cantidad) orden.completar() hilo = threading.Thread(target=Mail.send_orden_completada, args=(orden, request.user)) hilo.start() destruir_carrito(request) destruir_orden(request) messages.success(request, 'Orden de compra completada exitosamente...') return redirect('inicio')
def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) direccionEnvio = orden.direccion_envio if direccionEnvio is None: return redirect('ordenes:direccion ') tarjeta = orden.metodo_pago if tarjeta is None: return redirect('ordenes:pago ') saldo = tarjeta.saldo.compare(orden.get_total()) if saldo.is_signed(): messages.error( request, 'Saldo insuficiente en metodo de pago seleccionado...') return redirect('ordenes:pago') context = { 'carrito': carrito, 'orden': orden, 'direccion': direccionEnvio, 'tarjeta': tarjeta, 'breadcrumb': breadcrumb(direccion=True, pago=True, confirmacion=True), } return render(request, self.template_name, context)
def next(self): if self.request.GET['next'] == reverse('ordenes:direccion'): carrito = get_create_carrito(self.request) orden = get_or_create_orden(carrito, self.request) orden.update_direccion_envio(self.object) self.success_url = reverse_lazy('ordenes:direccion')
def create(request): form = DireccionForm(request.POST or None) if request.method == 'POST' and form.is_valid(): direccion = form.save(commit=False) direccion.user = request.user direccion.default = not request.user.has_direccion_envio() direccion.save() if request.GET.get('next'): if request.GET['next'] == reverse('ordenes:address'): carrito = get_or_create_carrito(request) orden = get_or_create_orden(carrito, request) orden.update_direccion_envio(direccion) return HttpResponseRedirect(request.GET['next']) messages.success(request, 'Dirección creada exitosamente') return redirect('direcciones_envio:direcciones') return render(request, 'direcciones_envio/create.html', { 'form': form })
def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) context = { 'carrito': carrito, 'orden': orden, 'breadcrumb': breadcrumb() } return render(request, self.template_name, context)
def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) direccionEnvio = get_object_or_404(DireccionEnvio, pk=kwargs['pk']) if request.user.id != direccionEnvio.usuario_id: return redirect('carrito:miCarrito') orden.update_direccion_envio(direccionEnvio) return redirect('ordenes:direccion')
def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) tarjeta = get_object_or_404(Tarjeta, pk=kwargs['pk']) if request.user.id != tarjeta.usuario_id: return redirect('carrito:miCarrito') orden.update_metodo_pago(tarjeta) return redirect('ordenes:pago')
def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) direccion = orden.get_or_set_direccion_envio() puede_elegir_direccion = DireccionEnvio.objects.filter( usuario=self.request.user).count() > 1 context = { 'carrito': carrito, 'orden': orden, 'breadcrumb': breadcrumb(direccion=True), 'direccion': direccion, 'puede_elegir_direccion': puede_elegir_direccion } return render(request, self.template_name, context)
def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) if request.user.id != orden.usuario_id: return redirect('carrito:miCarrito') orden.cancelar() destruir_carrito(request) destruir_orden(request) messages.error(request, 'Orden de compra cancelada...') return redirect('inicio')
def validate(request): carrito = get_or_create_carrito(request) orden = get_or_create_orden(carrito, request) codigo = request.GET.get('code') promo = CodigoPromocional.objects.get_valid(codigo) if promo is None: return JsonResponse({ 'status': False }, status=404) orden.aplicar_codigo_promocion(promo) return JsonResponse({ 'status': True, 'codigo': promo.codigo, 'descuento': promo.descuento, 'total': orden.total })
def get(self, request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) metodo_pago = orden.get_or_set_metodo_pago() puede_elegir_tarjeta = Tarjeta.objects.filter( usuario=self.request.user).count() > 1 direccionEnvio = orden.direccion_envio if direccionEnvio is None: return redirect('ordenes:direccion ') context = { 'carrito': carrito, 'orden': orden, 'direccion': direccionEnvio, 'tarjeta': metodo_pago, 'breadcrumb': breadcrumb(direccion=True, pago=True), 'puede_elegir_tarjeta': puede_elegir_tarjeta } return render(request, self.template_name, context)
def complete(request, carrito, orden): carrito = get_or_create_carrito(request) orden = get_or_create_orden(carrito, request) if request.user.id != orden.user_id: return redirect('carritos:carrito') cargo = Cargo.objects.create_cargo(orden) if cargo: with transaction.atomic(): orden.complete() thread = threading.Thread(target=Mail.send_complete_orden, args=( orden, request.user )) thread.start() destruir_carrito(request) destruir_orden(request) messages.success(request, 'Compra completada exitosamente') return redirect('index')
def wrap(request, *args, **kwargs): carrito = get_create_carrito(request) orden = get_or_create_orden(carrito, request) return fuction(request, carrito, orden, *args, **kwargs)