{% extends "admin/base_site.html" %}{% load i18n %}{% comment %} Per-object audit timeline: every recorded change to one object, newest first, each rendered as a field-level diff. Extends the active admin's base template, so it inherits whichever theme is in play (plain Django admin or django-unfold) instead of pinning either one's markup. Everything it adds lives in the `content` block; only the diff tables carry inline styling (see snapadmin/audit_diff.html). Context is built by SnapadminAuditLogAdmin.timeline_view(). {% endcomment %} {% block content %}

← {% translate "Back to the audit log" %}

{% comment %} Deliberately not a {% blocktranslate %}…{% plural %} pair: the shipped catalogs carry no Plural-Forms header, so introducing the project's first plural entry here would mean reworking all ten of them for one line. {% endcomment %}

{% blocktranslate trimmed with target=target %}Audit entries for {{ target }}{% endblocktranslate %}: {{ total }}{% if target_repr %} — {{ target_repr }}{% endif %}

{% if truncated %}

{% blocktranslate trimmed with limit=limit %} Showing the {{ limit }} most recent entries. Use manage.py snapadmin_audit_export for the full history. {% endblocktranslate %}

{% endif %} {% for item in entries %}

{{ item.entry.timestamp }} — {{ item.entry.get_action_display }}

{% blocktranslate trimmed with actor=item.entry.actor_repr|default:_("anonymous") %} by {{ actor }} {% endblocktranslate %} {% if item.entry.ip_address %} · {{ item.entry.ip_address }}{% endif %}

{% include "snapadmin/audit_diff.html" with rows=item.rows %}
{% empty %}

{% translate "No audit entries have been recorded for this object." %}

{% endfor %}
{% endblock %}