Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions netbox_custom_objects/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from datetime import date, datetime

import django_filters
from core.models import ObjectType
from core.models import ObjectType, ObjectChange
from core.models.contenttypes import ObjectTypeManager
from django.apps import apps
from django.conf import settings
Expand All @@ -14,8 +14,10 @@
from django.db import connection, models
from django.db.models import Q
from django.db.models.functions import Lower
from django.db.models.signals import pre_delete
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from core.signals import handle_deleted_object
from extras.choices import (
CustomFieldFilterLogicChoices,
CustomFieldTypeChoices,
Expand Down Expand Up @@ -499,12 +501,17 @@ def delete(self, *args, **kwargs):
self.clear_model_cache(self.id)

model = self.get_model()
ObjectType.objects.get(
app_label=APP_LABEL, model=self.get_table_model_name(self.id).lower()
).delete()
object_type = ObjectType.objects.get_for_model(model)
ObjectChange.objects.filter(changed_object_type=object_type).delete()
super().delete(*args, **kwargs)

# Temporarily disconnect the pre_delete handler to skip the ObjectType deletion
# TODO: Remove this disconnect/reconnect after ObjectType has been exempted from handle_deleted_object
pre_delete.disconnect(handle_deleted_object)
object_type.delete()
with connection.schema_editor() as schema_editor:
schema_editor.delete_model(model)
pre_delete.connect(handle_deleted_object)


class CustomObjectTypeField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
Expand Down