From 838c7e1c48f2cca5b99703d5c9ae9a4dac7b044a Mon Sep 17 00:00:00 2001 From: Ostap Zherebetskyi Date: Mon, 1 Dec 2025 14:45:36 +0200 Subject: [PATCH 1/2] add Notification admin --- osf/admin.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/osf/admin.py b/osf/admin.py index 96a2bab6f88..90e91d693bc 100644 --- a/osf/admin.py +++ b/osf/admin.py @@ -13,7 +13,7 @@ import waffle from osf.external.spam.tasks import reclassify_domain_references -from osf.models import OSFUser, Node, NotableDomain, NodeLicense, NotificationType, NotificationSubscription, EmailTask +from osf.models import OSFUser, Node, NotableDomain, NodeLicense, NotificationType, NotificationSubscription, EmailTask, Notification from osf.models.notification_type import get_default_frequency_choices from osf.models.notable_domain import DomainReference @@ -363,6 +363,21 @@ class EmailTaskAdmin(admin.ModelAdmin): list_filter = ('status',) search_fields = ('task_id', 'user__email') + +@admin.register(Notification) +class NotificationAdmin(admin.ModelAdmin): + list_display = ('user', 'notification_type_name', 'sent', 'seen', 'event_context') + list_filter = ('sent',) + search_fields = ('subscription__notification_type__name', 'subscription__user__username') + + def notification_type_name(self, obj): + return obj.subscription.notification_type.name + notification_type_name.short_description = 'Notification Type' + + def user(self, obj): + return obj.subscription.user.username + user.short_description = 'User' + admin.site.register(OSFUser, OSFUserAdmin) admin.site.register(Node, NodeAdmin) admin.site.register(NotableDomain, NotableDomainAdmin) From da4041753bdc8d22079f2eb09f6673959bdec5ef Mon Sep 17 00:00:00 2001 From: Ostap Zherebetskyi Date: Mon, 1 Dec 2025 17:31:54 +0200 Subject: [PATCH 2/2] fix EmailTaskAdmin search_fields add NotificationSubscriptionAdmin search_fields --- osf/admin.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osf/admin.py b/osf/admin.py index 90e91d693bc..5aa02f7e110 100644 --- a/osf/admin.py +++ b/osf/admin.py @@ -320,6 +320,7 @@ def __init__(self, *args, **kwargs): class NotificationSubscriptionAdmin(admin.ModelAdmin): list_display = ('user', 'notification_type', 'message_frequency', 'subscribed_object', 'preview_button') form = NotificationSubscriptionForm + search_fields = ('notification_type__name', 'user__username') class Media: js = ['admin/notification_subscription.js'] @@ -361,7 +362,7 @@ def get_intervals(self, request, pk): class EmailTaskAdmin(admin.ModelAdmin): list_display = ('task_id', 'user', 'status', 'created_at', 'updated_at') list_filter = ('status',) - search_fields = ('task_id', 'user__email') + search_fields = ('task_id', 'user__username') @admin.register(Notification)