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"))
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"))
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]
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"))