Ejemplo n.º 1
0
    def mutate(cls, _, info, id):
        user = User.objects(email=get_jwt_identity()).first()

        idea = Idea.objects(id=id).first()

        if idea is None:
            return VoteIdeaMutation(result=ResponseMessageField(
                is_success=False, message="Not found"))

        if user not in idea.upvoter:
            try:
                idea.update(push__upvoter=user)
            except Exception as e:
                return VoteIdeaMutation(result=ResponseMessageField(
                    is_success=False, message=str(e)))

            idea_activity_logger(user=user, type="vote")

            return VoteIdeaMutation(result=ResponseMessageField(
                is_success=True, message="Vote success"))
        elif user in idea.upvoter:
            try:
                idea.update(pull__upvoter=user)
            except Exception as e:
                return VoteIdeaMutation(result=ResponseMessageField(
                    is_success=False, message=str(e)))

            return VoteIdeaMutation(result=ResponseMessageField(
                is_success=True, message="Vote cancel success"))
Ejemplo n.º 2
0
    def mutate(cls, _, info, id, update):
        user = User.objects(email=get_jwt_identity()).first()

        idea = Idea.objects(id=id, author=user).first()

        if idea is None:
            return UpdateIdeaMutation(result=ResponseMessageField(
                is_success=False, message="Not found"))

        try:
            idea.update(set__body=update)
        except Exception as e:
            return UpdateIdeaMutation(
                result=ResponseMessageField(is_success=False, message=str(e)))

        # TODO: User Log 남기는 기능은 함수로 따로 빼자

        return UpdateIdeaMutation(result=ResponseMessageField(
            is_success=True, message="Idea update success"))
Ejemplo n.º 3
0
def resolve_ideas(root, info, **kwargs):
    search = kwargs.get('search_string', None)
    filter_by = kwargs.get('filter_by', None)
    view_id = kwargs.get('view', None)
    start_rank = kwargs.get('start_rank', 1) - 1

    if (view_id is not None) and (view_id != ""):
        idea = Idea.objects(id=view_id).first()

        if idea is None:
            return [ResponseMessageField(is_success=False, message="Not found")]

        return [IdeasField(id=view_id,
                           author=idea.author.username,
                           title=idea.title,
                           body=idea.body,
                           created_at=idea.created_at,
                           upvoter=len([v.username for v in idea.upvoter]),
                           vote_checked=True if True in [True for v in idea.upvoter if v.email == get_jwt_identity()] else False,
                           comments=CommentResultField(comment_count=len(idea.comments),
                                                       comments=[CommentField(author=c.author.username, body=c.body)
                                                                 for c in idea.comments]),
                           category=idea.category)]

    ideas = Idea.objects[start_rank: start_rank + 30].order_by('point')

    if (filter_by is not None) and (filter_by != ""):
        ideas = [idea for idea in ideas if idea.category == filter_by]

    if (search is not None) and (search != ""):
        ideas = [idea for idea in ideas if (search in idea.body) or (search in idea.title)]

    return [IdeasField(id=str(idea.id),
                       author=idea.author.username,
                       title=idea.title,
                       body=idea.body,
                       created_at=idea.created_at,
                       upvoter=len([v.username for v in idea.upvoter]),
                       vote_checked=True if True in [True for v in idea.upvoter if v.email == get_jwt_identity()] else False,
                       comments=CommentResultField(comment_count=len(idea.comments),
                                                   comments=[CommentField(author=c.author.username, body=c.body)
                                                             for c in idea.comments]),
                       category=idea.category) for idea in ideas]
Ejemplo n.º 4
0
    def mutate(cls, _, info, id, comment):
        user = User.objects(email=get_jwt_identity()).first()

        idea = Idea.objects(id=id).first()

        if idea is None:
            return NewCommentMutation(result=ResponseMessageField(
                is_success=False, message="Not found"))
        try:
            idea.update(push__comments=Comment(author=user, body=comment))
        except Exception as e:
            return NewCommentMutation(
                result=ResponseMessageField(is_success=False, message=str(e)))

        user.update(inc__point=10)

        idea_activity_logger(user=user, type="comment")

        return NewCommentMutation(
            ResponseMessageField(is_success=True,
                                 message="Comment upload success"))