def post(self, *args, **kwargs): form = CheckoutForm(self.request.POST or None) try: order = Order.objects.get(user=self.request.user, ordered=False) if form.is_valid(): use_default_delivery = form.cleaned_data.get( 'use_default_delivery') if use_default_delivery: print("Using the default delivery address") address_qs = Address.objects.filter( user=self.request.user, default=True ) if address_qs.exists(): delivery_address = address_qs[0] order.delivery_address = delivery_address order.save() else: messages.info( self.request, "No default delivery address available") return redirect('checkout') else: print("User is entering a new delivery address") delivery_address = form.cleaned_data.get( 'delivery_address') delivery_station = form.cleaned_data.get( 'delivery_station') mobi_number = form.cleaned_data.get( 'mobi_number') if is_valid_form([delivery_address, delivery_station, mobi_number]): delivery_address = Address( user=self.request.user, delivery_address=delivery_address, shipping_station=delivery_station, mobi_number=mobi_number ) delivery_address.save() order.delivery_address = delivery_address order.save() set_default_delivery = form.cleaned_data.get( 'set_default_delivery') if set_default_delivery: delivery_address.default = True delivery_address.save() else: messages.info( self.request, "Please fill in the required delivery address field") return redirect('checkout') payment_option = form.cleaned_data.get('payment_option') if payment_option == 'M': return redirect(reverse('globalbiz-home')) #return redirect('payment', payment_option='Mpesa') elif payment_option == 'P': print('Hey') #self.request.session['order_id'] = order.id #return redirect(reverse('payment:process')) #messages.add_message(self.request, messages.INFO, 'Order Placed!') #return redirect('checkout') else: messages.warning( self.request, "Invalid payment option selected") return redirect('checkout') except ObjectDoesNotExist: messages.warning(self.request, "You do not have an active order") return redirect("order-summary")
def post(self, *args, **kwargs): form = CheckoutForm(self.request.POST or None) try: order = Order.objects.get(user=self.request.user, ordered=False) if form.is_valid(): use_default_shipping = form.cleaned_data.get( 'use_default_shipping') if use_default_shipping: print("Using the defualt shipping address") address_qs = Address.objects.filter( user=self.request.user, address_type='S', default=True ) if address_qs.exists(): shipping_address = address_qs[0] order.shipping_address = shipping_address order.save() else: messages.info( self.request, "No default shipping address available") return redirect('core:checkout') else: print("User is entering a new shipping address") shipping_address1 = form.cleaned_data.get( 'shipping_address') shipping_address2 = form.cleaned_data.get( 'shipping_address2') shipping_country = form.cleaned_data.get( 'shipping_country') shipping_zip = form.cleaned_data.get('shipping_zip') if is_valid_form([shipping_address1, shipping_country, shipping_zip]): shipping_address = Address( user=self.request.user, street_address=shipping_address1, apartment_address=shipping_address2, country=shipping_country, zip=shipping_zip, address_type='S' ) shipping_address.save() order.shipping_address = shipping_address order.save() set_default_shipping = form.cleaned_data.get( 'set_default_shipping') if set_default_shipping: shipping_address.default = True shipping_address.save() else: messages.info( self.request, "Please fill in the required shipping address fields") use_default_billing = form.cleaned_data.get( 'use_default_billing') same_billing_address = form.cleaned_data.get( 'same_billing_address') if same_billing_address: billing_address = shipping_address billing_address.pk = None billing_address.save() billing_address.address_type = 'B' billing_address.save() order.billing_address = billing_address order.save() elif use_default_billing: print("Using the defualt billing address") address_qs = Address.objects.filter( user=self.request.user, address_type='B', default=True ) if address_qs.exists(): billing_address = address_qs[0] order.billing_address = billing_address order.save() else: messages.info( self.request, "No default billing address available") return redirect('core:checkout') else: print("User is entering a new billing address") billing_address1 = form.cleaned_data.get( 'billing_address') billing_address2 = form.cleaned_data.get( 'billing_address2') billing_country = form.cleaned_data.get( 'billing_country') billing_zip = form.cleaned_data.get('billing_zip') if is_valid_form([billing_address1, billing_country, billing_zip]): billing_address = Address( user=self.request.user, street_address=billing_address1, apartment_address=billing_address2, country=billing_country, zip=billing_zip, address_type='B' ) billing_address.save() order.billing_address = billing_address order.save() set_default_billing = form.cleaned_data.get( 'set_default_billing') if set_default_billing: billing_address.default = True billing_address.save() else: messages.info( self.request, "Please fill in the required billing address fields") payment_option = form.cleaned_data.get('payment_option') if payment_option == 'S': return redirect('core:payment', payment_option='stripe') elif payment_option == 'P': return redirect('core:payment', payment_option='paypal') else: messages.warning( self.request, "Invalid payment option selected") return redirect('core:checkout') except ObjectDoesNotExist: messages.warning(self.request, "You do not have an active order") return redirect("core:order-summary")