コード例 #1
0
ファイル: easy_post.py プロジェクト: udbhav/kishore
    def shipping_method_view(self, request):
        cart = utils.get_or_create_cart(request)

        if request.method == "POST":
            form = self.shipping_method_form(request.POST, request=request)

            if form.is_valid():
                shipment_id = request.session.get("kishore_shipment_id",None)
                shipment = easypost.Shipment.retrieve(id=shipment_id)
                rate_id = form.cleaned_data["method"]
                shipping_total = [r.rate for r in shipment.rates if r.id == rate_id][0]

                order = Order.objects.create(
                    shipment_processor = kishore_settings.KISHORE_SHIPPING_BACKEND,
                    shipment_id = shipment_id,
                    shipment_method_id = rate_id,
                    shipping_address = self.create_shipping_address(shipment.to_address),
                    shipping_total = shipping_total)

                request.session['kishore_order_id'] = order.id
                return redirect("kishore_payment")
        else:
            form = self.shipping_method_form(request=request)

        return render(request, "kishore/store/shipping_method.html",{'form':form})
コード例 #2
0
ファイル: easy_post.py プロジェクト: udbhav/kishore
    def shipping_view(self, request):
        if request.method == "POST":
            form = self.address_form(request.POST)

            if form.is_valid():
                to_address = form.easypost_address
                cart = utils.get_or_create_cart(request)

                parcel = easypost.Parcel.create(
                    length = 12,
                    width = 12,
                    height = 4,
                    weight = cart.total_weight,
                    )

                shipment = easypost.Shipment.create(
                    to_address = to_address,
                    from_address = self.from_address,
                    parcel = parcel,
                    )

                request.session['kishore_shipment_id'] = shipment["id"]

                return redirect("kishore_shipping_methods")
        else:
            form = self.address_form()

        return render(request, "kishore/store/easypost_shipping.html", {'form': form})
コード例 #3
0
ファイル: store.py プロジェクト: udbhav/kishore
    def get(self, request, *args, **kwargs):
        product = get_object_or_404(Product, slug=self.kwargs['slug'])

        # create an empty cart and add a single item
        cart = utils.get_or_create_cart(request, force_create=True)
        cart.add_product(product)

        return redirect("kishore_checkout")
コード例 #4
0
ファイル: store.py プロジェクト: udbhav/kishore
def remove_from_cart(request, item_id):
    if request.method == "POST":
        cart = utils.get_or_create_cart(request)
        item = get_object_or_404(CartItem, pk=item_id)

        if item not in cart.cartitem_set.all():
            return HttpResponse("Bad request", status=400)

        item.delete()
        return redirect("kishore_cart")
    else:
        return HttpResponse("Bad request", status=400)
コード例 #5
0
ファイル: store.py プロジェクト: udbhav/kishore
def checkout(request):
    cart = utils.get_or_create_cart(request)
    valid = cart.clean()

    if not valid:
        return render(request, "kishore/store/cart.html", {'cart':cart,'error':True})
    if cart.empty:
        return redirect("kishore_cart")
    elif cart.shippable:
        return redirect('kishore_shipping')
    else:
        request.session['kishore_order_id'] = None
        return redirect('kishore_payment')
コード例 #6
0
ファイル: store.py プロジェクト: udbhav/kishore
def update_cart(request, item_id):
    if request.method == "POST":
        cart = utils.get_or_create_cart(request)
        item = get_object_or_404(CartItem, pk=item_id)

        if item not in cart.cartitem_set.all():
            return HttpResponse("Bad request", status=400)

        form = CartItemForm(request.POST, instance=item)
        if form.is_valid():
            form.save()

        return redirect("kishore_cart")
    else:
        return HttpResponse("Bad request", status=400)
コード例 #7
0
ファイル: store.py プロジェクト: udbhav/kishore
def add_to_cart(request):
    if request.method == "POST":
        cart = utils.get_or_create_cart(request)
        form = CartItemForm(request.POST)
        if form.is_valid():
            item = form.save(commit=False)

            cart_items = cart.cartitem_set.filter(product=item.product)
            # check to see we don't already have this product in the cart
            if len(cart_items) > 0:
                item_to_update = cart_items[0]
                item_to_update.quantity = item_to_update.quantity + item.quantity
                item_to_update.save()
            else:
                item.cart = cart
                item.save()

        return redirect("kishore_cart")
    else:
        return HttpResponse("Bad request", status=400)
コード例 #8
0
ファイル: store.py プロジェクト: udbhav/kishore
def payment(request):
    order = utils.get_or_create_order(request)

    if request.method == "POST":
        form = PaymentForm(request.POST, order=order)
        if form.is_valid():
            order.customer_name = form.cleaned_data['name']
            order.customer_email = form.cleaned_data['email']
            order.payment_processor = form.cleaned_data['processor']
            order.save()

            p = form.cleaned_data["processor"]
            klass = utils.load_class(p)
            processor = klass(order)
            return processor.get_response(request)
    else:
        cart = utils.get_or_create_cart(request)
        order.prepare_from_cart(cart)
        form = PaymentForm(order=order)

    return render(request, "kishore/store/payment.html",{'form':form,'order':order})
コード例 #9
0
ファイル: store.py プロジェクト: udbhav/kishore
def cart(request):
    cart = utils.get_or_create_cart(request)
    return render(request, "kishore/store/cart.html", {'cart': cart})