digitaleagenturnc/chat/models.py

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})