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 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 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 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'): ''' 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 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 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 update_detail_view(request, pk): template = 'details/update-client.html' detail_obj = get_object_or_404(Detail, pk=pk) order = get_or_create_order(request) client = order.client info_form = DetailModelForm(request.POST or None, instance=detail_obj) origin_form = OriginAddressForm( request.POST or None, initial=fields_origin_form(detail=detail_obj)) destiny_form = DestinyAddressForm( request.POST or None, initial=fields_destiny_form(detail=detail_obj)) my_addressess_list = Address.objects.filter(client=client).order_by('-id') if request.method == 'POST' and info_form.is_valid( ) and origin_form.is_valid() and destiny_form.is_valid(): # detail_obj.distance=12.00, # detail_obj.sub_total=10.00 detail_obj.update_information(order, info_form.instance, request.POST.get('distance'), request.POST.get('price_rate')) detail_obj.update_addressess(client, origin_form.cleaned_data, destiny_form.cleaned_data) if 'image' in request.FILES: finfo = info_form.save(commit=False) finfo.image = request.FILES['image'] finfo.save() messages.success(request, 'La dirección de envío fue editado con éxito.') return redirect('orders:add-addresses') return render(request, template, context={ 'order': order, 'detail_obj': detail_obj, 'info_form': info_form, 'origin_form': origin_form, 'destiny_form': destiny_form, 'my_addressess_list': my_addressess_list, 'title': '¿Qué estas enviando?' })
def create_detail_view(request): template = 'details/create.html' info_form = DetailModelForm(request.POST or None) origin_form = OriginAddressForm(request.POST or None) destiny_form = DestinyAddressForm(request.POST or None) order = get_or_create_order(request) client = order.client my_addressess_list = Address.objects.filter(client=client).order_by('-id') if request.method == 'POST' and info_form.is_valid( ) and origin_form.is_valid() and destiny_form.is_valid(): address_origin = Address.objects.update_or_create_address_origin( client, origin_form.cleaned_data) address_destiny = Address.objects.update_or_create_address_destiny( client, destiny_form.cleaned_data) Detail.objects.create( client=client, order=order, size=request.POST.get('size'), contain=request.POST.get('contain'), value=request.POST.get('value'), image=request.FILES['image'] if 'image' in request.FILES else None, description=request.POST.get('description'), address_origin=address_origin, address_destiny=address_destiny, distance=request.POST.get('distance'), price_rate=request.POST.get('price_rate'), ) messages.success(request, 'La dirección de envío fue agregado con éxito.') return redirect('orders:add-addresses') return render(request, template, context={ 'order': order, 'info_form': info_form, 'origin_form': origin_form, 'destiny_form': destiny_form, 'my_addressess_list': my_addressess_list, 'title': '¿Qué estas enviando?' })
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 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})