From 6772ddb5c88d288a20a577775d37cc9eb37f3e19 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 17 Aug 2026 14:35:42 +0200 Subject: [PATCH] # Remove ExternalIdentifier * adds removing of ExternalIdentifier entries if a BaseObject is removed from the database * removes unused import statements * adds ExternalIdentifier view to admin backend --- api/admin.py | 12 ++++++++++++ intervention/admin.py | 2 +- konova/admin.py | 4 +--- konova/models/object.py | 27 +++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/api/admin.py b/api/admin.py index 3cad8630..8a656a19 100644 --- a/api/admin.py +++ b/api/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin +from api.models import ExternalIdentifier from api.models.token import APIUserToken, OAuthToken @@ -28,6 +29,17 @@ class OAuthTokenAdmin(admin.ModelAdmin): "refresh_token", ] +class ExternalIdentifierAdmin(admin.ModelAdmin): + list_display = [ + "external_id", + "internal_id", + "created", + ] + search_fields = [ + "external_id", + "internal_id", + ] admin.site.register(APIUserToken, APITokenAdmin) admin.site.register(OAuthToken, OAuthTokenAdmin) +admin.site.register(ExternalIdentifier, ExternalIdentifierAdmin) diff --git a/intervention/admin.py b/intervention/admin.py index 208030e6..09531dab 100644 --- a/intervention/admin.py +++ b/intervention/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from intervention.models import Intervention, Responsibility, Legal, Revocation, InterventionDocument +from intervention.models import Intervention from konova.admin import AbstractDocumentAdmin, BaseObjectAdmin diff --git a/konova/admin.py b/konova/admin.py index 07d692d7..6b5633e5 100644 --- a/konova/admin.py +++ b/konova/admin.py @@ -7,10 +7,7 @@ Created on: 22.07.21 """ from django.contrib import admin -from konova.models import Geometry, Deadline, GeometryConflict, Parcel, District, Municipal, ParcelGroup, Resubmission from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP -from konova.utils.message_templates import COMPENSATION_REMOVED_TEMPLATE -from user.models import UserAction class GeometryAdmin(admin.ModelAdmin): @@ -123,6 +120,7 @@ class BaseResourceAdmin(admin.ModelAdmin): class BaseObjectAdmin(BaseResourceAdmin, DeletableObjectMixinAdmin): search_fields = [ + "id", "identifier", "title", ] diff --git a/konova/models/object.py b/konova/models/object.py index 9de26a3f..651536bf 100644 --- a/konova/models/object.py +++ b/konova/models/object.py @@ -146,6 +146,33 @@ class BaseObject(BaseResource, DeletableObjectMixin): class Meta: abstract = True + def delete(self, using=None, keep_parents=False): + """ Base deleting of a BaseObject instance + + Args: + using: + keep_parents: + + Returns: + + """ + self.__delete_external_identifier() + super().delete(using, keep_parents) + + def __delete_external_identifier(self): + """ Checks on existing external identifier linking and drops them + + Returns: + + """ + from api.models import ExternalIdentifier + try: + external_identifier = ExternalIdentifier.objects.filter(internal_id=self.id) + external_identifier.delete() + except ObjectDoesNotExist: + pass + + @abstractmethod def set_status_messages(self, request: HttpRequest): raise NotImplementedError