Пример #1
0
def login(request):
    if request.method == 'POST':
        email = request.POST['email']
        password = request.POST['password']
        user = auth.authenticate(email=email, password=password)
        if user is not None:
            try:
                cart = Cart.objects.get(cart_id=_cart_id(request))
                is_cart_item_exists = CartItem.objects.filter(
                    cart=cart).exists()
                if is_cart_item_exists:
                    cart_item = CartItem.objects.filter(cart=cart)
                    #get the items by cart id
                    product_variation = []
                    for item in cart_item:
                        variation = item.variations.all()
                        product_variation.append(list(variation))
                    #get the cart item from user to access his product variation
                    cart_item = CartItem.objects.filter(user=user)
                    ex_var_list = []
                    id = []
                    for item in cart_item:
                        existing_variation = item.variations.all()
                        ex_var_list.append(list(existing_variation))
                        id.append(item.id)

                    for pr in product_variation:
                        if pr in ex_var_list:
                            index = ex_var_list.index(pr)
                            item_id = id[index]
                            item = CartItem.objects.get(id=item_id)
                            item.quantity += 1
                            item.user = user
                            item.save()
                        else:
                            cart_item = CartItem.objects.filter(cart=cart)
                            for item in cart_item:
                                item.user = user
                                item.save()
                    #for item in cart_item:
                    #    item.user = user
                    #    item.save()
            except:
                pass
            auth.login(request, user)
            messages.success(request, 'You are logged in.')
            url = request.META.get('HTTP_REFERER')
            try:
                query = requests.utils.urlparse(url).query
                # next=/cart/checkout/
                params = dict(x.split('=') for x in query.split('&'))
                if 'next' in params:
                    nextPage = params['next']
                    return redirect(nextPage)
            except:
                return redirect('dashboard')
        else:
            messages.error(request, 'Username or Password not invalid')
            return redirect('login')
    return render(request, 'accounts/login.html')
Пример #2
0
def product_detail(request, category_slug, product_slug):
    try:
        single_product = Product.objects.get(category__slug=category_slug,
                                             slug=product_slug)
        in_cart = CartItem.objects.filter(cart__cart_id=_cart_id(request),
                                          product=single_product).exists()
    except Exception as e:
        raise e

    if request.user.is_authenticated:
        try:
            orderproduct = OrderProduct.objects.filter(
                user=request.user, product_id=single_product.id).exists()
        except OrderProduct.DoesNotExist:
            orderproduct = None
    else:
        orderproduct = None

    # Get the reviews
    reviews = ReviewRating.objects.filter(product_id=single_product.id,
                                          status=True)

    # Get the product gallery
    product_gallery = ProductGallery.objects.filter(
        product_id=single_product.id)

    context = {
        'single_product': single_product,
        'in_cart': in_cart,
        'orderproduct': orderproduct,
        'reviews': reviews,
        'product_gallery': product_gallery,
    }
    return render(request, 'store/product_detail.html', context)
Пример #3
0
def product_detail(request, category_slug, product_slug):
    try:
        # get always return the single objects values
        # __ refer to fields associated with the foreign key for the next pages
        # here catgory is product fields but category is the f`orign key which has slug fileds
        single_product = Product.objects.get(
            category__slug=category_slug, slug=product_slug)
        in_cart = CartItem.objects.filter(cart__cart_id=_cart_id(
            request), product=single_product).exists()
    except Exception as e:
        raise e

    if request.user.is_authenticated:
        try:
            orderproduct = OrderProduct.objects.filter(
                user=request.user, product_id=single_product.id).exists()
        except OrderProduct.DoesNotExist:
            orderproduct = None
    else:
        orderproduct = None

    # Get the reviews
    reviews = ReviewRating.objects.filter(
        product_id=single_product.id, status=True)

    context = {
        'single_product': single_product,
        'in_cart': in_cart,
        'orderproduct': orderproduct,
        'reviews': reviews,
    }
    return render(request, 'store/product_detail.html', context)
Пример #4
0
def login(request):
    if request.method == "POST":
        email = request.POST['email']
        password = request.POST['password']

        user = auth.authenticate(email=email, password=password)

        if user is not None:
            try:
                cart = Cart.objects.get(cart_id=_cart_id(request))
                is_cart_item_exists = CartItem.objects.filter(
                    cart=cart).exists()
                if is_cart_item_exists:
                    cart_item = CartItem.objects.filter(cart=carts)

                    for item in cart_item:
                        item.user = user
                        item.save()
            except:
                pass
            auth.login(request, user)
            messages.success(request, 'You are now logged in.')
            return redirect('dashboard')
        else:
            messages.error(request, 'Invalid credentials')
            return redirect('login')

    return render(request, 'accounts/login.html')
Пример #5
0
def course_details(request, category_slug, course_slug):
    single_course = Course.objects.get(category__slug = category_slug, slug=course_slug)
    in_cart = CartItem.objects.filter(cart__cart_id = _cart_id(request), course = single_course).exists()
    context = {
        'single_course' : single_course,
        'in_cart' : in_cart
    }
    return render(request,'store/course_details.html',context)
Пример #6
0
def product_detail(request, category_slug, product_slug):
    try:
        single_product = Product.objects.get(category__slug=category_slug, slug=product_slug)
        in_cart = CartItem.objects.filter(cart__cart_id=_cart_id(request), product=single_product).exists()
    except Exception as e: # -*- coding: utf-8 -*-
        raise e
    context = {
        'single_product': single_product,
        'in_cart'       : in_cart,

    }
    return render(request, 'store/product_detail.html', context)
Пример #7
0
def login(request):

    if request.method == 'POST':
        email = request.POST['email']
        password = request.POST['password']
        user = auth.authenticate(email=email, password=password)

        if user is not None:
            try:
                cart = Cart.objects.get(cart_id=_cart_id(request))
                is_cart_item_exists = CartItem.objects.filter(
                    cart=cart).exists()
                if is_cart_item_exists:
                    cart_item = CartItem.objects.filter(user=user)
                    cart_item_id = []
                    for item in cart_item:
                        cart_item_id.append(item.id)
                        for id in cart_item_id:
                            index = cart_item_id.index(id)
                            item_id = cart_item_id[index]
                            item = CartItem.objects.get(id=item_id)
                            item.quantity += 1
                            item.user = user
                            item.save()
                else:
                    cart_item = CartItem.objects.filter(cart=cart)
                    for item in cart_item:
                        item.user = user
                        item.save()
            except ObjectDoesNotExist:
                pass

            auth.login(request, user)
            messages.success(request, 'You are now logged in.')
            url = request.META.get('HTTP_REFERER')
            try:
                query = requests.utils.urlparse(url).query

                # next=/cart/checkout/
                params = dict(x.split('=') for x in query.split('&'))
                if 'next' in params:
                    next_page = params['next']

                    return redirect(next_page)
            except ValueError:
                return redirect('dashboard')
        else:
            messages.error(request, 'Invalid login credentials')

            return redirect('login')

    return render(request, 'accounts/login.html')
Пример #8
0
def product_detail(request, category_slug, product_slug):
    # to get single view page
    orderproduct = None
    try:
        single_product = Product.objects.get(category__slug=category_slug,
                                             slug=product_slug)
        # check if object added to cart
        # if this query returns any object that may exiest it returns true and if false then object not in cart
        in_cart = Cart.objects.filter(
            cart_id=_cart_id(request),
            cartitem__product=single_product).exists()

    except Exception as e:
        raise e

    if request.user.is_authenticated:
        try:
            orderproduct = OrderProduct.objects.filter(
                user=request.user, product_id=single_product.id).exists()
        except OrderProduct.DoesNotExist:
            orderproduct = None
        else:
            orderproduct = None

    # Get the reviews
    reviews = ReviewRating.objects.filter(product_id=single_product.id,
                                          status=True)

    # # Get the product gallery
    product_gallery = ProductGallery.objects.filter(
        product_id=single_product.id)

    context = {
        'single_product': single_product,
        'in_cart': in_cart,
        'orderproduct': orderproduct,
        'reviews': reviews,
        'product_gallery': product_gallery,
    }
    return render(request, 'store/product_detail.html', context)
Пример #9
0
def product_detail(request, category_slug, product_slug):
    try:
        # first we need to get access the category,category__slug is from model category and slug is from product  eg:http://127.0.0.1:8000/store/t-shirt/great-tshirt/
        single_product = Product.objects.get(category__slug=category_slug,
                                             slug=product_slug)
        # It is a foreign key so we will acces cart attribute(column)from CartItem and inside it i want to acces cart_id from Cart
        in_cart = CartItem.objects.filter(cart__cart_id=_cart_id(request),
                                          product=single_product).exists()
        # if product  exists in cart then it will return true or else false
        # return HttpResponse('in_cart')
    except Exception as e:
        raise e

    if request.user.is_authenticated:
        try:
            # if it is true we will show him submit review button
            orderproduct = OrderProduct.objects.filter(
                user=request.user, product_id=single_product.id).exists()
        except OrderProduct.DoesNotExist:
            orderproduct = None
    else:
        orderproduct = None

    # get the review
    reviews = ReviewRating.objects.filter(product_id=single_product.id,
                                          status=True)
    print(reviews)

    # get the product gallery
    product_gallery = ProductGallery.objects.filter(
        product_id=single_product.id)

    data = {
        'single_product': single_product,
        'in_cart': in_cart,
        'order_product': orderproduct,
        'reviews': reviews,
        'product_gallery': product_gallery
    }
    return render(request, 'store/product_detail.html', data)
Пример #10
0
def login(request):
    if request.method == 'POST':
        email = request.POST['email']
        password = request.POST['password']

        user = auth.authenticate(email=email, password=password)

        if user is not None:
            try:
                cart = Cart.objects.get(cart_id=_cart_id(request))
                is_cart_item_exists = CartItem.objects.filter(
                    cart=cart).exists()
                if is_cart_item_exists:
                    cart_item = CartItem.objects.filter(cart=cart)

                    # getting the product variations by cart id
                    product_variation = []
                    cart_item_id_list_cart_select = []
                    for item in cart_item:
                        variation = item.variations.all()
                        product_variation.append(list(variation))
                        cart_item_id_list_cart_select.append(item.id)
                    print('product_variation:', product_variation)

                    # get the cart items from the user to access his product variation
                    cart_item = CartItem.objects.filter(user=user)

                    ex_var_list = []
                    cart_item_id_list_user_select = []
                    for item in cart_item:
                        existing_variation = item.variations.all()
                        ex_var_list.append(list(existing_variation))
                        cart_item_id_list_user_select.append(item.id)
                    print('ex_var_list: ', ex_var_list)
                    print('id -list: ', cart_item_id_list_user_select)
                    # find common elements in two lists below
                    # product_variation = [1, 2, 3, 4, 6]
                    # ex_var_list = [4, 6, 3, 5]

                    for pr in product_variation:
                        if pr in ex_var_list:
                            print('commont item found - pr: ', pr)

                            # get common cart_item from DB: select by user
                            index = ex_var_list.index(pr)
                            print('commont item found - index: ', index)
                            item_id = cart_item_id_list_user_select[index]
                            print('commont item found - item_id: ', item_id)
                            item = CartItem.objects.get(id=item_id)
                            print('commont item found - item: ', item)
                            '''TBD'''
                            # get quantity of common cart_item from cart (unanimous user)
                            index_pv = product_variation.index(pr)
                            print('commont item found - index_pv: ', index_pv)
                            item_id_pv = cart_item_id_list_cart_select[
                                index_pv]
                            print('commont item found - item_id_pv: ',
                                  item_id_pv)
                            item_pv = CartItem.objects.get(id=item_id_pv)
                            qty = item_pv.quantity
                            print('commont item found - item_pv.quantity: ',
                                  qty)
                            item_pv.delete()

                            # correct quantity of common cart_item
                            item.quantity += qty
                            print('commont item found - quantity: ',
                                  item.quantity)
                            item.user = user
                            print('commont item found - user: '******'You are now logged in.')
            url = request.META.get('HTTP_REFERER')
            try:
                query = requests.utils.urlparse(url).query
                # query -->  next=/cart/checkout/
                params = dict(x.split('=') for x in query.split('&'))
                # params -->  {'next': '/cart/checkout/'}
                if 'next' in params:
                    nextPage = params['next']
                    return redirect(nextPage)
            except:
                return redirect('dashboard')
        else:
            messages.error(request, 'Invalid login credentials.')
            return redirect('login')
    return render(request, 'accounts/login.html')
Пример #11
0
def login(request):
    if request.method == 'POST':
        email = request.POST['email']
        password = request.POST['password']

        user = auth.authenticate(email=email, password=password)
        if user:
            try:
                cart = Cart.objects.get(cart_id=_cart_id(request))
                does_cart_item_exist = CartItem.objects.filter(
                    cart=cart).exists()

                if does_cart_item_exist:
                    cart_items = CartItem.objects.filter(cart=cart)
                    product_variations = []

                    # getting the product variation by cart id
                    ids = []
                    for cart_item in cart_items:
                        variation = cart_item.variations.all()
                        product_variations.append(list(variation))
                        ids.append(cart_item.id)

                    # getting the cart items from the user to access his product variations
                    cart_items = CartItem.objects.filter(user=user)
                    existing_product_variaions = []
                    ex_ids = []
                    for item in cart_items:
                        variation = item.variations.all()
                        existing_product_variaions.append(list(variation))
                        ex_ids.append(item.id)

                    for index_, product_variation in enumerate(
                            product_variations):
                        if product_variation in existing_product_variaions:
                            index = existing_product_variaions.index(
                                product_variation)
                            item_id = ex_ids[index]
                            item = CartItem.objects.get(id=item_id)
                            pr_item = CartItem.objects.get(id=ids[index_])
                            item.quantity += pr_item.quantity
                            item.user = user
                            item.save()
                        else:
                            cart_item = CartItem.objects.get(id=ids[index_])
                            cart_item.user = user
                            cart_item.save()
            except:
                pass
            auth.login(request, user)
            messages.success(request, 'You are logged in.')
            url = request.META.get('HTTP_REFERER')
            try:
                query = requests.utils.urlparse(url).query
                params = dict(x.split('=') for x in query.split('&'))
                if 'next' in params:
                    next_page = params.get('next')
                    return redirect(next_page)
            except:
                return redirect('dashboard')
        else:
            messages.error(request, 'Invalid login credentials')
            return redirect('login')

    return render(request, 'accounts/login.html')
Пример #12
0
def login(request):
    if request.method == "POST":
        email = request.POST['email']
        password = request.POST['password']

        user = auth.authenticate(email=email, password=password)

        if user is not None:
            try:
                cart = Cart.objects.get(cart_id=_cart_id(request))
                is_cart_item_exists = CartItem.objects.filter(
                    cart=cart).exists()
                if is_cart_item_exists:
                    cart_item = CartItem.objects.filter(cart=cart)
                    # Getting the product variations by cart id
                    product_variation = []
                    for item in cart_item:
                        variation = item.variations.all()
                        product_variation.append(list(variation))

                    # get cart items from the user to access his product variations
                    cart_item = CartItem.objects.filter(user=user)

                    ex_var_list = []
                    id = []
                    for item in cart_item:
                        existing_variation = item.variations.all()
                        ex_var_list.append(list(existing_variation))
                        id.append(item.id)
                    #product_variation = [1, 2, 3, 4, 6]
                    #ex_var_list = [4, 6, 3, 5] get the common product variation
                    for pr in product_variation:
                        if pr in ex_var_list:
                            index = ex_var_list.index(pr)
                            item_id = id[index]
                            item = CartItem.objects.get(id=item_id)
                            item.quantity += 1
                            item.user = user
                            item.save()
                        else:
                            cart_item = CartItem.objects.filter(cart=cart)
                            for item in cart_item:
                                item.user = user
                                item.save()

            except:
                pass
            auth.login(request, user)
            messages.success(request, 'Has accedido a tu cuenta')
            url = request.META.get('HTTP_REFERER')
            try:
                query = requests.utils.urlparse(url).query
                # next=/cart/checkout/
                params = dict(x.split('=') for x in query.split('&'))
                if 'next' in params:
                    nextPage = params['next']
                    return redirect(nextPage)

            except:
                return redirect('dashboard')
        else:
            messages.error(request, 'Las credenciales no son correctas')
            return redirect('login')
    return render(request, 'accounts/login.html')
Пример #13
0
def login(request):
    if request.method == "POST":
        email = request.POST['email']
        password = request.POST['password']

        user = auth.authenticate(email=email, password=password)

        if user is not None:
            try:
                cart = Cart.objects.get(cart_id=_cart_id(request))
                is_cart_item_exists = CartItem.objects.filter(cart=cart).exists()
                if is_cart_item_exists:
                    cart_item = CartItem.objects.filter(cart=cart)

                    # group items in cart made while logged output
                    product_variation = []
                    for item in cart_item:
                        # if use variations of product
                        variation = item.variations.all()
                        product_variation.append(list(variation))

                    cart_item = CartItem.objects.filter(user=user)
                    ex_var_list = []
                    id = []
                    for item in cart_item:
                        existing_variation = item.variations.all()
                        ex_var_list.append(list(existing_variation))
                        id.append(item.id)

                    for pr in product_variation:
                        if pr in ex_var_list:
                            index = ex_var_list.index(pr)
                            item_id = id[index]
                            item = CartItem.objects.get(id=item_id)
                            item.quantity += 1
                            item.user = user
                            item.save()
                        else:
                            cart_item = CartItem.objects.filter(cart=cart)
                            for item in cart_item:
                                item.user = user
                                item.save()

            except:
                pass

            auth.login(request, user)
            messages.success(request, 'Welcome to Vivero Verde! You are now logged in!')
            url = request.META.get('HTTP_REFERER')
            try:
                query = requests.utils.urlparse(url).query
                params = dict(x.split('=') for x in query.split('&'))
                if 'next' in params:
                    nextPage = params['next']
                    return redirect('nextPage')

                return redirect('dashboard')

            except:
                return redirect('dashboard')
        else:
            messages.error(request, 'Invalid Username or Password. Please try again!')
            return redirect('login')
    return render(request, "accounts/login.html")