still trying to order products

This commit is contained in:
Sam
2021-02-24 13:59:42 +00:00
parent d98ee02f32
commit 1532040c2c
3 changed files with 19 additions and 8 deletions

View File

@@ -209,11 +209,11 @@ class ProductViewSetTest(APITestCase):
# Assert access is granted # Assert access is granted
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
# TODO: assert correct order # assert correct order
previous_date = datetime.datetime.now() dates = [d['created'][:-1] for d in payload]
for instance in payload: for i in range(len(dates)-1):
self.assertTrue(datetime.datetime.fromisoformat(instance['created'][:-1]) < previous_date) # first instance should be most recent
previous_date = datetime.datetime.fromisoformat(instance['created'][:-1]) self.assertTrue(datetime.datetime.fromisoformat(dates[i]) > datetime.datetime.fromisoformat(dates[i+1]))
# authenticated user # authenticated user
def test_auth_user_can_list_instances(self): def test_auth_user_can_list_instances(self):

View File

@@ -27,7 +27,7 @@ from history.models import HistorySync
from back_latienda.permissions import IsCreator from back_latienda.permissions import IsCreator
from .utils import extract_search_filters, find_related_products_v3, find_related_products_v6 from .utils import extract_search_filters, find_related_products_v3, find_related_products_v6
from utils.tag_serializers import TaggitSerializer from utils.tag_serializers import TaggitSerializer
from utils.tag_filters import ProductTagFilter from utils.tag_filters import ProductTagFilter, ProductOrderFilter
logging.basicConfig( logging.basicConfig(
@@ -42,7 +42,7 @@ class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all() queryset = Product.objects.all()
serializer_class = ProductSerializer serializer_class = ProductSerializer
permission_classes = [IsAuthenticatedOrReadOnly, IsCreator] permission_classes = [IsAuthenticatedOrReadOnly, IsCreator]
# filter_backends = [ProductTagFilter, OrderingFilter] # filter_backends = [ProductTagFilter, ProductOrderFilter]
# ordering_fields = ['created'] # ordering_fields = ['created']
filterset_class = ProductTagFilter filterset_class = ProductTagFilter
filterset_fields = ['name', 'tags', 'category', 'attributes', 'company', 'created'] filterset_fields = ['name', 'tags', 'category', 'attributes', 'company', 'created']

View File

@@ -1,5 +1,7 @@
import django_filters import django_filters
from rest_framework.filters import BaseFilterBackend
from companies.models import Company from companies.models import Company
from products.models import Product from products.models import Product
@@ -26,10 +28,19 @@ class ProductTagFilter(django_filters.FilterSet):
class Meta: class Meta:
model = Product model = Product
fields = ['name', 'tags', 'category', 'attributes', 'company', 'created'] fields = ['name', 'tags', 'category', 'attributes', 'company', 'created',]
def tag_filter(self, queryset, name, value): def tag_filter(self, queryset, name, value):
return queryset.filter(**{ return queryset.filter(**{
name: value, name: value,
}) })
class ProductOrderFilter(BaseFilterBackend):
def filter_queryset(self, request, queryset, view):
order_field = request.GET.get('order', None)
if order_field is not None:
return queryset.order_by(order_field)
else:
return queryset