add message
This commit is contained in:
parent
3a5fb97c43
commit
edceafd88d
|
@ -127,41 +127,43 @@ class TaskRecord(models.Model):
|
|||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
|
||||
MESSAGE_TYPE_CHOICES = (
|
||||
(0, 'text'),
|
||||
(1, 'url'),
|
||||
(2, 'file'),
|
||||
(3, 'image')
|
||||
)
|
||||
|
||||
|
||||
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)
|
||||
task = models.ForeignKey(Task, on_delete=models.CASCADE)
|
||||
category = models.IntegerField(
|
||||
'Type', choices=MESSAGE_TYPE_CHOICES, default=1)
|
||||
#text
|
||||
content = models.TextField('内容', null=True, blank=True)
|
||||
#url
|
||||
page_title = models.CharField('page_title', max_length=256, null=True, blank=True)
|
||||
page_description = models.CharField('page_description', max_length=512, null=True, blank=True)
|
||||
page_image = models.CharField('page_image', max_length=256, null=True, blank=True)
|
||||
url = models.CharField('url', max_length=256, null=True, blank=True)
|
||||
|
||||
#file
|
||||
file_title = models.CharField('file_title', max_length=256, null=True, blank=True)
|
||||
file = models.CharField('file', max_length=256, null=True, blank=True)
|
||||
|
||||
#image
|
||||
image_title = models.CharField('image_title', max_length=256, null=True, blank=True)
|
||||
picture = models.CharField('picture', max_length=256, null=True, blank=True)
|
||||
|
||||
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
|
||||
|
||||
|
||||
class NormalMessage(Message):
|
||||
content = models.TextField('内容', null=True, blank=True)
|
||||
|
||||
|
||||
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.CharField('file', max_length=256, null=False)
|
||||
|
||||
|
||||
class ImageMessage(Message):
|
||||
title = models.CharField('title', max_length=256, null=False)
|
||||
picture = models.CharField('picture', max_length=256, null=False)
|
||||
|
||||
|
||||
class GroupRecord(models.Model):
|
||||
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
|
||||
|
|
|
@ -32,4 +32,5 @@ urlpatterns = [
|
|||
path('groups/test-room/', views.room, name='polls_group_test_room'),
|
||||
path('compartments/list/', views.compartments, name='polls_compartments_list'),
|
||||
path('organizations/list/', views.organizations, name='polls_organizations_list'),
|
||||
path('messages/list/last/', views.last_messages, name='polls_messages_list_last'),
|
||||
]
|
||||
|
|
|
@ -6,7 +6,6 @@ from parsel import Selector
|
|||
from channels.db import database_sync_to_async
|
||||
from .exceptions import ClientError
|
||||
from django.conf import settings
|
||||
from polls.models import FileMessage, ImageMessage, NormalMessage, URLMessage
|
||||
from itertools import chain
|
||||
|
||||
|
||||
|
@ -96,24 +95,6 @@ def get_room_or_error(room_id, user):
|
|||
raise ClientError("USER_HAS_TO_LOGIN")
|
||||
|
||||
|
||||
@database_sync_to_async
|
||||
def build_message(type, user_id, group_id, task_id, payload):
|
||||
if type == 1:
|
||||
URLMessage.objects.create(send_from__id=user_id, send_to__id=group_id,
|
||||
task__id=task_id, title=payload.title, description=payload.description, url=payload.url, image=payload.image)
|
||||
|
||||
elif type == 1:
|
||||
FileMessage.objects.create(send_from__id=user_id, send_to__id=group_id,
|
||||
task__id=task_id, title=payload.title, file=payload.file)
|
||||
|
||||
elif type == 2:
|
||||
ImageMessage.objects.create(send_from__id=user_id, send_to__id=group_id,
|
||||
task__id=task_id, title=payload.title, image=payload.image)
|
||||
|
||||
else:
|
||||
NormalMessage.objects.create(send_from__id=user_id, send_to__id=group_id,
|
||||
category=0, task__id=task_id, content=payload.content)
|
||||
|
||||
|
||||
def model_to_dict(instance, fields):
|
||||
opts = instance._meta
|
||||
|
|
|
@ -7,3 +7,4 @@ from .task import tasks, create_task, create_test_task
|
|||
from .group import groups, room
|
||||
from .compartment import compartments
|
||||
from .organizations import organizations
|
||||
from .message import last_messages
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,25 @@
|
|||
from django.shortcuts import render
|
||||
from django.http import HttpResponse, JsonResponse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
import datetime
|
||||
|
||||
from polls.decorators import polls_login_required
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from polls.models import Message, NormalMessage, URLMessage
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
@polls_login_required
|
||||
def last_messages(request):
|
||||
if request.method == 'POST':
|
||||
return HttpResponse(status=405)
|
||||
id = request.user.id
|
||||
group_id = request.GET.get('group_id')
|
||||
messages = Message.objects.filter(send_to_id=group_id)
|
||||
results = []
|
||||
for o in messages:
|
||||
print(dir(o))
|
||||
result = dict()
|
||||
result['id'] = str(o.id)
|
||||
results.append(result)
|
||||
return JsonResponse({'status': 'success', 'message': results}, safe=False)
|
|
@ -63,7 +63,7 @@ def create_task(request):
|
|||
task=task, category=2, image=picture)
|
||||
|
||||
for group in groups:
|
||||
normalMessage = NormalMessage.objects.create(send_from__id=user.id, send_to__id=group, task=task, content=content)
|
||||
normalMessage = NormalMessage.objects.create(send_from_id=user.id, send_to_id=group, task=task, content=content)
|
||||
# t = model_to_dict(task, ["id", "content"])
|
||||
# gs = queryset_to_list(task.groups.all(), ["id"])
|
||||
# channel_layer = get_channel_layer()
|
||||
|
|
Loading…
Reference in New Issue