diff --git a/Backend/user_service/user_service/user_app/serializers.py b/Backend/user_service/user_service/user_app/serializers.py index b65e7f9..804215d 100644 --- a/Backend/user_service/user_service/user_app/serializers.py +++ b/Backend/user_service/user_service/user_app/serializers.py @@ -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() diff --git a/Backend/user_service/user_service/user_app/urls.py b/Backend/user_service/user_service/user_app/urls.py index 912d925..ebb9052 100644 --- a/Backend/user_service/user_service/user_app/urls.py +++ b/Backend/user_service/user_service/user_app/urls.py @@ -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//", - 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//",UserViewSet.as_view({"get": "retrieve_user","put": "update_user","delete": "destroy_user",}),name="user-detail",), + path("user//friends/", FriendsViewSet.as_view({"get": "friends_list"}), name="friends-list"), + path("user//friends//", FriendsViewSet.as_view({"delete": "remove_friend", "post": "add_friend"}), name="friends-list"), + ] diff --git a/Backend/user_service/user_service/user_app/views.py b/Backend/user_service/user_service/user_app/views.py index 3c503a0..4a8e44d 100644 --- a/Backend/user_service/user_service/user_app/views.py +++ b/Backend/user_service/user_service/user_app/views.py @@ -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)