Skip to content

Commit

Permalink
feat(liked-disliked): add liked disliked field (#44)
Browse files Browse the repository at this point in the history
- add disliked and liked field to body

[Starts #164269378]
  • Loading branch information
MbugwaSami authored and younggeeks committed Feb 28, 2019
1 parent 77c3da7 commit 7821c96
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
27 changes: 27 additions & 0 deletions authors/apps/articles/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ class ArticleSerializer(TaggitSerializer, serializers.ModelSerializer):
read_time = serializers.SerializerMethodField()
likes = serializers.SerializerMethodField()
dislikes = serializers.SerializerMethodField()
liked = serializers.SerializerMethodField()
disliked = serializers.SerializerMethodField()


def get_author(self, article):
author = ProfileSerialiazer(article.author.profiles)
Expand All @@ -44,6 +47,30 @@ def get_likes(self,value):
def get_dislikes(self,value):
return LikeDislike.objects.dislikes().filter(articles=value).count()

def get_liked(self, article):
try:
user = self.context.get('request').user.id
article_id = article.id
liked = LikeDislike.objects.filter(
object_id=article_id, author_id=user, vote=True
).exists()

return liked
except:
return None

def get_disliked(self, article):
try:
user = self.context.get('request').user.id
article_id = article.id
disliked = LikeDislike.objects.filter(
object_id=article_id, author_id=user, vote=False
).exists()

return disliked
except:
return None

class Meta:
model = Article
fields = '__all__'
Expand Down
10 changes: 9 additions & 1 deletion authors/apps/articles/views/articles.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,10 +192,18 @@ def post(self, request, slug):
except LikeDislike.DoesNotExist:
article.votes.create(author=request.user, vote=self.vote_type)
article.save()


liked = LikeDislike.objects.filter(
object_id=article.id, author_id=request.user.id, vote=True
).exists()
disliked = LikeDislike.objects.filter(
object_id=article.id, author_id=request.user.id, vote=False
).exists()
return Response({
"likes": article.votes.likes().count(),
"dislikes": article.votes.dislikes().count(),
"liked": liked,
"disliked": disliked
},
content_type="application/json",
status=status.HTTP_201_CREATED
Expand Down

0 comments on commit 7821c96

Please sign in to comment.