Merge branch 'development' into diego

This commit is contained in:
Diego Calvo
2021-02-17 14:19:29 +01:00
11 changed files with 269 additions and 15 deletions

View File

@@ -35,7 +35,7 @@ class Product(models.Model):
discount = models.DecimalField('Descuento', max_digits=5, decimal_places=2, null=True, blank=True)
stock = models.PositiveIntegerField('Stock', null=True)
tags = TagField(to=TreeTag)
category = SingleTagField(null=True) # main tag category
category = SingleTagField(blank=True, null=True) # main tag category
attributes = TagField(to=TreeTag, related_name='product_attributes')
identifiers = models.TextField('Identificador único de producto', null=True, blank=True)

View File

@@ -7,6 +7,18 @@ from utils.tag_serializers import TagListSerializerField, TaggitSerializer, Sing
class ProductSerializer(TaggitSerializer, serializers.ModelSerializer):
tags = TagListSerializerField(required=False)
category = SingleTagSerializerField(required=False) # main tag category
attributes = TagListSerializerField(required=False)
# image = serializers.SerializerMethodField()
class Meta:
model = Product
exclude = ['created', 'updated', 'creator']
class ProductSearchSerializer(TaggitSerializer, serializers.ModelSerializer):
tags = TagListSerializerField(required=False)
category = SingleTagSerializerField(required=False) # main tag category
attributes = TagListSerializerField(required=False)

View File

@@ -18,7 +18,7 @@ from rest_framework.decorators import api_view, permission_classes, action
import requests
from products.models import Product
from products.serializers import ProductSerializer, TagFilterSerializer
from products.serializers import ProductSerializer, TagFilterSerializer, ProductSearchSerializer
from companies.models import Company
from history.models import HistorySync
@@ -48,7 +48,7 @@ class ProductViewSet(viewsets.ModelViewSet):
@action(detail=True, methods=['GET',])
def related(request):
# find the most similar products
# TODO: find the most similar products
return Response(data=[])
@@ -175,7 +175,7 @@ def product_search(request):
# extract filters from result_set
filters = extract_search_filters(result_set)
# serialize and respond
product_serializer = ProductSerializer(result_set, many=True)
product_serializer = ProductSearchSerializer(result_set, many=True, context={'request': request})
return Response(data={"filters": filters, "products": product_serializer.data})
except Exception as e:
return Response({"errors": {"details": str(type(e))}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)