chat/apps/chat/admin.py
2026-07-21 15:31:57 +03:30

83 lines
2.4 KiB
Python

from django.contrib import admin
from apps.chat.models import (
Conversation,
ConversationParticipant,
ConversationReadState,
ConversationReport,
MattermostAccountMapping,
)
class ConversationParticipantInline(admin.TabularInline):
model = ConversationParticipant
extra = 0
fields = ("user_uuid", "joined_at")
readonly_fields = ("joined_at",)
@admin.register(Conversation)
class ConversationAdmin(admin.ModelAdmin):
list_display = (
"uuid",
"type",
"status",
"mattermost_channel_id",
"closed_by_uuid",
"created_at",
)
list_filter = ("type", "status", "created_at")
search_fields = ("uuid", "mattermost_channel_id")
readonly_fields = ("uuid", "created_at", "updated_at")
ordering = ("-created_at",)
inlines = [ConversationParticipantInline]
@admin.register(ConversationParticipant)
class ConversationParticipantAdmin(admin.ModelAdmin):
list_display = ("uuid", "conversation", "user_uuid", "joined_at")
search_fields = ("uuid", "conversation__uuid", "user_uuid")
readonly_fields = ("uuid", "joined_at")
ordering = ("-joined_at",)
@admin.register(ConversationReadState)
class ConversationReadStateAdmin(admin.ModelAdmin):
list_display = (
"uuid",
"conversation",
"user_uuid",
"last_read_mattermost_post_id",
"updated_at",
)
search_fields = ("uuid", "conversation__uuid", "user_uuid")
readonly_fields = ("uuid", "updated_at")
ordering = ("-updated_at",)
@admin.register(MattermostAccountMapping)
class MattermostAccountMappingAdmin(admin.ModelAdmin):
list_display = ("uuid", "user_uuid", "mattermost_user_id", "created_at")
search_fields = ("uuid", "user_uuid", "mattermost_user_id")
readonly_fields = ("uuid", "created_at")
ordering = ("-created_at",)
@admin.register(ConversationReport)
class ConversationReportAdmin(admin.ModelAdmin):
list_display = ("uuid", "conversation", "reporter_uuid", "reason", "created_at")
list_filter = ("reason", "created_at")
search_fields = ("uuid", "conversation__uuid", "reporter_uuid")
readonly_fields = (
"uuid",
"conversation",
"reporter_uuid",
"reason",
"other_reason_text",
"created_at",
)
ordering = ("-created_at",)
def has_add_permission(self, request):
# Reports are only ever created by users through the API.
return False