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]          )  | 
