Merge branch 'bug/similar_products' into 'develop'

fix sort by product type

See merge request gm/gm-backend!205
This commit is contained in:
Олег Хаятов 2020-01-14 14:06:09 +00:00
commit b2d70ddbf0
3 changed files with 27 additions and 9 deletions

View File

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

View File

@ -19,10 +19,13 @@ urlpatterns = [
# similar products by type/subtype # similar products by type/subtype
# temporary uses single mechanism, bec. description in process # temporary uses single mechanism, bec. description in process
path('slug/<slug:slug>/similar/wines/', views.SimilarListView.as_view(), # path('slug/<slug:slug>/similar/wines/', views.SimilarListView.as_view(),
name='similar-wine'), # name='similar-wine'),
path('slug/<slug:slug>/similar/liquors/', views.SimilarListView.as_view(), # path('slug/<slug:slug>/similar/liquors/', views.SimilarListView.as_view(),
name='similar-liquor'), # name='similar-liquor'),
path('slug/<slug:slug>/similar/food/', views.SimilarListView.as_view(), # path('slug/<slug:slug>/similar/food/', views.SimilarListView.as_view(),
name='similar-food'), # 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.models import Comment
from comment.serializers import CommentRUDSerializer from comment.serializers import CommentRUDSerializer
from product import filters, serializers from product import filters, serializers
from product.models import Product from product.models import Product, ProductType
from utils.views import FavoritesCreateDestroyMixinView from utils.views import FavoritesCreateDestroyMixinView
from utils.pagination import PortionPagination from utils.pagination import PortionPagination
from django.conf import settings from django.conf import settings
@ -44,8 +44,16 @@ class ProductSimilarView(ProductListView):
""" """
Return base product instance for a getting list of similar products. Return base product instance for a getting list of similar products.
""" """
product = get_object_or_404(Product.objects.all(), find_by = {
slug=self.kwargs.get('slug')) '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
find_by['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(), **find_by)
return product return product