Skip to content

Commit 8507290

Browse files
committed
Handle deletion of ObjectType cleanly by disconnecting pre_delete handler
1 parent e00c22f commit 8507290

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

netbox_custom_objects/models.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
from django.db import connection, models
1515
from django.db.models import Q
1616
from django.db.models.functions import Lower
17+
from django.db.models.signals import pre_delete
1718
from django.urls import reverse
1819
from django.utils.translation import gettext_lazy as _
20+
from core.signals import handle_deleted_object
1921
from extras.choices import (
2022
CustomFieldFilterLogicChoices,
2123
CustomFieldTypeChoices,
@@ -501,14 +503,14 @@ def delete(self, *args, **kwargs):
501503
model = self.get_model()
502504
object_type = ObjectType.objects.get_for_model(model)
503505
ObjectChange.objects.filter(changed_object_type=object_type).delete()
504-
object_type_qs = ObjectType.objects.filter(pk=object_type.pk)
505-
# _raw_delete is necessary to avoid post_delete signal handling
506-
object_type_qs._raw_delete(object_type_qs.db)
507506
super().delete(*args, **kwargs)
507+
508+
# Temporarily disconnect the pre_delete handler to skip the ObjectType deletion
509+
pre_delete.disconnect(handle_deleted_object)
510+
object_type.delete()
508511
with connection.schema_editor() as schema_editor:
509512
schema_editor.delete_model(model)
510-
# TODO: The ContentType should be cleaned up as well but it throws an error in this flow
511-
# ContentType.objects.get(pk=object_type.id).delete()
513+
pre_delete.connect(handle_deleted_object)
512514

513515

514516
class CustomObjectTypeField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):

0 commit comments

Comments
 (0)