From 679188dad8dabe70f2f6e51947e96b7eb6e3b534 Mon Sep 17 00:00:00 2001 From: Faheedkhan Date: Wed, 11 Jun 2025 20:20:00 +0300 Subject: [PATCH] chnages to file --- inventory/urls.py | 2 +- inventory/views.py | 88 +++++++++++++++++--- templates/admin_management/auth_logs.html | 35 +++++++- templates/admin_management/model_logs.html | 36 +++++++- templates/admin_management/nav.html | 18 ++++ templates/admin_management/request_logs.html | 34 +++++++- 6 files changed, 197 insertions(+), 16 deletions(-) create mode 100644 templates/admin_management/nav.html diff --git a/inventory/urls.py b/inventory/urls.py index 5a560c39..bbcbb63e 100644 --- a/inventory/urls.py +++ b/inventory/urls.py @@ -810,7 +810,7 @@ path( path('management/user_management/', views.user_management, name='user_management'), path('management///activate_account/', views.activate_account, name='activate_account'), path('management///permenant_delete_account/', views.permenant_delete_account, name='permenant_delete_account'), - path('management/audit_log_dashboard/', views.AuditLogDashboardView.as_view(), name='audit_log_dashboard'), + path('management/audit_log_dashboard/', views.AuditLogDashboardView, name='audit_log_dashboard'), ######### diff --git a/inventory/views.py b/inventory/views.py index a9c925db..ed462472 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -8292,15 +8292,9 @@ def user_management(request): # context['request_events'] = RequestEvent.objects.all().order_by('-datetime') # return context - -class AuditLogDashboardView(TemplateView): - template_name = 'admin_management/audit_log_dashboard.html' - paginate_by = 20 - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - # Process CRUD (Model Change) Events +def AuditLogDashboardView(request): + query=request.GET.get('q') + context={} model_events_raw = CRUDEvent.objects.all().order_by('-datetime') processed_model_events = [] @@ -8357,8 +8351,82 @@ class AuditLogDashboardView(TemplateView): context['model_events'] = processed_model_events context['auth_events'] = LoginEvent.objects.all().order_by('-datetime') context['request_events'] = RequestEvent.objects.all().order_by('-datetime') + if(query=='userActions'): + return render(request,'admin_management/model_logs.html',context) + elif(query=='loginEvents'): + return render(request,'admin_management/auth_logs.html',context) + else: + return render(request,'admin_management/request_logs.html',context) + - return context + + +# class AuditLogDashboardView(TemplateView): +# template_name = 'admin_management/audit_log_dashboard.html' +# paginate_by = 20 + +# def get_context_data(self, **kwargs): +# context = super().get_context_data(**kwargs) + +# # Process CRUD (Model Change) Events +# model_events_raw = CRUDEvent.objects.all().order_by('-datetime') +# processed_model_events = [] + +# for event in model_events_raw: +# # Create a base dictionary for each event's data +# event_data = { +# 'datetime': event.datetime, +# 'user': event.user, +# 'event_type_display': event.get_event_type_display(), +# 'model_name': event.content_type.model, +# 'object_id': event.object_id, +# 'object_repr': event.object_repr, +# 'field_changes': [] # This will be a list of dicts: [{'field': 'name', 'old': 'A', 'new': 'B'}] +# } + +# if event.changed_fields: +# try: +# print(f"Debugging CRUDEvent ID: {event.id}, User: {event.user}, Model: {event.content_type.model}") +# print(f"Raw event.changed_fields: '{event.changed_fields}' (Type: {type(event.changed_fields)})") +# changes = json.loads(event.changed_fields) +# #change_fields returns 'null' for no changes to a field i.e. if the field remains the same +# if isinstance(changes, dict): # Check if 'changes' is a dictionary +# for field_name, values in changes.items(): +# old_value = values[0] if isinstance(values, list) and len(values) > 0 else None +# new_value = values[1] if isinstance(values, list) and len(values) > 1 else None +# event_data['field_changes'].append({ +# 'field': field_name, +# 'old': old_value, +# 'new': new_value +# }) +# elif changes is None: # Handle case where JSON was 'null' string like when no changes detected for a field or if it saved without a change + +# event_data['field_changes'].append({ +# 'field': 'Info', +# 'old': '', +# 'new': 'No specific field changes recorded (JSON was null)' +# }) +# else: # Handle valid JSON but not a dictionary (e.g., "[]", 123) +# event_data['field_changes'].append({ +# 'field': 'Error', +# 'old': '', +# 'new': f'Unexpected JSON format: {type(changes).__name__}' +# }) +# except json.JSONDecodeError: +# # Handle invalid JSON; you might log this error +# event_data['field_changes'].append({ +# 'field': 'Error', +# 'old': '', +# 'new': 'Invalid JSON in changed_fields' +# }) + +# processed_model_events.append(event_data) + +# context['model_events'] = processed_model_events +# context['auth_events'] = LoginEvent.objects.all().order_by('-datetime') +# context['request_events'] = RequestEvent.objects.all().order_by('-datetime') + +# return context diff --git a/templates/admin_management/auth_logs.html b/templates/admin_management/auth_logs.html index 0e8e8948..5101abd2 100644 --- a/templates/admin_management/auth_logs.html +++ b/templates/admin_management/auth_logs.html @@ -1,4 +1,27 @@ + +{% extends "base.html" %} {% load i18n custom_filters %} +{% block title %}{% trans "Accounts" %}{% endblock title %} +{% block accounts %} + + {% trans "Accounts"|capfirst %} + (current) + +{% endblock %} +{% block content %} +
+ +
+

{% trans "Audit Log Dashboard" %}

+
+ + +
+ {% include 'admin_management/nav.html' %} + +
+ + {% if auth_events %}
@@ -31,4 +54,14 @@

No authentication audit events found.

{% endif %} - \ No newline at end of file + + + + + + + + + +{% endblock %} + diff --git a/templates/admin_management/model_logs.html b/templates/admin_management/model_logs.html index 0efbd60d..ab648cb7 100644 --- a/templates/admin_management/model_logs.html +++ b/templates/admin_management/model_logs.html @@ -1,6 +1,28 @@ -{% load i18n custom_filters %} -{% if model_events %} +{% extends "base.html" %} +{% load i18n custom_filters %} +{% block title %}{% trans "Accounts" %}{% endblock title %} +{% block accounts %} + + {% trans "Accounts"|capfirst %} + (current) + +{% endblock %} +{% block content %} +
+ +
+

{% trans "Audit Log Dashboard" %}

+
+ + +
+ {% include 'admin_management/nav.html' %} + +
+ + + {% if model_events %}
@@ -91,4 +113,14 @@ {% else %}

{% trans "No model change audit events found." %}

{% endif %} + + + + + + + + + +{% endblock %} diff --git a/templates/admin_management/nav.html b/templates/admin_management/nav.html new file mode 100644 index 00000000..735bef59 --- /dev/null +++ b/templates/admin_management/nav.html @@ -0,0 +1,18 @@ +{% load i18n %} + diff --git a/templates/admin_management/request_logs.html b/templates/admin_management/request_logs.html index f37462d9..d14f86e1 100644 --- a/templates/admin_management/request_logs.html +++ b/templates/admin_management/request_logs.html @@ -1,5 +1,27 @@ + +{% extends "base.html" %} {% load i18n custom_filters %} - {% if request_events %} +{% block title %}{% trans "Accounts" %}{% endblock title %} +{% block accounts %} + + {% trans "Accounts"|capfirst %} + (current) + +{% endblock %} +{% block content %} +
+ +
+

{% trans "Audit Log Dashboard" %}

+
+ + +
+ {% include 'admin_management/nav.html' %} + +
+ + {% if request_events %}
@@ -30,5 +52,13 @@ {% else %}

No request audit events found.

{% endif %} - + + + + + + + +{% endblock %} +