dockered
This commit is contained in:
41
django/chat/models.py
Normal file
41
django/chat/models.py
Normal file
@ -0,0 +1,41 @@
|
||||
from django.db.models import Model, IntegerField, ForeignKey, CharField, CASCADE
|
||||
from django.db.models.signals import post_delete
|
||||
from django.dispatch import receiver
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
class ChatChannelModel(Model):
|
||||
def create(self, members: [User]):
|
||||
self.save()
|
||||
for member in members:
|
||||
ChatMemberModel(channel=self, member=member).save()
|
||||
return self
|
||||
|
||||
def get_members(self):
|
||||
return [member_channel.member for member_channel in ChatMemberModel.objects.filter(channel=self)]
|
||||
|
||||
|
||||
class ChatMemberModel(Model):
|
||||
member = ForeignKey(User, on_delete=CASCADE)
|
||||
channel = ForeignKey(ChatChannelModel, on_delete=CASCADE)
|
||||
|
||||
|
||||
@receiver(post_delete, sender=ChatMemberModel)
|
||||
def delete_channel_when_member_deleted(sender, instance, **kwargs):
|
||||
print(sender, instance)
|
||||
|
||||
|
||||
class ChatMessageModel(Model):
|
||||
channel = ForeignKey(ChatChannelModel, on_delete=CASCADE)
|
||||
author = ForeignKey(User, on_delete=CASCADE)
|
||||
content = CharField(max_length=255)
|
||||
time = IntegerField(primary_key=False)
|
||||
|
||||
|
||||
class AskModel(Model):
|
||||
asker_id = IntegerField(primary_key=False)
|
||||
asked_id = IntegerField(primary_key=False)
|
||||
|
||||
# return if the asker ask the asked to play a game
|
||||
def is_asked(self, asker_id, asked_id):
|
||||
return AskModel.objects.get(asker_id=asker_id, asked_id=asked_id) is not None
|
Reference in New Issue
Block a user