Files
tg_autopost/bot/admin.py
2025-08-08 11:37:11 +09:00

50 lines
1.8 KiB
Python

from django.contrib import admin
from django.utils.html import format_html
from .models import TelegramBot, BotConfig, TelegramChat
@admin.register(TelegramBot)
class TelegramBotAdmin(admin.ModelAdmin):
list_display = ("name", "username", "is_active", "_has_config")
list_editable = ("is_active",)
search_fields = ("name", "username")
@admin.display(
description="Имеет конфиг",
boolean=True,
)
def _has_config(self, obj):
return bool(getattr(obj, "config", None))
@admin.register(BotConfig)
class BotConfigAdmin(admin.ModelAdmin):
list_display = ("bot", "parse_mode", "use_webhook", "_allowed_len", "_admins_len", "_webhook")
list_editable = ("use_webhook",)
fieldsets = (
(None, {"fields": ("bot", "parse_mode")}),
("Обновления и доступ", {"fields": ("allowed_updates", "admin_user_ids")}),
("Webhook", {"fields": ("use_webhook", "webhook_url")}),
)
@admin.display(description="allowed_updates")
def _allowed_len(self, obj):
return len(obj.allowed_updates or [])
@admin.display(description="admins")
def _admins_len(self, obj):
return len(obj.admin_user_ids or [])
@admin.display(description="webhook_url")
def _webhook(self, obj):
if obj.use_webhook and obj.webhook_url:
return format_html("<a href='{0}' target='_blank'>{0}</a>", obj.webhook_url)
return ""
@admin.register(TelegramChat)
class TelegramChatAdmin(admin.ModelAdmin):
list_display = ("bot", "chat_id", "type", "title", "username", "is_member", "joined_at", "left_at", "last_message_at")
list_filter = ("bot", "type", "is_member")
search_fields = ("chat_id", "title", "username")
ordering = ("-is_member", "-joined_at")