{% macro _key_fmt(key) %}{{ key }}{% endmacro %} {% macro _value_fmt(value) %}{{ value }}{% endmacro %} {% macro m_audit_field_changes(changes) %} {%- for key in changes.columns|sort %} {% set values = changes.columns[key] %}

{%- if values.columns|default(None) != None %} {{ _('{key} changed:').format(key=_key_fmt(key)) }} {{ m_audit_field_changes(values) }} {%- else %} {%- set old_value, new_value = values %} {%- if old_value and old_value not in (NEVER_SET, NO_VALUE) %} {{ _('{key} changed from ').format(key=_key_fmt(key)) }} {{ _value_fmt(old_value)|truncate(32, False, '...', 0) }} to {{ _value_fmt(new_value)|truncate(32, False, '...', 0) }} {%- else %} {{ _('{key} set to {new_value}').format(key=_key_fmt(key), new_value=_value_fmt(new_value)) }} {%- endif %} {%- endif %}

{%- endfor %} {%- for key, (appended, removed) in changes.collections.items() %}

{{ key }}: {%- if appended %} Added {%- for label in appended %} {{ label }}{%- endfor %} {%- endif %} {%- if removed %} Removed {%- for label in removed %} {{ label }}{%- endfor %} {%- endif %}

{%- endfor %} {% endmacro %} {% macro m_audit_entry(entry) %} {#- FIXME: use macro for user avatar #} {{ entry.user.name }} {%- if entry.related or entry.op == 1 %} {{ entry.happened_at.strftime('%Y-%m-%d %H:%M') }}
{{ m_audit_field_changes(entry.changes) }} {%- elif entry.type == 0 %} {{ entry.happened_at.strftime('%Y-%m-%d %H:%M') }}

created this record

{%- endif %} {% endmacro %} {% macro m_audit_log(entries) %} {%- if entries %}
{%- for entry in entries %} {{ m_audit_entry(entry) }} {%- endfor %}
{%- endif %} {% endmacro %}