refactor message
This commit is contained in:
parent
c440f1f509
commit
4c9c1c6eeb
|
@ -37,7 +37,7 @@ class Notice(models.Model):
|
||||||
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
content = models.CharField('内容', max_length=256, null=False)
|
content = models.CharField('内容', max_length=256, null=False)
|
||||||
is_read = models.BooleanField('是否删除', default=False)
|
is_read = models.BooleanField('是否阅读', default=False)
|
||||||
added = models.DateTimeField(auto_now_add=True)
|
added = models.DateTimeField(auto_now_add=True)
|
||||||
updated = models.DateTimeField(auto_now=True)
|
updated = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
@ -52,6 +52,62 @@ class Notice(models.Model):
|
||||||
return self.content + ':' + self.user.username
|
return self.content + ':' + self.user.username
|
||||||
|
|
||||||
|
|
||||||
|
class Task(models.Model):
|
||||||
|
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||||
|
created_by = models.ForeignKey(User, on_delete=models.NULL)
|
||||||
|
groups = models.ManyToManyField(Group)
|
||||||
|
content = models.TextField('内容', null=True, blank=True)
|
||||||
|
added = models.DateTimeField(auto_now_add=True)
|
||||||
|
updated = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ["-added"]
|
||||||
|
|
||||||
|
|
||||||
|
class TaskAddition(models.Model):
|
||||||
|
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||||
|
task = models.ForeignKey(Task, on_delete=models.CASCADE)
|
||||||
|
category = models.IntegerField(
|
||||||
|
'type', choices=MESSAGE_TYPE_CHOICES, default=0)
|
||||||
|
url = models.CharField('url', max_length=256, null=True, blank=True)
|
||||||
|
file = models.FileField(
|
||||||
|
upload_to='task/file/%Y/%m/%d/', null=True, blank=True)
|
||||||
|
picture = models.ImageField(
|
||||||
|
upload_to='task/image/%Y/%m/%d/', null=True, blank=True)
|
||||||
|
|
||||||
|
TASK_RECORD_STATUS_CHOICES = (
|
||||||
|
(0, '未完成'),
|
||||||
|
(1, '完成'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TaskRecord(models.Model):
|
||||||
|
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||||
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
|
status = models.IntegerField(
|
||||||
|
'状态', choices=TASK_RECORD_STATUS_CHOICES, default=0)
|
||||||
|
added = models.DateTimeField(auto_now_add=True)
|
||||||
|
updated = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
|
||||||
|
class Message(models.Model):
|
||||||
|
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||||
|
send_from = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
|
send_to = models.ForeignKey(Group, on_delete=models.CASCADE)
|
||||||
|
content = models.TextField('内容', null=True, blank=True)
|
||||||
|
task = models.ForeignKey(Task, on_delete=models.CASCADE)
|
||||||
|
addition = models.ForeignKey(MessageAddition, on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
added = models.DateTimeField(auto_now_add=True)
|
||||||
|
updated = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ["-added"]
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.send_from + ':' + self.send_to
|
||||||
|
|
||||||
|
|
||||||
MESSAGE_TYPE_CHOICES = (
|
MESSAGE_TYPE_CHOICES = (
|
||||||
(0, 'url'),
|
(0, 'url'),
|
||||||
(1, 'file'),
|
(1, 'file'),
|
||||||
|
@ -59,44 +115,38 @@ MESSAGE_TYPE_CHOICES = (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class Message(models.Model):
|
class MessageAddition(models.Model):
|
||||||
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||||
category = models.IntegerField(
|
category = models.IntegerField(
|
||||||
'category', choices=MESSAGE_TYPE_CHOICES, default=0)
|
'category', choices=MESSAGE_TYPE_CHOICES, default=0)
|
||||||
send_from = models.ForeignKey(User, on_delete=models.CASCADE)
|
message = models.ForeignKey(Message, 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:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
ordering = ["-added"]
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.send_from + ':' + self.send_to
|
|
||||||
|
|
||||||
|
|
||||||
class URLMessage(Message):
|
class URLMessage(MessageAddition):
|
||||||
title = models.CharField('title', max_length=256, null=False)
|
title = models.CharField('title', max_length=256, null=False)
|
||||||
description = models.CharField('description', max_length=512, null=False)
|
description = models.CharField('description', max_length=512, null=False)
|
||||||
image = models.CharField('image', max_length=256, null=True, blank=True)
|
image = models.CharField('image', max_length=256, null=True, blank=True)
|
||||||
url = models.CharField('url', max_length=256, null=True, blank=True)
|
url = models.CharField('url', max_length=256, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class FileMessage(Message):
|
class FileMessage(MessageAddition):
|
||||||
title = models.CharField('title', max_length=256, null=False)
|
title = models.CharField('title', max_length=256, null=False)
|
||||||
file = models.FileField(
|
file = models.CharField('file', max_length=256, null=False)
|
||||||
upload_to='message/file/%Y/%m/%d/', null=True, blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
class ImageMessage(Message):
|
class ImageMessage(MessageAddition):
|
||||||
file = models.FileField(
|
title = models.CharField('title', max_length=256, null=False)
|
||||||
upload_to='resources/image/%Y/%m/%d/', null=True, blank=True)
|
picture = models.CharField('picture', max_length=256, null=False)
|
||||||
|
|
||||||
|
|
||||||
class MessageRecord(models.Model):
|
class GroupRecord(models.Model):
|
||||||
pass
|
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||||
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
|
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
||||||
class ChatRecord(models.Model):
|
enter_at = models.DateTimeField(auto_now=True)
|
||||||
pass
|
leave_at = models.DateTimeField(auto_now=True)
|
||||||
|
added = models.DateTimeField(auto_now_add=True)
|
||||||
|
updated = models.DateTimeField(auto_now=True)
|
||||||
|
|
|
@ -94,6 +94,13 @@ def get_room_or_error(room_id, user):
|
||||||
raise ClientError("USER_HAS_TO_LOGIN")
|
raise ClientError("USER_HAS_TO_LOGIN")
|
||||||
|
|
||||||
|
|
||||||
|
def model_to_dict(o, fields):
|
||||||
|
result = dict()
|
||||||
|
for f in fields:
|
||||||
|
result[f] = o.f
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# sent_sms_code('13993199566')
|
# sent_sms_code('13993199566')
|
||||||
og_title, og_description, og_url, og_image = parse(
|
og_title, og_description, og_url, og_image = parse(
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
from django.shortcuts import render
|
||||||
|
from django.http import HttpResponse, JsonResponse
|
||||||
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
from django.forms.models import model_to_dict
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from polls.decorators import polls_login_required
|
||||||
|
from polls.models import Task
|
||||||
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
|
||||||
|
|
||||||
|
@csrf_exempt
|
||||||
|
@polls_login_required
|
||||||
|
def tasks(request):
|
||||||
|
if request.method == 'POST':
|
||||||
|
return HttpResponse(status=405)
|
||||||
|
id = request.user.id
|
||||||
|
tasks = Task.objects.filter(created_by__id=id)
|
||||||
|
results = []
|
||||||
|
for o in tasks:
|
||||||
|
result = dict()
|
||||||
|
result['id'] = o.id
|
||||||
|
m = []
|
||||||
|
for g in o.groups:
|
||||||
|
n = model_to_dict(g, ['id', 'name'])
|
||||||
|
m.append(n)
|
||||||
|
result['groups'] = m
|
||||||
|
result['added'] = o.added.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
results.append(result)
|
||||||
|
return JsonResponse(results, safe=False)
|
Loading…
Reference in New Issue