refactor stage completed - with migrations
This commit is contained in:
@@ -3,6 +3,11 @@ from django.db import models
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from .models import Tasks, Images, Content
|
||||
from igny8_core.business.planning.models import Clusters, ContentIdeas
|
||||
from igny8_core.business.content.models import (
|
||||
ContentClusterMap,
|
||||
ContentTaxonomyMap,
|
||||
ContentAttributeMap,
|
||||
)
|
||||
|
||||
|
||||
class TasksSerializer(serializers.ModelSerializer):
|
||||
@@ -17,6 +22,9 @@ class TasksSerializer(serializers.ModelSerializer):
|
||||
content_secondary_keywords = serializers.SerializerMethodField()
|
||||
content_tags = serializers.SerializerMethodField()
|
||||
content_categories = serializers.SerializerMethodField()
|
||||
cluster_mappings = serializers.SerializerMethodField()
|
||||
taxonomy_mappings = serializers.SerializerMethodField()
|
||||
attribute_mappings = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Tasks
|
||||
@@ -42,6 +50,9 @@ class TasksSerializer(serializers.ModelSerializer):
|
||||
'content_secondary_keywords',
|
||||
'content_tags',
|
||||
'content_categories',
|
||||
'cluster_mappings',
|
||||
'taxonomy_mappings',
|
||||
'attribute_mappings',
|
||||
'assigned_post_id',
|
||||
'post_url',
|
||||
'created_at',
|
||||
@@ -109,6 +120,48 @@ class TasksSerializer(serializers.ModelSerializer):
|
||||
record = self._get_content_record(obj)
|
||||
return record.categories if record else []
|
||||
|
||||
def _cluster_map_qs(self, obj):
|
||||
return ContentClusterMap.objects.filter(task=obj).select_related('cluster')
|
||||
|
||||
def _taxonomy_map_qs(self, obj):
|
||||
return ContentTaxonomyMap.objects.filter(task=obj).select_related('taxonomy')
|
||||
|
||||
def _attribute_map_qs(self, obj):
|
||||
return ContentAttributeMap.objects.filter(task=obj)
|
||||
|
||||
def get_cluster_mappings(self, obj):
|
||||
mappings = []
|
||||
for mapping in self._cluster_map_qs(obj):
|
||||
mappings.append({
|
||||
'cluster_id': mapping.cluster_id,
|
||||
'cluster_name': mapping.cluster.name if mapping.cluster else None,
|
||||
'role': mapping.role,
|
||||
'source': mapping.source,
|
||||
})
|
||||
return mappings
|
||||
|
||||
def get_taxonomy_mappings(self, obj):
|
||||
mappings = []
|
||||
for mapping in self._taxonomy_map_qs(obj):
|
||||
taxonomy = mapping.taxonomy
|
||||
mappings.append({
|
||||
'taxonomy_id': taxonomy.id if taxonomy else None,
|
||||
'taxonomy_name': taxonomy.name if taxonomy else None,
|
||||
'taxonomy_type': taxonomy.taxonomy_type if taxonomy else None,
|
||||
'source': mapping.source,
|
||||
})
|
||||
return mappings
|
||||
|
||||
def get_attribute_mappings(self, obj):
|
||||
mappings = []
|
||||
for mapping in self._attribute_map_qs(obj):
|
||||
mappings.append({
|
||||
'name': mapping.name,
|
||||
'value': mapping.value,
|
||||
'source': mapping.source,
|
||||
})
|
||||
return mappings
|
||||
|
||||
|
||||
class ImagesSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for Images model"""
|
||||
@@ -193,6 +246,9 @@ class ContentSerializer(serializers.ModelSerializer):
|
||||
sector_name = serializers.SerializerMethodField()
|
||||
has_image_prompts = serializers.SerializerMethodField()
|
||||
has_generated_images = serializers.SerializerMethodField()
|
||||
cluster_mappings = serializers.SerializerMethodField()
|
||||
taxonomy_mappings = serializers.SerializerMethodField()
|
||||
attribute_mappings = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Content
|
||||
@@ -221,6 +277,9 @@ class ContentSerializer(serializers.ModelSerializer):
|
||||
'entity_type',
|
||||
'json_blocks',
|
||||
'structure_data',
|
||||
'cluster_mappings',
|
||||
'taxonomy_mappings',
|
||||
'attribute_mappings',
|
||||
]
|
||||
read_only_fields = ['id', 'generated_at', 'updated_at', 'account_id']
|
||||
|
||||
@@ -261,3 +320,39 @@ class ContentSerializer(serializers.ModelSerializer):
|
||||
image_url__isnull=False
|
||||
).exclude(image_url='').exists()
|
||||
|
||||
def get_cluster_mappings(self, obj):
|
||||
mappings = ContentClusterMap.objects.filter(content=obj).select_related('cluster')
|
||||
results = []
|
||||
for mapping in mappings:
|
||||
results.append({
|
||||
'cluster_id': mapping.cluster_id,
|
||||
'cluster_name': mapping.cluster.name if mapping.cluster else None,
|
||||
'role': mapping.role,
|
||||
'source': mapping.source,
|
||||
})
|
||||
return results
|
||||
|
||||
def get_taxonomy_mappings(self, obj):
|
||||
mappings = ContentTaxonomyMap.objects.filter(content=obj).select_related('taxonomy')
|
||||
results = []
|
||||
for mapping in mappings:
|
||||
taxonomy = mapping.taxonomy
|
||||
results.append({
|
||||
'taxonomy_id': taxonomy.id if taxonomy else None,
|
||||
'taxonomy_name': taxonomy.name if taxonomy else None,
|
||||
'taxonomy_type': taxonomy.taxonomy_type if taxonomy else None,
|
||||
'source': mapping.source,
|
||||
})
|
||||
return results
|
||||
|
||||
def get_attribute_mappings(self, obj):
|
||||
mappings = ContentAttributeMap.objects.filter(content=obj)
|
||||
results = []
|
||||
for mapping in mappings:
|
||||
results.append({
|
||||
'name': mapping.name,
|
||||
'value': mapping.value,
|
||||
'source': mapping.source,
|
||||
})
|
||||
return results
|
||||
|
||||
|
||||
Reference in New Issue
Block a user