diff --git a/core/apps.py b/core/apps.py index 3a01f0bd..63c883ca 100644 --- a/core/apps.py +++ b/core/apps.py @@ -5,3 +5,7 @@ import os, logging class CoreConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'core' + + def ready(self): + # Import signals to ensure they get registered + import core.signals diff --git a/core/models.py b/core/models.py index a8571b5c..fe7e9eb5 100644 --- a/core/models.py +++ b/core/models.py @@ -58,12 +58,6 @@ class StreamProfile(models.Model): def __str__(self): return self.name - def delete(self): - if self.locked(): - raise ValueError("This profile is locked and cannot be deleted.") - - self.delete() - def save(self, *args, **kwargs): if self.pk: # Only check existing records orig = StreamProfile.objects.get(pk=self.pk) diff --git a/core/signals.py b/core/signals.py new file mode 100644 index 00000000..6844a890 --- /dev/null +++ b/core/signals.py @@ -0,0 +1,9 @@ +from django.db.models.signals import pre_delete +from django.dispatch import receiver +from django.core.exceptions import ValidationError +from .models import StreamProfile + +@receiver(pre_delete, sender=StreamProfile) +def prevent_deletion_if_locked(sender, instance, **kwargs): + if instance.locked: + raise ValidationError("This profile is locked and cannot be deleted.")