def mutate(cls, _, info, title, milestones, type, expiration): user = User.objects(email=get_jwt_identity()).first() if not user: return NewToDoMutation( ResponseMessageField(is_success=False, message="User not found")) type_enum = {1: "INFINITY", 2: "STANDARD", 3: "HARD"} type = type_enum.get(type, None) new_todo = ToDo( title=title, type=str(type), milestones=[Milestone(id=uuid4().hex, name=m) for m in milestones], expiration=expiration) new_todo.save() user.update_one(inc__point=30) user.update_one(push__todo=new_todo) todo_activity_logger(user=user, type="new") return NewToDoMutation( ResponseMessageField(is_success=True, message="Todo upload success"))
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 resolve_todo(root, info, **kwargs): order = kwargs.get('order_by', None) search = kwargs.get('search_string', None) view_id = kwargs.get('view', None) user = get_jwt_identity() todos = list(User.objects(email=user).first().todo) if view_id is not None: todo = [todo for todo in todos if todo.id == view_id] if todo == []: return [ ResponseMessageField(is_success=False, message="Not found") ] todo = todo[0] return [ ToDoField(id=str(todo.id), title=todo.title, type=todo.type, created_at=todo.created_at, milestones=[ MilestoneField(id=m.id, name=m.name, is_completed=m.is_completed) for m in todo.milestones ], expiration=todo.expiration, is_completed=todo.is_completed) ] if order is not None: try: todos.sort(key=lambda todo: todo[order]) except: return [ ResponseMessageField(is_success=False, message="Invalid option") ] if search is not None: todos = [t for t in todos if search in t.title] return [ ToDoField(id=str(t.id), title=t.title, type=t.type, created_at=t.created_at, milestones=[ MilestoneField(id=m.id, name=m.name, is_completed=m.is_completed) for m in t.milestones ], expiration=t.expiration, is_completed=t.is_completed) for t in todos ]
def mutate(cls, _, info, name): user = User.objects(email=get_jwt_identity()) item = StoreItem.objects(name=name).first() if (user.point - item.price) < 0: return BuyItemMutation( ResponseMessageField(is_success=False, message="You don't have enough balance")) user.update_one(dec__point=item.price) user.update_one(push__my_items=item) # User Log 남기는 기능은 함수로 따로 빼자 return ResponseMessageField(is_success=True, message="Payment success")
def resolve_post(root, info, **kwargs): id = kwargs.get("id", None) title = kwargs.get("title", None) posts = PostModel.objects(id=id, title=title) if posts.first() is None: return [ResponseMessageField(is_success=False, message="Not found")] return [ PostField( id=post.id, title=post.title, text=post.text, upload_on=post.upload_on, comment=[ CommentField( text=c.text, author=AccountField( id=c.author.id, username=c.author.username, register_on=c.author.register_on, ), ) for c in post.comment ], author=AccountField( id=post.author.id, username=post.author.username, register_on=post.author.register_on, ), ) for post in posts ]
def mutate(cls, _, info, todo_id, milestone_id): todo = ToDo.objects(id=todo_id, milestones__id=milestone_id) user = User.objects(email=get_jwt_identity(), todo=todo.first()).first() if user is None: return CompleteMilestoneMutation(result=ResponseMessageField(is_success=False, message="Not found")) try: todo.update(set__milestones__S__is_completed=True) except Exception as e: return CompleteMilestoneMutation(result=ResponseMessageField(is_success=False, message=str(e))) todo_activity_logger(user=user, type="milestone") return CompleteMilestoneMutation(result=ResponseMessageField(is_success=True, message="Milestone complete success"))
def mutate(cls, _, info, todo_id, milestone_id): todo = ToDo.objects(id=todo_id, milestones__id=milestone_id) user = User.objects(email=get_jwt_identity(), todo=todo.first()).first() if user is None: return DeleteMilestoneMutation(result=ResponseMessageField( is_success=False, message="Not found")) try: todo.update(pull__milestones__id=milestone_id) return DeleteMilestoneMutation(result=ResponseMessageField( is_success=True, message="Milestone delete success")) except Exception as e: return DeleteMilestoneMutation( result=ResponseMessageField(is_success=False, message=str(e)))
def mutate(cls, _, info, post_id, comment): post = PostModel.objects(id=post_id).first() new_comment = CommentModel( text=comment, author=AccountModel.objects(id=get_jwt_identity()).first() ) if post is None: return CommentLeaveMutation( ResponseMessageField(is_success=False, message="Unknown post id") ) post.update_one(push_comment=new_comment) return CommentLeaveMutation( ResponseMessageField( is_success=True, message="Comment successfully uploaded" ) )
def mutate(cls, _, info, id): todo = ToDo.objects(id=id).first() user = User.objects(email=get_jwt_identity(), todo=todo).first() if user is None: return DeleteToDoMutation(result=ResponseMessageField( is_success=False, message="Not found")) try: user.update(pull__todo=todo) todo.delete() except Exception as e: return DeleteToDoMutation( result=ResponseMessageField(is_success=False, message=str(e))) # TODO: User Log 남기는 기능은 함수로 따로 빼자 return DeleteToDoMutation(result=ResponseMessageField( is_success=True, message="Todo delete 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 mutate(cls, _, info, id): todo = ToDo.objects(id=id).first() user = User.objects(email=get_jwt_identity(), todo=todo).first() if user is None: return CompleteToDoMutation( ResponseMessageField(is_success=False, message="Not Found")) try: todo.update(set__is_completed=True) except Exception as e: return CompleteToDoMutation( ResponseMessageField(is_success=False, message=str(e))) todo_activity_logger(user=user, type="todo") return CompleteToDoMutation( ResponseMessageField(is_success=True, message="Todo complete success"))
def mutate(cls, _, info, id, new_title): todo = ToDo.objects(id=id).first() user = User.objects(email=get_jwt_identity(), todo=todo).first() if user is None: return UpdateToDoMutation( ResponseMessageField(is_success=False, message="Not Found")) try: todo.update(set__title=new_title) except Exception as e: return UpdateToDoMutation( ResponseMessageField(is_success=False, message=str(e))) # TODO: User Log 남기는 기능은 함수로 따로 빼자 return UpdateToDoMutation( ResponseMessageField(is_success=True, message="Todo update success"))
def mutate(cls, _, info, id, update): user = User.objects(email=get_jwt_identity()).first() memo = [memo for memo in user.quick_memo if str(memo.id) == id] if memo == []: return UpdateQuickMemoMutation(result=ResponseMessageField( is_success=False, message="Not found")) memo = memo[0] try: memo.update(set__body=update) except Exception as e: return UpdateQuickMemoMutation( result=ResponseMessageField(is_success=False, message=str(e))) # TODO: User Log 남기는 기능은 함수로 따로 빼자 return UpdateQuickMemoMutation(result=ResponseMessageField( is_success=True, message="Memo update success"))
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"))
def mutate(cls, _, info, title, body): user = User.objects(email=get_jwt_identity()) new_memo = QuickMemo(title=title, body=body) new_memo.save() user.update_one(push__quick_memo=new_memo) # TODO: User Log 남기는 기능은 함수로 따로 빼자 return NewQuickMemoMutation(result=ResponseMessageField(is_success=True, message="Quick memo upload success"))
def resolve_account(root, info, **kwargs): id = kwargs.get("id", None) username = kwargs.get("username", None) accounts = AccountModel.objects(id=id, username=username) if accounts.first() is None: return ResponseMessageField(is_success=False, message="Not found") return [ AccountField(id=account.id, username=account.username, register_on=account.register_on) for account in accounts ]
def mutate(cls, _, info, title, body, category): author = User.objects(email=get_jwt_identity()).first() new_idea = Idea(author=author, title=title, body=body, category=category) new_idea.save() author.update(inc__point=50) author.update(push__ideas=new_idea) idea_activity_logger(user=author, type="new") return NewIdeaMutation(result=ResponseMessageField( is_success=True, message="Idea upload success"))
def mutate(self, info, **kwargs): user = AccountModel.objects(**kwargs).first() if user is not None: access_token = create_access_token(identity=kwargs["id"]) refresh_token = create_refresh_token(identity=str(uuid4())) return AuthMutation( AuthField( access_token=access_token, refresh_token=refresh_token, message="Login Success", ) ) else: return AuthMutation( ResponseMessageField(is_success=False, message="Login failed") )
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 resolve_quick_memo(root, info, **kwargs): view_id = kwargs.get('view', None) user = get_jwt_identity() memos = list(User.objects(email=user).first().quick_memo) memos.sort(key=lambda memo: memo.created_at) memos.reverse() if view_id is not None: memo = [memo for memo in memos if view_id == memo.id] if memo == []: return [ ResponseMessageField(is_success=False, message="Not found") ] memo = memo[0] return [QuickMemoField(id=memo.id, title=memo.title, body=memo.body)] return [QuickMemoField(id=m.id, title=m.title, body=m.body) for m in memos]
def mutate(root, info, **kwargs): AccountModel(**kwargs).save() return RegisterMutation( ResponseMessageField(is_success=True, message="Successfully registered") )