Example #1
0
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))
Example #2
0
def logout(request):
    cart = ShoppingCartForm(request)
    
    do_logout(request)
    
    cart.store(request)
    return shortcuts.redirect(reverse('home'))
Example #3
0
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)
Example #4
0
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')
Example #5
0
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))
    
Example #6
0
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))