From cd4e0cedeca8a7bf4b59e2addb00fd83a5da68d8 Mon Sep 17 00:00:00 2001 From: dkfla Date: Sat, 3 Aug 2024 00:35:50 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=95=A8=EA=BB=98=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=ED=95=9C=20=EC=8B=9D=EB=8B=B9=20=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- friends/serializers.py | 25 +++++++++++++++++++++++-- friends/views.py | 26 ++++++++++++++++---------- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/friends/serializers.py b/friends/serializers.py index a1c8337..15bd3ec 100644 --- a/friends/serializers.py +++ b/friends/serializers.py @@ -7,15 +7,36 @@ class UserSerializer(serializers.ModelSerializer): class Meta: model = User - fields = ["name", "profile_img", "reliability"] + fields = ["id", "name", "profile_img", "reliability"] class FriendRequestSerializer(serializers.ModelSerializer): user = UserSerializer(read_only=True) + common_restaurant_count = serializers.SerializerMethodField() class Meta: model = Friend - fields = ["user", "state"] + fields = ["user", "state", "common_restaurant_count"] + + def get_common_restaurant_count(self, obj): + try: + user = obj.user + # friend_user = self.context.get('request').user + friend_user = User.objects.get(id=21) + + user_restaurants = set( + UserRestaurantsList.objects.filter(user=user).values_list( + "restaurant_id", flat=True + ) + ) + friend_restaurants = set( + UserRestaurantsList.objects.filter(user=friend_user).values_list( + "restaurant_id", flat=True + ) + ) + return len(user_restaurants.intersection(friend_restaurants)) + except User.DoesNotExist: + return 0 class FriendSerializer(serializers.ModelSerializer): diff --git a/friends/views.py b/friends/views.py index 74207a9..05b23fb 100644 --- a/friends/views.py +++ b/friends/views.py @@ -33,17 +33,23 @@ def friend_restaurant_list(request, id): @api_view(["GET"]) # @login_required def friend_list(request): - user = User.objects.get(id=21) + try: + user = User.objects.get(id=21) + + friend_request = Friend.objects.filter(friend=user, state="request") + friend_request_serialized = FriendRequestSerializer( + friend_request, context={"request": request}, many=True + ).data - friend_request = Friend.objects.filter(friend=user, state="request") - friend_request_serialized = FriendRequestSerializer(friend_request, many=True).data + friends = Friend.objects.filter(user=user, state="approve") + friends_serialized = FriendSerializer(friends, many=True).data - friends = Friend.objects.filter(user=user, state="approve") - friends_serialized = FriendSerializer(friends, many=True).data + data = { + "friend_request": friend_request_serialized, + "friends": friends_serialized, + } - data = { - "friend_request": friend_request_serialized, - "friends": friends_serialized, - } + return Response(data) - return Response(data) + except User.DoesNotExist: + return Response({"message": "User not found"}, status=status.HTTP_404_NOT_FOUND)