Exemple #1
0
def category_view(request, category):
    category = category
    categories = category_fn()
    if request.method == 'GET':
        #products = Product.objects.filter(category=category)

        sort_form = SortForm()
        order = extract_filter_value(request.GET)

        products = Product.objects.filter(category=category).order_by(order)

        paginator = Paginator(products, 6)
        page_number = request.GET.get('page')
        page_obj = paginator.get_page(page_number)

        context = {
            'category': category,
            'products': products,
            'categories': categories,
            'len': len(products),
            'page_obj': page_obj,
            'sort_form': sort_form,
            'order': order,
        }
        return render(request, 'category.html', context)
Exemple #2
0
def search_in_category(request, category):
    category = category
    categories = category_fn()

    query = request.GET['q']
    sort_form = SortForm()
    order = extract_filter_value(request.GET)
    products = Product.objects.filter(category=category).filter(
        product_name__icontains=query).order_by(order)

    paginator = Paginator(products, 1)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)

    context = {
        'category': category,
        'products': products,
        'categories': categories,
        'len': len(products),
        'page_obj': page_obj,
        'query': query,
        'sort_form': SortForm(),
        'order': order,
    }
    return render(request, 'category.html', context)
    def get_context_data(self, **kwargs):
        query = self.request.GET.get('q')
        context = super().get_context_data(**kwargs)
        categories = category_fn()
        context['query'] = query
        context['categories'] = categories

        return context
def index(request):
    products = Product.objects.all()
    categories = category_fn()
    context = {
        'products': products,
        'categories': categories,
    }
    return render(request, 'index.html', context)
Exemple #5
0
def product(request, pk, slug=None):
    product = Product.objects.get(pk=pk)
    if request.method == 'GET':
        if slug is None:
            slug = product.product_name

        if slug and product.product_name.lower() != slug.lower():
            return HttpResponseNotFound('Product not found')

        product.views += 1
        product.save(update_fields=['views'])

        comment_form = CommentForm()
        product_comments = [c for c in Comment.objects.filter(product_id=pk)]
        owner = User.objects.get(pk=product.owner_id)
        context = {
            'product': product,
            'owner': owner,
            'comment_form': comment_form,
            'product_comments': product_comments,
            'categories': category_fn(),
            'views': product.views,
        }
        return render(request, 'single_product.html', context)

    else:
        comment_form = CommentForm(request.POST)
        if comment_form.is_valid():
            comment = comment_form.save(commit=False)
            comment.product = product
            comment.user = request.user
            comment.save()
            product_comments = [
                c for c in Comment.objects.filter(product_id=pk)
            ]
            owner = User.objects.get(pk=product.owner_id)
            context = {
                'product': product,
                'owner': owner,
                'comment_form': CommentForm(),
                'product_comments': product_comments,
                'categories': category_fn(),
            }
            return render(request, 'single_product.html', context)
Exemple #6
0
def checkout(request):
    if request.method == 'GET':
        form = OrderForm()
        form.fields['email'].initial = User.objects.get(
            pk=request.user.id).email
        categories = category_fn()
        context = {
            'form': form,
            'categories': categories,
        }
        return render(request, 'checkout.html', context)
Exemple #7
0
def category_view(request, category):
    category = category
    categories = category_fn()
    products = Product.objects.filter(category=category)
    context = {
        'category': category,
        'products': products,
        'categories': categories,
        'len': len(products),
    }
    return render(request, 'category.html', context)
Exemple #8
0
def search(request):
    query = request.GET['q']
    products = Product.objects.all()
    categories = category_fn()
    matched = []
    for product in products:
        if query.lower() in product.product_name.lower() or query.lower() in product.description.lower():
            matched.append(product)
    context={
        'query': query,
        'matched': matched,
        'categories': categories,
    }
    return render(request, 'search.html', context)
Exemple #9
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['categories'] = category_fn()
        context['products'] = self.products
        context['sort_form'] = SortForm()
        context['filter_form'] = ProductFilterForm()
        context['order'] = self.order

        page_number = self.request.GET.get('page')
        if self.products:
            paginator = Paginator(self.products, 8)
            context['paginator'] = paginator
            context['page_obj'] = paginator.get_page(page_number)
            context['is_paginated'] = True

        return context
def profile(request, slug):
    if request.method == 'GET':
        owner = User.objects.get(username=slug)
        try:
            profile_picture_exists = owner.profilepicture
        except ProfilePicture.DoesNotExist:
            profile_picture_exists = ProfilePicture(profile_picture='profile_pics/default_profile_picture.png', user=owner)
        products = owner.product_set.all()
        categories = category_fn()
        context = {
            'products': products,
            'owner': owner,
            'categories': categories,
            'profile_picture_exists': profile_picture_exists,
        }
        return render(request, 'profile.html', context)
Exemple #11
0
def edit(request, pk):
    ImageFormSet = modelformset_factory(ProductPicture,
                                        form=ProductPictureForm,
                                        extra=4)

    product = Product.objects.get(pk=pk)
    categories = category_fn()
    id = request.user.id

    formset = ImageFormSet(queryset=ProductPicture.objects.none())
    if request.method == 'GET':
        form = ProductForm(instance=product)
        formset = ImageFormSet(queryset=ProductPicture.objects.none())
        context = {
            'form': form,
            'categories': categories,
            'product': product,
            'id': id,
            'formset': formset,
        }
        return render(request, 'edit_product.html', context)

    else:
        form = ProductForm(request.POST, instance=product)
        formset = ImageFormSet(request.POST,
                               request.FILES,
                               queryset=ProductPicture.objects.none())

        if form.is_valid() and formset.is_valid():
            product = form.save(commit=False)  # Setting foreign key
            product.save()

            for f in formset.cleaned_data:
                if f:
                    image = f['image']
                    photo = ProductPicture(product=product, images=image)
                    photo.save()
            return redirect('index')
        form = ProductForm(instance=product)
        context = {
            'form': form,
            'formset': formset,
            'categories': categories,
        }
        return render(request, 'create_product.html', context)
Exemple #12
0
def remove_from_cart(request, pk):
    categories = category_fn()

    if request.method == 'GET':
        cart_pk = int(request.GET['delete'])
        cart = Cart.objects.get(user_id=cart_pk)
        product = Product.objects.get(pk=pk)
        cart.products.remove(product)
        products = cart.products.all()
        total = sum(products.values_list('price', flat=True))

        context = {
            'products': products,
            'cart_pk': cart_pk,
            'categories': categories,
            'total': total,
        }
        return render(request, 'cart.html', context)
Exemple #13
0
    def get_context_data(self, **kwargs):
        self.order = extract_filter_value(self.request.GET)
        context = super().get_context_data(**kwargs)
        context['categories'] = category_fn()

        products = Product.objects.order_by(self.order)

        images = ProductPicture.objects.all()
        context['products'] = products
        context['sort_form'] = SortForm()
        context['order'] = self.order

        self.page_number = self.request.GET.get('page')
        paginator = Paginator(products, 6)

        context['paginator'] = paginator
        context['page_obj'] = paginator.get_page(self.page_number)
        context['is_paginated'] = True

        return context
Exemple #14
0
def edit(request, pk):
    ImageFormSet = inlineformset_factory(Product,
                                         ProductPicture,
                                         fields=('images', ),
                                         extra=4)

    product = Product.objects.get(pk=pk)
    categories = category_fn()
    id = request.user.id

    if request.method == 'GET':
        form = ProductForm(instance=product)
        formset = ImageFormSet(instance=product)
        print(formset.queryset)
        context = {
            'form': form,
            'categories': categories,
            'product': product,
            'id': id,
            'formset': formset,
        }
        return render(request, 'edit_product.html', context)

    else:
        form = ProductForm(request.POST, instance=product)
        formset = ImageFormSet(request.POST, request.FILES, instance=product)

        if form.is_valid() and formset.is_valid():
            product = form.save(commit=False)  # Setting foreign key
            product.save()
            formset.save()

            return redirect('index')

        form = ProductForm(instance=product)
        context = {
            'form': form,
            'formset': ImageFormSet(instance=product),
            'categories': categories,
        }
        return render(request, 'create_product.html', context)
Exemple #15
0
def add_to_cart(request, pk):
    user = User.objects.get(pk=pk)
    my_cart = Cart.objects.get_or_create(user=user)[0]
    categories = category_fn()
    if request.method == 'POST':
        product_id = request.POST['add']
        product = Product.objects.get(pk=product_id)
        my_cart.products.add(product)
        return redirect('index')

    else:
        products = my_cart.products.all()
        total = sum(products.values_list('price', flat=True))
        context = {
            'products': products,
            'cart_pk': pk,
            'total': total,
            'len': len(products),
            'categories': categories
        }
        return render(request, 'cart.html', context)