From bfcca131dbf33065570833a0d69db95324900786 Mon Sep 17 00:00:00 2001 From: rikuke <33894149+rikuke@users.noreply.github.com> Date: Thu, 30 May 2024 08:27:25 +0300 Subject: [PATCH] Hl 1306 admin changes (#3048) * feat: add created at to log entry listings * feat: add batch link to application admin page * feat: add created_at to log entry list view * feat: add timestamps to application log admin * feat: exclude ssn from employee admin page --- backend/benefit/applications/admin.py | 61 +++++++++++++++++++++++- backend/shared/shared/audit_log/admin.py | 1 + 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/backend/benefit/applications/admin.py b/backend/benefit/applications/admin.py index 0eb72f79a9..f7819af713 100644 --- a/backend/benefit/applications/admin.py +++ b/backend/benefit/applications/admin.py @@ -1,5 +1,7 @@ from django import forms from django.contrib import admin +from django.urls import reverse +from django.utils.html import format_html from django.utils.safestring import mark_safe from applications.models import ( @@ -104,6 +106,7 @@ class ApplicationAdmin(admin.ModelAdmin): "company_contact_person_email", "company_contact_person_first_name", "company_contact_person_last_name", + "batch", "created_at", "modified_at", "__str__", @@ -124,6 +127,33 @@ class ApplicationAdmin(admin.ModelAdmin): ordering = ("-created_at",) exclude = ("bases",) + readonly_fields = ["batch_details"] + + fieldsets = ( + (None, {"fields": ("status", "batch")}), + ( + "Batch Information", + { + "fields": ("batch_details",), + }, + ), + ) + + def batch_details(self, obj): + if obj.batch: + url = reverse( + "admin:applications_applicationbatch_change", args=[obj.batch.id] + ) + return format_html( + '{}', + url, + obj.batch.id, + ) + + return "Not assigned to any batch" + + batch_details.short_description = "Batch Details" + class ApplicationInline(admin.StackedInline): model = Application @@ -190,13 +220,40 @@ class AhjoDecisionTextAdmin(admin.ModelAdmin): search_fields = ["id", "decision_type", "application_id"] +class ApplicationLogEntryAdmin(admin.ModelAdmin): + fields = [ + "application", + "created_at", + "modified_at", + "from_status", + "to_status", + "comment", + ] + list_display = ["application", "created_at", "modified_at"] + readonly_fields = ["created_at", "modified_at"] + search_fields = ["application__id"] + + +class EmployeeAdmin(admin.ModelAdmin): + exclude = ("encrypted_social_security_number", "social_security_number") + list_display = [ + "id", + "first_name", + "last_name", + "application", + "created_at", + "modified_at", + ] + search_fields = ["id", "application__id"] + + admin.site.register(Application, ApplicationAdmin) admin.site.register(ApplicationBatch, ApplicationBatchAdmin) admin.site.register(DeMinimisAid) -admin.site.register(Employee) +admin.site.register(Employee, EmployeeAdmin) admin.site.register(Attachment) admin.site.register(ApplicationBasis, ApplicationBasisAdmin) -admin.site.register(ApplicationLogEntry) +admin.site.register(ApplicationLogEntry, ApplicationLogEntryAdmin) admin.site.register(AhjoSetting, AhjoSettingAdmin) admin.site.register( DecisionProposalTemplateSection, DecisionProposalTemplateSectionAdmin diff --git a/backend/shared/shared/audit_log/admin.py b/backend/shared/shared/audit_log/admin.py index 23a68f57cf..ada00f0ea8 100644 --- a/backend/shared/shared/audit_log/admin.py +++ b/backend/shared/shared/audit_log/admin.py @@ -6,6 +6,7 @@ class AuditLogEntryAdmin(admin.ModelAdmin): fields = ("id", "created_at", "message") + list_display = ["message", "created_at"] readonly_fields = ("id", "created_at", "message")