Exemple #1
0
    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"))
Exemple #2
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"))
Exemple #3
0
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
    ]
Exemple #4
0
    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
    ]
Exemple #6
0
    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"))
Exemple #7
0
    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"
            )
        )
Exemple #9
0
    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"))
Exemple #10
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"))
Exemple #11
0
    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"))
Exemple #12
0
    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"))
Exemple #13
0
    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"))
Exemple #14
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"))
Exemple #15
0
    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"))
Exemple #16
0
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
    ]
Exemple #17
0
    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")
            )
Exemple #19
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]
Exemple #20
0
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]
Exemple #21
0
    def mutate(root, info, **kwargs):
        AccountModel(**kwargs).save()

        return RegisterMutation(
            ResponseMessageField(is_success=True, message="Successfully registered")
        )