Merge pull request 'add extra user fields for chat' (#59) from behruz into main
All checks were successful
Deploy to Production / build-and-deploy (push) Successful in 1m55s

Reviewed-on: #59
This commit is contained in:
2026-04-18 11:24:13 +00:00
2 changed files with 16 additions and 0 deletions

View File

@@ -4,6 +4,11 @@ from channels.db import database_sync_to_async
from channels.generic.websocket import AsyncWebsocketConsumer
from django.contrib.auth.models import AnonymousUser
def get_base_url(scope):
headers = dict(scope["headers"])
host = headers.get(b"host", b"").decode()
scheme = "https" if scope.get("scheme") == "https" else "http"
return f"{scheme}://{host}"
class ChatConsumer(AsyncWebsocketConsumer):
"""
@@ -91,6 +96,12 @@ class ChatConsumer(AsyncWebsocketConsumer):
text=text,
)
full_name = user.get_full_name().strip() or str(user.phone)
base_url = get_base_url(self.scope)
avatar_url = (
base_url + user.avatar.url
if user.avatar else None
)
return {
"id": msg.id,
"message_type": msg.message_type,
@@ -100,6 +111,8 @@ class ChatConsumer(AsyncWebsocketConsumer):
"id": user.id,
"full_name": full_name,
"role": user.role,
"phone": user.phone,
"avatar": avatar_url,
},
"created_at": msg.created_at.isoformat(),
}

View File

@@ -13,10 +13,13 @@ class BaseChatmessageSerializer(serializers.ModelSerializer):
full_name = obj.sender.get_full_name().strip()
if not full_name:
full_name = str(obj.sender.phone)
request = self.context.get("request")
return {
"id": obj.sender.id,
"full_name": full_name,
"role": obj.sender.role,
"phone": obj.sender.phone,
"avatar": request.build_absolute_uri(obj.sender.avatar.url) if obj.sender.avatar else None,
}
def get_file_url(self, obj):