Skip to content

Commit

Permalink
Merge pull request #55 from andela/bg-retrieve-follow
Browse files Browse the repository at this point in the history
Fix endpoint to retrieve followers
  • Loading branch information
oma0256 committed Mar 21, 2019
2 parents 668d5f1 + 4a75c3a commit d4cd1a0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
24 changes: 23 additions & 1 deletion authors/apps/profiles/serializers.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
from rest_framework import serializers
from .models import Profile
from authors.apps.articles.models import Article


class ProfileSerializer(serializers.ModelSerializer):
following = serializers.SerializerMethodField()
followers = serializers.SerializerMethodField()
followings = serializers.SerializerMethodField()
number_of_followers = serializers.SerializerMethodField()
number_of_following = serializers.SerializerMethodField()

class Meta:
model = Profile
fields = ("username", "first_name", "last_name", "bio", "image",
"following", "date_of_birth")
"following", "date_of_birth", "followers", "followings",
"number_of_followers", "number_of_following")

def get_following(self, instance):
"""
Expand All @@ -24,6 +30,22 @@ def get_following(self, instance):
followee = instance
return follower.is_following(followee)

def get_followers(self, instance):
queryset = instance.followed_by.all()
followers = [follower.username for follower in queryset]
return followers

def get_followings(self, instance):
queryset = instance.follows.all()
followings = [following.username for following in queryset]
return followings

def get_number_of_following(self, instance):
return len(instance.follows.all())

def get_number_of_followers(self, instance):
return len(instance.followed_by.all())

def validate(self, data):
"""
validate method checks if user passes data with non profile fields then
Expand Down
4 changes: 2 additions & 2 deletions authors/apps/profiles/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ class ProfileFollowingAPIView(generics.GenericAPIView):
def get(self, request):
user = self.request.user
profile = user.profile
queryset = Profile.objects.get(user__email=user).follows.all()
queryset = Profile.objects.get(user__email=user.email).follows.all()

following = []
for followee in queryset:
Expand All @@ -169,7 +169,7 @@ class ProfileFollowersAPIView(generics.GenericAPIView):
def get(self, request):
user = self.request.user
profile = user.profile
queryset = Profile.objects.get(user__email=user).followed_by.all()
queryset = Profile.objects.get(user__email=user.email).followed_by.all()

followers = []
for follower in queryset:
Expand Down

0 comments on commit d4cd1a0

Please sign in to comment.