""" System module serializers """ from rest_framework import serializers from .models import AIPrompt, AuthorProfile, Strategy class AIPromptSerializer(serializers.ModelSerializer): """Serializer for AI Prompts""" prompt_type_display = serializers.CharField(source='get_prompt_type_display', read_only=True) default_prompt = serializers.SerializerMethodField() class Meta: model = AIPrompt fields = [ 'id', 'prompt_type', 'prompt_type_display', 'prompt_value', 'default_prompt', 'is_active', 'updated_at', 'created_at', ] read_only_fields = ['id', 'created_at', 'updated_at', 'default_prompt'] def get_default_prompt(self, obj): """Get live default prompt from GlobalAIPrompt""" from .global_settings_models import GlobalAIPrompt try: global_prompt = GlobalAIPrompt.objects.get( prompt_type=obj.prompt_type, is_active=True ) return global_prompt.prompt_value except GlobalAIPrompt.DoesNotExist: return f"ERROR: Global prompt '{obj.prompt_type}' not configured in admin" class AuthorProfileSerializer(serializers.ModelSerializer): """Serializer for AuthorProfile""" class Meta: model = AuthorProfile fields = [ 'id', 'name', 'description', 'tone', 'language', 'structure_template', 'is_active', 'created_at', 'updated_at' ] read_only_fields = ['id', 'created_at', 'updated_at'] class StrategySerializer(serializers.ModelSerializer): """Serializer for Strategy""" sector_name = serializers.CharField(source='sector.name', read_only=True) class Meta: model = Strategy fields = [ 'id', 'name', 'description', 'sector', 'sector_name', 'prompt_types', 'section_logic', 'is_active', 'created_at', 'updated_at' ] read_only_fields = ['id', 'created_at', 'updated_at']