52 wiersze
1.3 KiB
Python
52 wiersze
1.3 KiB
Python
from rest_framework import serializers
|
|
|
|
from store.models import (
|
|
Product,
|
|
ProductAuthor
|
|
)
|
|
|
|
|
|
class TagSerializer(serializers.Serializer):
|
|
name = serializers.CharField()
|
|
slug = serializers.CharField()
|
|
|
|
|
|
class ProductSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Product
|
|
fields = ["title", "description", "price", "available", "tags"]
|
|
|
|
tags = TagSerializer(many=True)
|
|
|
|
|
|
class CartProductSerializer(serializers.Serializer):
|
|
product = ProductSerializer()
|
|
quantity = serializers.IntegerField()
|
|
|
|
|
|
class ProductAuthorSerializer(serializers.Serializer):
|
|
class Meta:
|
|
model = ProductAuthor
|
|
fields = ["display_name"]
|
|
|
|
|
|
class CartSerializer(serializers.Serializer):
|
|
author = ProductAuthorSerializer()
|
|
products = CartProductSerializer(many=True)
|
|
|
|
|
|
class CartProductAddSerializer(serializers.Serializer):
|
|
|
|
product_id = serializers.IntegerField()
|
|
quantity = serializers.IntegerField()
|
|
|
|
def validate_product_id(self, value):
|
|
try:
|
|
Product.objects.get(id=value)
|
|
except Product.DoesNotExist:
|
|
raise serializers.ValidationError("Unable to add not existing product")
|
|
return value
|
|
|
|
def save(self, cart):
|
|
cart.add_item(self.validated_data["product_id"], self.validated_data["quantity"])
|