示例#1
0
class NotificationSerializer(ModelSerializer):
    """Serializer class for notification."""
    profile = ProfileSerializer()

    class Meta:
        model = Notification
        fields = ('profile', 'message', 'status', 'category')
示例#2
0
文件: views.py 项目: beatum/tikup
    def get(self, request, *args, **kwargs):
        """
        Get paginated post search results.

        <BASE_URL>/<endpoint>/[..query_params]

        Available query_params options:
        1. page_number [int, default 1]
        2. page_size [int, default 50]
        3. search [str]

        misco.com/profile/search/?search=martial%20arts&page_size=100
        """
        page_number = request.query_params.get('page_number ', 1)
        page_size = request.query_params.get('page_size ', 100)
        search_token = request.query_params.get('search', None)
        if not search_token:
            raise Exception('Search Token not provided.')
        profiles = Profile.objects.filter(
            user__username__icontains=search_token) | Profile.objects.filter(
                user__first_name=search_token) | Profile.objects.filter(
                    user__last_name=search_token)
        paginator = Paginator(profiles, page_size)
        serializer = ProfileSerializer(paginator.page(page_number),
                                       many=True,
                                       context={'request': request})
        response = Response(serializer.data, status=status.HTTP_200_OK)
        return response
示例#3
0
 def get_profile(self, obj):
     if obj.user.profile:
         data = ProfileSerializer(obj.user.profile).data
         data["id"] = obj.user.id
         del data["uuid"]
         return data
     else:
         return {}
示例#4
0
 def get_receiver(self, obj):
     try:
         data = ProfileSerializer(obj.receiver.profile).data
         data["id"] = obj.receiver.id
         del data["uuid"]
         return data
     except:
         return {}
示例#5
0
class FavoritePostSerializer(ModelSerializer):
    """Serializer for favorite posts."""
    post = PostSerializer()
    profile = ProfileSerializer()

    class Meta:
        model = FavoritePost
        fields = ('post', 'profile')
示例#6
0
class FavoriteSoundSerializer(ModelSerializer):
    """Serializer for favorite songs."""
    sound = SoundSerializer()
    profile = ProfileSerializer()

    class Meta:
        model = FavoriteSound
        fields = ('sound', 'profile')
示例#7
0
class CommentSerializer(serializers.ModelSerializer):
    """Serializer class for comment model."""

    post = PostSerializer()
    profile = ProfileSerializer()

    class Meta:
        model = Comment
        fields = ('post', 'profile', 'comment', 'created_at')
示例#8
0
文件: views.py 项目: beatum/tikup
 def get(self, request, *args, **kwargs):
     """Get profile view."""
     serialized_profile = ProfileSerializer(request.user.profile,
                                            context={'request': request})
     return Response(data={
         'profile': serialized_profile.data,
         'is_self': True,
     },
                     status=status.HTTP_200_OK)
示例#9
0
class NestedCommentSerializer(serializers.ModelSerializer):
    """Serializer for comment class along with replies."""

    profile = ProfileSerializer()
    is_pointed_to = CommentSerializer(many=True)
    likes = serializers.SerializerMethodField()

    def get_likes(self, obj):
        """Return count of likes."""
        return CommentLike.objects.filter(comment=obj).count()

    class Meta:
        model = Comment
        fields = ('uuid', 'profile', 'comment', 'is_pointed_to', 'likes',
                  'created_at')
示例#10
0
class PostSerializer(serializers.ModelSerializer):
    """Serializer for post model."""
    profile = ProfileSerializer()
    sound = SoundSerializer()
    category = PostCategory()
    likes = serializers.SerializerMethodField()
    comments = serializers.SerializerMethodField()
    shares = serializers.SerializerMethodField()
    views = serializers.SerializerMethodField()
    is_favorite = serializers.SerializerMethodField()
    is_viewed = serializers.SerializerMethodField()

    def get_is_favorite(self, obj):
        request = self.context.get('request')
        if not request:
            return False
        return is_post_favorite(request.user.profile, obj)

    def get_is_viewed(self, obj):
        request = self.context.get('request')
        if not request:
            return False
        return is_post_favorite(request.user.profile, obj)

    def get_likes(self, obj):
        return likes_count(obj)

    def get_comments(self, obj):
        return comments_count(obj)

    def get_shares(self, obj):
        return share_count(obj)

    def get_views(self, obj):
        return post_views_count(obj)

    class Meta:
        model = Post
        fields = ('uuid', 'profile', 'sound', 'video_file', 'video_gif',
                  'description', 'category', 'likes', 'shares', 'comments',
                  'views', 'is_favorite', 'is_downloadable', 'is_viewed')
示例#11
0
class SoundSerializer(serializers.ModelSerializer):
    """Serializer for sound model."""
    profile = ProfileSerializer()
    category = SoundCategorySerializer()
    views = serializers.SerializerMethodField()
    is_favorite = serializers.SerializerMethodField()

    def get_is_favorite(self, obj):
        request = self.context.get('request')
        if not request:
            return False
        return is_sound_favorite(request.user.profile, obj)

    def get_views(self, obj):
        return sound_views_count(obj)

    class Meta:
        model = Sound
        fields = ('uuid', 'name', 'profile', 'sound_file', 'first_video',
                  'copyright', 'category', 'sound_cover', 'views',
                  'is_favorite')
示例#12
0
文件: views.py 项目: beatum/tikup
    def get(self, request, follow_tag):
        """
        Get list of followers or following.

        Available tag:
        1. follower
        2. following
        """
        if follow_tag.lower() == 'follower':
            uuid_list = FollowerMap.objects.filter(
                following=request.user.profile).values_list('follower__uuid',
                                                            flat=True)
        elif follow_tag.lower() == 'following':
            uuid_list = FollowerMap.objects.filter(
                follower=request.user.profile).values_list('following__uuid',
                                                           flat=True)
        else:
            raise Exception('Proper Tag was not passed.')
        profiles = Profile.objects.filter(uuid__in=uuid_list)
        serialized = ProfileSerializer(profiles,
                                       many=True,
                                       context={'request': request})
        return Response(data=serialized.data, status=status.HTTP_200_OK)