from django.db import models
from django.utils.translation import gettext_lazy as _  # 添加gettext_lazy导入
from django.utils.safestring import mark_safe
from .common import ConfigCommonModel


class AuxiliaryConfig(ConfigCommonModel):
    allow_registration = models.BooleanField(default=True,
                                             verbose_name=_("允许注册"),
                                             help_text=mark_safe(
                                                 _('当关闭该设置后，默认模板和路由会关闭相关入口。')))

    error_switch = models.BooleanField(default=True,
                                       verbose_name=_("启动自定义错误页面"),
                                       help_text=mark_safe(
                                           _('''
启动后可使用自定义模板显示错误页面，包括402 403 404 500错误页面。模板路径定义为:主题名/templates/utils/error.html'''
                                             )))

    error_render = models.CharField(
        default='/',
        verbose_name=_("错误页面跳转URL"),
        max_length=200,
        blank=True,
        help_text=_('URL，相对路径。根据模板设置，程序会显示一个错误提示在几秒后跳转到该设置页面。'))

    json_ld_enabled = models.BooleanField(default=False,
                                          verbose_name=_("启动JSON-LD"),
                                          help_text=mark_safe(
                                              _('''
JSON-LD根据相关文档显示谷歌是肯定支持的，百度是部分支持。<a href='https://ziyuan.baidu.com/college/articleinfo?id=2210'>《百度搜索落地页时间因子规范》</a>中说明落地页时间因子是百度搜索判断网站收录、展示、排序结果的重要参考依据，时间因子提交格式：PC和移动端页面仅支持JSON-LD格式提交时间因子。根据多方探索，大概率是对SEO有好处的。但。。。具体以实践为主。<p class="fw-bold text-danger">json-ld对seo的影响,官方正在测试中</p>'''
                                                )))

    og_enabled = models.BooleanField(default=True,
                                     verbose_name=_("启动OG"),
                                     help_text=mark_safe(
                                         _('''
OG标签最初由Facebook推出，主要用于网站在社交平台分享时显示丰富摘要（如标题、描述、图片）。''')))

    twitter_card_enabled = models.BooleanField(
        default=True,
        verbose_name=_("启动Twitter Card"),
        help_text=mark_safe(
            _('''
Twitter Card 是 Twitter 提供的一种富媒体展示方式，允许网页链接在推文中以卡片形式呈现，包含标题、描述、图片、视频等丰富内容，而不仅仅是简单的 URL‌。'''
              )))

    class Meta:
        verbose_name = _("辅助功能设置")
        verbose_name_plural = _("辅助功能设置")

    def __str__(self):
        return str(_("辅助功能设置"))  # 使用str()确保返回字符串类型
