Exemplo n.º 1
0
 def GetTodo(self, request, context):
     todo_id = request.id
     todo = session.query(Todo).filter(Todo.id == todo_id).first()
     if todo:
         return todo_pb2.Todo(**self._row2dict(todo))
     else:
         return todo_pb2.Todo()
Exemplo n.º 2
0
    def GetTodo(self, request, context):
        try:
            if request.id == '':
                error_message = 'Invalid Input: Todo id is required.'
                logging.error(error_message)
                context.set_details(error_message)
                context.set_code(grpc.StatusCode.INVALID_ARGUMENT)
                return todo_pb2.Todo()

            todo_id = request.id
            todo = session.query(Todo).filter(Todo.id == todo_id).first()
            if todo:
                return todo_pb2.Todo(**self._row2dict(todo))
            else:
                error_message = 'Given Todo id is invalid.'
                logging.error(error_message)
                context.set_details(error_message)
                context.set_code(grpc.StatusCode.INVALID_ARGUMENT)
        except Exception as e:
            error_message = str(e)
            error_message_traceback = traceback.format_exc()

            logging.error(error_message_traceback)
            context.set_details(error_message)
            context.set_code(grpc.StatusCode.UNKNOWN)

            send_email(subject=error_message, body=error_message_traceback)

        return todo_pb2.Todo()
Exemplo n.º 3
0
    def list_todos_by_status(self, status):
        if status == 1:
            list_todos = todo_pb2.Todo(isdone=True)
        else:
            list_todos = todo_pb2.Todo(isdone=False)

        todos = self.stub.ListTodoByStatus(list_todos)
        count = count_iterable(todos)
        if count > 0:
            print(count)
            for todo in todos:
                print("todo added with %s, %s, %s" %
                      (todo.id, todo.text, todo.user.name))
        else:
            print("No list with given status")
Exemplo n.º 4
0
def run():
    # NOTE(gRPC Python Team): .close() is possible on a channel and should be
    # used in circumstances in which the with statement does not fit the needs
    # of the code.
    with grpc.insecure_channel('localhost:50051') as channel:
        stub = todo_pb2_grpc.TodoServiceStub(channel)
        response = stub.AddTodo(todo_pb2.Todo(body='Hello World'))
    print("Greeter client received: " + response.body)
Exemplo n.º 5
0
 def GetTodo(self, request, context):
     todo = utils.get_one_todo(request)
     if todo.status != todo_pb2.SUCCESS:
         return todo_pb2.Todo(id=request.id, status=todo_pb2.FAILED)
     else:
         todo = self.ConvertTodoModelTogRPC(todo)
         todo.status = todo_pb2.SUCCESS
         return todo
Exemplo n.º 6
0
 def GetTodo(self, request, context):
     try:
         if not request.id:
             raise ValueError("id must be present")
         todo = session.query(Todo).get(request.id)
         return todo_pb2.Todo(**todo.asdict())
     except Exception as e:
         print("Exception occured,{0}".format(e.__str__()))
         return Todo()
Exemplo n.º 7
0
 def GetAllTodos(self, request, context):
     response = todo_pb2.TodoList()
     todos = []
     for todo in self.todoList:
         todoObject = todo_pb2.Todo()
         todoObject.id = todo["id"]
         todoObject.task = todo["task"]
         todos.append(todoObject)
     response.data.extend(todos)
     return response
Exemplo n.º 8
0
 def ListTodos(self, request, context):
     data = list()
     todos = get_all_todos()
     for todo in todos:
         data.append(
             todo_pb2.Todo(id=todo.id,
                           todo=todo.todo,
                           note=todo.note,
                           status=todo.status))
     return todo_pb2.TodosList(data=data)
Exemplo n.º 9
0
 def add_one_todo(self, input_action, username):
     todo = self.stub.AddTodo(
         todo_pb2.Todo(text=input_action,
                       user=todo_pb2.User(name=username),
                       isdone=False,
                       status=todo_pb2.SUCCESS))
     if todo.status == todo_pb2.FAILED:
         print("FAILED: todo not added!", todo)
     else:
         print("todo added with %s " % (todo.text))
Exemplo n.º 10
0
    def GetTodo(self, request, context):
        todo = session.query(Todo).filter(Todo.id == request.id).first()
        todo_pb = todo_pb2.Todo()

        if todo:
            todo_pb.id = todo.id
            todo_pb.user_id = todo.user_id
            todo_pb.details = todo.details
            todo_pb.status = todo.status

        return todo_pb
Exemplo n.º 11
0
 def RemoveTodoHelper(self, request):
     try:
         import ipdb
         ipdb.set_trace()
         todo = self.session.query(Todo).filter(Todo.id == request.id).one()
         self.session.delete(todo)
         self.session.commit()
         todo.status = todo_pb2.SUCCESS
         return todo
     except exc.NoResultFound:
         return todo_pb2.Todo(status=todo_pb2.FAILED)
Exemplo n.º 12
0
    def GetAllTodos(self, request, context):
        todos = []
        try:
            todos = session.query(Todo).all()
            todos_response = []
            for todo in todos:
                todos_response.append(todo_pb2.Todo(**todo.asdict()))

            return todo_pb2.Todos(todos=todos_response)
        except Exception as e:
            print("Exception occured,{0}".format(e.__str__()))
            return Todos()
Exemplo n.º 13
0
    def GetUserTodos(self, request, context):
        user_id = request.id
        user = session.query(User).filter(User.id == user_id).first()
        if user:
            todos = user.todos
            todos_pb2 = []
            for todo in todos:
                todos_pb2.append(todo_pb2.Todo(**self._row2dict(todo)))
        else:
            return todo_pb2.TodosList()

        return TodosList(todos=todos_pb2)
Exemplo n.º 14
0
def updateToDoStatus(stub):
    print('-----Update Todo Status-----')
    id = int(raw_input('Todo ID: '))
    todo_status = -1
    while 0 > todo_status or todo_status > 3:
        print('----- Todo Statuses -----')
        print('0 --> INITIAL,    1 --> DRAFT,  2 --> IN_PROGRESS, 3 --> COMPLETED')
        todo_status = int(raw_input('Select a Todo Status: '))
        if(0 > todo_status or todo_status > 3):
            print " Error: Invalid Status."
    response = stub.UpdateTodo(todo_pb2.Todo(id=id, status=todo_status))
    print_response(response)
Exemplo n.º 15
0
def run():
    channel = grpc.insecure_channel('localhost:50051')
    stub = todo_pb2_grpc.TodosStub(channel)

    ip = 1
    while (ip!=0):
        ip = int(input("-----Select any option-----\n1. Add Todo\n2. List Todos\n3. Update Todo\n4. Delete Todo\n0. Exit\nEnter Choice: "))
        if ip==1:
            print('-----Add Todo-----')
            todo = input("Enter Todo: ")
            note = input("Enter Note: ")
            response = stub.AddTodo(todo_pb2.Todo(todo=todo, note=note, status=3))
            print('-----')
            print_response(response)
        elif ip==2:
            print('-----List Todos-----')
            response = stub.ListTodos(todo_pb2.ListTodosRequest(count=1))
            for todo in response.data:
                print(todo)
        elif ip==3:
            print('-----Update Todo-----')
            id = int(input("Enter todo id to update: "))
            print("Leave input fields blank to retain the orignal data")
            todo = input("Enter Updated Todo: ")
            note = input("Enter Updated Note: ")
            print("Status Codes:\n1 -> In Progress\n2 -> Completed\n3 -> Not Started")
            status = input("Enter Updated Status: ")
            if not status:
                status = 0
            else:
                status = int(status)
            response = stub.UpdateTodo(todo_pb2.Todo(id=id, todo=todo, note=note, status=status))
            print('-----')
            print_response(response)
        elif ip==4:
            print('-----Delete Todo-----')
            id = int(input("Enter todo id to delete: "))
            response = stub.DeleteTodo(todo_pb2.Todo(id=id))
            print('-----\nStatus: %s\nMessaage: %s' % (status_name(response.status), response.message))
Exemplo n.º 16
0
    def UpdateTodo(self, request, context):

        try:
            if not request.id:
                raise ValueError("id must be present")
            todo = session.query(Todo).filter(Todo.id == request.id).update(
                {'status': request.status})
            session.commit()
            return todo_pb2.Todo(
                **(session.query(Todo).get(request.id).asdict()))
        except Exception as e:
            print("Exception occured,{0}".format(e.__str__()))
            return Todo()
Exemplo n.º 17
0
 def AddTodo(self, request, context):
     if request.todo == '':
         response = todo_pb2.OperationResponse(todo=request)
         response.status = 2
         response.message = 'Required fields missing'
     else:
         todo = add_todo(request)
         response = todo_pb2.OperationResponse(todo=todo_pb2.Todo(
             id=todo.id, todo=todo.todo, note=todo.note,
             status=todo.status))
         response.status = 1
         response.message = 'New Todo "%s" created!' % response.todo.todo
     return response
Exemplo n.º 18
0
 def ListTodoByUser(self, request, context):
     import ipdb
     ipdb.set_trace()
     if isinstance(request, todo_pb2.User):
         try:
             username = request.name
             todos = utils.list_by_user(username)
             for todo in todos:
                 todo = self.ConvertTodoModelTogRPC(todo)
                 todo.status = todo_pb2.SUCCESS
                 yield todo
         except exc.NoResultFound:
             todo = todo_pb2.Todo(status=todo_pb2.FAILED)
             yield todo
Exemplo n.º 19
0
 def UpdateTodo(self, request, context):
     response = todo_pb2.OperationResponse(todo=request, status=2)
     message, todo = update_todo(request)
     if todo:
         response = todo_pb2.OperationResponse(
             todo=todo_pb2.Todo(id=todo.id,
                                todo=todo.todo,
                                note=todo.note,
                                status=todo.status),
             status=1,
             message=message)
     else:
         response.message = message
     return response
Exemplo n.º 20
0
 def CreateTodo(self, request, context):
     # todo_response = Todo()
     try:
         if request.todo_text:
             todo = Todo(todo_text=request.todo_text)
             session.add(todo)
             session.commit()
             todo_response = todo.asdict()
             return todo_pb2.Todo(**todo_response)
         else:
             raise ValueError("todo text must be present")
     except Exception as e:
         print("Exception occured,{0}".format(e.__str__()))
         return Todo()
Exemplo n.º 21
0
    def GetUserTodos(self, request, context):
        user = session.query(User).filter(User.id == request.id).first()

        if user:
            todoList = session.query(Todo).filter(Todo.user_id == user.id)
            todoList_pb2 = []
            for todo in todoList:
                todoList_pb2.append(
                    todo_pb2.Todo(id=todo.id,
                                  user_id=todo.user_id,
                                  details=todo.details,
                                  status=todo.status))
            return TodoList(todos=todoList_pb2)
        else:
            return TodoList()
Exemplo n.º 22
0
def get_todo(todo_id):
    try:
        stub.GetTodo(todo_pb2.Todo(id=todo_id))
    except grpc.RpcError as e:
        error_message = e.details()
        status_code = e.code()
        logging.error(error_message)
        send_email(subject="Todo - {} - StatusCode: {}".format(
            "get_todo", status_code.name),
                   body=error_message)

    except Exception as e:
        print(e.details())
        status_code = e.code()
        print(status_code.name)
        print(status_code.value)
Exemplo n.º 23
0
def run():
    channel = grpc.insecure_channel('localhost:50051')
    stub = todo_pb2_grpc.TodoServiceStub(channel)
    response = stub.CreateUser(
        todo_pb2.User(name='first user', email='*****@*****.**'))
    print("create user\n", response)

    if response.status.status == 1:
        user_id = response.user.id
        response = stub.GetUser(todo_pb2.User(id=user_id))
        print("get user\n", response)

        response = stub.CreateTodo(
            todo_pb2.Todo(user_id=user_id, details='first todo', status=1))
        print("create todo\n", response)

        if response.status.status == 1:
            todo_id = response.todo.id
            response = stub.GetTodo(todo_pb2.Todo(id=todo_id))
            print("get todo\n", response)

            response = stub.GetUserTodos(todo_pb2.User(id=user_id))
            print("get user todos\n", response)

            response = stub.CreateTodo(
                todo_pb2.Todo(user_id=user_id, details='second todo',
                              status=1))
            print("create second todo\n", response)

            if response.status.status == 1:
                todo_id = response.todo.id
                response = stub.GetTodo(todo_pb2.Todo(id=todo_id))
                print("get second todo\n", response)

                response = stub.GetUserTodos(todo_pb2.User(id=user_id))
                print("get user todos\n", response)

                response = stub.DeleteTodo(
                    todo_pb2.Todo(id=todo_id, user_id=user_id))
                print("delete second todo\n", response)

                response = stub.GetTodo(
                    todo_pb2.Todo(id=todo_id, user_id=user_id))
                print("get second todo\n", response)

                response = stub.GetUserTodos(todo_pb2.User(id=user_id))
                print("get user todos\n", response)

                response = stub.DeleteUser(todo_pb2.User(id=user_id))
                print("delete user\n", response)
                response = stub.GetUser(todo_pb2.User(id=user_id))
                print("get user\n", response)
Exemplo n.º 24
0
def read_todo_database():
    """Reads the to-do database.
  Returns:
    The full contents of the to-do database as a sequence of
      todo_pb2.todos.
  """
    todo_list = []

    with open("todo_db.json") as todo_db_file:
        for item in json.load(todo_db_file):
            todo = todo_pb2.Todo(
                id=item["id"],
                text=item["text"],
                user=todo_pb2.User(name=item["user"]),
                isdone=item["isdone"],
            )
            todo_list.append(todo)

    return todo_list
Exemplo n.º 25
0
 def AddTodo(self, request, context):
     return todo_pb2.Todo(body=request.body)
Exemplo n.º 26
0
def deleteToDo(stub):
    print('-----Delete Todo-----')
    id = int(raw_input('Todo ID: '))
    response = stub.DeleteTodo(todo_pb2.Todo(id=id))
    print_response(response)
Exemplo n.º 27
0
 def ConvertTodoModelTogRPC(self, todo):
     todo = todo_pb2.Todo(text=todo.text,
                          id=todo.id,
                          user=todo_pb2.User(name=todo.user.name),
                          isdone=todo.isdone)
     return todo
Exemplo n.º 28
0
 def remove_one_todo(self, input_action):
     todo = self.stub.RemoveTodo(todo_pb2.Todo(id=input_action))
     if todo.status == todo_pb2.SUCCESS:
         print("todo with id: %s removed" % (input_action))
     else:
         print("todo not removed")
Exemplo n.º 29
0
 def get_todo(self, user_input):
     self.get_one_todo_util(todo_pb2.Todo(id=user_input))
Exemplo n.º 30
0
 def Get(self, request, context):
     response = todo_func.Get_Database(request.id)
     if response is None:
         return todo_pb2.Todo(id=request, title="")
     else:
         return response