{% extends "base.html" %} {% from "components/ui.html" import page_header, breadcrumb_nav, badge %} {% block title %}{{ _('Audit Logs') }} - {{ config.APP_NAME }}{% endblock %} {% block content %} {% set breadcrumbs = [ {'text': _('Audit Logs')} ] %} {{ page_header( icon_class='fas fa-history', title_text=_('Audit Logs'), subtitle_text=_('Track who changed what and when'), breadcrumbs=breadcrumbs ) }}

{{ _('Filters') }}

{{ _('Clear') }}
{% if audit_logs %}
{% for log in audit_logs %} {% endfor %}
{{ _('Timestamp') }} {{ _('User') }} {{ _('Action') }} {{ _('Entity') }} {{ _('Field') }} {{ _('Change') }} {{ _('Actions') }}
{{ log.created_at|user_datetime }} {% if log.user %} {{ log.user.display_name }} {% else %} System {% endif %} {{ badge(log.action, log.get_color()) }} {{ log.entity_type }}#{{ log.entity_id }} {% if log.entity_name %}
{{ log.entity_name }} {% endif %} {% if log.entity_type == 'TimeEntry' and log.get_entity_metadata() %} {% set metadata = log.get_entity_metadata() %}
{% if metadata.project_name %}
{{ _('Project') }}: {{ metadata.project_name }}{% if metadata.project_id %} (ID: {{ metadata.project_id }}){% endif %}
{% elif metadata.client_name %}
{{ _('Client') }}: {{ metadata.client_name }}{% if metadata.client_id %} (ID: {{ metadata.client_id }}){% endif %}
{% endif %} {% if metadata.created_at %}
{{ _('Created') }}: {% if metadata.created_at is string %} {{ metadata.created_at[:16]|replace('T', ' ') }} {% else %} {{ metadata.created_at|user_datetime }} {% endif %}
{% endif %}
{% endif %} {% if log.reason %}
{{ _('Reason') }}: {{ log.reason }}
{% endif %}
{% if log.field_name %} {{ log.field_name }} {% else %} {% endif %} {% if log.field_name %}
{% if log.old_value %}
- {{ log.get_old_value() }}
{% endif %} {% if log.new_value %}
+ {{ log.get_new_value() }}
{% endif %}
{% else %} {{ log.change_description or '—' }} {% endif %}
View
{% if pagination and pagination.pages > 1 %}
Showing {{ (pagination.page - 1) * pagination.per_page + 1 }} to {{ pagination.page * pagination.per_page if pagination.page * pagination.per_page < pagination.total else pagination.total }} of {{ pagination.total }} results
{% if pagination.has_prev %} Previous {% endif %} {% if pagination.has_next %} Next {% endif %}
{% endif %} {% else %}

No audit logs found matching your filters.

{% endif %}
{% endblock %}