summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/models_treatments.py36
-rw-r--r--archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html4
2 files changed, 23 insertions, 17 deletions
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 4a687e56e..d7704c997 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -1899,7 +1899,9 @@ class StatementCondition(
@property
def is_last(self):
- return not self.__class__.objects.filter(date__gt=self.date).exists()
+ return not self.__class__.objects.filter(
+ date__gt=self.date, find_id=self.find_id).exclude(
+ pk=self.pk).exists()
@property
def applied_label(self):
@@ -1908,6 +1910,13 @@ class StatementCondition(
return "-"
return dct[self.applied]
+ @property
+ def no_associated_statement_condition(self):
+ # from an initial statement condition POV - no other
+ # statement condition
+ return not self.__class__.objects.filter(
+ find_id=self.find_id, initial=False).exists()
+
@classmethod
def get_initial_from_find(cls, find, prefix="qa_"):
initial = {}
@@ -1957,6 +1966,11 @@ class StatementCondition(
"""
Create a reference statement condition in order to get the diff
"""
+ # store m2m values
+ m2m_values = {}
+ for attr in self.OVERLOADED_M2M_FIELDS:
+ m2m_values[attr] = list(getattr(self.find, attr).values_list(
+ "id", flat=True))
obj = self.__class__.objects.get(pk=self.pk)
obj.pk = None # duplicate
obj.applied = "V"
@@ -1972,21 +1986,10 @@ class StatementCondition(
obj.save()
obj.follow_up_actions.clear()
- for attr in self.OVERLOADED_M2M_FIELDS:
- new_m2m = list(
- sorted(
- list(getattr(self.find, attr).values_list("id", flat=True))
- )
- )
- m2m = list(
- sorted(
- list(getattr(obj, attr).values_list("id", flat=True))
- )
- )
- if m2m == new_m2m:
+ for attr, value in m2m_values.items():
+ if not value:
continue
- getattr(obj, attr).clear()
- getattr(obj, attr).add(*new_m2m)
+ getattr(obj, attr).add(*value)
def apply_validation(self):
"""
@@ -2013,7 +2016,8 @@ class StatementCondition(
if m2m == new_m2m:
continue
getattr(self.find, attr).clear()
- getattr(self.find, attr).add(*new_m2m)
+ if new_m2m:
+ getattr(self.find, attr).add(*new_m2m)
# TODO: verify find history
self.find.save()
diff --git a/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html b/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html
index c994f3888..18dff602e 100644
--- a/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html
+++ b/archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html
@@ -19,9 +19,11 @@
<a class="wait-button btn btn-success" href="/document/create/?statementcondition={{statement_condition.pk}}" title="Ajouter un document / une image">
<i class="fa fa-plus"></i> doc./image
</a>
- <a class="btn-qa btn btn-danger" href="#" data-target="{% url 'find-statement-condition-delete' statement_condition.pk %}" title="{% trans 'Delete' %}">
+ {% if not statement_condition.initial or statement_condition.no_associated_statement_condition %}
+ <a class="btn-qa-confirm btn btn-danger" href="#" data-confirm="{% trans 'Are you sure to delete this statement condition?' %}" data-target="{% url 'find-statement-condition-delete' statement_condition.pk %}" title="{% trans 'Delete' %}">
<i class="fa fa-trash" aria-hidden="true"></i>
</a>
+ {% endif %}
</div>
</div>
{% endif %}