# admin.py
from django.contrib import admin
from django.utils.safestring import mark_safe

from ..models.sensitive_config import SensitiveConfig
from .mixins import SingletonAdminMixin


@admin.register(SensitiveConfig)
class SensitiveConfigAdmin(SingletonAdminMixin, admin.ModelAdmin):
    fieldsets = [
        ('', {
            'description':
            mark_safe('''
                <div class="alert alert-warning">
                    <strong>注意：</strong>敏感词过滤设置是我们会对系统中普遍的可能需要过滤的字段进行处理，如果还有地方需要补充，可以使用sensitive_filter过滤标签。
                    <p>直接在需要的敏感词处理的字段上加入“|sensitive_filter”即可</p>
                    <pre class="p-3 text-bg-warning"><code>&#123;&#123; some_text|sensitive_filter &#125;&#125;</code></pre>
                </div>
            '''),
            'fields': ()
        }),
        ('敏感词过滤开关', {
            'fields': (
                'upload_switch',
                'filter_switch',
            )
        }),
        ('内容敏感词过滤配置', {
            'description':
            mark_safe('''<div class="alert alert-info">
                        <p >上传和前端展示都是按这里的设置进行处理</p>
                        <p class="fw-bold text-danger">上传是处理后再储存到数据库</p>
                        <p >前端展示只是处理展示效果,没有处理数据库</p>
                        </div>'''),
            'fields': ('handle_method', 'replace_with', 'sensitive_words')
        }),
    ]

    # 覆盖默认的对象查询
    def get_object(self, request, object_id, from_field=None):
        return self.model.get_solo()
