summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_finds.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-01-27 17:31:00 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-01-27 17:31:00 +0100
commitdc1d0da3544d2ec9adb4c792c357fe06eaf752a7 (patch)
treedc2627a86507fe03bf42b21bcc5fe21183573cf4 /archaeological_finds/models_finds.py
parente448e19f9a472f8bb9ce41b085d175e91e0b873b (diff)
downloadIshtar-dc1d0da3544d2ec9adb4c792c357fe06eaf752a7.tar.bz2
Ishtar-dc1d0da3544d2ec9adb4c792c357fe06eaf752a7.zip
Add custom cached_label configuration for each main item
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r--archaeological_finds/models_finds.py49
1 files changed, 42 insertions, 7 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 8da525281..a8565f14e 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -726,6 +726,28 @@ class BaseFind(
context_record_id=None,
transaction_id=None,
):
+ profile = get_current_profile()
+ if profile.basefind_cached_label:
+ # no bulk possible
+ q = cls.objects
+ if context_record_id:
+ q = q.filter(context_record_id=context_record_id)
+ elif operation_id:
+ q = q.filter(context_record__operation_id=operation_id)
+ elif parcel_id:
+ q = q.filter(context_record__parcel_id=parcel_id)
+ else:
+ return
+ for bf in q.all():
+ bf.skip_history_when_saving = True
+ bf._no_move = True
+ bf.save()
+ Find.cached_label_bulk_update(
+ context_record_id=context_record_id,
+ operation_id=operation_id, parcel_id=parcel_id,
+ transaction_id=transaction_id
+ )
+ return
transaction_id, is_recursion = cls.bulk_recursion(
transaction_id, [operation_id, parcel_id, context_record_id]
)
@@ -2001,13 +2023,6 @@ class Find(
blank=True,
help_text=_("Related treatments when no new find is created"),
)
- cached_label = models.TextField(
- _("Cached name"),
- blank=True,
- default="",
- db_index=True,
- help_text=_("Generated automatically - do not edit"),
- )
cached_periods = models.TextField(
_("Cached periods label"),
blank=True,
@@ -2676,6 +2691,9 @@ class Find(
return cls._return_get_owns(owns, values, get_short_menu_class)
def _generate_cached_label(self):
+ label = self._profile_generate_cached_label()
+ if label:
+ return label
self.cached_label_bulk_update(find_id=self.pk)
return Find.objects.filter(pk=self.pk).values("cached_label")[0]["cached_label"]
@@ -2697,6 +2715,23 @@ class Find(
find_id=None,
transaction_id=None,
):
+ profile = get_current_profile()
+ if profile.find_cached_label:
+ # no bulk possible
+ q = cls.objects
+ if context_record_id:
+ q = q.filter(base_finds__context_record_id=context_record_id)
+ elif operation_id:
+ q = q.filter(base_finds__context_record__operation_id=operation_id)
+ elif parcel_id:
+ q = q.filter(base_finds__context_record__parcel_id=parcel_id)
+ else:
+ return
+ for f in q.all():
+ f.skip_history_when_saving = True
+ f._no_move = True
+ f.save()
+ return
transaction_id, is_recursion = cls.bulk_recursion(
transaction_id, [operation_id, parcel_id, context_record_id, find_id]
)