Files
igny8/backend/igny8_core/modules/system/serializers.py
IGNY8 VPS (Salman) 7a1e952a57 feat: Add Global Module Settings and Caption to Images
- Introduced GlobalModuleSettings model for platform-wide module enable/disable settings.
- Added 'caption' field to Images model to store image captions.
- Updated GenerateImagePromptsFunction to handle new caption structure in prompts.
- Enhanced AIPromptViewSet to return global prompt types and validate active prompts.
- Modified serializers and views to accommodate new caption field and global settings.
- Updated frontend components to display captions and filter prompts based on active types.
- Created migrations for GlobalModuleSettings and added caption field to Images.
2025-12-20 21:34:59 +00:00

67 lines
2.1 KiB
Python

"""
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']