diff options
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 |
commit | dc1d0da3544d2ec9adb4c792c357fe06eaf752a7 (patch) | |
tree | dc2627a86507fe03bf42b21bcc5fe21183573cf4 /archaeological_finds | |
parent | e448e19f9a472f8bb9ce41b085d175e91e0b873b (diff) | |
download | Ishtar-dc1d0da3544d2ec9adb4c792c357fe06eaf752a7.tar.bz2 Ishtar-dc1d0da3544d2ec9adb4c792c357fe06eaf752a7.zip |
Add custom cached_label configuration for each main item
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/migrations/0111_auto_20230127_1504.py | 160 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 49 | ||||
-rw-r--r-- | archaeological_finds/models_treatments.py | 16 |
3 files changed, 211 insertions, 14 deletions
diff --git a/archaeological_finds/migrations/0111_auto_20230127_1504.py b/archaeological_finds/migrations/0111_auto_20230127_1504.py new file mode 100644 index 000000000..e1d833e03 --- /dev/null +++ b/archaeological_finds/migrations/0111_auto_20230127_1504.py @@ -0,0 +1,160 @@ +# Generated by Django 2.2.24 on 2023-01-27 15:04 + +from django.db import migrations, models +import django.db.models.deletion +import ishtar_common.utils + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0110_auto_20220707_1633'), + ] + + operations = [ + migrations.AddField( + model_name='basefind', + name='cached_label', + field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), + ), + migrations.AddField( + model_name='historicalbasefind', + name='cached_label', + field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), + ), + migrations.AddField( + model_name='historicaltreatment', + name='complete_identifier', + field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), + ), + migrations.AddField( + model_name='historicaltreatment', + name='custom_index', + field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), + ), + migrations.AddField( + model_name='historicaltreatment', + name='qrcode', + field=models.TextField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='historicaltreatmentfile', + name='complete_identifier', + field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), + ), + migrations.AddField( + model_name='historicaltreatmentfile', + name='custom_index', + field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), + ), + migrations.AddField( + model_name='historicaltreatmentfile', + name='qrcode', + field=models.TextField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='treatment', + name='complete_identifier', + field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), + ), + migrations.AddField( + model_name='treatment', + name='custom_index', + field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), + ), + migrations.AddField( + model_name='treatment', + name='qrcode', + field=models.ImageField(blank=True, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path), + ), + migrations.AddField( + model_name='treatmentfile', + name='complete_identifier', + field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), + ), + migrations.AddField( + model_name='treatmentfile', + name='custom_index', + field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), + ), + migrations.AddField( + model_name='treatmentfile', + name='qrcode', + field=models.ImageField(blank=True, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path), + ), + migrations.AlterField( + model_name='basefind', + name='discovery_date', + field=models.DateField(blank=True, null=True, verbose_name='Discovery date (exact or beginning)'), + ), + migrations.AlterField( + model_name='basefind', + name='discovery_date_taq', + field=models.DateField(blank=True, null=True, verbose_name='Discovery date (end)'), + ), + migrations.AlterField( + model_name='basefind', + name='geodata', + field=models.ManyToManyField(blank=True, related_name='related_items_archaeological_finds_basefind', to='ishtar_common.GeoVectorData', verbose_name='Geodata'), + ), + migrations.AlterField( + model_name='basefind', + name='main_geodata', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_archaeological_finds_basefind', to='ishtar_common.GeoVectorData', verbose_name='Main geodata'), + ), + migrations.AlterField( + model_name='find', + name='find_number', + field=models.IntegerField(blank=True, null=True, verbose_name='Number of remains'), + ), + migrations.AlterField( + model_name='find', + name='museum_id', + field=models.TextField(blank=True, default='', verbose_name='Museum inventory number'), + ), + migrations.AlterField( + model_name='historicalbasefind', + name='discovery_date', + field=models.DateField(blank=True, null=True, verbose_name='Discovery date (exact or beginning)'), + ), + migrations.AlterField( + model_name='historicalbasefind', + name='discovery_date_taq', + field=models.DateField(blank=True, null=True, verbose_name='Discovery date (end)'), + ), + migrations.AlterField( + model_name='historicalbasefind', + name='main_geodata', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.GeoVectorData', verbose_name='Main geodata'), + ), + migrations.AlterField( + model_name='historicalfind', + name='find_number', + field=models.IntegerField(blank=True, null=True, verbose_name='Number of remains'), + ), + migrations.AlterField( + model_name='historicalfind', + name='museum_id', + field=models.TextField(blank=True, default='', verbose_name='Museum inventory number'), + ), + migrations.AlterField( + model_name='historicaltreatment', + name='cached_label', + field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), + ), + migrations.AlterField( + model_name='historicaltreatmentfile', + name='cached_label', + field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), + ), + migrations.AlterField( + model_name='treatment', + name='cached_label', + field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), + ), + migrations.AlterField( + model_name='treatmentfile', + name='cached_label', + field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), + ), + ] 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] ) diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index d52516ff2..509d67f70 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -51,7 +51,7 @@ from ishtar_common.models import ( SearchVectorConfig, DocumentItem, ) -from ishtar_common.models_common import HistoricalRecords +from ishtar_common.models_common import CompleteIdentifierItem, HistoricalRecords from ishtar_common.utils import ( cached_label_changed, get_current_year, @@ -89,6 +89,7 @@ class Treatment( ValueGetter, DocumentItem, BaseHistorizedItem, + CompleteIdentifierItem, ImageModel, OwnPerms, ShortMenuItem, @@ -279,9 +280,6 @@ class Treatment( blank=True, null=True, ) - cached_label = models.TextField( - _("Cached name"), blank=True, default="", db_index=True - ) history = HistoricalRecords(bases=[HistoryModel]) class Meta: @@ -349,6 +347,9 @@ class Treatment( ) def _generate_cached_label(self): + label = self._profile_generate_cached_label() + if label: + return label items = [ str(getattr(self, k)) for k in ["year", "index", "other_reference", "label"] @@ -1008,6 +1009,7 @@ class TreatmentFile( ClosedItem, DocumentItem, BaseHistorizedItem, + CompleteIdentifierItem, OwnPerms, ValueGetter, ShortMenuItem, @@ -1165,9 +1167,6 @@ class TreatmentFile( on_delete=models.SET_NULL, related_name="treatment_files", ) - cached_label = models.TextField( - _("Cached name"), blank=True, default="", db_index=True - ) history = HistoricalRecords() class Meta: @@ -1258,6 +1257,9 @@ class TreatmentFile( 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 items = [ str(getattr(self, k)) for k in ["year", "index", "internal_reference", "name"] |