From c43d10a83e29110bb33d7a7ae2d3afc4ff7e849d Mon Sep 17 00:00:00 2001 From: Silvio Date: Fri, 10 Feb 2023 15:41:47 -0500 Subject: [PATCH 1/3] Update admin.py --- auditlog/admin.py | 47 ++++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/auditlog/admin.py b/auditlog/admin.py index 454a0f1..3e69f5b 100644 --- a/auditlog/admin.py +++ b/auditlog/admin.py @@ -1,47 +1,40 @@ from django.contrib import admin from django.contrib.auth import get_user_model -from django.utils.translation import gettext_lazy as _ -from auditlog.filters import CIDFilter, ResourceTypeFilter +from auditlog.filters import ResourceTypeFilter from auditlog.mixins import LogEntryAdminMixin from auditlog.models import LogEntry +user_model = get_user_model() + +user_model_fields = [field.name for field in user_model._meta.get_fields()] + +has_first_and_last_name_fields = ( + "first_name" in user_model_fields and "last_name" in user_model_fields +) + @admin.register(LogEntry) class LogEntryAdmin(admin.ModelAdmin, LogEntryAdminMixin): list_select_related = ["content_type", "actor"] - list_display = [ - "created", - "resource_url", - "action", - "msg_short", - "user_url", - "cid_url", - ] + list_display = ["created", "resource_url", "action", "msg_short", "user_url"] search_fields = [ "timestamp", "object_repr", "changes", - "actor__first_name", - "actor__last_name", - f"actor__{get_user_model().USERNAME_FIELD}", - ] - list_filter = ["action", ResourceTypeFilter, CIDFilter] + f"actor__{user_model.USERNAME_FIELD}", + ] + ( + ["actor__first_name", "actor__last_name"] + if has_first_and_last_name_fields + else [] + ) + list_filter = ["action", ResourceTypeFilter] readonly_fields = ["created", "resource_url", "action", "user_url", "msg"] fieldsets = [ - (None, {"fields": ["created", "user_url", "resource_url", "cid"]}), - (_("Changes"), {"fields": ["action", "msg"]}), + (None, {"fields": ["created", "user_url", "resource_url"]}), + ("Changes", {"fields": ["action", "msg"]}), ] def has_add_permission(self, request): + # As audit admin doesn't allow log creation from admin return False - - def has_change_permission(self, request, obj=None): - return False - - def has_delete_permission(self, request, obj=None): - return False - - def get_queryset(self, request): - self.request = request - return super().get_queryset(request=request) From bbc358db06b09e770ac1d0e6cc7a27eaab45d1d0 Mon Sep 17 00:00:00 2001 From: Silvio Date: Fri, 10 Feb 2023 15:46:07 -0500 Subject: [PATCH 2/3] Update admin.py --- auditlog/admin.py | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/auditlog/admin.py b/auditlog/admin.py index 3e69f5b..786c1e3 100644 --- a/auditlog/admin.py +++ b/auditlog/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin from django.contrib.auth import get_user_model +from django.utils.translation import gettext_lazy as _ -from auditlog.filters import ResourceTypeFilter +from auditlog.filters import CIDFilter, ResourceTypeFilter from auditlog.mixins import LogEntryAdminMixin from auditlog.models import LogEntry @@ -17,24 +18,36 @@ has_first_and_last_name_fields = ( @admin.register(LogEntry) class LogEntryAdmin(admin.ModelAdmin, LogEntryAdminMixin): list_select_related = ["content_type", "actor"] - list_display = ["created", "resource_url", "action", "msg_short", "user_url"] + list_display = [ + "created", + "resource_url", + "action", + "msg_short", + "user_url", + "cid_url", + ] search_fields = [ "timestamp", "object_repr", "changes", f"actor__{user_model.USERNAME_FIELD}", - ] + ( - ["actor__first_name", "actor__last_name"] - if has_first_and_last_name_fields - else [] - ) - list_filter = ["action", ResourceTypeFilter] + ] + (["actor__first_name", "actor__last_name"] if has_first_and_last_name_fields else []) + list_filter = ["action", ResourceTypeFilter, CIDFilter] readonly_fields = ["created", "resource_url", "action", "user_url", "msg"] fieldsets = [ - (None, {"fields": ["created", "user_url", "resource_url"]}), - ("Changes", {"fields": ["action", "msg"]}), + (None, {"fields": ["created", "user_url", "resource_url", "cid"]}), + (_("Changes"), {"fields": ["action", "msg"]}), ] def has_add_permission(self, request): - # As audit admin doesn't allow log creation from admin return False + + def has_change_permission(self, request, obj=None): + return False + + def has_delete_permission(self, request, obj=None): + return False + + def get_queryset(self, request): + self.request = request + return super().get_queryset(request=request) From 01ac6ec94da4e2f5d2b64043ed386c53594036c9 Mon Sep 17 00:00:00 2001 From: Silvio Date: Fri, 10 Feb 2023 15:46:51 -0500 Subject: [PATCH 3/3] Update admin.py --- auditlog/admin.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/auditlog/admin.py b/auditlog/admin.py index 786c1e3..ff7bada 100644 --- a/auditlog/admin.py +++ b/auditlog/admin.py @@ -31,7 +31,11 @@ class LogEntryAdmin(admin.ModelAdmin, LogEntryAdminMixin): "object_repr", "changes", f"actor__{user_model.USERNAME_FIELD}", - ] + (["actor__first_name", "actor__last_name"] if has_first_and_last_name_fields else []) + ] + ( + ["actor__first_name", "actor__last_name"] + if has_first_and_last_name_fields + else [] + ) list_filter = ["action", ResourceTypeFilter, CIDFilter] readonly_fields = ["created", "resource_url", "action", "user_url", "msg"] fieldsets = [