예제 #1
0
    def get_emoji_counts_for_post_with_id(cls,
                                          post_id,
                                          emoji_id=None,
                                          reactor_id=None):
        PostReaction = get_post_reaction_model()
        Emoji = get_emoji_model()

        emoji_query = Q(reactions__post_id=post_id)

        if emoji_id:
            emoji_query.add(Q(reactions__emoji_id=emoji_id), Q.AND)

        emojis_reacted_with = Emoji.objects.filter(emoji_query).distinct()

        emoji_counts = []

        for emoji in emojis_reacted_with:
            reaction_query = Q(post_id=post_id, emoji_id=emoji.pk)

            if reactor_id:
                reaction_query.add(Q(reactor_id=reactor_id), Q.AND)

            emoji_count = PostReaction.objects.filter(reaction_query).count()
            emoji_counts.append({'emoji': emoji, 'count': emoji_count})

        emoji_counts.sort(key=lambda x: x['count'], reverse=True)

        return emoji_counts
예제 #2
0
 def get_emoji_counts_for_post_with_id(cls,
                                       post_id,
                                       emoji_id=None,
                                       reactor_id=None):
     Emoji = get_emoji_model()
     return Emoji.get_emoji_counts_for_post_with_id(post_id=post_id,
                                                    emoji_id=emoji_id,
                                                    reactor_id=reactor_id)
예제 #3
0
    def get_emoji_counts_for_post_with_id(cls,
                                          post_id,
                                          emoji_id=None,
                                          reactor_id=None):
        Emoji = get_emoji_model()

        emoji_query = Q(reactions__post_id=post_id, )

        if emoji_id:
            emoji_query.add(Q(reactions__emoji_id=emoji_id), Q.AND)

        if reactor_id:
            emoji_query.add(Q(reactions__reactor_id=reactor_id), Q.AND)

        emojis = Emoji.objects.filter(emoji_query).annotate(
            Count('reactions')).distinct().order_by('-reactions__count').all()

        return [{
            'emoji': emoji,
            'count': emoji.reactions__count
        } for emoji in emojis]
예제 #4
0
    def __init__(self):
        PostReaction = get_post_reaction_model()
        PostComment = get_post_comment_model()
        User = get_user_model()
        Emoji = get_emoji_model()
        Post = get_post_model()
        CommunityInvite = get_community_invite_model()
        Community = get_community_model()

        class NotificationUserSerializer(serializers.ModelSerializer):
            class Meta:
                model = User
                fields = (
                    'id',
                    'username',
                )

        class NotificationEmojiSerializer(serializers.ModelSerializer):
            class Meta:
                model = Emoji
                fields = (
                    'id',
                    'keyword',
                )

        class NotificationPostSerializer(serializers.ModelSerializer):
            class Meta:
                model = Post
                fields = (
                    'id',
                    'uuid',
                )

        class NotificationPostReactionSerializer(serializers.ModelSerializer):
            reactor = NotificationUserSerializer()
            emoji = NotificationEmojiSerializer()
            post = NotificationPostSerializer()

            class Meta:
                model = PostReaction
                fields = ('id', 'reactor', 'emoji', 'post')

        self.NotificationPostReactionSerializer = NotificationPostReactionSerializer

        class NotificationCommunitySerializer(serializers.ModelSerializer):
            class Meta:
                model = Community
                fields = ('id', 'name', 'title')

        class NotificationCommunityInviteSerializer(serializers.ModelSerializer
                                                    ):
            creator = NotificationUserSerializer()
            invited_user = NotificationUserSerializer()
            community = NotificationCommunitySerializer()

            class Meta:
                model = CommunityInvite
                fields = ('id', 'creator', 'invited_user', 'community')

        self.NotificationCommunityInviteSerializer = NotificationCommunityInviteSerializer

        class NotificationPostCommentSerializer(serializers.ModelSerializer):
            commenter = NotificationUserSerializer()
            post = NotificationPostSerializer()

            class Meta:
                model = PostComment
                fields = ('id', 'commenter', 'post')

        self.NotificationPostCommentSerializer = NotificationPostCommentSerializer

        class NotificationPostCommentReplySerializer(
                serializers.ModelSerializer):
            commenter = NotificationUserSerializer()
            post = NotificationPostSerializer()

            class Meta:
                model = PostComment
                fields = ('id', 'commenter', 'post')

        self.NotificationPostCommentReplySerializer = NotificationPostCommentReplySerializer

        class FollowNotificationSerializer(serializers.Serializer):
            following_user = NotificationUserSerializer()

        self.FollowNotificationSerializer = FollowNotificationSerializer

        class ConnectionRequestNotificationSerializer(serializers.Serializer):
            connection_requester = NotificationUserSerializer()

        self.ConnectionRequestNotificationSerializer = ConnectionRequestNotificationSerializer
예제 #5
0
def emoji_id_exists(list_id):
    Emoji = get_emoji_model()
    if not Emoji.objects.filter(pk=list_id).exists():
        raise ValidationError(_('No emoji with the provided id exists.'), )