refactor stage completed - with migrations

This commit is contained in:
alorig
2025-11-19 20:44:22 +05:00
parent 3802d2e9a3
commit b5cc262f04
4 changed files with 187 additions and 4 deletions

View File

@@ -1,7 +1,9 @@
from rest_framework import serializers
from .models import Keywords, Clusters, ContentIdeas
from igny8_core.auth.models import SeedKeyword
from igny8_core.auth.serializers import SeedKeywordSerializer
from igny8_core.business.site_building.models import SiteBlueprintTaxonomy
class KeywordSerializer(serializers.ModelSerializer):
@@ -27,6 +29,14 @@ class KeywordSerializer(serializers.ModelSerializer):
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
fields = [
@@ -43,6 +53,7 @@ class KeywordSerializer(serializers.ModelSerializer):
'cluster_name',
'sector_name',
'status',
'attribute_values',
'created_at',
'updated_at',
'site_id',
@@ -113,6 +124,8 @@ class ClusterSerializer(serializers.ModelSerializer):
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
fields = [
@@ -123,6 +136,9 @@ class ClusterSerializer(serializers.ModelSerializer):
'volume',
'mapped_pages',
'status',
'context_type',
'context_type_display',
'dimension_meta',
'sector_name',
'created_at',
'updated_at',
@@ -142,6 +158,9 @@ class ClusterSerializer(serializers.ModelSerializer):
except Sector.DoesNotExist:
return None
return None
def get_context_type_display(self, obj):
return obj.get_context_type_display()
def validate_name(self, value):
"""Ensure cluster name is unique within account"""
@@ -153,6 +172,7 @@ 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)
@@ -167,9 +187,13 @@ 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',
@@ -198,3 +222,12 @@ class ContentIdeasSerializer(serializers.ModelSerializer):
except Sector.DoesNotExist:
return None
return None
def get_taxonomy_name(self, obj):
if obj.taxonomy_id:
try:
taxonomy = SiteBlueprintTaxonomy.objects.get(id=obj.taxonomy_id)
return taxonomy.name
except SiteBlueprintTaxonomy.DoesNotExist:
return None
return None