{% extends "aa_discord_audit/base.html" %} {% load i18n %} {% load static %} {% block page_title %} {% translate "Discord Audit Config Changes" %} {% endblock %} {% block extra_javascript %} {% include "aa_discord_audit/_datatables_init.html" %} {% endblock %} {% block content %}
{% translate "Append-only forensic log of every operator edit to BotAccountUid, ProtectedDiscordMember, ManagedRoleException, and FindingActionOverride. Survives retention pruning of AuditRun rows." %}
| {% translate "ID" %} | {% translate "Created at" %} | {% translate "Model" %} | {% translate "Object pk" %} | {% translate "Action" %} | {% translate "Actor" %} | {% translate "Payload" %} |
|---|---|---|---|---|---|---|
| {{ row.obj.pk }} | {{ row.created_rel }} | {{ row.obj.model_name }} |
{{ row.obj.object_pk }} | {{ row.action_label }} | {{ row.obj.actor_username }} {% if row.obj.actor_user_id %} #{{ row.obj.actor_user_id }} {% endif %} |
{# The trigger opens the shared #payload-modal; the rendered #}
{# diff / snapshot markup lives in the hidden source div below #}
{# and is cloned into the modal by payload_modal.js. #}
{# Icon-only trigger: the visible label is dropped, so the #}
{# action name lives in title / aria-label for a11y + hover. #}
{% if row.diff.kind == "diff" %}
{# Plain div grid on purpose: a nested table element #}
{# leaks into the outer DataTable's column count and #}
{# triggers its "Incorrect column count" error. #}
{% translate "Field" %}
{% translate "Before" %}
{% translate "After" %}
{{ field }}{{ change.before }}
{{ change.after }}
{{ row.diff.json }}
{% else %}
{% translate "row deleted (no snapshot)" %}
{% endif %}
|
| {% translate "No config changes to display." %} | ||||||
{% translate "Showing the first page — narrow your filters to search across all results." %}
{% include "aa_discord_audit/_pagination.html" with page_obj=page_obj pagination_query=pagination_query only %} {% endif %} {% endblock %}