Skip to content

Commit

Permalink
added list_friend and add_friend to FriendViewSet class in user-service
Browse files Browse the repository at this point in the history
  • Loading branch information
abbastoof committed Jul 11, 2024
1 parent 9463936 commit 1744563
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 30 deletions.
5 changes: 5 additions & 0 deletions Backend/user_service/user_service/user_app/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,11 @@ def update(self, instance, validate_data) -> User:
{"password": err.messages}
) from err
instance.set_password(value)
# if attr == "friends" and value is not None:
# friends_list = instance.friends
# for friend in value:
# friends_list.append(friend)
# instance.friends.set(friends_list)
else:
setattr(instance, attr, value)
instance.save()
Expand Down
37 changes: 7 additions & 30 deletions Backend/user_service/user_service/user_app/urls.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,12 @@
from django.urls import path

from .views import RegisterViewSet, UserViewSet
from .views import RegisterViewSet, UserViewSet, FriendsViewSet

urlpatterns = [
path(
"user/register/",
RegisterViewSet.as_view(
{
"post": "create_user",
}
),
name="register-user",
),
path(
"user/",
UserViewSet.as_view(
{
"get": "users_list",
}
),
name="users-list",
),
path(
"user/<int:pk>/",
UserViewSet.as_view(
{
"get": "retrieve_user",
"put": "update_user",
"delete": "destroy_user",
}
),
name="user-detail",
),
path("user/register/",RegisterViewSet.as_view({"post": "create_user",}),name="register-user",),
path("user/",UserViewSet.as_view({"get": "users_list",}),name="users-list",),
path("user/<int:pk>/",UserViewSet.as_view({"get": "retrieve_user","put": "update_user","delete": "destroy_user",}),name="user-detail",),
path("user/<int:user_pk>/friends/", FriendsViewSet.as_view({"get": "friends_list"}), name="friends-list"),
path("user/<int:user_pk>/friends/<int:pk>/", FriendsViewSet.as_view({"delete": "remove_friend", "post": "add_friend"}), name="friends-list"),

]
24 changes: 24 additions & 0 deletions Backend/user_service/user_service/user_app/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,3 +228,27 @@ def create_user(self, request) -> Response:
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)

class FriendsViewSet(viewsets.ViewSet):
def friends_list(self, request, user_pk=None):
user = get_object_or_404(User, id=user_pk)
if user is not None:
serializer = UserSerializer(user.friends.all(), many=True)
data = []
for item in serializer.data:
data.append({"username": item["username"], "status": item["status"]})
return Response(data, status=status.HTTP_200_OK)
return Response({"detail": "User not found"}, status=status.HTTP_400_BAD_REQUEST)

def remove_friend(self, request, user_pk=None, pk=None):
pass

def add_friend(self, request, user_pk=None, pk=None):
try:
user = get_object_or_404(User, id=user_pk)
friend = get_object_or_404(User, id=pk)
user.friends.add(friend)
user.save()
return Response({"detail": "Friend added"}, status=status.HTTP_202_ACCEPTED)
except User.DoesNotExist:
return Response({"detail": "Invalid user_id"}, status=status.HTTP_400_BAD_REQUEST)

0 comments on commit 1744563

Please sign in to comment.