Exemple #1
0
def checkout_address_create_view(request):
    form = AddressForm(request.POST or None)
    next_ = request.GET.get('next')
    next_post = request.POST.get('next')
    redirect_path = next_ or next_post or None
    if form.is_valid():
        print(request.POST)
        instance = form.save(commit=False)
        billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(request)

        if billing_profile is not None:
            address_type = request.POST.get('address_type', 'shipping')
            instance.billing_profile = billing_profile
            instance.address_type = request.POST.get('address_type', 'shipping')
            instance.save()

            request.session[address_type + '_address_id'] = instance.id
            print(address_type + '_address_id')

        else:
            print('Error address not saved')
            return redirect('cart:checkout')

        if is_safe_url(redirect_path, request.get_host()):
            return redirect(redirect_path)
    return redirect('cart:checkout')
Exemple #2
0
def checkout_address_create_view(request):
    address_form = AddressForm(request.POST or None)
    context = {'form': address_form}
    _next = request.GET.get('next')
    _next_post = request.POST.get('next')
    redirect_path = _next or _next_post or None
    if address_form.is_valid():
        print(request.POST)
        print(address_form.cleaned_data)
        instance = address_form.save(commit=False)
        billing_profile, _ = BillingProfile.objects.new_or_get(request)
        if billing_profile is not None:
            address_type = request.POST.get('address_type', 'shipping')
            instance.billing_profile = billing_profile
            instance.address_type = address_type
            instance.save()
            request.session[address_type + '_address_id'] = instance.id
            print(address_type + '_address_id',
                  request.session[address_type + '_address_id'])
        else:
            print('Error occured')
            redirect('cart:checkout')

        if is_safe_url(redirect_path, request.get_host()):
            return redirect(redirect_path)
    return redirect('cart:checkout')
Exemple #3
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect(cart_home)
    else:
        order_obj, new_order_obj = Order.objects.get_or_create(cart=cart_obj)
    
    guest_form = GuestForm()
    login_form = LoginForm()
    address_form = AddressForm()
    shipping_address_id = request.session.get('shipping_address_id', None)
    billing_address_form = AddressForm()
    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(request)
    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.new_or_get(billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_address = shipping_address_id
            order_obj.save()
    context = {
        'object': order_obj,
        'billing_profile': billing_profile,
        'login_form': login_form,
        'guest_form': guest_form,
        'address_form': address_form,
        'billing_address_form': address_form,
    }

    return render(request, 'checkout.html', context)
Exemple #4
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get_cart(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect('cart:home')

    login_form = LoginForm()
    guest_form = GuestForm()
    billing_address_form = AddressForm()
    address_form = AddressForm()

    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get_billing(request)
    
    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.new_or_get_order(billing_profile, cart_obj)

    context = {
        'object': order_obj,
        'billing_profile': billing_profile,
        'login_form': login_form,
        'guest_form': guest_form,
        'address_form': address_form,
        'billing_address_form': billing_address_form
    }

    return render(request, 'carts/checkout.html', context)
Exemple #5
0
def checkout_address_create_view(request):
    form = AddressForm(request.POST or None)
    context = {"form": form}
    next_ = request.GET.get("next")
    next_post = request.POST.get("next")
    redirect_path = next_ or next_post or None
    if form.is_valid():
        instance = form.save(commit=False)
        billing_profile, billing_profile_created = BillinigProfile.objects.new_or_get(
            request)
        if billing_profile is not None:
            address_type = request.POST.get("address_type", "shipping")
            instance.billing_profile = billing_profile
            instance.address_type = address_type
            instance.save()
            request.session[address_type + "_address_id"] = instance.id
        else:
            return redirect("cart:checkout")
        print(request.POST)
        if is_safe_url(redirect_path, request.get_host()):
            print(redirect_path)
            return redirect(redirect_path)
        else:
            return redirect("cart:checkout")
    return redirect("cart:checkout")
Exemple #6
0
def edit_address(request):
    address_id = request.GET.get("address_id")
    address_edit = request.GET.get("address_edit")
    address_delete = request.GET.get("address_delete")
    address_obj = Address.objects.get(id=address_id)
    if request.user.is_authenticated:
        if address_obj in request.user.billingprofile.address_set.all():
            if address_edit:
                form = AddressForm(instance=Address.objects.get(id=address_id))
                if request.method == 'POST':
                    form = AddressForm(request.POST or None)
                    if form.is_valid():
                        address_obj.address_line_1 = form.cleaned_data.get("address_line_1")
                        address_obj.address_line_2 = form.cleaned_data.get("address_line_2")
                        address_obj.city = form.cleaned_data.get("city")
                        address_obj.country = form.cleaned_data.get("country")
                        address_obj.state = form.cleaned_data.get("state")
                        address_obj.postal_code = form.cleaned_data.get("postal_code")
                        address_obj.save()
                        return render(request, 'accounts/account_info.html', {'address_id': address_id, 'address_delete': address_delete, 'form': form})
                    else:
                        return render(request, 'accounts/change_address.html', {'address_id': address_id, 'address_delete': address_delete, 'form': form})
            elif address_delete:
                address_obj.delete()
                return render(request, 'accounts/account_info.html', {'address_id': address_id, 'address_delete': address_delete})
        else:
            raise Http404
    else:
        raise Http404
    return render(request, 'accounts/change_address.html', {'address_id': address_id, 'address_delete': address_delete, 'form': form})
Exemple #7
0
def address_update(request):
    if request.method == 'POST':
        form = AddressForm(request.POST)
        next_post = request.POST.get('next')

        billing_profile, bill_created = BillingProfile.objects.new_or_get(
            request)
        cart_obj, cart_create = Cart.objects.new_or_get(request)
        order_obj, order_create = Order.objects.new_or_get(
            billing_profile=billing_profile, cart_obj=cart_obj)

        address_type = request.POST.get('address_type')

        address_id = request.POST.get('address')
        address = Address.objects.get(id=address_id)
        if address_type == 'shipping':
            order_obj.shipping_address = address
            order_obj.save()
        else:
            order_obj.billing_address = address
            order_obj.save()
        return redirect(next_post)
    else:
        form = AddressForm()
    return redirect('carts:cart_checkout')
Exemple #8
0
def address_update(request):
    if request.method == 'POST':
        # Is this a shipping or billing address????
        address_type = request.POST.get('address_type')
        address_id = request.POST.get('address')
        print('address', address_id)

        address = Address.objects.get(id=address_id)

        billing_profile, bill_created = BillingProfile.objects.new_or_get(
            request)
        cart_obj, cart_created = Cart.objects.new_or_get(request)
        order_obj, order_created = Order.objects.new_or_get(
            billing_profile=billing_profile, cart_obj=cart_obj)

        form = AddressForm(request.POST)
        if form.is_valid():

            # Now we have to associate to the order
            if address_type == 'shipping':
                # How do we get the order?
                order_obj.shipping_address = address
                order_obj.save()
            if address_type == 'billing':
                order_obj.billing_address = address
                order_obj.save()
            return redirect('carts:cart_checkout')
    else:
        return redirect('carts:cart_checkout')
Exemple #9
0
def checkout_address_create_view(request):
    form = AddressForm(request.POST or None)
    context = {"form": form}
    next_ = request.GET.get('next')
    next_post = request.POST.get('next_url')
    redirect_path = next_ or next_post or None
    address_type = request.POST.get('address_type')
    print("Address Type:", address_type)
    print("next_post", next_post)
    print("redirect_path", redirect_path)
    if form.is_valid():
        print(form.cleaned_data)
        print("REQUEST")
        print(request)
        instance = form.save(commit=False)
        #address_type = form.cleaned_data.get("address_type", "shipping")

        billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
            request)
        if billing_profile is not None:
            instance.billing_profile = billing_profile
            instance.address_type = address_type
            instance.save()
        else:
            print("Error here")
            return redirect("cart:checkout")

        request.session[address_type + "_address_id"] = instance.id
        print("Address Type: {0} | ID: {1}".format(address_type, instance.id))
        if is_safe_url(redirect_path, request.get_host()):
            return redirect(redirect_path)
        else:
            return redirect("cart:checkout")

    return redirect("cart:checkout")
Exemple #10
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect("cart:home")

    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    billing_address_form = AddressForm()

    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)

    context = {
        "object": order_obj,
        "billing_profile": billing_profile,
        "login_form": login_form,
        "guest_form": guest_form,
        "address_form": address_form,
        "billing_address_form": billing_address_form
    }
    return render(request, 'carts/checkout.html', context)
Exemple #11
0
def checkout_address_create_view(request):
    form = AddressForm(request.POST or None)
    context = {"form": form}
    next_ = request.GET.get("next")
    next_post = request.POST.get("next")
    redirect_path = next_ or next_post or None
    if form.is_valid():
        print(request.POST)
        instance = form.save(commit=False)
        billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
            request)
        if billing_profile is not None:
            address_type = request.POST.get("address_type", 'shipping')
            instance.billing_profile = billing_profile
            instance.address_type = request.POST.get('address_type',
                                                     'shipping')
            instance.save()

            request.session[address_type + "_address_id"] = instance.id
            print(request.session[address_type + "_address_id"])
        else:
            # TODO put a real error here that the address didn't save
            print("Error trying to save address")
            return redirect("cart:checkout")

        if is_safe_url(redirect_path, request.get_host()):
            return redirect(redirect_path)
        else:
            return redirect("cart:checkout")
    return redirect("cart:checkout")
Exemple #12
0
def addressview(request, user_id, address_id=None):
    address = None
    addresses_list = Address.objects.all().filter(user=user_id)

    if address_id:
        try:
            address = Address.objects.get(pk=address_id)
            addresses_list = Address.objects.filter(user=user_id).exclude(
                pk=address_id)
        except:
            return rendermessage(
                request, 'Error', 'Shipping does not exist', '',
                reverse('users:addresses', args=[str(user_id)]),
                'shipping addresses page')

    if request.method == "POST":
        if address:
            addressform = AddressForm(request.POST, instance=address)
        else:
            addressform = AddressForm(request.POST, initial=request.POST)

        if addressform.is_valid():
            newaddress = addressform.save(commit=False)
            newaddress.user_id = user_id
            newaddress.save()
            return rendermessage(
                request, 'New address confirmation',
                'Shipping address added succefully', '',
                reverse('users:addresses',
                        args=[str(user_id)]), 'addresses page')

        return rendermessage(
            request, 'Shipping address | Error', 'Shipping address ',
            'There was an error adding the shipping address. ' +
            addressform.error_message,
            reverse('users:addresses',
                    args=[str(user_id)]), 'shipping addresses page')
    else:  # GET
        if address:
            addressform = AddressForm(instance=address)
            button_text = 'Modify shiping address'
            page_title = address.name
        else:
            addressform = AddressForm()
            button_text = 'Add new shipping address'
            page_title = 'New'

    return render(
        request, 'addresses/addresses.html', {
            'user_id': user_id,
            'address': address,
            'page_title': page_title,
            'form': addressform,
            'addresses_list': addresses_list,
            'button_text': button_text,
        })
Exemple #13
0
    def dispatch(self,
                 request: HttpRequest,
                 realty_id: Optional[int] = None,
                 *args,
                 **kwargs):
        self.session_handler = SessionHandler(
            session=request.session,
            keys_collector_name=REALTY_FORM_KEYS_COLLECTOR_NAME,
            session_prefix=REALTY_FORM_SESSION_PREFIX,
        )

        if realty_id:  # if we are editing an existing Realty object
            self.realty = get_object_or_404(Realty, id=realty_id)

            # if a current user is not the host of the Realty
            if not hasattr(request.user, 'host') or \
                    self.realty.host != request.user.host:
                return redirect(reverse('realty:all'))

            self.address = self.realty.location
            self.is_creating_new_realty = False
            self.realty_images = self.realty.images.all()
            self.required_session_data = []
        else:
            self.required_session_data = get_keys_with_prefixes(
                names=get_required_fields_from_form_with_model(
                    forms_with_models=[
                        FormWithModel(RealtyGeneralInfoForm, Realty),
                        FormWithModel(AddressForm, Address),
                        FormWithModel(RealtyDescriptionForm, Realty),
                    ], ),
                prefix=REALTY_FORM_SESSION_PREFIX,
            )

            self.realty_info_initial = self.session_handler.get_items_by_keys(
                keys=get_field_names_from_form(RealtyForm))
            # handle m2m field
            self.realty_info_initial[
                'amenities'] = get_amenity_ids_from_session(
                    self.session_handler)

            self.realty_address_initial = self.session_handler.get_items_by_keys(
                keys=get_field_names_from_form(AddressForm))

        self.realty_form = RealtyForm(
            data=request.POST or None,
            instance=self.realty,
            initial=self.realty_info_initial,
        )
        self.address_form = AddressForm(
            data=request.POST or None,
            instance=self.address,
            initial=self.realty_address_initial,
        )
        return super(RealtyEditView, self).dispatch(request, realty_id, *args,
                                                    **kwargs)
Exemple #14
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect('cart:home')

    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    billing_address_form = AddressForm()
    billing_address_id = request.session.get('billing_address_id', None)
    shipping_address_id = request.session.get('shipping_address_id', None)

    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    address_qs = None
    if request.user.is_authenticated:
        address_qs = Address.objects.filter(billing_profile=billing_profile)

    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            del request.session['shipping_address_id']
        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session['billing_address_id']

        if billing_address_id or shipping_address_id:
            order_obj.save()

    if request.method == "POST":
        is_done = order_obj.check_done()
        if is_done:
            order_obj.mark_paid()
            request.session['cart_items'] = 0
            del request.session['cart_id']
            print(order_obj.status)
            return redirect('cart:checkout-success')

    context = {
        'object': order_obj,
        'billing_profile': billing_profile,
        'login_form': login_form,
        'guest_form': guest_form,
        'address_form': address_form,
        'billing_address_form': billing_address_form,
        "address_qs": address_qs,
    }

    return render(request, 'carts/checkout.html', context)
Exemple #15
0
 def dispatch(self, request: HttpRequest, *args, **kwargs):
     self.session_handler = SessionHandler(
         session=request.session,
         keys_collector_name=REALTY_FORM_KEYS_COLLECTOR_NAME,
         session_prefix=REALTY_FORM_SESSION_PREFIX,
     )
     initial = self.session_handler.get_items_by_keys(
         keys=get_field_names_from_form(AddressForm))
     self.location_form = AddressForm(request.POST or None, initial=initial)
     return super(RealtyLocationEditView,
                  self).dispatch(request, *args, **kwargs)
def order_checkout(request):
    cart_obj, new = Cart.objects.new_or_get(request)
    if new or cart_obj.products.count() == 0:
        return redirect('cart:home')
    login_form = UserLoginForm()
    guest_user_form = GuestForm()
    ship_add_form = AddressForm()
    bill_add_form = AddressForm()
    billing_address_id = request.session.get("billing_address_id", None)
    shipping_address_id = request.session.get("shipping_address_id", None)
    bill_profile, created = BillingProfile.objects.new_or_get(request)
    order_obj = None
    address_qs = Address.objects.filter(billing_profle=bill_profile)

    if bill_profile is not None:
        # if there are other objects then make them inactive for now,
        if request.user.is_authenticated:
            address_qs = Address.objects.filter(billing_profle=bill_profile)
        order_qs = Order.objects.filter(billing_profle=bill_profile,
                                        cart=cart_obj,
                                        active=True,
                                        status="created")
        if order_qs.count() >= 1:
            order_obj = order_qs.first()
        else:
            order_obj = Order.objects.create(cart=cart_obj,
                                             billing_profle=bill_profile)
        if billing_address_id:
            order_obj.bill_add = Address.objects.get(id=billing_address_id)
            del request.session["billing_address_id"]
        if shipping_address_id:
            order_obj.ship_add = Address.objects.get(id=shipping_address_id)
            del request.session["shipping_address_id"]
        if billing_address_id or shipping_address_id:
            order_obj.save()
    if request.method == 'POST':
        isvalid = order_obj.final_check()
        if isvalid:
            order_obj.status_paid()
            del request.session["cart_id"]
            request.session["cart_items"] = 0
            if 'guest_email_id' in request.session.keys():
                del request.session['guest_email_id']
            return render(request, "order/success.html", {'order': order_obj})
    responseData = {
        'ship_add': ship_add_form,
        'bill_add': bill_add_form,
        'order': order_obj,
        'bill_profile': bill_profile,
        'form': login_form,
        'guest_form': guest_user_form,
        'address_qs': address_qs
    }
    return render(request, 'order/checkout.html', responseData)
Exemple #17
0
def checkout(request):
    print(1)
    cart_obj, new_obj = Cart.objects.get_or_new(request)
    order_obj = None
    if new_obj or cart_obj.products.count() == 0:
        return redirect('cart:home')

    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    billing_address_form = AddressForm()
    billing_address_id = request.session.get('billing_address_id', None)
    shipping_address_id = request.session.get('shipping_address_id', None)
    address_qs = None
    billing_profile, billing_profile_created = BillingProfile.objects.get_or_new(
        request)

    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.get_or_new(
            billing_profile, cart_obj)
        if request.user.is_authenticated:
            address_qs = Address.objects.filter(
                billing_profile=billing_profile)
        if shipping_address_id:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            del request.session['shipping_address_id']
        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session['billing_address_id']
        if billing_address_id or shipping_address_id:
            order_obj.save()

    if request.method == 'POST':
        if order_obj.check_done():
            order_obj.mark_paid()
            del request.session['cart_id']
            request.session['cart_items'] = 0
            return redirect('cart:done')

    # redirect to success page
    context = {
        'object': order_obj,
        'login_form': login_form,
        'guest_form': guest_form,
        'billing_profile': billing_profile,
        'address_form': address_form,
        'billing_address_form': billing_address_form,
        'address_qs': address_qs,
    }
    return render(request, 'carts/checkout.html', context)
Exemple #18
0
def checkout_home(request):
    cart_obj, new_created = Cart.objects.new_or_get(request)
    order_obj = None

    if new_created or cart_obj.products.count() == 0:
        return redirect("carts:home")

    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    billing_address_form = AddressForm()
    billing_address_id = request.session.get("billing_address_id", None)
    shipping_address_id = request.session.get("shipping_address_id", None)

    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)
        print("Order object created: ", order_obj_created)
        if shipping_address_id:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            del request.session["shipping_address_id"]

        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session["billing_address_id"]

        if billing_address_id or shipping_address_id:
            order_obj.save()

    if request.method == "POST":
        is_done = order_obj.check_done()
        if is_done:
            order_obj.mark_paid()
            request.session['cart_items'] = 0
            del request.session['cart_id']
            return redirect("/cart/success")

    context = {
        "object": order_obj,
        "billing_profile": billing_profile,
        "login_form": login_form,
        "guest_form": guest_form,
        "address_form": address_form,
        "billing_address_form": billing_address_form
    }

    return render(request, "carts/checkout.html", context)
Exemple #19
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect('cart:home')
    next_url = request.build_absolute_uri
    billing_profile = None
    guest_form = GuestForm()
    address_form = AddressForm()
    billing_address_form = AddressForm()
    # CODE REF VIDEO 089
    billing_address_id = request.session.get("billing_address_id", None)
    shipping_address_id = request.session.get("shipping_address_id", None)

    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    #  SOME CODEs ARE COPIED TO MODEL MANAGER(BILLING)

    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            del request.session['shipping_address_id']
        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session['billing_address_id']
        if billing_address_id or shipping_address_id:
            order_obj.save()

    if request.method == 'POST':

        is_done = order_obj.check_done()
        if is_done:
            order_obj.mark_paid()
            del request.session['cart_id']
            request.session['cart_items'] = 0
            return redirect('/cart/success')

    context = {
        'object': order_obj,
        'billing_profile': billing_profile,
        'absolute_uri': next_url,
        'form': guest_form,
        'address_form': address_form,
        'billing_address_form': billing_address_form,
    }
    return render(request, 'carts/checkout.html', context)
Exemple #20
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    shipping_address_qs = None
    billing_address_qs = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect('cart:home')
    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    billing_address_id = request.session.get('billing_address_id')
    shipping_address_id = request.session.get('shipping_address_id')

    if billing_profile is not None:
        address_qs = Address.objects.filter(billing_profile=billing_profile)
        shipping_address_qs = address_qs.filter(address_type="shipping")
        billing_address_qs = address_qs.filter(address_type="billing")
        order_obj, order_obj_created = Order.objects.new_or_get(
            cart_obj, billing_profile)
        if billing_address_id is not None and shipping_address_id is not None:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            order_obj.save()
            del request.session['billing_address_id']
            del request.session['shipping_address_id']
        if request.method == "POST":
            is_done = order_obj.check_order()
            if is_done:
                del request.session['cart_id']
                request.session['cart_count'] = 0
                order_obj.complete_order()
                cart_obj.active = False
                cart_obj.save()
                return redirect("cart:success")
    context = {
        "object": order_obj,
        "obj_count": cart_obj.products.count(),
        "billing_profile": billing_profile,
        "form_login": LoginForm(),
        "form_registration": RegistrationForm(),
        "form_guest": GestForm(),
        "shipping_address": AddressForm(prefix="shipping"),
        "billing_address": AddressForm(prefix="billing"),
        "saved_shipping_address": shipping_address_qs,
        "saved_billing_address": billing_address_qs,
    }
    return render(request, "cart/checkout.html", context)
Exemple #21
0
def checkout_home(request):
	# Get cart and order
	cart_obj, cart_created = Cart.objects.new_or_get(request)
	order_obj = None
	if cart_created or cart_obj.product.count() == 0:
		return redirect('cart:home')

	login_form = forms.LoginForm()
	guest_form = forms.GuestForm()
	address_form = AddressForm()

	billing_profile,billing_profile_created = BillingProfile.objects.new_or_get(request)
	billing_address_id = request.session.get('billing_address_id')
	shipping_address_id = request.session.get('shipping_address_id')
	print(billing_address_id, shipping_address_id)

	if billing_profile != None:
		order_obj, order_obj_created = Order.objects.new_or_get(billing_profile, cart_obj)
		if shipping_address_id:
			order_obj.shipping_address = Address.objects.get(id=shipping_address_id)
			del  request.session['shipping_address_id']
		if billing_address_id:
			order_obj.billing_address = Address.objects.get(id=billing_address_id)
			del  request.session['billing_address_id']
			order_obj.save()

	context = {
		'object': order_obj,
		'billing_profile': billing_profile,
		'guest_form': guest_form,
		'login_form': login_form,
		'address_form':address_form,
	}	

	return render(request, 'carts/checkout.html', context)
Exemple #22
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect("cart:home")

    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    shipping_address_id = request.session.get("shipping_address_id", None)
    billing_address_id = request.session.get("billing_address_id", None)

    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    address_qs = None
    has_card = False
    if billing_profile is not None:
        if request.user.is_authenticated():
            address_qs = Address.objects.filter(
                billing_profile=billing_profile)

        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_profile = Address.objects.get(
                id=shipping_address_id)
            del request.session["shipping_address_id"]
            order_obj.save()
        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session["billing_address_id"]
            order_obj.save()
        has_card = billing_profile.has_card

    if request.method == "POST":
        is_prepare = order_obj.check_is_ready_to_be_pay()
        if is_prepare:
            did_charge, crg_msg = billing_profile.charge(order_obj)
            if did_charge:
                order_obj.mark_paid()
                request.session['cart_items'] = 0
                del request.session['cart_id']
                if not billing_profile.user:
                    billing_profile.set_cards_inactive()
                return redirect("cart:success")
            else:
                print(crg_msg)
                return redirect("cart:checkout")
    context = {
        "object": order_obj,
        "billing_profile": billing_profile,
        "login_form": login_form,
        "guest_form": guest_form,
        "address_form": address_form,
        "address_qs": address_qs,
        "has_card": has_card,
        "publish_key": STRIPE_PUB_KEY
    }
    return render(request, "carts/checkout.html", context)
Exemple #23
0
def cart_checkout(request):
    order_obj = None
    old_addresses = None
    credit_card = None
    loginForm = LoginForm()
    guestForm = GuestForm()
    addressForm = AddressForm()
    # print('AddressForm', addressForm)
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    billing_profile, bill_created = BillingProfile.objects.new_or_get(request)
    cards = Card.objects.filter(billing_profile=billing_profile, default=True)
    if cards.exists():
        credit_card = cards.last()

    # print('BillingProfile ',billing_profile)
    if billing_profile is not None:
        order_obj, order_created = Order.objects.new_or_get(
            billing_profile=billing_profile, cart_obj=cart_obj)

    if order_obj is not None:
        old_addresses = Address.objects.filter(billing_profile=billing_profile)

    context = {
        'order_obj': order_obj,
        'loginForm': loginForm,
        'guestForm': guestForm,
        'addressForm': addressForm,
        'billing_profile': billing_profile,
        'old_addresses': old_addresses,
        'credit_card': credit_card,
    }
    return render(request, 'carts/cart_checkout.html', context)
Exemple #24
0
def checkout_home(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect("cart:home")

    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    billing_address_id = request.session.get("billing_address_id", None)
    shipping_address_id = request.session.get("shipping_address_id", None)
    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    if billing_profile is not None:
        order_obj, order_obj_created = Order.objects.new_or_get(
            billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_address = Address.objects.get(
                id=shipping_address_id)
            del request.session["shipping_address_id"]
        if billing_address_id:
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session["billing_address_id"]
        if billing_address_id or shipping_address_id:
            order_obj.save()

    context = {
        "object": order_obj,
        "billing_profile": billing_profile,
        "login_form": login_form,
        "guest_form": guest_form,
        "address_form": address_form,
    }
    return render(request, "carts/checkout.html", context)
Exemple #25
0
def checkout_home(request):
    cart_obj,cart_created=Cart.objects.new_or_get(request)
    order_obj=None
    if cart_created or cart_obj.products.count()==0:
        return redirect('cart:home')
    login_form=loginForm(request=request)
    guest_form=GuestForm()
    address_form=AddressForm(request.POST or None)
    shipping_address_id=request.session.get("shipping_address_id",None)
    billing_address_id=request.session.get("billing_address_id",None)
    billing_profile,billing_profile_created=BillingProfile.objects.new_or_get(request)
    address_qs=None
    if billing_profile is not None:
        if request.user.is_authenticated:
            address_qs=Address.objects.filter(billing_profile=billing_profile)
        order_obj, order_obj_created=Order.objects.new_or_get(billing_profile=billing_profile,cart_obj=cart_obj)            
        if shipping_address_id:
            order_obj.shipping_address=Address.objects.get(id=shipping_address_id)
            del request.session["shipping_address_id"]
        if billing_address_id:
            order_obj.billing_address=Address.objects.get(id=billing_address_id)
            del request.session["billing_address_id"]
        if shipping_address_id or billing_address_id:
            order_obj.save()

    context={
        'object':order_obj,
        'billing_profile':billing_profile,
        'login_form':login_form,
        'guest_form':guest_form,
        'address_form':address_form,
        'address_qs':address_qs,
    }
    return render(request,'checkout.html',context)
Exemple #26
0
def checkout_address(request):
    cart_obj, cart_created = Cart.objects.new_or_get(request)
    if cart_created or cart_obj.accounts.count() == 0:
        return redirect("cart:home")

    address_qs = None
    billing_address_form = AddressForm()

    billing_profile, billing_profile_created = BillingProfile.objects.new_or_get(
        request)
    if billing_profile:
        if request.user.is_authenticated():
            address_qs = Address.objects.filter(
                billing_profile=billing_profile)

        billing_address_id = request.session.get("billing_address_id", None)
        if billing_address_id:
            order_obj, order_obj_created = Order.objects.new_or_get(
                billing_profile, cart_obj)
            order_obj.billing_address = Address.objects.get(
                id=billing_address_id)
            del request.session["billing_address_id"]
            order_obj.save()
            return redirect("billing:payment_method")
    else:
        return redirect('cart:checkout_login')

    context = {
        "billing_address_form": billing_address_form,
        "address_qs": address_qs,
    }

    return render(request, 'cart/checkout_address.html', context)
Exemple #27
0
def update_daycare(request, id):
    context = None
    if request.user.is_authenticated() and request.user.admin:
        daycare_object = Daycare.objects.get(id=id)
        address = Address.objects.get(id=daycare_object.daycare_address.id)
        daycareform = DaycareFormCreation(
            request.POST or None,
            initial={
                'name': daycare_object.name,
                'identification_number': daycare_object.identification_number,
                'NEQ': daycare_object.NEQ,
                'account_number': daycare_object.account_number,
            })
        addressForm = AddressForm(request.POST or None,
                                  initial={
                                      'address_line_1': address.address_line_1,
                                      'address_line_2': address.address_line_2,
                                      'city': address.city,
                                      'country': address.country,
                                      'province': address.province,
                                      'postal_code': address.postal_code,
                                      'home_phone': address.home_phone,
                                      'cell_phone': address.cell_phone,
                                  })
        context = {
            'daycare': daycareform,
            'address': addressForm,
            'daycare_object': daycare_object,
        }
        if request.method == 'POST':
            edit_daycare(request, id)
            return redirect("/daycare/" + id)

    return render(request, "daycares/detail.html", context)
Exemple #28
0
def create_daycare(request):
    context = None
    if request.user.is_authenticated() and request.user.admin:
        daycares = Daycare.objects.all()
        daycareform = DaycareFormCreation(request.POST or None)
        address = AddressForm(request.POST or None)
        bank = BankForm(request.POST or None)
        context = {
            'daycare': daycareform,
            'address': address,
            'daycares': daycares,
            'bank': bank
        }

        if request.is_ajax() and request.method == 'GET':
            unique_taxes = Daycare()
            data = [
                unique_taxes.unique_employee_taxes,
                unique_taxes.unique_company_taxes
            ]
            return JsonResponse(data,
                                safe=False,
                                content_type='application/json')

        if request.method == 'POST':
            add_daycare(request, daycareform, address, bank)
            return redirect("/daycare/")

    return render(request, "daycares/daycares.html", context)
Exemple #29
0
def deviceRegister(request, device_id):
    dev = Device.objects.filter(device_id=device_id).first()

    grocery_vals = dev.slot_grocery()

    dev_address, dev_contact = dev.has_related_object()
    addressForm = None
    contactForm = None

    if not dev_address:
        addressForm = AddressForm()

    if not dev_contact:
        contactForm = ContactForm()

    if dev_address or dev_contact:
        next_url = '/home/'
    else:
        next_url = request.build_absolute_uri

    context = {
        'dev': dev,
        'address_form': addressForm,
        'contact_form': contactForm,
        'next_url': next_url,
    }

    return render(request,
                  template_name="device/register.html",
                  context=context)
Exemple #30
0
def checkout_home(request):
    (cart_obj, cart_created) = Cart.objects.new_or_get(request)
    order_obj = None
    if cart_created or cart_obj.products.count() == 0:
        return redirect('cart:home')

    login_form = LoginForm()
    guest_form = GuestForm()
    address_form = AddressForm()
    billing_address_id = request.session.get('billing_address_id', None)
    shipping_address_id = request.session.get('shipping_address_id', None)

    (billing_profile, billing_profile_created) = \
        BillingProfile.objects.new_or_get(request)
    address_qs = None
    has_card = False
    if billing_profile is not None:
        if request.user.is_authenticated:
            address_qs = \
                Address.objects.filter(billing_profile=billing_profile)
        (order_obj, order_obj_created) = \
            Order.objects.new_or_get(billing_profile, cart_obj)
        if shipping_address_id:
            order_obj.shipping_address = \
                Address.objects.get(id=shipping_address_id)
            del request.session['shipping_address_id']
        if billing_address_id:
            order_obj.billing_address = \
                Address.objects.get(id=billing_address_id)
            del request.session['billing_address_id']
        if billing_address_id or shipping_address_id:
            order_obj.save()
        has_card = billing_profile.has_card

    if request.method == 'POST':

        # check that order is done

        is_prepared = order_obj.check_done()
        if is_prepared:
            (did_charge, crg_msg) = billing_profile.charge(order_obj)
            if did_charge:
                order_obj.mark_paid()
                request.session['cart_items'] = 0
                del request.session['cart_id']
                return redirect('cart:success')
            else:
                print(crg_msg)
                return redirect('cart:checkout')
    context = {
        'object': order_obj,
        'billing_profile': billing_profile,
        'login_form': login_form,
        'guest_form': guest_form,
        'address_form': address_form,
        'address_qs': address_qs,
        'has_card': has_card,
        'publish_key': STRIPE_PUB_KEY,
    }
    return render(request, 'cart/checkout.html', context)