fix: ordering
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user