Skip to content

Commit 46cac60

Browse files
committed
Add opponent field to DirectChatListSerializer
1 parent 0fd1775 commit 46cac60

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

chats/serializers.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212

1313
class DirectChatListSerializer(serializers.ModelSerializer):
1414
last_message = serializers.SerializerMethodField()
15-
users = serializers.SerializerMethodField(read_only=True)
15+
opponent = serializers.SerializerMethodField()
1616

17-
@classmethod
18-
def get_users(cls, chat: ProjectChat):
19-
return UserListSerializer(chat.get_users(), many=True).data
17+
def get_opponent(self):
18+
user = self.context.get("opponent")
19+
return UserDetailSerializer(user).data
2020

2121
@classmethod
2222
def get_last_message(cls, chat: DirectChat):
@@ -26,7 +26,7 @@ class Meta:
2626
model = DirectChat
2727
fields = [
2828
"id",
29-
"users",
29+
"opponent",
3030
"last_message",
3131
]
3232

@@ -35,7 +35,7 @@ class DirectChatDetailSerializer(serializers.ModelSerializer):
3535
users = serializers.SerializerMethodField(read_only=True)
3636

3737
@classmethod
38-
def get_users(cls, chat: ProjectChat):
38+
def get_users(cls, chat: DirectChat):
3939
return UserListSerializer(chat.get_users(), many=True).data
4040

4141
class Meta:

chats/views.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,19 @@ def get(self, request, *args, **kwargs) -> Response:
7070
user1 = User.objects.get(pk=user1_id)
7171
user2 = User.objects.get(pk=user2_id)
7272

73-
data = DirectChatDetailSerializer(DirectChat.get_chat(user1, user2)).data
74-
7573
if user1 == request.user:
74+
opponent = user2
7675
# may be is better to use serializer or return dict -
7776
# {"first_name": user2.first_name, "last_name": user2.last_name}
78-
data["name"] = f"{user2.first_name} {user2.last_name}"
79-
data["image_address"] = user2.avatar
8077
else:
81-
data["name"] = f"{user1.first_name} {user1.last_name}"
82-
data["image_address"] = user1.avatar
78+
opponent = user1
79+
context = {"opponent": opponent}
80+
data = DirectChatDetailSerializer(
81+
DirectChat.get_chat(user1, user2), context=context
82+
).data
83+
84+
data["name"] = f"{opponent.first_name} {opponent.last_name}"
85+
data["image_address"] = opponent.avatar
8386

8487
return Response(
8588
status=status.HTTP_200_OK,

0 commit comments

Comments
 (0)