diff options
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 49 |
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] ) |