63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
from users.models import Agency
|
|
from django.urls import reverse
|
|
from django.utils import timezone
|
|
from django_cryptography.fields import encrypt
|
|
|
|
'''
|
|
|
|
MODEL ChatMessage
|
|
|
|
|
|
'''
|
|
class ChatMessage(models.Model):
|
|
author = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
content = encrypt(models.CharField(max_length=5000, blank=False, default=""))
|
|
sendtime = models.DateTimeField(default=timezone.now, blank=True)
|
|
room = models.ForeignKey("ChatRoom", on_delete=models.CASCADE)
|
|
'''
|
|
|
|
Model ChatRoom
|
|
|
|
'''
|
|
|
|
class ChatRoom(models.Model):
|
|
|
|
creator = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
|
|
'''
|
|
chatroomtype
|
|
|
|
0 - User-User-Chat
|
|
1 - Group-Chat
|
|
|
|
'''
|
|
chatroomtype = models.IntegerField(default=0)
|
|
roomname = models.CharField(max_length=200, blank=False, default="")
|
|
grouproomname = models.CharField(max_length=200, blank=False, default="")
|
|
# This field is for random-String Django Channels
|
|
roomname_channel = models.CharField(max_length=200, blank=False)
|
|
chatmembers = models.ManyToManyField(User, blank=True, related_name='users_in_chatroom')
|
|
chatmembers_admin = models.ManyToManyField(User, blank=True, related_name='adminusers_in_chatroom')
|
|
chatroom_createddate = models.DateTimeField(blank=True)
|
|
chatmember_single = models.ForeignKey(User, related_name='singleuserchat', on_delete=models.CASCADE, null=True, blank=True)
|
|
'''
|
|
VIEWSTATUS
|
|
|
|
0 - Hide and Close
|
|
1 - Hide, but visible in base.html
|
|
2 - Full visible
|
|
|
|
'''
|
|
viewstatus = models.IntegerField(default=True)
|
|
messages = models.ManyToManyField("ChatMessage", blank=True, related_name='all_chatmessages')
|
|
|
|
def __str__(self):
|
|
return f'{self.roomname}'
|
|
|
|
def get_absolute_url(self):
|
|
return reverse('chat-update', kwargs={'pk':self.pk})
|
|
|
|
|
|
|