DJANGO Phase 1

This commit is contained in:
IGNY8 VPS (Salman)
2025-12-13 22:34:36 +00:00
parent 60263b4682
commit 1acecd8639
68 changed files with 9797 additions and 46 deletions

View File

@@ -1,7 +1,10 @@
from django.contrib import admin
from django.contrib import messages
from igny8_core.admin.base import SiteSectorAdminMixin
from .models import Tasks, Images, Content
from igny8_core.business.content.models import ContentTaxonomy, ContentAttribute, ContentTaxonomyRelation, ContentClusterMap
from import_export.admin import ExportMixin
from import_export import resources
class ContentTaxonomyInline(admin.TabularInline):
@@ -13,13 +16,24 @@ class ContentTaxonomyInline(admin.TabularInline):
verbose_name_plural = 'Taxonomy Terms (Tags & Categories)'
class TaskResource(resources.ModelResource):
"""Resource class for exporting Tasks"""
class Meta:
model = Tasks
fields = ('id', 'title', 'description', 'status', 'content_type', 'content_structure',
'site__name', 'sector__name', 'cluster__name', 'created_at', 'updated_at')
export_order = fields
@admin.register(Tasks)
class TasksAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
class TasksAdmin(ExportMixin, SiteSectorAdminMixin, admin.ModelAdmin):
resource_class = TaskResource
list_display = ['title', 'content_type', 'content_structure', 'site', 'sector', 'status', 'cluster', 'created_at']
list_filter = ['status', 'content_type', 'content_structure', 'site', 'sector', 'cluster']
search_fields = ['title', 'description']
ordering = ['-created_at']
readonly_fields = ['created_at', 'updated_at']
actions = ['bulk_set_status_draft', 'bulk_set_status_in_progress', 'bulk_set_status_completed']
fieldsets = (
('Basic Info', {
@@ -37,6 +51,24 @@ class TasksAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
}),
)
def bulk_set_status_draft(self, request, queryset):
"""Set selected tasks to draft status"""
updated = queryset.update(status='draft')
self.message_user(request, f'{updated} task(s) set to draft.', messages.SUCCESS)
bulk_set_status_draft.short_description = 'Set status to Draft'
def bulk_set_status_in_progress(self, request, queryset):
"""Set selected tasks to in-progress status"""
updated = queryset.update(status='in_progress')
self.message_user(request, f'{updated} task(s) set to in progress.', messages.SUCCESS)
bulk_set_status_in_progress.short_description = 'Set status to In Progress'
def bulk_set_status_completed(self, request, queryset):
"""Set selected tasks to completed status"""
updated = queryset.update(status='completed')
self.message_user(request, f'{updated} task(s) set to completed.', messages.SUCCESS)
bulk_set_status_completed.short_description = 'Set status to Completed'
def get_site_display(self, obj):
"""Safely get site name"""
try:
@@ -93,14 +125,26 @@ class ImagesAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
return '-'
class ContentResource(resources.ModelResource):
"""Resource class for exporting Content"""
class Meta:
model = Content
fields = ('id', 'title', 'content_type', 'content_structure', 'status', 'source',
'site__name', 'sector__name', 'cluster__name', 'word_count',
'meta_title', 'meta_description', 'primary_keyword', 'external_url', 'created_at')
export_order = fields
@admin.register(Content)
class ContentAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
class ContentAdmin(ExportMixin, SiteSectorAdminMixin, admin.ModelAdmin):
resource_class = ContentResource
list_display = ['title', 'content_type', 'content_structure', 'site', 'sector', 'source', 'status', 'get_taxonomy_count', 'created_at']
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', 'get_tags_display', 'get_categories_display']
inlines = [ContentTaxonomyInline]
actions = ['bulk_set_status_published', 'bulk_set_status_draft']
fieldsets = (
('Basic Info', {
@@ -152,6 +196,18 @@ class ContentAdmin(SiteSectorAdminMixin, admin.ModelAdmin):
return 'No categories'
get_categories_display.short_description = 'Categories'
def bulk_set_status_published(self, request, queryset):
"""Set selected content to published status"""
updated = queryset.update(status='published')
self.message_user(request, f'{updated} content item(s) set to published.', messages.SUCCESS)
bulk_set_status_published.short_description = 'Set status to Published'
def bulk_set_status_draft(self, request, queryset):
"""Set selected content to draft status"""
updated = queryset.update(status='draft')
self.message_user(request, f'{updated} content item(s) set to draft.', messages.SUCCESS)
bulk_set_status_draft.short_description = 'Set status to Draft'
def get_site_display(self, obj):
"""Safely get site name"""
try: