169 lines
7.0 KiB
Python
169 lines
7.0 KiB
Python
from django.db import models
|
|
from django.utils import timezone
|
|
|
|
class ReadingType(models.Model):
|
|
"""阅读记录类型"""
|
|
name = models.CharField(max_length=20, unique=True, verbose_name="名称")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "阅读记录类型"
|
|
verbose_name_plural = "阅读记录类型"
|
|
ordering = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class FamilyTaskType(models.Model):
|
|
"""家庭事项类型"""
|
|
name = models.CharField(max_length=20, unique=True, verbose_name="名称")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "家庭事项类型"
|
|
verbose_name_plural = "家庭事项类型"
|
|
ordering = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Priority(models.Model):
|
|
"""优先级"""
|
|
name = models.CharField(max_length=10, unique=True, verbose_name="名称")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "优先级"
|
|
verbose_name_plural = "优先级"
|
|
ordering = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Status(models.Model):
|
|
"""状态"""
|
|
name = models.CharField(max_length=20, unique=True, verbose_name="名称")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "状态"
|
|
verbose_name_plural = "状态"
|
|
ordering = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class PlanType(models.Model):
|
|
"""今日计划类型"""
|
|
name = models.CharField(max_length=20, unique=True, verbose_name="名称")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "今日计划类型"
|
|
verbose_name_plural = "今日计划类型"
|
|
ordering = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class ReadingRecord(models.Model):
|
|
"""阅读记录表"""
|
|
date = models.DateField(default=timezone.now, verbose_name="日期")
|
|
type = models.ForeignKey(ReadingType, on_delete=models.CASCADE, verbose_name="类型")
|
|
title = models.CharField(max_length=200, verbose_name="标题")
|
|
source = models.CharField(max_length=200, blank=True, null=True, verbose_name="来源")
|
|
progress = models.CharField(max_length=100, blank=True, null=True, verbose_name="进度")
|
|
note = models.TextField(blank=True, null=True, verbose_name="阅读笔记")
|
|
file = models.FileField(upload_to='reading_files/', blank=True, null=True, verbose_name="上传文件")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "阅读记录"
|
|
verbose_name_plural = "阅读记录"
|
|
ordering = ['-date', '-created_at']
|
|
|
|
def __str__(self):
|
|
return f"{self.title} ({self.type.name})"
|
|
|
|
class InsightRecord(models.Model):
|
|
"""感悟记录表"""
|
|
date = models.DateField(default=timezone.now, verbose_name="日期")
|
|
content = models.TextField(verbose_name="内容")
|
|
file = models.FileField(upload_to='insight_files/', blank=True, null=True, verbose_name="上传文件")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "感悟记录"
|
|
verbose_name_plural = "感悟记录"
|
|
ordering = ['-date', '-created_at']
|
|
|
|
def __str__(self):
|
|
return f"感悟记录 - {self.date}"
|
|
|
|
class FamilyTask(models.Model):
|
|
"""家庭事项表"""
|
|
type = models.ForeignKey(FamilyTaskType, on_delete=models.CASCADE, verbose_name="类型")
|
|
content = models.TextField(verbose_name="内容")
|
|
priority = models.ForeignKey(Priority, on_delete=models.CASCADE, default=2, verbose_name="优先级")
|
|
status = models.ForeignKey(Status, on_delete=models.CASCADE, default=1, verbose_name="状态")
|
|
deadline = models.DateField(blank=True, null=True, verbose_name="截止日期")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "家庭事项"
|
|
verbose_name_plural = "家庭事项"
|
|
ordering = ['-priority', '-deadline', '-created_at']
|
|
|
|
def __str__(self):
|
|
return f"{self.type.name} - {self.content[:20]}..."
|
|
|
|
class TodayPlan(models.Model):
|
|
"""今日计划表"""
|
|
date = models.DateField(default=timezone.now, verbose_name="日期")
|
|
content = models.TextField(verbose_name="内容")
|
|
priority = models.ForeignKey(Priority, on_delete=models.CASCADE, default=2, verbose_name="优先级")
|
|
type = models.ForeignKey(PlanType, on_delete=models.CASCADE, default=4, verbose_name="类型")
|
|
status = models.ForeignKey(Status, on_delete=models.CASCADE, default=1, verbose_name="状态")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "今日计划"
|
|
verbose_name_plural = "今日计划"
|
|
ordering = ['-priority', '-created_at']
|
|
|
|
def __str__(self):
|
|
return f"{self.date} - {self.content[:20]}..."
|
|
|
|
class SystemConfig(models.Model):
|
|
"""系统配置表"""
|
|
smtp_server = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP服务器")
|
|
smtp_port = models.IntegerField(default=587, verbose_name="SMTP端口")
|
|
smtp_username = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP用户名")
|
|
smtp_password = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP密码")
|
|
send_time = models.TimeField(default='08:00', verbose_name="每日发送时间")
|
|
recipient_email = models.EmailField(blank=True, null=True, verbose_name="收件人邮箱")
|
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
|
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
|
|
|
class Meta:
|
|
verbose_name = "系统配置"
|
|
verbose_name_plural = "系统配置"
|
|
|
|
def __str__(self):
|
|
return "系统配置"
|
|
|
|
@classmethod
|
|
def get_config(cls):
|
|
"""获取系统配置,单例模式"""
|
|
config, created = cls.objects.get_or_create(pk=1)
|
|
return config
|