from django.db import models import uuid import datetime from django.contrib.auth.models import User from dashboard.models import Group VERIFY_CODE_TYPE_CHOICES = ( (0, 'register'), (1, 'password_recover'), ) class VerifyCode(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) code = models.CharField('code', max_length=8, null=False) phone = models.CharField('phone', max_length=11, null=False) timeouted = models.DateTimeField('timeouted', null=False) category = models.IntegerField( 'category', choices=VERIFY_CODE_TYPE_CHOICES, default=0) added = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) class Meta: ordering = ["-added"] def is_in_progress(self): now = datetime.datetime.now() return now <= self.timeouted def __str__(self): return self.phone + ':' + self.code class Notice(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) user = models.ForeignKey(User, on_delete=models.CASCADE) content = models.CharField('内容', max_length=256, null=False) is_read = models.BooleanField('是否删除', default=False) added = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) class Meta: ordering = ["-added"] def is_in_progress(self): now = datetime.datetime.now() return now <= self.timeouted def __str__(self): return self.phone + ':' + self.code MESSAGE_TYPE_CHOICES = ( (0, 'url'), (1, 'file'), (2, 'picture') ) class Message(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) category = models.IntegerField( 'category', choices=MESSAGE_TYPE_CHOICES, default=0) send_from = models.ForeignKey(User, on_delete=models.CASCADE) send_to = models.ForeignKey(Group, on_delete=models.CASCADE) added = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) class Meta: abstract = True ordering = ["-added"] def __str__(self): return self.send_from + ':' + self.send_to class URLMessage(Message): title = models.CharField('title', max_length=256, null=False) description = models.CharField('description', max_length=512, null=False) image = models.CharField('image', max_length=256, null=True, blank=True) url = models.CharField('url', max_length=256, null=True, blank=True) class FileMessage(Message): title = models.CharField('title', max_length=256, null=False) file = models.FileField(upload_to='message/file/%Y/%m/%d/', null=True, blank=True) class ImageMessage(Message): file = models.FileField(upload_to='resources/image/%Y/%m/%d/', null=True, blank=True) class MessageRecord(models.Model): pass class ChatRecord(models.Model): pass