Files
empire/weirdlittleempire/serializers.py
2021-02-23 23:00:01 +00:00

32 lines
1.1 KiB
Python

from shop.models.cart import CartModel
from shop.serializers.defaults.catalog import AddToCartSerializer
class AddSmartPhoneToCartSerializer(AddToCartSerializer):
"""
Modified AddToCartSerializer which handles SmartPhones
"""
def get_instance(self, context, data, extra_args):
product = context['product']
request = context['request']
try:
cart = CartModel.objects.get_from_request(request)
except CartModel.DoesNotExist:
cart = None
try:
variant = product.get_product_variant(
product_code=data['product_code'])
except (TypeError, KeyError, product.DoesNotExist):
variant = product.variants.first()
instance = {
'product': product.id,
'product_code': variant.product_code,
'unit_price': variant.unit_price,
'is_in_cart': bool(product.is_in_cart(cart, product_code=variant.product_code)),
'extra': {'storage': variant.storage},
'availability': variant.get_availability(request),
}
return instance