Marwan Alwali a710d1c4d8 update
2025-09-11 19:01:55 +03:00

111 lines
4.7 KiB
HTML

{% load static %}
{% if audit_logs %}
<div class="activity-timeline">
{% for log in audit_logs %}
<div class="activity-item">
<div class="d-flex justify-content-between align-items-start">
<div class="flex-grow-1">
<div class="d-flex align-items-center mb-2">
<span class="badge bg-{{ log.event_type|lower }} me-2">
{% if log.event_type == 'CREATE' %}
<i class="fas fa-plus me-1"></i>
{% elif log.event_type == 'UPDATE' %}
<i class="fas fa-edit me-1"></i>
{% elif log.event_type == 'DELETE' %}
<i class="fas fa-trash me-1"></i>
{% elif log.event_type == 'VIEW' %}
<i class="fas fa-eye me-1"></i>
{% elif log.event_type == 'LOGIN' %}
<i class="fas fa-sign-in-alt me-1"></i>
{% elif log.event_type == 'LOGOUT' %}
<i class="fas fa-sign-out-alt me-1"></i>
{% else %}
<i class="fas fa-info me-1"></i>
{% endif %}
{{ log.event_type }}
</span>
{% if log.event_category %}
<span class="badge bg-secondary">{{ log.event_category }}</span>
{% endif %}
</div>
<div class="fw-bold mb-1">{{ log.action }}</div>
{% if log.description %}
<div class="text-muted small mb-2">{{ log.description }}</div>
{% endif %}
{% if log.object_repr %}
<div class="text-muted small mb-2">
<i class="fas fa-cube me-1"></i>
<strong>Object:</strong> {{ log.object_repr }}
</div>
{% endif %}
<div class="text-muted small">
<i class="fas fa-clock me-1"></i>{{ log.timestamp|date:"M d, Y H:i:s" }}
{% if log.ip_address %}
<span class="mx-2"></span>
<i class="fas fa-globe me-1"></i>{{ log.ip_address }}
{% endif %}
</div>
</div>
<div class="ms-3">
{% if log.severity == 'HIGH' %}
<span class="badge bg-danger">High</span>
{% elif log.severity == 'MEDIUM' %}
<span class="badge bg-warning">Medium</span>
{% elif log.severity == 'LOW' %}
<span class="badge bg-info">Low</span>
{% endif %}
</div>
</div>
{% if log.changes %}
<div class="mt-2">
<details>
<summary class="text-muted small" style="cursor: pointer;">
<i class="fas fa-list me-1"></i>View Changes
</summary>
<div class="mt-2 p-2 bg-light rounded">
<small>{{ log.changes }}</small>
</div>
</details>
</div>
{% endif %}
{% if log.additional_data %}
<div class="mt-2">
<details>
<summary class="text-muted small" style="cursor: pointer;">
<i class="fas fa-info-circle me-1"></i>Additional Data
</summary>
<pre class="mt-2 p-2 bg-light rounded small"><code>{{ log.additional_data|pprint }}</code></pre>
</details>
</div>
{% endif %}
</div>
{% endfor %}
</div>
{% if audit_logs|length >= 20 %}
<div class="text-center mt-3">
<button class="btn btn-outline-primary btn-sm"
hx-get="{% url 'accounts:user_activity_log' user_profile.id %}?limit=50"
hx-target="#user-activity-log">
<i class="fas fa-chevron-down me-1"></i>Load More
</button>
</div>
{% endif %}
{% else %}
<div class="text-center py-4 text-muted">
<i class="fas fa-history fa-3x mb-3"></i>
<h6>No Activity Found</h6>
<p class="small">No recent activity for this user.</p>
</div>
{% endif %}