summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/migrations/0148_statementcondition_documents.py25
-rw-r--r--archaeological_finds/models_finds.py4
-rw-r--r--archaeological_finds/models_treatments.py30
-rw-r--r--ishtar_common/admin.py1
-rw-r--r--ishtar_common/migrations/0272_ishtarsiteprofile_statementcondition.py10
-rw-r--r--ishtar_common/models.py1
6 files changed, 68 insertions, 3 deletions
diff --git a/archaeological_finds/migrations/0148_statementcondition_documents.py b/archaeological_finds/migrations/0148_statementcondition_documents.py
new file mode 100644
index 000000000..ecab258e5
--- /dev/null
+++ b/archaeological_finds/migrations/0148_statementcondition_documents.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.2.21 on 2026-03-04 15:55
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0272_ishtarsiteprofile_statementcondition'),
+ ('archaeological_finds', '0147_data_migration_statement_condition'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='statementcondition',
+ name='documents',
+ field=models.ManyToManyField(blank=True, related_name='statement_conditions', to='ishtar_common.document', verbose_name='Documents'),
+ ),
+ migrations.AddField(
+ model_name='statementcondition',
+ name='main_image',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_statement_conditions', to='ishtar_common.document', verbose_name='Main image'),
+ ),
+ ]
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index f6b0c42b8..360e18393 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -2203,7 +2203,7 @@ class Find(
_("Comment on the material"), blank=True, default=""
)
volume = models.FloatField(_("Volume (l)"), blank=True, null=True)
- weight = models.FloatField(_("Weight"), blank=True, null=True)
+ weight = models.FloatField(_("Weight (g)"), blank=True, null=True)
weight_unit = models.CharField(
_("Weight unit"), max_length=4, blank=True, null=True, choices=WEIGHT_UNIT
)
@@ -2913,7 +2913,7 @@ class Find(
True,
),
]
- if can_edit_find and not is_locked:
+ if can_edit_find and not is_locked and profile.statement_condition:
actions += [
(
reverse("find-statement-condition-add", args=[self.pk]),
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index cd82ab57e..77f66fae8 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -1808,7 +1808,7 @@ class StatementCondition(
width = models.FloatField(_("Width (cm)"), blank=True, null=True)
height = models.FloatField(_("Height (cm)"), blank=True, null=True)
volume = models.FloatField(_("Volume (l)"), blank=True, null=True)
- weight = models.FloatField(_("Weight"), blank=True, null=True)
+ weight = models.FloatField(_("Weight (g)"), blank=True, null=True)
diameter = models.FloatField(_("Diameter (cm)"), blank=True, null=True)
circumference = models.FloatField(_("Circumference (cm)"), blank=True, null=True)
thickness = models.FloatField(_("Thickness (cm)"), blank=True, null=True)
@@ -1824,6 +1824,21 @@ class StatementCondition(
dimensions_comment = models.TextField(
_("Dimensions comment"), blank=True, default=""
)
+ # documents
+ documents = models.ManyToManyField(
+ Document,
+ related_name="statement_conditions",
+ verbose_name=_("Documents"),
+ blank=True,
+ )
+ main_image = models.ForeignKey(
+ Document,
+ related_name="main_image_statement_conditions",
+ on_delete=models.SET_NULL,
+ verbose_name=_("Main image"),
+ blank=True,
+ null=True,
+ )
class Meta:
verbose_name = _("Statement of condition")
@@ -1834,6 +1849,19 @@ class StatementCondition(
]
ADMIN_SECTION = _("Treatments")
+ def __str__(self):
+ lbl = f"{self.date} - {self.statement_condition_type}"
+ if self.campaign_number:
+ lbl += f" [{self.campaign_number}]"
+ lbl += f" - {self.find}"
+ return lbl
+
+ def pk_str(self):
+ return str(self.pk)
+
+ def _get_base_image_path(self):
+ return f"{self.SLUG}/{self.date.year}"
+
@property
def is_last(self):
return not self.__class__.objects.filter(date__gt=self.date).exists()
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index fe907d3a6..b8cae9fa8 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -637,6 +637,7 @@ class IshtarSiteProfileAdmin(admin.ModelAdmin):
"fields": (
"experimental_feature",
"gis_connector",
+ "statement_condition",
"calculate_weight_on_full",
"locate_warehouses",
"use_town_for_geo",
diff --git a/ishtar_common/migrations/0272_ishtarsiteprofile_statementcondition.py b/ishtar_common/migrations/0272_ishtarsiteprofile_statementcondition.py
index 0f26cb382..90a4df8d4 100644
--- a/ishtar_common/migrations/0272_ishtarsiteprofile_statementcondition.py
+++ b/ishtar_common/migrations/0272_ishtarsiteprofile_statementcondition.py
@@ -39,4 +39,14 @@ class Migration(migrations.Migration):
name='statementcondition_custom_index',
field=models.TextField(blank=True, default='', help_text='Keys to be used to manage statement of condition custom index. Separate keys with a semicolon.', verbose_name='Statement of condition custom index key'),
),
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='statement_condition',
+ field=models.BooleanField(default=False, verbose_name='Statement conditions'),
+ ),
+ migrations.AlterField(
+ model_name='documenttemplate',
+ name='export_format',
+ field=models.CharField(blank=True, choices=[('', '---')], default='', max_length=4, verbose_name='Export format'),
+ ),
]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 40c69b753..6f324e6de 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1206,6 +1206,7 @@ class IshtarSiteProfile(models.Model, Cached):
_("Preventive operator module"), default=False
)
gis_connector = models.BooleanField(_("GIS connector"), default=False)
+ statement_condition = models.BooleanField(_("Statement conditions"), default=False)
underwater = models.BooleanField(_("Underwater module"), default=False)
no_context_button = models.ForeignKey(
"archaeological_context_records.ContextRecord",