diff options
| -rw-r--r-- | archaeological_finds/models_finds.py | 48 | ||||
| -rw-r--r-- | archaeological_finds/templates/ishtar/blocks/sheet_statement_condition.html | 3 |
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 %} |
