remaining stage 1
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from rest_framework import serializers
|
||||
from django.conf import settings
|
||||
|
||||
from .models import Keywords, Clusters, ContentIdeas
|
||||
from igny8_core.auth.models import SeedKeyword
|
||||
@@ -28,14 +29,6 @@ class KeywordSerializer(serializers.ModelSerializer):
|
||||
sector_name = serializers.SerializerMethodField()
|
||||
site_id = serializers.IntegerField(write_only=True, required=False)
|
||||
sector_id = serializers.IntegerField(write_only=True, required=False)
|
||||
|
||||
attribute_values = serializers.ListField(
|
||||
child=serializers.CharField(),
|
||||
required=False,
|
||||
allow_empty=True,
|
||||
default=list,
|
||||
help_text="Optional attribute metadata (e.g., product specs, service modifiers)",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Keywords
|
||||
@@ -53,7 +46,6 @@ class KeywordSerializer(serializers.ModelSerializer):
|
||||
'cluster_name',
|
||||
'sector_name',
|
||||
'status',
|
||||
'attribute_values',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'site_id',
|
||||
@@ -62,6 +54,12 @@ class KeywordSerializer(serializers.ModelSerializer):
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at', 'account_id', 'keyword', 'volume', 'difficulty', 'intent']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
# Only include Stage 1 fields when feature flag is enabled
|
||||
if getattr(settings, 'USE_SITE_BUILDER_REFACTOR', False):
|
||||
self.fields['attribute_values'] = serializers.JSONField(read_only=True)
|
||||
|
||||
def validate(self, attrs):
|
||||
"""Validate that seed_keyword_id is provided for create operations"""
|
||||
# For create operations, seed_keyword_id is required
|
||||
@@ -123,8 +121,6 @@ class ClusterSerializer(serializers.ModelSerializer):
|
||||
sector_name = serializers.SerializerMethodField()
|
||||
site_id = serializers.IntegerField(write_only=True, required=False)
|
||||
sector_id = serializers.IntegerField(write_only=True, required=False)
|
||||
|
||||
context_type_display = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Clusters
|
||||
@@ -136,9 +132,6 @@ class ClusterSerializer(serializers.ModelSerializer):
|
||||
'volume',
|
||||
'mapped_pages',
|
||||
'status',
|
||||
'context_type',
|
||||
'context_type_display',
|
||||
'dimension_meta',
|
||||
'sector_name',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
@@ -148,6 +141,14 @@ class ClusterSerializer(serializers.ModelSerializer):
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at', 'account_id', 'keywords_count', 'volume', 'mapped_pages']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
# Only include Stage 1 fields when feature flag is enabled
|
||||
if getattr(settings, 'USE_SITE_BUILDER_REFACTOR', False):
|
||||
self.fields['context_type'] = serializers.CharField(read_only=True)
|
||||
self.fields['context_type_display'] = serializers.SerializerMethodField()
|
||||
self.fields['dimension_meta'] = serializers.JSONField(read_only=True)
|
||||
|
||||
def get_sector_name(self, obj):
|
||||
"""Get sector name from Sector model"""
|
||||
if obj.sector_id:
|
||||
@@ -160,7 +161,10 @@ class ClusterSerializer(serializers.ModelSerializer):
|
||||
return None
|
||||
|
||||
def get_context_type_display(self, obj):
|
||||
return obj.get_context_type_display()
|
||||
"""Get context type display name (only when feature flag enabled)"""
|
||||
if hasattr(obj, 'get_context_type_display'):
|
||||
return obj.get_context_type_display()
|
||||
return None
|
||||
|
||||
def validate_name(self, value):
|
||||
"""Ensure cluster name is unique within account"""
|
||||
@@ -172,7 +176,6 @@ class ContentIdeasSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for ContentIdeas model"""
|
||||
keyword_cluster_name = serializers.SerializerMethodField()
|
||||
sector_name = serializers.SerializerMethodField()
|
||||
taxonomy_name = serializers.SerializerMethodField()
|
||||
site_id = serializers.IntegerField(write_only=True, required=False)
|
||||
sector_id = serializers.IntegerField(write_only=True, required=False)
|
||||
|
||||
@@ -187,13 +190,9 @@ class ContentIdeasSerializer(serializers.ModelSerializer):
|
||||
'target_keywords',
|
||||
'keyword_cluster_id',
|
||||
'keyword_cluster_name',
|
||||
'taxonomy_id',
|
||||
'taxonomy_name',
|
||||
'sector_name',
|
||||
'status',
|
||||
'estimated_word_count',
|
||||
'site_entity_type',
|
||||
'cluster_role',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'site_id',
|
||||
@@ -202,6 +201,15 @@ class ContentIdeasSerializer(serializers.ModelSerializer):
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at', 'account_id']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
# Only include Stage 1 fields when feature flag is enabled
|
||||
if getattr(settings, 'USE_SITE_BUILDER_REFACTOR', False):
|
||||
self.fields['taxonomy_id'] = serializers.IntegerField(read_only=True, allow_null=True)
|
||||
self.fields['taxonomy_name'] = serializers.SerializerMethodField()
|
||||
self.fields['site_entity_type'] = serializers.CharField(read_only=True)
|
||||
self.fields['cluster_role'] = serializers.CharField(read_only=True)
|
||||
|
||||
def get_keyword_cluster_name(self, obj):
|
||||
"""Get cluster name from Clusters model"""
|
||||
if obj.keyword_cluster_id:
|
||||
|
||||
Reference in New Issue
Block a user