django-notifications/notifications/admin.py

37 lines
1.3 KiB
Python
Raw Normal View History

2023-06-24 00:10:23 +00:00
""" Django notifications admin file """
# -*- coding: utf-8 -*-
from django.contrib import admin
2023-07-13 00:28:01 +00:00
from django.http import HttpRequest
from django.utils.translation import gettext_lazy
from swapper import load_model
2023-07-13 00:28:01 +00:00
from notifications.querysets import NotificationQuerySet
2023-06-24 00:10:23 +00:00
Notification = load_model("notifications", "Notification")
2015-12-11 13:32:20 +00:00
2023-07-07 00:54:47 +00:00
@admin.register(Notification)
class NotificationAdmin(admin.ModelAdmin):
2023-06-24 00:10:23 +00:00
raw_id_fields = ("recipient",)
readonly_fields = ("action_object_url", "actor_object_url", "target_object_url")
list_display = ("recipient", "actor", "level", "target", "unread", "public")
list_filter = (
"level",
"unread",
"public",
"timestamp",
)
2023-07-07 00:54:47 +00:00
actions = ("mark_unread", "mark_read")
2023-07-13 00:28:01 +00:00
def get_queryset(self, request: HttpRequest):
2023-06-24 00:10:23 +00:00
qs = super().get_queryset(request)
return qs.prefetch_related("actor")
2023-07-07 00:54:47 +00:00
@admin.action(description=gettext_lazy("Mark selected notifications as unread"))
2023-11-03 17:52:58 +00:00
def mark_unread(self, request: HttpRequest, queryset: NotificationQuerySet):
2023-07-07 00:54:47 +00:00
queryset.update(unread=True)
2023-07-07 00:54:47 +00:00
@admin.action(description=gettext_lazy("Mark selected notifications as read"))
2023-11-03 17:52:58 +00:00
def mark_read(self, request: HttpRequest, queryset: NotificationQuerySet):
2023-07-07 00:54:47 +00:00
queryset.update(unread=False)