summaryrefslogtreecommitdiff
path: root/archaeological_finds
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
parente448e19f9a472f8bb9ce41b085d175e91e0b873b (diff)
downloadIshtar-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.py160
-rw-r--r--archaeological_finds/models_finds.py49
-rw-r--r--archaeological_finds/models_treatments.py16
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"]