def generate(request): if request.POST: cart = ShoppingCartForm(request) address_id = request.POST.get('address', '') if not address_id: messages.error(request, u'请选择一个送货地址。') return shortcuts.redirect(reverse('order-generate')) address = shortcuts.get_object_or_404(ContactAddress, id=address_id, user=request.user) with transaction.commit_on_success(): order = Order(owner=request.user, address=str(address), description=request.POST.get('description', ''), amount=cart.amount) order.save() for pid, p in cart.products.iteritems(): OrderItem(order=order, product=shortcuts.get_object_or_404(Product, id=pid), price=p['price'], count=p['count'] ).save() cart.delete(request) messages.success(request, u'下单成功!请等待系统确认。') return shortcuts.redirect(reverse('order-detail', args=[order.id])) addresses = ContactAddress.objects.filter(user=request.user) if not addresses: messages.error(request, u'你还没有送货地址,请创建至少一个送货地址。') return shortcuts.redirect(reverse('account-address-add')) return shortcuts.render_to_response('order/generate.html', {'addresses': addresses}, context_instance=RequestContext(request))
def logout(request): cart = ShoppingCartForm(request) do_logout(request) cart.store(request) return shortcuts.redirect(reverse('home'))
def product_detail(request, *args, **kwargs): cart_form = ShoppingCartForm(request.POST or None) product_id = kwargs['productId'] product = Product.objects.filter(id=product_id).first() gallery_list = ProductGallery.objects.filter(product_id=product_id) grouped_gallery = list(my_grouper(3, gallery_list)) related_products = Product.objects.get_queryset().filter( category__product=product).distinct() grouped_related_products = list(my_grouper(4, related_products)) if product is None or not product.active: raise Http404('محصول مورد نظر یافت نشد') cart_form = ShoppingCartForm(request.POST or None, initial={'product_id': product_id}) ip_address = request.user.ip_address if ip_address not in product.hits.all(): product.hits.add(ip_address) context = { 'object': product, 'cart': cart_form, 'galleries': grouped_gallery, 'related_products': grouped_related_products, 'cart_form': cart_form, } return render(request, 'blog/product-details.html', context=context)
def add_to_cart(request): cart_form = ShoppingCartForm(request.POST or None) current_user_id = request.user.id if cart_form.is_valid(): order = Order.objects.filter(owner_id=current_user_id, is_paid=False).first() if order is None: order = Order.objects.create(owner_id=current_user_id, is_paid=False) product_id = cart_form.cleaned_data.get('product_id') amount = cart_form.cleaned_data.get('amount') color = cart_form.cleaned_data.get('color')[0] size = cart_form.cleaned_data.get('size')[0] print(color) if amount < 0: amount = 1 product = Product.objects.filter(id=product_id).first() if order.orderdetail_set.filter(product_id=product_id).exists(): order.orderdetail_set.filter(product_id=product_id).update( product_id=product_id, amount=amount, unit_price=product.price, color=color, size=size) else: order.orderdetail_set.create(product_id=product_id, amount=amount, unit_price=product.price, color=color, size=size) return redirect('order:cart')
def remove_item(request, product_id): cart = ShoppingCartForm(request) cart.remove_product(product_id) cart.store(request) return shortcuts.render_to_response('order/shop_cart.html', context_instance=RequestContext(request))
def add_item(request): product_id = request.REQUEST.get('pid', '') try: count = int(request.REQUEST.get('count', '1')) if count < 1: raise except: messages.error(request, u'您输入的商品数量错误,请重新输入。') return shortcuts.render_to_response('order/shop_cart.html', context_instance=RequestContext(request)) product = shortcuts.get_object_or_404(Product, id=product_id) cart = ShoppingCartForm(request) cart.set_product(product, count) cart.store(request) return shortcuts.render_to_response('order/shop_cart.html', context_instance=RequestContext(request))