Coverage for src/products/serializers/review_management.py: 73%

11 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-08-04 12:59 +0300

1from rest_framework import serializers 

2 

3from src.products.serializers.review import ReviewSerializer 

4 

5 

6class ReviewManagementSerializer(ReviewSerializer): 

7 """ 

8 Extended serializer for review management (reviewers only). 

9 

10 This serializer extends the base ReviewSerializer to include 

11 approval status and management fields that are only visible 

12 to users with reviewer permissions. 

13 

14 Key Features: 

15 - Includes approval status field 

16 - Inherits all base review functionality 

17 - Used only for reviewer-specific endpoints 

18 """ 

19 

20 # Add approved field for reviewers to see and modify 

21 approved = serializers.BooleanField(read_only=True) 

22 

23 class Meta(ReviewSerializer.Meta): 

24 # Inherit all fields from parent and add approved 

25 fields = ReviewSerializer.Meta.fields + ['approved'] 

26 read_only_fields = ReviewSerializer.Meta.read_only_fields + [ 

27 'approved' 

28 ] 

29 

30 def to_representation(self, instance): 

31 """ 

32 Custom representation method to include approval status. 

33 

34 This method ensures that the approval status is always included 

35 in the serialized output for reviewer management views. 

36 

37 Args: 

38 instance: The Review instance being serialized 

39 

40 Returns: 

41 dict: Serialized review data with approval status 

42 """ 

43 data = super().to_representation(instance) 

44 # Always include approved field for management serializer 

45 data['approved'] = instance.approved 

46 

47 return data