summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-05 16:19:16 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-10 11:11:46 +0100
commit025b1dc43181f67a9eacc6cb0f327da943543d77 (patch)
tree9eeb3c53bf7830b1e078c1d979923a75d4772020
parent297a57e4973a970051da34c0ec84f59189129de4 (diff)
downloadIshtar-025b1dc43181f67a9eacc6cb0f327da943543d77.tar.bz2
Ishtar-025b1dc43181f67a9eacc6cb0f327da943543d77.zip
🐛 Statement condition: fix initial diff display
-rw-r--r--archaeological_finds/models_finds.py48
-rw-r--r--archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html3
2 files changed, 37 insertions, 14 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 360e18393..330dc2f78 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -2613,32 +2613,54 @@ class Find(
statement_conditions_list = list(
self.statement_conditions.filter(initial=False).order_by("pk").all())
q = self.statement_conditions.order_by("-pk").filter(initial=True)
- if q.exists():
- previous = q.all()[0]
+ has_previous = q.exists()
+ first_statement_condition = None
+ if has_previous:
+ first_statement_condition = previous = q.all()[0]
else: # if no initial is set get diff from the find
previous = self
- for state in statement_conditions_list:
+ for idx, state in enumerate(statement_conditions_list):
diff = {}
+ initial = {} if not idx else None
for field in StatementCondition._meta.get_fields():
attr = field.name
if attr in StatementCondition.OVERLOADED_FIELDS:
previous_value = getattr(previous, attr) or None
value = getattr(state, attr) or None
- if previous_value != value:
- if value is None or value == "":
- value = "-"
- diff[field.verbose_name] = value
+ if previous_value == value:
+ continue
+ if value is None or value == "":
+ value = "-"
+ diff[field.verbose_name] = value
+ if initial is None or not first_statement_condition:
+ continue
+ if previous_value is None or previous_value == "":
+ previous_value = "-"
+ initial[field.verbose_name] = previous_value
elif attr in StatementCondition.OVERLOADED_M2M_FIELDS:
previous_value = [str(v) for v in getattr(previous, attr).all()]
value = [str(v) for v in list(getattr(state, attr).all())]
- if previous_value != value:
- if value:
- diff[field.verbose_name] = " ; ".join(value)
- else:
- diff[field.verbose_name] = "-"
+ if previous_value == value:
+ continue
+ if value:
+ diff[field.verbose_name] = " ; ".join(value)
+ else:
+ diff[field.verbose_name] = "-"
+ if initial is None or not first_statement_condition:
+ continue
+ if previous_value:
+ previous_value = " ; ".join(previous_value)
+ else:
+ previous_value = "-"
+ initial[field.verbose_name] = previous_value
state.diff = diff
previous = state
- return list(reversed(statement_conditions_list))
+ if initial and first_statement_condition:
+ first_statement_condition.diff = initial
+ lst = list(reversed(statement_conditions_list))
+ if first_statement_condition:
+ lst.append(first_statement_condition)
+ return lst
@property
def has_packaging_for_current_container(self):
diff --git a/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html b/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html
index a127648c3..30d9cc0b3 100644
--- a/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html
+++ b/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html
@@ -4,7 +4,8 @@
<div class="row">
<div class="offset-md-2 col-md-8">
<h4>
- {{statement_condition.statement_condition_type.full_label}} - {{statement_condition.date|date:"SHORT_DATE_FORMAT"}} ({{statement_condition.applied_label|lower}})
+ {% if statement_condition.initial %}{% trans "Initial" %}{% else %}
+ {{statement_condition.statement_condition_type.full_label}} - {{statement_condition.date|date:"SHORT_DATE_FORMAT"}} ({{statement_condition.applied_label|lower}}){% endif %}
</h4>
</div>
{% if PROFILE.statement_condition and can_change %}