diff --git a/oscarapi/basket/operations.py b/oscarapi/basket/operations.py index 34e9d766..bd417dda 100644 --- a/oscarapi/basket/operations.py +++ b/oscarapi/basket/operations.py @@ -1,4 +1,5 @@ "This module contains operation on baskets and lines" + from django.conf import settings from oscar.core.loading import get_class, get_model diff --git a/oscarapi/serializers/product.py b/oscarapi/serializers/product.py index aaec8c0f..c127deed 100644 --- a/oscarapi/serializers/product.py +++ b/oscarapi/serializers/product.py @@ -440,6 +440,7 @@ class Meta: class BaseProductSerializer(OscarModelSerializer): "Base class shared by admin and public serializer" + attributes = ProductAttributeValueSerializer( many=True, required=False, source="attribute_values" ) @@ -476,6 +477,7 @@ class Meta: class PublicProductSerializer(BaseProductSerializer): "Serializer base class used for public products api" + url = serializers.HyperlinkedIdentityField(view_name="product-detail") price = serializers.HyperlinkedIdentityField( view_name="product-price", read_only=True @@ -494,6 +496,7 @@ def get_field_names(self, declared_fields, info): class ChildProductSerializer(PublicProductSerializer): "Serializer for child products" + parent = serializers.HyperlinkedRelatedField( view_name="product-detail", queryset=Product.objects.filter(structure=Product.PARENT), @@ -508,6 +511,7 @@ class Meta(PublicProductSerializer.Meta): class ProductSerializer(PublicProductSerializer): "Serializer for public api with strategy fields added for price and availability" + url = serializers.HyperlinkedIdentityField(view_name="product-detail") price = serializers.HyperlinkedIdentityField( view_name="product-price", read_only=True