Coverage for src/products/serializers/product.py: 100%

50 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-09-21 16:24 +0300

1""" 

2This module contains concrete serializers for each product type and related attributes. 

3 

4It provides: 

5- List and detail serializers for each product type (Earring, Necklace, Pendant, Bracelet, Watch) 

6- Attribute serializers for product properties like color, metal, stone, and collection 

7- All serializers are based on shared base serializers for consistency and reuse 

8- Used for product list/detail API endpoints and for serializing product attributes 

9""" 

10 

11from src.products.models.product import ( 

12 Bracelet, 

13 Color, 

14 Earring, 

15 Metal, 

16 Necklace, 

17 Pendant, 

18 Ring, 

19 Stone, 

20 Collection, 

21 Watch, 

22) 

23 

24from src.products.serializers.base import ( 

25 BaseAttributesSerializer, 

26 BaseProductItemSerializer, 

27 BaseProductListSerializer, 

28) 

29 

30 

31class EarringListSerializer(BaseProductListSerializer): 

32 class Meta(BaseProductListSerializer.Meta): 

33 model = Earring 

34 

35 

36class NecklaceListSerializer(BaseProductListSerializer): 

37 class Meta(BaseProductListSerializer.Meta): 

38 model = Necklace 

39 

40 

41class PendantListSerializer(BaseProductListSerializer): 

42 class Meta(BaseProductListSerializer.Meta): 

43 model = Pendant 

44 

45 

46class BraceletListSerializer(BaseProductListSerializer): 

47 class Meta(BaseProductListSerializer.Meta): 

48 model = Bracelet 

49 

50 

51class RingListSerializer(BaseProductListSerializer): 

52 class Meta(BaseProductListSerializer.Meta): 

53 model = Ring 

54 

55 

56class WatchListSerializer(BaseProductListSerializer): 

57 class Meta(BaseProductListSerializer.Meta): 

58 model = Watch 

59 

60 

61class BraceletItemSerializer(BaseProductItemSerializer): 

62 class Meta(BaseProductItemSerializer.Meta): 

63 model = Bracelet 

64 

65 

66class WatchItemSerializer(BaseProductItemSerializer): 

67 class Meta(BaseProductItemSerializer.Meta): 

68 model = Watch 

69 

70 

71class RingItemSerializer(BaseProductItemSerializer): 

72 class Meta(BaseProductItemSerializer.Meta): 

73 model = Ring 

74 

75 

76class EarringItemSerializer(BaseProductItemSerializer): 

77 class Meta(BaseProductItemSerializer.Meta): 

78 model = Earring 

79 

80 

81class NecklaceItemSerializer(BaseProductItemSerializer): 

82 class Meta(BaseProductItemSerializer.Meta): 

83 model = Necklace 

84 

85 

86class PendantItemSerializer(BaseProductItemSerializer): 

87 class Meta(BaseProductItemSerializer.Meta): 

88 model = Pendant 

89 

90 

91class CollectionSerializer(BaseAttributesSerializer): 

92 class Meta(BaseAttributesSerializer.Meta): 

93 model = Collection 

94 

95 

96class ColorSerializer(BaseAttributesSerializer): 

97 class Meta(BaseAttributesSerializer.Meta): 

98 model = Color 

99 

100 

101class MetalSerializer(BaseAttributesSerializer): 

102 class Meta(BaseAttributesSerializer.Meta): 

103 model = Metal 

104 

105 

106class StoneSerializer(BaseAttributesSerializer): 

107 class Meta(BaseAttributesSerializer.Meta): 

108 model = Stone