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
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
1from rest_framework import serializers
3from src.products.serializers.review import ReviewSerializer
6class ReviewManagementSerializer(ReviewSerializer):
7 """
8 Extended serializer for review management (reviewers only).
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.
14 Key Features:
15 - Includes approval status field
16 - Inherits all base review functionality
17 - Used only for reviewer-specific endpoints
18 """
20 # Add approved field for reviewers to see and modify
21 approved = serializers.BooleanField(read_only=True)
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 ]
30 def to_representation(self, instance):
31 """
32 Custom representation method to include approval status.
34 This method ensures that the approval status is always included
35 in the serialized output for reviewer management views.
37 Args:
38 instance: The Review instance being serialized
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
47 return data