Added posts likes and dislikes
This commit is contained in:
@@ -23,4 +23,14 @@ urlpatterns = [
|
|||||||
api.posts.views.UserFeedListApiView.as_view(),
|
api.posts.views.UserFeedListApiView.as_view(),
|
||||||
name="user-feed",
|
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")
|
offset = serializer.validated_data.get("offset")
|
||||||
|
|
||||||
return user.posts.all()[offset: offset + limit]
|
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)
|
return self.liked_posts.add(post)
|
||||||
|
|
||||||
def dislike_post(self, post):
|
def dislike_post(self, post):
|
||||||
|
print(self, post)
|
||||||
self.liked_posts.remove(post)
|
self.liked_posts.remove(post)
|
||||||
return self.disliked_posts.add(post)
|
return self.disliked_posts.add(post)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user