diff options
| -rw-r--r-- | archaeological_finds/models_treatments.py | 36 | ||||
| -rw-r--r-- | archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html | 4 |
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 %} |
