def delete(self, session): """deletes object from database""" db_object = session.query(CategoryTable).filter_by( name=self.name).one() if self.created_by == db_object.created_by: session.delete(db_object) ItemModel.delete_category_group(db_object.id, session) session.commit() else: """does not process deletion if created_by is changed""" self.errors = 'Only ' + db_object.created_by + ' can delete' return self
def update(self, form_data): """Updates an item and returns a json object with the item values""" try: """form includes user_token, which is used to get user email""" user = UserModel(form_data['user_token']) form_data['created_by'] = user.email item = ItemModel(form_data).update(self.db_session) except exc.IntegrityError as e: self.db_session.rollback() item = ItemModel({'errors': 'Error Updating Item'}) finally: self.db_session.close() return jsonify(item.attributes())
def index(self): """Queries categories and items, then renders index view""" categories = CategoryModel.all(self.db_session) items = ItemModel.latest(self.db_session) self.db_session.close() return render_template( 'categories/index.html', categories=categories, items=items )
def show(self, title, headers): """Queries single item. Returns html or json view""" item = ItemModel.find(self.db_session, title) self.db_session.close() if headers == 'application/json': return jsonify(item.attributes()) else: categories = CategoryModel.all(self.db_session) return render_template('items/show.html', item=item, categories=categories)
def put (self, name): #change item data = Item.parser.parse_args() item = ItemModel.find_by_name(name) updated_item = ItemModel(name, data['price']) if item is None: try: updated_item.insert() except: return {"message":" An error occurred inserting the item"}, 500 else: try: updated_item.update() except: raise return {"message":" An error occurred updating the item"}, 500 return updated_item.json()
def index(self, category_name, headers): """Queries category and related items, then renders index view""" category = CategoryModel.find(self.db_session, category_name) items = ItemModel.category_group(self.db_session, category.id) self.db_session.close() if headers == 'application/json': json_items = [] for item in items: json_items.append(item.attributes()) return jsonify({ 'category': category.attributes(), 'items': json_items }) else: return render_template('items/index.html', category=category, items=items)
def post(self, name): if ItemModel.find_by_name(name): return {'message': "An item with name '{}' already exists".format(name)}, 400 data = Item.parser.parse_args() item = ItemModel(name, data['price']) try: ItemModel.insert(item) except: return {"message": "An error ocurred inserting the item."}, 500 return item.json(), 201
def get(self, name): item = ItemModel.find_by_name(name) if item: return item.json() else: return {'message': 'Item not found'}, 404