imp part 3
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
from django.db import models
|
||||
from igny8_core.auth.models import SiteSectorBaseModel, SeedKeyword
|
||||
from igny8_core.common.soft_delete import SoftDeletableModel, SoftDeleteManager
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Clusters(SoftDeletableModel, SiteSectorBaseModel):
|
||||
@@ -39,6 +42,27 @@ class Clusters(SoftDeletableModel, SiteSectorBaseModel):
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def soft_delete(self, user=None, reason=None, retention_days=None):
|
||||
"""
|
||||
Override soft_delete to cascade status reset to related Keywords.
|
||||
When a cluster is deleted, its keywords should:
|
||||
- Have their cluster FK set to NULL (handled by SET_NULL)
|
||||
- Have their status reset to 'new' (orphaned keywords)
|
||||
"""
|
||||
# Reset related keywords status to 'new' and clear cluster FK
|
||||
keywords_count = self.keywords.filter(is_deleted=False).update(
|
||||
cluster=None,
|
||||
status='new'
|
||||
)
|
||||
|
||||
logger.info(
|
||||
f"[Clusters.soft_delete] Cluster {self.id} '{self.name}' cascade: "
|
||||
f"reset {keywords_count} keywords to status='new'"
|
||||
)
|
||||
|
||||
# Call parent soft_delete
|
||||
super().soft_delete(user=user, reason=reason, retention_days=retention_days)
|
||||
|
||||
|
||||
class Keywords(SoftDeletableModel, SiteSectorBaseModel):
|
||||
|
||||
Reference in New Issue
Block a user