{%- 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 {old_value} to {new_value}').format(
key=_key_fmt(key), old_value=_value_fmt(old_value), new_value=_value_fmt(new_value)) }}
{%- 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.iteritems() %}
{{ 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 %}
made changes on {{ entry.happened_at.strftime('%Y-%m-%d %H:%M') }}
{{ m_audit_field_changes(entry.changes) }}
{%- elif entry.type == 0 %}
created this record on {{ entry.happened_at.strftime('%Y-%m-%d %H:%M') }}
{%- endif %}