from rest_framework import serializers from .models import FeaturedService class FeaturedServiceSerializer(serializers.ModelSerializer): """Serializer for FeaturedService model.""" category_display = serializers.CharField(source='get_category_display', read_only=True) status_display = serializers.CharField(source='get_publish_status_display', read_only=True) moderator_status_display = serializers.CharField(source='get_moderator_status_display', read_only=True) ai_status_display = serializers.CharField(source='get_ai_status_display', read_only=True) submitter_username = serializers.CharField(source='submitter.username', read_only=True) region_name = serializers.CharField(source='region.name', read_only=True) class Meta: model = FeaturedService fields = ('id', 'name', 'description', 'region', 'region_name', 'category', 'category_display', 'address', 'contact', 'image', 'submitter', 'submitter_username', 'moderator_status', 'moderator_status_display', 'moderator_reviewer', 'moderator_reviewed_at', 'moderator_rejection_reason', 'ai_status', 'ai_status_display', 'ai_reviewed_at', 'ai_rejection_reason', 'publish_status', 'status_display', 'published_at', 'created_at', 'updated_at') read_only_fields = ('id', 'submitter', 'moderator_reviewer', 'moderator_reviewed_at', 'ai_reviewed_at', 'published_at', 'created_at', 'updated_at') class FeaturedServiceCreateSerializer(serializers.ModelSerializer): """Serializer for creating featured services.""" class Meta: model = FeaturedService fields = ('name', 'description', 'region', 'category', 'address', 'contact', 'image') def create(self, validated_data): validated_data['submitter'] = self.context['request'].user return super().create(validated_data) class FeaturedServiceUpdateSerializer(serializers.ModelSerializer): """Serializer for updating featured services.""" class Meta: model = FeaturedService fields = ('name', 'description', 'category', 'address', 'contact', 'image') class FeaturedServiceReviewSerializer(serializers.Serializer): """Serializer for service review actions.""" action = serializers.ChoiceField(choices=['approve', 'reject']) reason = serializers.CharField(required=False, allow_blank=True) class FeaturedServiceListSerializer(serializers.ModelSerializer): """Simplified serializer for service list.""" category_display = serializers.CharField(source='get_category_display', read_only=True) submitter_username = serializers.CharField(source='submitter.username', read_only=True) region_name = serializers.CharField(source='region.name', read_only=True) class Meta: model = FeaturedService fields = ('id', 'name', 'category', 'category_display', 'image', 'submitter', 'submitter_username', 'region', 'region_name', 'publish_status', 'created_at') read_only_fields = ('id', 'created_at')