def create(request): form = ShippingAddressForm(request.POST or None) if request.method == 'POST' and form.is_valid(): shipping_address = form.save( commit=False ) #guardo temporalmente la instancia hasta verificar el usuario shipping_address.user = request.user #si la dirección es la primera entonces la guardo como default # shipping_address.default = not ShippingAddress.objects.filter(user=request.user).exists() shipping_address.default = not request.user.has_shipping_address() shipping_address.save() if request.GET.get('next'): if request.GET['next'] == reverse('orders:address'): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) order.update_shipping_address(shipping_address) return HttpResponseRedirect(request.GET['next']) messages.success(request, 'Direccion creada con éxito') return redirect('shipping_addresses:shipping_addresses') context = {'form': form} return render(request, 'shipping_addresses/create.html', context)
def wrap(request, *args, **kwargs): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) add_or_remove_cart_products(request) return function(request, cart, order, *args, **kwargs)
def create(request): form = ShippingAddressForm(request.POST or None) if request.method == 'POST' and form.is_valid(): shipping_address = form.save(commit=False) shipping_address.user = request.user shipping_address.default = not request.user.has_shipping_address() shipping_address.save() if request.GET.get('next'): if request.GET['next'] == reverse('orders:address'): ''' Si el usuario añade una nueva dirección desde el proceso de pago, haremos lo siguiente -> ''' cart = get_or_create_cart(request) order = get_or_create_order(cart, request) order.update_shipping_address(shipping_address) return HttpResponseRedirect(request.GET['next']) messages.success(request, 'Dirección creada exitosamente') return redirect('shipping_addresses:shipping_addresses') return render(request, 'shipping_addresses/create.html', {'form': form})
def create(request): #Función para crear una dirección tomando los valores ingresados por el usuario y guardandoos en la base de datos. form = ShippingAddressForm(request.POST or None) if request.method == 'POST' and form.is_valid(): shipping_address = form.save(commit=False) shipping_address.user = request.user shipping_address.default = not request.user.has_shipping_address() shipping_address.save() if request.GET.get('next'): if request.GET['next'] == reverse('orders:address'): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) order.update_shipping_address(shipping_address) return HttpResponseRedirect(request.GET['next']) messages.success(request, 'Address created successfully') return redirect('shipping_addresses:shipping_addresses') return render(request, 'shipping_addresses/create.html', { 'form' : form })
def create(request): form = ShippingAddressForm(request.POST or None) if request.method == 'POST' and form.is_valid(): shipping_address = form.save(commit=False) shipping_address.user = request.user shipping_address.default = not request.user.has_shipping_address() shipping_address.save() if request.GET.get('next'): if request.GET['next'] == reverse('orders:address'): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) order.update_shipping_address(shipping_address) messages.success(request, _('Address created successfully')) return HttpResponseRedirect(request.GET.get('next')) messages.success(request, _('Address created successfully')) return redirect('shipping_address:shipping_address') return render(request, 'shipping_address/create.html', {'form': form})
def create(request): form = ShippingAddressForm(request.POST or None) if request.method == 'POST' and form.is_valid(): shipping_address = form.save(commit=False) shipping_address.user = request.user shipping_address.default = not ShippingAddress.objects.filter(user=request.user).exists() shipping_address.save() if request.GET.get('next'): # Si la petición posee el parametro next if request.GET['next'] == reverse('orders:address'): # Si el valor de next es exactamente esa dirección, el usuario se encuentra en el proceso de orden de compra. # Se deben importar las funciones get_or_create_cart y order. cart = get_or_create_cart(request) # Obtiene el carrito de compras, Para poder obtener la orden de compra. order = get_or_create_order(cart, request) # Obtiene la orden. order.update_shipping_address(shipping_address) # Establece la dirección recientemente creada a la orden de compra. return HttpResponseRedirect(request.GET['next']) # Para finalizar redirecciona al usuario a la sección dirección de la orden. Se importa el HttpResponseRedirect. messages.success(request, 'Dirección creada exitosamente') return redirect('shipping_addresses:shipping_addresses') return render(request, 'shipping_addresses/create.html', { 'form': form })
def create(request): form = ShippingAddressForm(request.POST or None) if request.method == "POST" and form.is_valid(): shipping_address = form.save(commit=False) shipping_address.user = request.user shipping_address.default = not request.user.has_shipping_address() shipping_address.save() if request.GET.get("next"): if request.GET["next"] == reverse("orders:address"): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) order.update_shipping_address(shipping_address) return HttpResponseRedirect(request.GET["next"]) messages.success(request, "Direccion creada exitosamente") return redirect("shipping_addresses:shipping_addresses") return render(request,"shipping_addresses/create.html",{ #contexto "form": form, })
def order(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) return render(request, 'orders/order.html',{ })
def order(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) print(order.order_id) context = {'order': order, 'cart': cart, 'breadcrumb': breadcrumb()} return render(request, 'orders/order.html', context)
def create(request): form = ShippingAddressForm(request.POST or None) if request.method == 'POST' and form.is_valid(): shipping_address = form.save(commit=False) shipping_address.user = request.user shipping_address.default = not ShippingAddress.objects.filter( user=request.user).exists() shipping_address.save() if request.GET.get('next'): if request.GET['next'] == reverse('orders:address'): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) order.update_shipping_address(shipping_address) return HttpResponseRedirect(request.GET['next']) messages.success(request, 'Dirección creada correctamente') return redirect('shipping_addresses:shipping_addresses') return render(request, 'shipping_addresses/create.html', {'form': form})
def check_address(request, pk): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) shipping_address = get_object_or_404(ShippingAddress, pk=pk) if request.user.id != shipping_address.user_id: return redirect('carts:cart') order.update_shipping_address(shipping_address) return redirect('orders:address')
def order(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) template_name = 'order/order.html' return render(request, template_name, { 'cart': cart, 'order': order, 'breadcrumb': breadcrumb() })
def order(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) return render(request, 'orders/order.html', { 'cart': cart, 'order': order, 'breadcrumb': breadcrumb() })
def cancel(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) if request.user.id != order.user_id: return redirect('carts:cart') order.cancel() destroy_cart(request) destroy_order(request) messages.error(request, 'Orden Cancelada') return redirect('index')
def complete(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) if request.user.id != order.user_id: return redirect('carts:cart') order.complete() Mail.send_complete_order(order, request.user) destroy_cart(request) destroy_order(request) messages.success(request, 'Compra completada exitosamente') return redirect('index')
def address(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) shipping_address = order.get_or_set_shipping_address() can_choose_address = request.user.shippingaddress_set.count() > 1 return render(request, 'order/address.html', { 'cart': cart, 'order': order, 'shipping_address': shipping_address, 'can_choose_address': can_choose_address, 'breadcrumb': breadcrumb(address=True) })
def confirm(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) shipping_address = order.shipping_address if shipping_address is None: return redirect('orders:address') return render(request, 'order/confirm.html', { 'cart': cart, 'order': order, 'shipping_address': shipping_address, 'breadcrumb': breadcrumb(address=True, confirmation=True), })
def confirm(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) shipping_address = order.shipping_address if shipping_address is None: return redirect('orders:address') return render(request, 'orders/snippets/confirm.html', { 'cart': cart, 'order': order, 'shipping_address': shipping_address })
def cancel(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) if request.user.id != order.user_id: return redirect('carts:cart') order.cancel() destroy_cart(request) destroy_order(request) return redirect ('product')
def validate(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) code = request.GET.get('code') promo_code = PromoCode.objects.get_valid(code) if promo_code is None or promo_code.used: return JsonResponse({'status': False}, status=404) order.apply_promo_code(promo_code) return JsonResponse({ 'status': True, 'code': promo_code.code, 'discount': promo_code.discount, 'total': order.total, })
def address(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) shipping_address = order.get_or_set_shipping_address() can_choose_address = request.user.shippingaddress_set.all() return render(request, 'orders/address.html', { 'cart': cart, 'shipping_address': shipping_address, 'order': order, 'can_choose_address': can_choose_address })
def address(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) shipping_address = order.get_or_set_shipping_address() hay_opciones = request.user.shippingaddress_set.count() > 1 context = { 'cart': cart, 'order': order, 'shipping_address': shipping_address, 'breadcrumb': breadcrumb(address=True), 'hay_opciones': hay_opciones } return render(request, 'orders/address.html', context)
def validate(request): cart = get_or_create_cart(request) order = get_or_create_order(cart, request) code = request.GET.get("code") promo_code = PromoCode.objects.get_valid(code) if promo_code is None: return JsonResponse({"status": False}, status=404) order.apply_promo_code(promo_code) return JsonResponse({ "status": True, "code": promo_code.code, "discount": promo_code.discount, "total": order.total })
def order(request): cart = get_or_create_cart(request) #usamos filter y no get por el probema del try exeption de la otra vez #order = Order.objects.filter(cart=cart).first() #ahora llamo a Order con el propety que defini order = cart.order #creando una orden if order is None and request.user.is_authenticated: order = Order.objects.create(cart=cart, user=request.user) if order: request.session['order_id'] = order.order_id print('Este es cart de order', cart) return render(request, 'orders/order.html', { 'cart': cart, 'order': order, 'breadcrumb': breadcrumb() })
def add(request): cart = get_or_create_cart(request) product = Product.objects.get(pk=request.POST.get('product_id')) quantity = int(request.POST.get('quantity', 1)) # cart.products.add(product, through_defaults={ # 'quantity': quantity # }) cart_product = CartProducts.objects.create_or_update_quantity( cart=cart, product=product, quantity=quantity) return render(request, 'carts/add.html', { 'quantity': quantity, 'cart_product': cart_product, 'product': product })
def form_valid(self, form): context = self.get_context_data() form = context['form'] with transaction.atomic(): if form.is_valid(): shipping_address = form.save(commit=False) shipping_address.user = self.request.user shipping_address.default = not ShippingAddress.objects.filter( user=self.request.user).exists() shipping_address.save() if self.request.GET.get('next'): if self.request.GET['next'] == reverse('orders:address'): cart = get_or_create_cart(self.request) order = get_or_create_order(cart, self.request) order.update_shipping_address(shipping_address) return HttpResponseRedirect(self.request.GET['next']) messages.success(self.request, 'Direccion creada exitosamente') return HttpResponseRedirect(self.get_success_url())
def remove(request): cart = get_or_create_cart(request) product = get_object_or_404(Product, pk=request.POST.get('product_id')) cart.products.remove(product) return redirect('carts:cart')
def wrap(request, *args, **kwargs): cart = get_or_create_cart(request) order = get_or_created_order(cart, request) return function(request, cart, order, *args, **kwargs)
def cart(request): cart = get_or_create_cart(request) return render(request, 'carts/cart.html', {'cart': cart})