def post(self, account_id, todo_list_id, todo_item_id): self.response.headers['Content-Type'] = 'application/json' try: account = Account.get_by_id(int(account_id)) todo_list = TodoList.get_by_id(id=int(todo_list_id), parent=account.key) item_data = json.loads(self.request.body) todo_iem = TodoItem.get_by_id(id=int(todo_item_id), parent=todo_list.key) if todo_iem: todo_iem.populate(**item_data) todo_iem.put() item_dict = todo_iem.to_dict(exclude=['created', 'updated', 'todo_list']) item_dict['id'] = todo_iem.key.id() self.response.out.write(json.dumps(item_dict)) else: result = {'error': 'Bad Request', 'message': 'Invalid todo item %s' % todo_item_id} self.response.set_status(400, json.dumps(result)) self.response.out.write(json.dumps(result)) except AttributeError as ae: result = {'error': 'Bad request', 'message': ae.message} self.response.set_status(400, json.dumps(result)) self.response.out.write(json.dumps(result)) except Exception as e: result = {'error': 'Unexpected error has occurred', 'message': e.message} self.response.set_status(500, json.dumps(result)) self.response.out.write(json.dumps(result))
def list_handler_method(self, *args): list_id = args[0] list_id = long(list_id) my_list = TodoList.get_by_id(list_id) if not my_list: self.not_found() return args = list(args) args[0] = my_list return method(self, *args)
def get(self, account_id, todo_list_id): self.response.headers['Content-Type'] = 'application/json' try: account = Account.get_by_id(int(account_id)) todo_list = TodoList.get_by_id(id=int(todo_list_id), parent=account.key) todo_list_dict = todo_list.to_dict(exclude=['account', 'created', 'updated']) self.response.out.write(json.dumps(todo_list_dict)) except Exception as e: result = {'error': 'Unexpected error has occurred', 'message': e.message} self.response.set_status(500, json.dumps(result)) self.response.out.write(json.dumps(result))
def get(self, account_id, todo_list_id): self.response.headers['Content-Type'] = 'application/json' try: account = Account.get_by_id(int(account_id)) todo_list = TodoList.get_by_id(id=int(todo_list_id), parent=account.key) todo_items = TodoItem.query(TodoItem.todo_list == todo_list.key, ancestor=todo_list.key).order(-TodoItem.created) todo_items_array = [] for item in todo_items: item_dict = item.to_dict(exclude=['created', 'updated', 'todo_list']) item_dict['id'] = item.key.id() todo_items_array.append(item_dict) result = {'todo_items': todo_items_array} self.response.out.write(json.dumps(result)) except Exception as e: result = {'error': 'Unexpected error has occurred', 'message': e.message} self.response.set_status(500, json.dumps(result)) self.response.out.write(json.dumps(result))
def post(self, account_id, todo_list_id): self.response.headers['Content-Type'] = 'application/json' try: data = json.loads(self.request.body) items = data.get('items', [data]) account = Account.get_by_id(int(account_id)) todo_list = TodoList.get_by_id(id=int(todo_list_id), parent=account.key) item_array = [] for item_data in items: item = TodoItem(text=item_data.get('text'), status=item_data.get('status'), todo_list=todo_list.key, parent=todo_list.key) item.put() item_array.append({'id': item.key.id()}) result = {'items': item_array} self.response.out.write(json.dumps(result)) except Exception as e: result = {'error': 'Unexpected error has occurred', 'message': e.message} self.response.set_status(500, json.dumps(result)) self.response.out.write(json.dumps(result))