from django.db import models
from django.forms import ValidationError
from django.utils.crypto import get_random_string
from django.utils.translation import gettext_lazy as _  # 添加导入
from .common import ConfigCommonModel


class SecurityCode(ConfigCommonModel):
    code = models.CharField(
        verbose_name=_('安全码'),  # 添加字段标签的翻译
        max_length=20,
        blank=True,
        help_text=_('自动生成的安全认证代码')  # 可选的帮助文本翻译
    )
    create_time = models.DateTimeField(
        verbose_name=_('创建时间'),  # 时间字段的翻译
        auto_now_add=True)

    def __str__(self):
        return str(_("安全码配置: {code}")).format(code=self.code)  # 使用str()包装

    @classmethod
    def get_code(cls):
        """获取或创建安全码实例"""
        obj, created = cls.objects.get_or_create(
            pk=1, defaults={'code': get_random_string(8)})
        return obj.code

    class Meta:
        verbose_name = _('安全码配置')  # 单数名称翻译
        verbose_name_plural = _('安全码配置')  # 复数名称翻译

    def save(self, *args, **kwargs):
        """保存时自动生成安全码"""
        if not self.code:
            self.code = get_random_string(8)
        return super().save(*args, **kwargs)
