taxonomy fix

This commit is contained in:
IGNY8 VPS (Salman)
2025-12-01 05:13:53 +00:00
parent 9f82a11c56
commit 6f449c32c1
2 changed files with 64 additions and 26 deletions

View File

@@ -1,7 +1,16 @@
from django.contrib import admin
from igny8_core.admin.base import SiteSectorAdminMixin
from .models import Tasks, Images, Content
from igny8_core.business.content.models import ContentTaxonomy, ContentAttribute
from igny8_core.business.content.models import ContentTaxonomy, ContentAttribute, ContentTaxonomyRelation
class ContentTaxonomyInline(admin.TabularInline):
"""Inline admin for managing content taxonomy relationships"""
model = ContentTaxonomyRelation
extra = 1
autocomplete_fields = ['taxonomy']
verbose_name = 'Taxonomy Term'
verbose_name_plural = 'Taxonomy Terms (Tags & Categories)'
@admin.register(Tasks)
@@ -90,8 +99,8 @@ class ContentAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
list_filter = ['content_type', 'content_structure', 'source', 'status', 'site', 'sector', 'created_at']
search_fields = ['title', 'content_html', 'external_url']
ordering = ['-created_at']
readonly_fields = ['created_at', 'updated_at', 'word_count']
# Note: taxonomy_terms removed from filter_horizontal because it uses a through model
readonly_fields = ['created_at', 'updated_at', 'word_count', 'get_tags_display', 'get_categories_display']
inlines = [ContentTaxonomyInline]
fieldsets = (
('Basic Info', {
@@ -100,8 +109,11 @@ class ContentAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
('Content Classification', {
'fields': ('content_type', 'content_structure', 'source')
}),
# Note: taxonomy_terms field removed from fieldsets because it uses ContentTaxonomyAssociation through model
# Taxonomy associations can be managed via the inline admin or separately
('Taxonomies (Read-only - manage below)', {
'fields': ('get_tags_display', 'get_categories_display'),
'classes': ('collapse',),
'description': 'View tags and categories. To add/remove, use the Taxonomy Terms section below.'
}),
('Content', {
'fields': ('content_html', 'word_count')
}),
@@ -124,6 +136,22 @@ class ContentAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
return obj.taxonomy_terms.count()
get_taxonomy_count.short_description = 'Taxonomy Count'
def get_tags_display(self, obj):
"""Display tags"""
tags = obj.taxonomy_terms.filter(taxonomy_type='tag')
if tags.exists():
return ', '.join([tag.name for tag in tags])
return 'No tags'
get_tags_display.short_description = 'Tags'
def get_categories_display(self, obj):
"""Display categories"""
categories = obj.taxonomy_terms.filter(taxonomy_type='category')
if categories.exists():
return ', '.join([cat.name for cat in categories])
return 'No categories'
get_categories_display.short_description = 'Categories'
def get_site_display(self, obj):
"""Safely get site name"""
try:
@@ -142,17 +170,27 @@ class ContentAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
@admin.register(ContentTaxonomy)
class ContentTaxonomyAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
list_display = ['name', 'taxonomy_type', 'slug', 'external_id', 'external_taxonomy', 'site', 'sector']
list_display = ['name', 'taxonomy_type', 'slug', 'count', 'external_id', 'external_taxonomy', 'site', 'sector']
list_filter = ['taxonomy_type', 'site', 'sector']
search_fields = ['name', 'slug', 'external_taxonomy']
ordering = ['taxonomy_type', 'name']
readonly_fields = ['count', 'created_at', 'updated_at']
fieldsets = (
('Basic Info', {
'fields': ('name', 'slug', 'taxonomy_type', 'site', 'sector')
'fields': ('name', 'slug', 'taxonomy_type', 'description', 'site', 'sector')
}),
('Usage', {
'fields': ('count',),
'description': 'Number of content items using this term'
}),
('WordPress Sync', {
'fields': ('external_id', 'external_taxonomy')
'fields': ('external_id', 'external_taxonomy', 'metadata'),
'classes': ('collapse',)
}),
('Timestamps', {
'fields': ('created_at', 'updated_at'),
'classes': ('collapse',)
}),
)