def __init__(self, request):
     if request.user.is_authenticated and 'cart_id' in request.session:
         # this means session of anon has a cart but now he logged in, so the cart should connect to the user, and if there is an old active cart for this user deactivate it
         try:
             cart = Cart.objects.get(user= request.user, active=True)
             cart.active = False
             cart.save()
             self.cart = Cart.objects.get(id = request.session['cart_id'], active=True)
             self.cart.user = request.user
             self.cart.save()
             request.session.pop('cart_id')
         except:
             self.cart = Cart.objects.get(id = request.session['cart_id'], active=True)
             self.cart.user = request.user
             self.cart.save()
             request.session.pop('cart_id')
     elif request.user.is_authenticated:
         try:
             self.cart = Cart.objects.get(user= request.user, active=True)
         except:
             self.cart = Cart(user = request.user)
             self.cart.save()
     elif 'cart_id' in request.session:
         try:
             self.cart = Cart.objects.get(id = request.session['cart_id'], active=True)
         except:
             request.session.pop('cart_id')
             self.cart = Cart()
             self.cart.save()
             request.session['cart_id'] = self.cart.id
     else:
         self.cart = Cart()
         self.cart.save()
         request.session['cart_id'] = self.cart.id
     self.load_items()
Ejemplo n.º 2
0
def orderdetails(request):
    previous_route = request.META.get("HTTP_REFERER", None)
    matcing_url = request.get_full_path
    cart_id = request.session.get("sessionid", None)
    anonymous_email = request.session.get("anonymoususer", None)
    user = request.user
    if previous_route:
        if request.user.is_authenticated and cart_id is not None:
            try:
                cart_obj_for_register_user = Cart.objects.get(id=cart_id)
                cart_obj_for_register_user.user = request.user
                cart_obj_for_register_user.save()
                try:
                    billing_obj = BillingProfileforRegisterUser.objects.get(
                        user__id=request.user.id)

                    orders_obj, created = OrderForRegisterUser.objects.update_or_create(
                        cart=Cart(id=cart_id),
                        defaults={
                            "billing_profile_register_user": billing_obj
                        })
                    cart = Cart.objects.get(id=cart_id)
                    subtotal = cart.subtotals
                    total = cart.total
                    product = cart.product.all()
                except ObjectDoesNotExist:
                    print(
                        "billing object has not been created yet for authenticated users"
                    )
            except ObjectDoesNotExist:
                print(" Cart doesn't exists ")
        else:
            try:
                cart_obj_for_anonymus_user = Cart.objects.get(id=cart_id)
                try:
                    billing_obj = BillingProfileForAnonymous.objects.get(
                        email=anonymous_email)

                    orders_obj, created = OrderForAnonymusUser.objects.update_or_create(
                        cart=Cart(id=cart_id),
                        defaults={"billing_profile_anynous_user": billing_obj})
                    cart = Cart.objects.get(id=cart_id)
                    subtotal = cart.subtotals
                    total = cart.total
                    product = cart.product.all()
                except ObjectDoesNotExist:
                    print("billing object for anonymus user doesn't exists")
            except ObjectDoesNotExist:
                print("cart doesn't exist for anonymus user")
        a = orders_obj
        request.session["order_id"] = orders_obj.order_id
        context = {
            "order_info": orders_obj,
            "product": product,
            "total": total,
            "subtotal": subtotal
        }
        return render(request, "order/orderdetails.html", context)
    return redirect("cart:cartitem")
Ejemplo n.º 3
0
def signup(request):
    if request.method == "POST":
        if request.POST['password1'] == request.POST['password2']:
            try:
                user = User.objects.get(username=request.POST['username'])
                return render(request, 'accounts/signup.html',
                              {'error': 'User already exist'})

            except User.DoesNotExist:
                user = User.objects.create_user(
                    username=request.POST['username'],
                    password=request.POST['password1'])

                cart = Cart(user=request.POST['username'], cartitem=[[0]])
                add = Add(uname=request.POST['username'])
                add.save()
                cart.save()
                return redirect('home')

        else:
            return render(request, 'accounts/signup.html',
                          {'error': 'Password does not match'})

    else:

        return render(request, 'accounts/signup.html')
Ejemplo n.º 4
0
    def get(self, request):

        try:
            cart_id = self.request.session['cart_id']
            cart = Cart.objects.get(id=cart_id)
            self.request.session['total'] = cart.items.count()
        except:
            cart = Cart()
            cart.save()
            cart_id = cart.id
            self.request.session['cart_id'] = cart_id
            cart = Cart.objects.get(id=cart_id)

        qty = request.GET['qty']
        item_id = request.GET['item_id']

        cart_item = CartItem.objects.get(id=int(item_id))
        cart_item.quantity = int(qty)
        cart_item.item_total = int(qty) * Decimal(cart_item.book.price)
        cart_item.save()

        new_cart_total = 0.00
        for item in cart.items.all():
            new_cart_total += float(item.item_total)

        cart.cart_total = new_cart_total
        cart.save()

        return JsonResponse({
            'cart_total': cart.items.count(),
            'item_total': cart_item.item_total,
            'cart_total_price': cart.cart_total
        })
Ejemplo n.º 5
0
def order_create(request, total=0):
    cart = Cart(request)
    if request.method == 'POST':
        form = IEPostalAddressForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            if cart.voucher:
                order.voucher = cart.voucher
                order.discount = cart.voucher.discount
            if request.user.is_authenticated:
                username = str(request.user.username)
                order.username = username
            order = form.save()
            order.save()
        for order_item in cart:
            OrderItem.objects.create(order=order,
                                     product=order_item['product'],
                                     price=order_item['price'],
                                     quantity=order_item['quantity'])
        cart.clear()
        total = Cart.get_total_price_after_discount(cart)
        Email.sendOrderConfirmation(request, order.emailAddress, order.id,
                                    order.addressline1, order.addressline2,
                                    order.code, order.city, order.county,
                                    order.country, total)
        return render(request, 'order_created.html', {
            'order': order,
            'total': total
        })
    else:
        form = IEPostalAddressForm()
    return render(request, 'order.html', {'cart': cart, 'form': form})
Ejemplo n.º 6
0
def add_carts(u_id, g_id, num):
    goods = Goods.objects.filter(g_id=g_id)
    good = goods.first()
    carts = Cart.objects.filter(u_id=u_id, g_id=g_id)
    if carts:
        cart = carts.first()
        cart.c_num += int(num)
        cart.c_total_price += int(num) * good.g_price
        cart.save()
    else:
        cart = Cart()
        cart.u_id = u_id
        cart.g_id = g_id
        cart.c_num = int(num)
        cart.c_total_price = int(num) * good.g_price
        cart.save()
    good.g_stock -= int(num)
    good.g_sale += int(num)
    good.save()
    return {
        'good': {
            'num': cart.c_num,
            'uid': u_id,
            'gid': g_id,
            'total_price': cart.c_total_price
        }
    }
Ejemplo n.º 7
0
    def get(self, request):

        # --------------------------------------------------
        # Cart
        cart = Cart(request)

        # --------------------------------------------------
        # Products
        objList = Product.objects.featured()

        # --------------------------------------------------
        # Category count
        productCount = dict()
        productCount["all"] = Product.objects.all().count()
        productCount["macrame"] = Product.objects.macrame().count()
        productCount["metal"] = Product.objects.metal().count()

        context = {
            "webpage_name": self.webpage_name,
            "webpage_description": self.webpage_description,
            "objList": objList,
            "cart": cart,
            "productCount": productCount
        }
        return render(request, self.template_name, context)
Ejemplo n.º 8
0
def get_anonymous_cart(request, session):
    try:
        cart = Cart.objects.get(session__session=session, user=None)
    except Cart.DoesNotExist:
        cart = Cart(session=AnonymousSession.objects.get(session=session))
        cart = cart.save()
    return cart
Ejemplo n.º 9
0
def make_order_view(request):  # формирование (создание, заполнение) заказа
    try:
        cart_id = request.session['cart_id']
        cart = Cart.objects.get(id=cart_id)
        request.session['total'] = cart.items.count()
    except:
        cart = Cart()
        cart.save()
        cart_id = cart.id
        request.session['cart_id'] = cart_id
        cart = Cart.objects.get(id=cart_id)
    categories = Category.objects.all()
    form = OrderForm(request.POST or None)
    if form.is_valid():
        name = form.cleaned_data['name']
        last_name = form.cleaned_data['last_name']
        phone = form.cleaned_data['phone']
        buying_type = form.cleaned_data['buying_type']
        address = form.cleaned_data['address']
        comments = form.cleaned_data['comments']
        new_order = Order.objects.create(user=request.user,
                                         items=cart,
                                         total=cart.cart_total,
                                         first_name=name,
                                         last_name=last_name,
                                         phone=phone,
                                         address=address,
                                         buying_type=buying_type,
                                         comments=comments)
        del request.session['cart_id']
        del request.session['total']
        return HttpResponseRedirect(reverse('thank_you'))
    return render(request, 'order/order.html', {'categories': categories})
Ejemplo n.º 10
0
def user_login(request):
    if request.user.is_authenticated:  # если пользователь авторизован редиректим на главную
        return redirect(reverse('general:index'))

    if request.method == 'POST':  # если запрос на вход
        next_page = request.POST.get('next')  # для редиректа после авторизации
        form = UserLoginForm(request, data=request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            user = authenticate(username=cd['username'], password=cd['password'])  # пробуем войти
            if user is not None:
                if user.is_active:  # успешный вход
                    login(request, user)
                    cart = Cart(request, first_login=True)
                    if cd['merge']:  # синхронизируем корзину с БД
                        cart.set_order_from_session()
                    messages.info(request, "Авторизация прошла успешно")
                    redirect_url = settings.LOGIN_REDIRECT_URL if not next_page else next_page
                    return redirect(redirect_url)
                else:  # вход не очень успешный :(
                    return HttpResponse('Disabled account')
    else:
        form = UserLoginForm(request)

    next = request.GET.get('next') if request.GET.get('next') else ''
    context = {'form': form, 'next': next}
    return render(request, 'auth_v2/login.html', context)
Ejemplo n.º 11
0
    def test_cart_detail(self):
        url_detail = reverse('cart_detail_api', args=(self.item.id, ))
        url_detail_with_fake_id = reverse('cart_detail_api',
                                          args=(self.fake_id, ))
        url = reverse('cart_list')
        post = {'item': self.item.id}

        # create cart
        cart = Cart(user=self.user1, item=self.item)
        cart.save()

        # get,post by anonymous user
        response = self.client.get(url_detail)
        self.assertEqual(response.status_code, 403)

        # get,post by auth user
        self.client.login(username='******', password='******')

        # Add item to the cart
        self.client.post(url, post)
        response = self.client.get(url_detail)
        self.assertEqual(response.status_code, 200)

        # Get to non exists cart detail
        response = self.client.get(url_detail_with_fake_id)
        self.assertEqual(response.status_code, 404)
Ejemplo n.º 12
0
def detail(request, product_id):
    product = Product.objects.get(pk=product_id)

    if request.method == 'POST':
        form = CartItemForm(request.POST)
        if form.is_valid():
            user = User.objects.get(username=request.user)
            try:
                cart = Cart.objects.get(user=user)
            except Cart.DoesNotExist:
                cart = Cart()
                cart.user = user
                cart.save()

            item = CartItem()
            item.product = product
            item.quantity = form.cleaned_data['quantity']
            item.save()

            cart.item.add(item)

            return redirect('products:index')

    else:
        form = CartItemForm()

    return render(request, 'products/detail.html', {
        'form': form,
        'product': product
    })
Ejemplo n.º 13
0
def signup(request):
    if request.method == 'GET':
        return render(request, 'accounts/signup.html')
    else:
        username = request.POST['username']
        email = request.POST['email']
        password1 = request.POST['password1']
        password2 = request.POST['password2']
        phone = request.POST['phone']
        state = request.POST['state']
        city = request.POST['city']
        address = request.POST['address']
        try:
            u = User.objects.get(username=username)
        except:
            u = None
        if u:
            return HttpResponseRedirect(reverse('signup'))
        else:
            if password1 == password2:
                user = User.objects.create_user(username, email, password1)
                user.save()
                profile = Profile(user=user,
                                  phonenumber=phone,
                                  state=state,
                                  city=city,
                                  address=address)
                profile.save()
                cart = Cart(user=user)
                cart.save()
                return HttpResponseRedirect(reverse('login'))
            else:
                return HttpResponseRedirect(reverse('signup'))
Ejemplo n.º 14
0
 def post(self, request):
     cart_id = request.session.get("cart_id")
     data = json.loads(request.body)
     items = data['items']
     if not items:
         print("List empty")
     else:
         if cart_id == None:
             cart = Cart()
             cart.user = User.objects.get(id=data['user'])
             cart.save()
             cart_id = cart.id
             request.session['cart_id'] = cart_id
         else:
             cart = Cart.objects.get(id=cart_id)
         for item in items:
             cart_item = CartItem()
             cart_item.cart = cart
             cart_item.item = get_object_or_404(Product.objects.all(),pk=item['itemid'])
             cart_item.quantity = item['quantity']
             cart_item.save()
             cart.items.add(cart_item)
         cart.save()
         # data = serializers.serialize('json', [cart,])
         # struct = json.loads(data)
         # data = json.dumps(struct[0])
         data = CartSerializer(Cart.objects.get(id=cart.id)).data
         # data2 = CartItemSerializer(cart.cartitem_set.all()).data
         # print (d)
     return Response({'data':data})
Ejemplo n.º 15
0
	def post(self, request):

		# check if a cart exists in 'session'
		# if not, create cart w/ guest owner

		# if user decides to login
		# need to retrieve the cart in 'session'
		# and assign the user as 'owner'

		new_cart = Cart()
		new_cart.save()

		added_product = Product.objects.get(pk=request.body)
		
		new_cart.products.add(added_product)

		serialized_cart = CartModelSerializer(new_cart)
		
		# print('the serialized cart', serialized_cart)
		# print('the serialized cart data', serialized_cart.data)

		return Response(serialized_cart.data)



		
Ejemplo n.º 16
0
def add_to_cart(request, pk):
    user = request.user
    if request.method == "POST":
        form = CartItemForm(request.POST)
        if form.is_valid():
            new_item_data = {'product_pk': pk, 'added': False}
            new_item_data = dict(new_item_data.items() +
                                 form.cleaned_data.items())
            request.session['new_item_data'] = new_item_data
    if user.is_authenticated():
        cart = Cart.objects.get(user=user.id)
    else:
        cart_pk = request.session.get('cart_pk', None)
        if cart_pk is None:
            cart = Cart(user=None)
            cart.save()
        else:
            cart = Cart.objects.get(pk=cart_pk)
        request.session['cart_pk'] = cart.pk
    data = request.session['new_item_data']
    if not data['added']:
        cart_item = CartItem.from_data(cart=cart, data=data)
        cart_item.save()
        print "added ", cart_item, "to", cart
        request.session['new_item_data']['added'] = True
        request.session['new_item_data']['cart_item_pk'] = cart_item.pk
    return HttpResponseRedirect(reverse("cart:new_items"))
Ejemplo n.º 17
0
def change_item_qty(request):  # кол-во товаров в корзине
    try:
        cart_id = request.session['cart_id']
        cart = Cart.objects.get(id=cart_id)
        request.session['total'] = cart.items.count()
    except:
        cart = Cart()
        cart.save()
        cart_id = cart.id
        request.session['cart_id'] = cart_id
        cart = Cart.objects.get(id=cart_id)
    qty = request.GET.get('qty')
    item_id = request.GET.get('item_id')
    cart_item = CartItem.objects.get(id=int(item_id))
    cart_item.qty = int(qty)
    cart_item.item_total = int(qty) * Decimal(
        cart_item.product.price
    )  # динамическое прибавление стоимости товаров (без перезагр. стр.)
    cart_item.save()

    new_cart_total = 0.00  # итоговая сумма товаров
    for item in cart.items.all():
        new_cart_total += float(item.item_total)
    cart.cart_total = new_cart_total
    cart.save()
    return JsonResponse({
        'cart_total': cart.items.count(),
        'item_total': cart_item.item_total,
        'cart_total_price': cart.cart_total
    })  # итоговая сумма товаров
Ejemplo n.º 18
0
def buy_product(request):
    user = request.user
    cart = Cart(request)
    """Если в корзине есть товары, то приобретаем их"""
    if cart.item_count() != 0:
        """Создание заказа"""
        Order.objects.create(customer=user.username)
        order = Order.objects.filter(customer=user.profile).latest('created')
        """У покупателя списываются средства со счета"""
        sum_buy = float(user.profile.account) - cart.get_total_price()
        Profile.objects.filter(user_id=user.id).update(account=sum_buy)

        for item in cart:
            """Определение суммы товара, продоваемого продукта, продавца"""
            sum_one_product = float(item['price']) * float(item['quantity'])
            product_sold = Product.objects.get(name=item['product'])
            seller = Profile.objects.get(id=product_sold.owner.id)
            """Зачисление средств на счет продавца"""
            old_account = seller.account
            new_account = float(old_account) + float(sum_one_product)
            Profile.objects.filter(id=seller.id).update(account=new_account)
            """Создание единицы заказанного товара из корзины"""
            OrderItem.objects.create(order=order,
                                     product=item['product'],
                                     price=item['price'],
                                     quantity=item['quantity'],
                                     )
        cart.clear()
        return render(request, 'thanks.html', {'order': order})
    else:
        return redirect('/')
Ejemplo n.º 19
0
def get_user_cart(request):
    try:
        cart = Cart.objects.get(user=request.user)
    except Cart.DoesNotExist:
        cart = Cart(user=request.user)
        cart = cart.save()
    return cart
Ejemplo n.º 20
0
def auction_checkcart(request):
    if request.method == 'GET':
        auctions = Auction.objects.filter(valid=True,
                                          exp_time__lt=datetime.now())

        serializerAuction = AuctionSerializer(auctions, many=True)

        for auction in auctions:
            itemId = auction.product_id
            lastest_price = auction.lastest_price

            try:
                cart = Cart.objects.get(customer_id=auction.customer_id)
            except:
                cart = Cart(customer_id=auction.customer_id,
                            time=datetime.now())
                cart.save()

            cartProduct = CartProduct(cart_id=cart.id,
                                      product_id=itemId,
                                      price=lastest_price,
                                      quantity=1,
                                      time=datetime.now())

            cartProduct.save()

            Auction.objects.filter(pk=auction.id).update(valid=False)

        return JsonResponse(serializerAuction.data, status=200, safe=False)
Ejemplo n.º 21
0
def register_user(request):
    if request.method == 'POST':
        user_form = UserForm(request.POST)
        user_profile_form = UserProfileForm(request.POST)
        if user_form.is_valid() and user_profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()
            profile = user_profile_form.save(commit=False)
            profile.user = user
            profile.save()
            cart = Cart()
            cart.user = user
            cart.t_amount = 0
            cart.save()
            return redirect('/login')
        else:
            print(user_form.errors, user_profile_form.errors)
            return HttpResponse('Forms Not Valid')
    else:
        user_form = UserForm()
        user_profile_form = UserProfileForm()
        context = {
            'user_form': user_form,
            'user_profile_form': user_profile_form
        }
        return render(request, 'register.html', context)
Ejemplo n.º 22
0
def checkout(request):
    cart = Cart(request)
    if len(cart.cart) == 0:
        return redirect('/')
    contact_form = CheckoutContactForm()
    products_in_basket = cart.cart
    if request.method == 'POST':
        data = request.POST
        contact_form = CheckoutContactForm(request.POST or None)
        if contact_form.is_valid():
            email = contact_form.cleaned_data['email']
            phone = contact_form.cleaned_data['phone']
            user = None
            if request.user.is_authenticated:
                user = User.objects.get(email=request.user.email)
            order = Order.objects.create(email=email,
                                         phone=phone,
                                         status_id=1,
                                         user=user)
            for item in data:
                if len(item.split('product_in_basket_')) == 1:
                    continue
                id = item.split('product_in_basket_')[1]
                product = get_object_or_404(Product, id=id)
                ProductInOrder.objects.create(product=product,
                                              order=order,
                                              count=data[item])
        cart.del_all()
        return redirect(reverse('landing:home'))
    return render(request, 'orders/checkout.html', locals())
Ejemplo n.º 23
0
def show_products(request):
    if request.method == 'POST':
        qty = request.POST['qty']
        pid = request.POST['pid']
        p = Product.objects.get(id=pid)
        aqty = int(p.qty)
        if qty != '':
            oqty = int(qty)
            if oqty > aqty:
                return HttpResponse('stock not available')
            else:
                user = request.user
                product = Product.objects.get(id=pid)
                date = datetime.now()
                qty = qty
                b = Cart(user=user, product=product, date=date, qty=qty)
                b.save()
                product.qty = product.qty - int(qty)
                product.save()
                return HttpResponse('<script>alert("Added to cart")</script>')
                # return redirect(f'../book/{pid}/{qty}')
        else:
            return HttpResponse('enter quantity')

    products = Product.objects.all()
    return render(request, 'products.html', {'products': products})
Ejemplo n.º 24
0
def order_create(request):
    cart = Cart(request)

    if request.method == 'POST':
        form = OrderCreateForm(request.POST)

        if form.is_valid():
            order = form.save(commit=False)
            if cart.coupon:
                order.coupon = cart.coupon
                order.discount = cart.coupon.discount
            order.save()
            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            # clear the cart
            cart.clear()
            # launch asynchronous task
            order_created.delay(order.id)
            return render(request, 'orders/order/created.html',
                          {'order': order})

    else:
        form = OrderCreateForm()

    return render(request, 'orders/order/create.html', {
        'cart': cart,
        'form': form
    })
Ejemplo n.º 25
0
def login(request):
    """Return a login page"""
    if request.user.is_authenticated:
        return redirect(reverse('index'))
    if request.method == "POST":
        login_form = UserLoginForm(request.POST)
        if login_form.is_valid():
            user = auth.authenticate(username=request.POST['username'],
                                    password=request.POST['password'])  
            if user:
                auth.login(user=user, request=request)
                messages.success(request, "You have successfully logged in!")

                # Check if user has a cart, create it if necessary
                try:
                    cart_get = Cart.objects.get(    # Gets an existing cart
                        user=user)                      
                    for cartLineItem in cart_get.cartlineitem_set.all():
                        print(cartLineItem)
                    
                except Cart.DoesNotExist:
                    cart_get = Cart(user=user)
                    cart_get.save()             # Create a new Cart
                request.session['cart'] = model_to_dict(cart_get)
                    
                return redirect(reverse('index')) 
            
            else:
                login_form.add_error(None, "Your username or password is incorrect")
    
    else:
        login_form = UserLoginForm()
    return render(request, 'login.html', {'login_form': login_form})
Ejemplo n.º 26
0
def cart(request):
    print(request.user)
    if request.method == 'POST':
        if request.POST.get('sub') == 'Add To cart':
            pid = request.POST.get('pid')
            product = Products.objects.get(pk=pid)
            qty = request.POST.get('qty')
            price = request.POST.get('amount')
            amount = float(qty) * float(price)
            print(product, qty, amount)
            item = Cart(user=request.user,
                        product=product,
                        product_qty=qty,
                        product_amount=amount)
            item.save()
        if request.POST.get('sub') == 'Delete':

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

            item = Cart.objects.get(pk=item_id)
            print(item_id, item)
            item.delete()
    cart = Cart.objects.filter(user=request.user)
    print(cart)
    context = {'cart': cart}
    return render(request, 'cart/cart.html', context)
Ejemplo n.º 27
0
    def get(self, request):

        try:
            cart_id = self.request.session['cart_id']
            cart = Cart.objects.get(id=cart_id)
            self.request.session['total'] = cart.items.count()
        except:
            cart = Cart()
            cart.save()
            cart_id = cart.id
            self.request.session['cart_id'] = cart_id
            cart = Cart.objects.get(id=cart_id)

        book = Book.objects.get(id=request.GET['book_id'])
        cart.add_to_cart(book)

        new_cart_total = 0.00
        for item in cart.items.all():
            new_cart_total += float(item.item_total)

        cart.cart_total = new_cart_total
        cart.save()

        # return redirect(reverse('book', kwargs={'slug': book.slug}))
        return JsonResponse({
            'cart_total': cart.items.count(),
            'cart_total_price': cart.cart_total
        })
Ejemplo n.º 28
0
def update_cart(request, pk):
    request.session.set_expiry(1200)  # seconds
    try:
        the_id = request.session['cart_id']
    except:
        new_cart = Cart()
        new_cart.save()
        request.session['cart_id'] = new_cart.id
        the_id = new_cart.id

    cart = Cart.objects.get(id=the_id)
    request.session['cart_id'] = cart.id

    try:
        meal = RestaurantMeals.objects.get(pk=pk)
    except RestaurantMeals.DoesNotExist:
        pass

    if not meal in cart.products.all():
        cart.products.add(meal)
        meal.is_eatable = False  #change the state of the meal so it is not visible for search
        meal.save()
    else:
        cart.products.remove(meal)
        meal.is_eatable = True  #change the state of the meal so it is  visible for search
        meal.save()

    updated_total = 0.00
    for meal in cart.products.all():
        updated_total += float(meal.price)
    request.session['meals_total'] = cart.products.count()
    cart.total = updated_total
    cart.save()
    return HttpResponseRedirect(reverse('cart'))
Ejemplo n.º 29
0
def CartRemove(request, category_id, product_id):
    """Удалить товар из корзины"""
    cart = Cart(request)
    product = Category.get_object_by_id_category(category_id, product_id)
    cart.remove(product)
    return redirect('cart:CartDetail')
    pass
Ejemplo n.º 30
0
def addtocart(request, id):
    userid = request.user.id
    bookid = id
    book = Book.objects.get(id=bookid)
    cartcheck = Cart.objects.filter(userid=userid)
    already = False
    for data in cartcheck:
        if (bookid == data.bookid):
            already = True
    if (userid == book.bookowner):
        return render(request, 'ownbook.html')
    if (already):
        # return render(request,'home.html',{'already':'success'})

        return redirect('homepage')
    else:
        cart = Cart(userid=userid,
                    bookid=bookid,
                    bookname=book.bname,
                    price=book.display_selling_price,
                    image=book.image,
                    slug=book.slug)
        cart.save()
        # return render(request,"home.html",{'msg':'success'})

        return redirect('homepage')