fix sort by product type

This commit is contained in:
a.gorbunov 2020-01-14 13:39:25 +00:00
parent bc1a9ac496
commit 5e5d2832cd
3 changed files with 26 additions and 9 deletions

View File

@ -38,6 +38,13 @@ class ProductType(TypeDefaultImageMixin, TranslatedFieldsMixin, ProjectBaseMixin
(SOUVENIR, 'souvenir'),
(BOOK, 'book')
)
INDEX_PLURAL_ONE = {
'food': 'food',
'wines': 'wine',
'liquors': 'liquor',
}
name = TJSONField(blank=True, null=True, default=None,
verbose_name=_('Name'), help_text='{"en-GB":"some text"}')
index_name = models.CharField(max_length=50, unique=True, db_index=True,

View File

@ -19,10 +19,13 @@ urlpatterns = [
# similar products by type/subtype
# temporary uses single mechanism, bec. description in process
path('slug/<slug:slug>/similar/wines/', views.SimilarListView.as_view(),
name='similar-wine'),
path('slug/<slug:slug>/similar/liquors/', views.SimilarListView.as_view(),
name='similar-liquor'),
path('slug/<slug:slug>/similar/food/', views.SimilarListView.as_view(),
name='similar-food'),
# path('slug/<slug:slug>/similar/wines/', views.SimilarListView.as_view(),
# name='similar-wine'),
# path('slug/<slug:slug>/similar/liquors/', views.SimilarListView.as_view(),
# name='similar-liquor'),
# path('slug/<slug:slug>/similar/food/', views.SimilarListView.as_view(),
# name='similar-food'),
path('slug/<slug:slug>/similar/<str:type>/', views.SimilarListView.as_view(),
name='similar-products')
]

View File

@ -6,7 +6,7 @@ from rest_framework import generics, permissions
from comment.models import Comment
from comment.serializers import CommentRUDSerializer
from product import filters, serializers
from product.models import Product
from product.models import Product, ProductType
from utils.views import FavoritesCreateDestroyMixinView
from utils.pagination import PortionPagination
from django.conf import settings
@ -44,8 +44,15 @@ class ProductSimilarView(ProductListView):
"""
Return base product instance for a getting list of similar products.
"""
product = get_object_or_404(Product.objects.all(),
slug=self.kwargs.get('slug'))
if isinstance(self.kwargs.get('type'), str):
if not self.kwargs.get('type') in ProductType.INDEX_PLURAL_ONE:
return None
product_type = get_object_or_404(ProductType.objects.all(), index_name=ProductType.INDEX_PLURAL_ONE[self.kwargs.get('type')])
product = get_object_or_404(Product.objects.all(),
slug=self.kwargs.get('slug'), product_type=product_type)
else:
product = get_object_or_404(Product.objects.all(),
slug=self.kwargs.get('slug'))
return product