fix: ordering

This commit is contained in:
2024-11-24 13:36:32 +01:00
parent 1f02858477
commit 7d80c64e40
9 changed files with 67 additions and 7 deletions
+27
View File
@@ -0,0 +1,27 @@
from django.conf import settings
from django.core.paginator import Paginator
class FilteredQuerysetMixin:
queryset = None
filter_class = None
def get_filter_class(self):
return self.filter_class
def get_queryset(self):
filter_cls = self.get_filter_class()
filter_obj = filter_cls(self.request.GET)
filter_obj.is_valid()
qs = filter_obj.filter_queryset(self.queryset)
return qs
class PaginatedQuerysetMixin:
objects_per_page = settings.ITEMS_PER_PAGE or 20
def get_paginated_queryset(self, qs):
paginator = Paginator(qs, self.objects_per_page)
page = self.request.GET.get("page", 1)
qs = paginator.get_page(page)
return qs
View File
+13
View File
@@ -0,0 +1,13 @@
from django.test import TestCase
from django.urls import reverse
from shop.tests.mixins import CreateProductsMixin
class TestWebComponents(TestCase, CreateProductsMixin):
def setUp(self):
self.product = self.create_product()
def test_list_products_component(self):
response = self.client.get(reverse("web:list_products"))
assert response.status_code == 200
+22
View File
@@ -0,0 +1,22 @@
from django.test import TestCase
from django.urls import reverse
from shop.tests.mixins import CreateProductsMixin
class TestIndex(TestCase, CreateProductsMixin):
def setUp(self):
self.product = self.create_product()
def test_index_view(self):
response = self.client.get(reverse("web:index"))
assert response.status_code == 200
def test_product_detail_view(self):
response = self.client.get(
reverse(
"web:product_detail",
kwargs={"pk": self.product.pk, "slug": self.product.slug},
)
)
assert response.status_code == 200
+1 -1
View File
@@ -2,8 +2,8 @@ from django.shortcuts import get_object_or_404
from django.views.generic import TemplateView
from shop.filters import ProductFilter
from shop.mixins import FilteredQuerysetMixin, PaginatedQuerysetMixin
from shop.models import Product
from web.mixins import FilteredQuerysetMixin, PaginatedQuerysetMixin
class IndexView(TemplateView):