{% extends "base.html" %} {% block content %}

Audit Log

Append-only record of every admin action — logins, rate edits, voucher revokes / custom issues, and more. Use this when investigating "who changed what, when, from where."

↓ Download CSV

Date Range

{% set ranges = [('today', 'Today'), ('7d', 'Last 7 days'), ('30d', 'Last 30 days'), ('all', 'All time')] %} {% for slug, label in ranges %} {{ label }} {% endfor %}

Action Kind

{% set kinds = [('all', 'All'), ('auth', 'Auth'), ('rate', 'Rates'), ('voucher', 'Vouchers')] %} {% for slug, label in kinds %} {{ label }} {{ counts[slug] }} {% endfor %}
{% if rows %}
{% for r in rows %} {% endfor %}
Time Actor Action Target IP Details
{{ r.ts }} {{ r.actor }} {{ r.action }} {% if r.target_id %} {{ r.target_id }} {% if r.target_kind %}({{ r.target_kind }}){% endif %} {% else %} {% endif %} {% if r.ip %}{{ r.ip }} {% else %}{% endif %} {% if r.details is mapping %} {%- for k, v in r.details.items() -%} {%- if not loop.first %}, {% endif -%} {{ k }}={{ v }} {%- endfor -%} {% elif r.details_raw %} {{ r.details_raw }} {% else %} {% endif %}
{% if row_limit_hit %}

Showing first 200 rows of the current filter. Narrow the range or download the CSV to see everything.

{% endif %} {% else %}
No audit entries in this view.
{% if kind_filter == 'all' and range_filter == 'all' %} Activity will appear here as you use the admin console. {% else %} Try widening the range or switching kind. {% endif %}
{% endif %}
{% endblock %}