Skip to content

Commit 1c5ea36

Browse files
consumers.py updated
1 parent 5cf7ed1 commit 1c5ea36

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

backend/apps/chat/consumers.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ async def receive(self, text_data):
3434
text_data_json = json.loads(text_data)
3535
if 'message' in text_data_json:
3636
message = text_data_json['message']
37-
chat = Chat.objects.get(name=self.room_name)
38-
sender = User.objects.get(id=self.user_id)
39-
receiver = Chat.objects.get_other_user(chat, sender)
4037

4138
try:
42-
self.blocked_or_muted(sender, receiver)
39+
chat = await sync_to_async(Chat.objects.get)(name=self.room_name)
40+
sender = await sync_to_async(User.objects.get)(id=self.user_id)
41+
receiver = await sync_to_async(Chat.objects.get_other_user)(chat, sender)
42+
await self.blocked_or_muted(sender, receiver)
4343

4444
# Try to save the message
4545
username, id, timestamp = await self.save_message(self.user_id, self.room_name, message)
@@ -147,10 +147,16 @@ def save_message(self, id, room_name, content):
147147
chat = Chat.objects.get(name=room_name)
148148
message = Message.objects.create(content=content, chat=chat, sender=user) # Creates and saves message
149149
return user.username, message.id, message.timestamp
150-
150+
151151
@staticmethod
152-
def blocked_or_muted(sender, receiver):
153-
if BlockedUser.objects.filter(blocked_by=receiver.profile, blocked_user=sender.profile).exists():
152+
async def blocked_or_muted(sender, receiver):
153+
sender_profile = await sync_to_async(lambda: sender.profile)()
154+
receiver_profile = await sync_to_async(lambda: receiver.profile)()
155+
156+
blocked = await sync_to_async(BlockedUser.objects.filter(blocked_by=receiver_profile, blocked_user=sender_profile).exists)()
157+
if blocked:
154158
raise PermissionError("You are blocked by this user.")
155-
if MutedUser.objects.filter(muted_by=receiver.profile, muted_user=sender.profile).exists():
156-
raise PermissionError("You are muted by this user.")
159+
160+
muted = await sync_to_async(MutedUser.objects.filter(muted_by=receiver_profile, muted_user=sender_profile).exists)()
161+
if muted:
162+
raise PermissionError("You are muted by this user.")

0 commit comments

Comments
 (0)