# 导入Django的模型模块
from django.db import models


# 创建命令模型（数据库表）
class commands(models.Model):
    """
    命令模型类
    用于存储系统命令的相关信息
    """
    
    # 命令标题字段，CharField类型，最大长度300，在admin中显示为'命令标题'
    title = models.CharField('命令标题', max_length=300)
    
    # 命令内容字段，CharField类型，最大长度2000，在admin中显示为'命令'
    command = models.CharField('命令', max_length=2000)
    
    # 命令描述字段，CharField类型，最大长度300，在admin中显示为'命令描述'
    describe = models.CharField('命令描述', max_length=300)
    
    # 创建时间字段，DateTimeField类型，自动设置为对象创建时的时间
    creation_time = models.DateTimeField('创建时间', auto_now_add=True)
    
    # 最后修改时间字段，DateTimeField类型，自动更新为对象最后修改的时间
    last_modify_time = models.DateTimeField('修改时间', auto_now=True)

    def __str__(self):
        """
        定义对象的字符串表示形式
        在Django admin和shell中显示时使用
        
        Returns:
            str: 命令标题
        """
        return self.title

    class Meta:
        """
        模型的元数据配置类
        用于定义模型的其他选项
        """
        verbose_name = '命令'  # 单数形式的可读名称
        verbose_name_plural = verbose_name  # 复数形式的可读名称（与单数相同）


class EmailSendLog(models.Model):
    """
    邮件发送日志模型类
    用于记录邮件发送的历史记录和结果
    """
    
    # 收件人字段，CharField类型，最大长度300，在admin中显示为'收件人'
    emailto = models.CharField('收件人', max_length=300)
    
    # 邮件标题字段，CharField类型，最大长度2000，在admin中显示为'邮件标题'
    title = models.CharField('邮件标题', max_length=2000)
    
    # 邮件内容字段，TextField类型，无长度限制，在admin中显示为'邮件内容'
    content = models.TextField('邮件内容')
    
    # 发送结果字段，BooleanField类型，默认值为False（发送失败），在admin中显示为'结果'
    send_result = models.BooleanField('结果', default=False)
    
    # 创建时间字段，DateTimeField类型，自动设置为对象创建时的时间
    creation_time = models.DateTimeField('创建时间', auto_now_add=True)

    def __str__(self):
        """
        定义对象的字符串表示形式
        
        Returns:
            str: 邮件标题
        """
        return self.title

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