From 6971d416c3eab53dc1da5081fd833a23ff062647 Mon Sep 17 00:00:00 2001 From: "IGNY8 VPS (Salman)" Date: Tue, 23 Dec 2025 07:23:56 +0000 Subject: [PATCH] Apply proper admin organization from remote commit 3283a83b - Replace custom_groups with 12 logical groups from remote config - Accounts & Tenancy: Account, User, Site, Sector, SiteUserAccess - Global Resources: Industry, IndustrySector, SeedKeyword - Plans and Billing: Plan, Subscription, Invoice, Payment, CreditPackage, etc - Credits: AIModelConfig, CreditTransaction, CreditUsageLog, CreditCostConfig, PlanLimitUsage - Content Planning: Keywords, Clusters, ContentIdeas - Content Generation: Tasks, Content, Images - Taxonomy & Organization: ContentTaxonomy, ContentTaxonomyRelation, etc - Publishing & Integration: SiteIntegration, SyncEvent, PublishingRecord, etc - AI & Automation: IntegrationSettings, GlobalModuleSettings, AIPrompt, Strategy, etc - System Settings: ContentType, ContentTemplate, TaxonomyConfig, etc - Django Admin: Group, Permission, PasswordResetToken, Session - Tasks & Logging: AITaskLog, AuditLog, LogEntry, TaskResult, GroupResult Properly organizes 60+ models in admin sidebar for better usability --- backend/igny8_core/admin/site.py | 120 ++++++++++++++----------------- 1 file changed, 55 insertions(+), 65 deletions(-) diff --git a/backend/igny8_core/admin/site.py b/backend/igny8_core/admin/site.py index 94852dca..62bc1c4e 100644 --- a/backend/igny8_core/admin/site.py +++ b/backend/igny8_core/admin/site.py @@ -130,121 +130,111 @@ class Igny8AdminSite(UnfoldAdminSite): # Define our custom groups with their models (using object_name) # Organized by business function - Material icons configured in Unfold custom_groups = { - 'Accounts & Users': { + 'Accounts & Tenancy': { 'models': [ ('igny8_core_auth', 'Account'), ('igny8_core_auth', 'User'), ('igny8_core_auth', 'Site'), ('igny8_core_auth', 'Sector'), ('igny8_core_auth', 'SiteUserAccess'), - ('igny8_core_auth', 'Plan'), - ('igny8_core_auth', 'Subscription'), - ('igny8_core_auth', 'PasswordResetToken'), + ], + }, + 'Global Resources': { + 'models': [ ('igny8_core_auth', 'Industry'), ('igny8_core_auth', 'IndustrySector'), ('igny8_core_auth', 'SeedKeyword'), ], }, - 'Billing & Tenancy': { + 'Plans and Billing': { 'models': [ + ('igny8_core_auth', 'Plan'), + ('igny8_core_auth', 'Subscription'), ('billing', 'Invoice'), ('billing', 'Payment'), - ('billing', 'CreditTransaction'), - ('billing', 'CreditUsageLog'), ('billing', 'CreditPackage'), ('billing', 'PaymentMethodConfig'), ('billing', 'AccountPaymentMethod'), + ], + }, + 'Credits': { + 'models': [ + ('billing', 'AIModelConfig'), + ('billing', 'CreditTransaction'), + ('billing', 'CreditUsageLog'), ('billing', 'CreditCostConfig'), ('billing', 'PlanLimitUsage'), ], }, - 'Writer Module': { + 'Content Planning': { 'models': [ - ('writer', 'Content'), - ('writer', 'Tasks'), - ('writer', 'Images'), - ('writer', 'ContentTaxonomy'), - ('writer', 'ContentAttribute'), - ('writer', 'ContentTaxonomyRelation'), - ('writer', 'ContentClusterMap'), - ], - }, - 'Planner': { - 'models': [ - ('planner', 'Clusters'), ('planner', 'Keywords'), + ('planner', 'Clusters'), ('planner', 'ContentIdeas'), ], }, - 'Publishing': { + 'Content Generation': { 'models': [ + ('writer', 'Tasks'), + ('writer', 'Content'), + ('writer', 'Images'), + ], + }, + 'Taxonomy & Organization': { + 'models': [ + ('writer', 'ContentTaxonomy'), + ('writer', 'ContentTaxonomyRelation'), + ('writer', 'ContentClusterMap'), + ('writer', 'ContentAttribute'), + ], + }, + 'Publishing & Integration': { + 'models': [ + ('integration', 'SiteIntegration'), + ('integration', 'SyncEvent'), ('publishing', 'PublishingRecord'), + ('system', 'PublishingChannel'), ('publishing', 'DeploymentRecord'), ], }, - 'Optimization': { - 'models': [ - ('optimization', 'OptimizationTask'), - ], - }, - 'Automation': { + 'AI & Automation': { 'models': [ + ('system', 'IntegrationSettings'), + ('system', 'GlobalModuleSettings'), + ('system', 'AIPrompt'), + ('system', 'Strategy'), + ('system', 'AuthorProfile'), + ('system', 'APIKey'), + ('system', 'WebhookConfig'), ('automation', 'AutomationConfig'), ('automation', 'AutomationRun'), ], }, - 'Integration': { + 'System Settings': { 'models': [ - ('integration', 'SiteIntegration'), - ('integration', 'SyncEvent'), - ], - }, - 'AI Framework': { - 'models': [ - ('ai', 'AITaskLog'), - ], - }, - 'System Configuration': { - 'models': [ - ('system', 'AIPrompt'), - ('system', 'Strategy'), - ('system', 'AuthorProfile'), + ('contenttypes', 'ContentType'), ('system', 'ContentTemplate'), ('system', 'TaxonomyConfig'), ('system', 'SystemSetting'), ('system', 'ContentTypeConfig'), - ('system', 'PublishingChannel'), - ('system', 'APIKey'), - ('system', 'WebhookConfig'), ('system', 'NotificationConfig'), - ('system', 'AuditLog'), ], }, - 'Celery Results': { - 'models': [ - ('django_celery_results', 'TaskResult'), - ('django_celery_results', 'GroupResult'), - ], - }, - 'Content Types': { - 'models': [ - ('contenttypes', 'ContentType'), - ], - }, - 'Administration': { - 'models': [ - ('admin', 'LogEntry'), - ], - }, - 'Authentication and Authorization': { + 'Django Admin': { 'models': [ ('auth', 'Group'), ('auth', 'Permission'), + ('igny8_core_auth', 'PasswordResetToken'), + ('sessions', 'Session'), ], }, - 'Sessions': { + 'Tasks & Logging': { 'models': [ - ('sessions', 'Session'), + ('ai', 'AITaskLog'), + ('system', 'AuditLog'), + ('admin', 'LogEntry'), + ('django_celery_results', 'TaskResult'), + ('django_celery_results', 'GroupResult'), ], }, }