trash models added, first attempt for remainign issues

This commit is contained in:
IGNY8 VPS (Salman)
2026-01-12 13:39:42 +00:00
parent 28cb698579
commit 7d4d309677
20 changed files with 1084 additions and 106 deletions

View File

@@ -4,6 +4,7 @@ Admin interface for auth models
from django import forms
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.db import models
from unfold.admin import ModelAdmin, TabularInline
from simple_history.admin import SimpleHistoryAdmin
from igny8_core.admin.base import AccountAdminMixin, Igny8ModelAdmin
@@ -896,6 +897,27 @@ class SeedKeywordAdmin(ImportExportMixin, Igny8ModelAdmin):
"""Allow deletion for superusers and developers"""
return request.user.is_superuser or (hasattr(request.user, 'is_developer') and request.user.is_developer())
def delete_model(self, request, obj):
"""Override delete to handle PROTECT relationship with Keywords"""
from igny8_core.business.planning.models import Keywords
# Soft-delete all Keywords referencing this SeedKeyword first
site_keywords = Keywords.objects.filter(seed_keyword=obj)
for kw in site_keywords:
kw.soft_delete(user=request.user, reason=f"Parent seed keyword '{obj.keyword}' deleted")
# Now we can safely delete the SeedKeyword
super().delete_model(request, obj)
def delete_queryset(self, request, queryset):
"""Override bulk delete to handle PROTECT relationship with Keywords"""
from igny8_core.business.planning.models import Keywords
for seed_keyword in queryset:
# Soft-delete all Keywords referencing this SeedKeyword first
site_keywords = Keywords.objects.filter(seed_keyword=seed_keyword)
for kw in site_keywords:
kw.soft_delete(user=request.user, reason=f"Parent seed keyword '{seed_keyword.keyword}' deleted")
# Now we can safely delete the SeedKeywords
queryset.delete()
def bulk_activate(self, request, queryset):
updated = queryset.update(is_active=True)
self.message_user(request, f'{updated} seed keyword(s) activated.', messages.SUCCESS)
@@ -1075,4 +1097,3 @@ class UserAdmin(ExportMixin, BaseUserAdmin, Igny8ModelAdmin):
messages.INFO
)
bulk_send_password_reset.short_description = 'Send password reset email'

View File

@@ -0,0 +1,52 @@
# Generated by Django 5.2.10 on 2026-01-12 13:36
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('igny8_core_auth', '0020_fix_historical_account'),
]
operations = [
migrations.CreateModel(
name='AccountTrash',
fields=[
],
options={
'verbose_name': 'Account (Trash)',
'verbose_name_plural': 'Accounts (Trash)',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('igny8_core_auth.account',),
),
migrations.CreateModel(
name='SectorTrash',
fields=[
],
options={
'verbose_name': 'Sector (Trash)',
'verbose_name_plural': 'Sectors (Trash)',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('igny8_core_auth.sector',),
),
migrations.CreateModel(
name='SiteTrash',
fields=[
],
options={
'verbose_name': 'Site (Trash)',
'verbose_name_plural': 'Sites (Trash)',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('igny8_core_auth.site',),
),
]