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()
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()
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")
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)
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
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()
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
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)
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))
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
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)
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()
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)
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)
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))
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()
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
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
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
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()
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()
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)
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)
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
def AddTodo(self, request, context): return todo_pb2.Todo(body=request.body)
def deleteToDo(stub): print('-----Delete Todo-----') id = int(raw_input('Todo ID: ')) response = stub.DeleteTodo(todo_pb2.Todo(id=id)) print_response(response)
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
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")
def get_todo(self, user_input): self.get_one_todo_util(todo_pb2.Todo(id=user_input))
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