From 0ca0d6b0d92accdc492ef603925684f7c270ef41 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 15 Mar 2024 11:07:20 +0100 Subject: 🐛 archaeological files - force cached label and complete ID regeneration (refs #5790) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archaeological_files/wizards.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'archaeological_files/wizards.py') diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index b89023877..8178e1c11 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -18,9 +18,8 @@ # See the file COPYING for details. from django.conf import settings -from django.core.exceptions import ObjectDoesNotExist from django.db.models import Max -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import ugettext_lazy as _, get_generated_id from ishtar_common.forms import reverse_lazy from ishtar_common.wizards import ClosingWizard, SearchWizard, MultipleDeletionWizard @@ -28,7 +27,7 @@ from archaeological_operations.wizards import ( OperationWizard, OperationAdministrativeActWizard, ) -from archaeological_operations.models import AdministrativeAct, Parcel +from archaeological_operations.models import AdministrativeAct from . import models @@ -140,14 +139,14 @@ class FileWizard(OperationWizard): """ Make numeric_reference unique """ - r = super(FileWizard, self).done(form_list, return_object=True, **kwargs) - if type(r) not in (list, tuple) or len(r) != 2: + r = super().done(form_list, return_object=True, **kwargs) + if not isinstance(r, (list, tuple)) or len(r) != 2: return r obj, res = r + changed = False # numeric_reference check if not self.modification: numeric_reference = obj.numeric_reference - changed = False while ( obj.__class__.objects.filter( numeric_reference=numeric_reference, year=obj.year @@ -159,7 +158,14 @@ class FileWizard(OperationWizard): changed = True if changed: obj.numeric_reference = numeric_reference - obj.save() + cached_label = obj._generate_cached_label() + if cached_label != obj.cached_label: + obj.cached_label = cached_label + changed = True + if changed: + if hasattr(obj, "no_post_process"): + obj.no_post_process() + obj.save() return res -- cgit v1.2.3