52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
from django.contrib import admin
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from engine.authv.messaging.models import ChatMessage, ChatThread, ThreadStatus
|
|
|
|
|
|
# noinspection PyUnusedLocal
|
|
@admin.register(ChatThread)
|
|
class ChatThreadAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"uuid",
|
|
"user",
|
|
"email",
|
|
"assigned_to",
|
|
"status",
|
|
"last_message_at",
|
|
"is_active",
|
|
"created",
|
|
"modified",
|
|
)
|
|
list_filter = (
|
|
"status",
|
|
"is_active",
|
|
("assigned_to", admin.EmptyFieldListFilter),
|
|
)
|
|
search_fields = ("uuid", "email", "user__email", "user__username")
|
|
autocomplete_fields = ("user", "assigned_to")
|
|
actions = (
|
|
"close_threads",
|
|
"open_threads",
|
|
"delete_selected",
|
|
)
|
|
readonly_fields = ("created", "modified")
|
|
|
|
@admin.action(description=_("Close selected threads"))
|
|
def close_threads(self, request, queryset): # type: ignore[no-untyped-def]
|
|
queryset.update(status=ThreadStatus.CLOSED)
|
|
|
|
@admin.action(description=_("Open selected threads"))
|
|
def open_threads(self, request, queryset): # type: ignore[no-untyped-def]
|
|
queryset.update(status=ThreadStatus.OPEN)
|
|
|
|
|
|
@admin.register(ChatMessage)
|
|
class ChatMessageAdmin(admin.ModelAdmin):
|
|
list_display = ("uuid", "thread", "sender_type", "sender_user", "sent_at")
|
|
list_filter = ("sender_type",)
|
|
search_fields = ("uuid", "thread__uuid", "sender_user__email")
|
|
autocomplete_fields = ("thread", "sender_user")
|
|
readonly_fields = ("created", "modified")
|