def put(self, plan_id, item_id, **kwargs): user = kwargs['user'] json = request.json new_item = Item.from_json(json) if new_item.id != item_id: on_error(error_message="Could not update item, ids do not match") plan = query(self.plan_repository.get(user_id=user.id, id=plan_id)).single_or_default( default=None) if not plan: abort(404, message="This plan does not exist") old_item = query(plan.items).where(lambda i: i.id == item_id).single_or_default(default=None) if not old_item: abort(404, message="This item does not exist") result = self.item_repository.add_or_update(new_item) if not result.success(): on_error(error_message="Could not update item", result=result) self.item_repository.save_changes() return new_item
def post(self, plan_id, **kwargs): user = kwargs['user'] json = request.json item = Item.from_json(json) plan = query(self.plan_repository.get(user_id=user.id, id=plan_id)).single_or_default( default=None) if not plan: abort(404, message="This plan does not exist") result = plan.add_item(item) if not result.success(): on_error(error_message="Could not create item for plan", result=result) result = self.plan_repository.add_or_update(plan) if not result.success(): on_error(error_message="Could not create item for plan", result=result) self.plan_repository.save_changes() return item
def from_list(self, args): items = [] for item in args: items.append(Item.from_json(item)) return items
def create_from_dict(self, args): return Item.create_from_dict(args)