51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
from django.contrib import admin
|
||
from .models import ServiceGroup, Service, ServiceCheckRecord
|
||
|
||
# 引入loguru库用于日志记录
|
||
try:
|
||
from loguru import logger
|
||
except ImportError:
|
||
import logging
|
||
logger = logging.getLogger(__name__)
|
||
|
||
@admin.register(ServiceGroup)
|
||
class ServiceGroupAdmin(admin.ModelAdmin):
|
||
list_display = ('name', 'description')
|
||
search_fields = ('name', 'description')
|
||
|
||
def save_model(self, request, obj, form, change):
|
||
if change:
|
||
logger.info(f"更新服务分组: {obj.name}")
|
||
else:
|
||
logger.info(f"创建新服务分组: {obj.name}")
|
||
super().save_model(request, obj, form, change)
|
||
|
||
@admin.register(Service)
|
||
class ServiceAdmin(admin.ModelAdmin):
|
||
list_display = ('name', 'group', 'host', 'port', 'check_type', 'is_active', 'created_at')
|
||
list_filter = ('group', 'check_type', 'is_active')
|
||
search_fields = ('name', 'host', 'description')
|
||
|
||
def save_model(self, request, obj, form, change):
|
||
if change:
|
||
logger.info(f"更新服务: {obj.name} ({obj.host})")
|
||
else:
|
||
logger.info(f"创建新服务: {obj.name} ({obj.host})")
|
||
super().save_model(request, obj, form, change)
|
||
|
||
@admin.register(ServiceCheckRecord)
|
||
class ServiceCheckRecordAdmin(admin.ModelAdmin):
|
||
list_display = ('service', 'status', 'response_time', 'checked_at')
|
||
list_filter = ('status', 'service__group', 'service')
|
||
search_fields = ('service__name', 'message')
|
||
date_hierarchy = 'checked_at'
|
||
readonly_fields = ('service', 'status', 'response_time', 'message', 'checked_at')
|
||
|
||
def has_add_permission(self, request):
|
||
return False # 禁止手动添加检测记录,只能通过API上报
|
||
|
||
def has_change_permission(self, request, obj=None):
|
||
return False # 禁止修改检测记录
|
||
|
||
logger.info("管理后台配置已加载")
|