from django.db import models


#wjl# Create your models here.
#wjl# 定义了两个数据模型：
#wjl# 1. commands：用于存储可执行的系统命令
#wjl# 2. EmailSendLog：用于记录邮件发送的历史日志


class commands(models.Model):
    # wjl
    """
    数据模型：commands
    用于存储系统中预定义的可执行命令，例如服务器管理命令、脚本路径等。
    可通过 Django Admin 管理后台进行增删改查。
    """

    #wjl# 命令的标题/名称，用于标识该命令（如 "重启服务"）
    title = models.CharField('命令标题', max_length=300)

    #wjl# 实际要执行的命令字符串（如 "systemctl restart nginx"）
    command = models.CharField('命令', max_length=2000)

    #wjl# 对该命令的简要描述，说明其用途
    describe = models.CharField('命令描述', max_length=300)

    #wjl# 记录该命令首次创建的时间，自动在创建时设置为当前时间
    creation_time = models.DateTimeField('创建时间', auto_now_add=True)

    #wjl# 记录该命令最后一次修改的时间，每次保存时自动更新为当前时间
    last_modify_time = models.DateTimeField('修改时间', auto_now=True)

    def __str__(self):
        # wjl
        """
        返回该模型实例的字符串表示。
        在 Django Admin 或外键显示时，将显示命令的标题。

        返回:
            str: 命令的标题（title 字段）
        """
        return self.title

    class Meta:
        # wjl
        """
        模型元数据配置。
        定义模型的可读名称，用于在 Django Admin 后台显示。
        """
        verbose_name = '命令'  #wjl# 单数形式的名称
        verbose_name_plural = verbose_name #wjl #wjl# 复数形式的名称（中文通常与单数相同）


class EmailSendLog(models.Model):
    # wjl
    """
    数据模型：EmailSendLog
    用于记录系统发送邮件的日志信息，包括收件人、内容、结果和时间。
    所有字段均为只读，仅用于查看历史记录，不可手动修改。
    """

    #wjl# 邮件收件人地址（支持多个，以逗号分隔）
    emailto = models.CharField('收件人', max_length=300)

    #wjl# 邮件标题
    title = models.CharField('邮件标题', max_length=2000)

    #wjl # 邮件正文内容，支持长文本
    content = models.TextField('邮件内容')

    #wjl# 邮件是否发送成功，True 表示成功，False 表示失败
    send_result = models.BooleanField('结果', default=False)

    #wjl# 邮件记录创建时间，自动在插入时设置为当前时间
    creation_time = models.DateTimeField('创建时间', auto_now_add=True)

    def __str__(self):
        # wjl
        """
        返回该模型实例的字符串表示。
        在 Django Admin 或外键显示时，将显示邮件的标题。

        返回:
            str: 邮件的标题（title 字段）
        """
        return self.title

    class Meta:
        # wjl
        """
        模型元数据配置。
        定义模型的可读名称和默认排序规则。
        """
        verbose_name = '邮件发送log'  #wjl# 单数形式的名称
        verbose_name_plural = verbose_name #wjl # 复数形式的名称
        ordering = ['-creation_time']  #wjl# 默认排序：按创建时间倒序排列（最新的在前）