32 lines
1.1 KiB
Python
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
|