trash models added, first attempt for remainign issues
This commit is contained in:
@@ -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'
|
||||
|
||||
|
||||
@@ -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',),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user