Added posts likes and dislikes
This commit is contained in:
@@ -23,4 +23,14 @@ urlpatterns = [
|
||||
api.posts.views.UserFeedListApiView.as_view(),
|
||||
name="user-feed",
|
||||
),
|
||||
path(
|
||||
"/<str:post_id>/like",
|
||||
api.posts.views.LikePostApiView.as_view(),
|
||||
name="like-post",
|
||||
),
|
||||
path(
|
||||
"/<str:post_id>/dislike",
|
||||
api.posts.views.DislikePostApiView.as_view(),
|
||||
name="like-post",
|
||||
),
|
||||
]
|
||||
|
||||
@@ -82,3 +82,39 @@ class UserFeedListApiView(ListAPIView):
|
||||
offset = serializer.validated_data.get("offset")
|
||||
|
||||
return user.posts.all()[offset: offset + limit]
|
||||
|
||||
|
||||
class LikePostApiView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request, post_id):
|
||||
try:
|
||||
post = Post.objects.get(id=post_id)
|
||||
self.check_object_permissions(request, post)
|
||||
request.user.like_post(post)
|
||||
return Response(
|
||||
{"status": "ok"},
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
except Post.DoesNotExist:
|
||||
raise NotFound(
|
||||
{"detail": "Post not found."},
|
||||
) from None
|
||||
|
||||
|
||||
class DislikePostApiView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request, post_id):
|
||||
try:
|
||||
post = Post.objects.get(id=post_id)
|
||||
self.check_object_permissions(request, post)
|
||||
request.user.dislike_post(post)
|
||||
return Response(
|
||||
{"status": "ok"},
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
except Post.DoesNotExist:
|
||||
raise NotFound(
|
||||
{"detail": "Post not found."},
|
||||
) from None
|
||||
|
||||
@@ -56,6 +56,7 @@ class Profile(models.Model):
|
||||
return self.liked_posts.add(post)
|
||||
|
||||
def dislike_post(self, post):
|
||||
print(self, post)
|
||||
self.liked_posts.remove(post)
|
||||
return self.disliked_posts.add(post)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user