def get(self, id): load_options = ( subqueryload(Book.authors), subqueryload(Book.categories), ) book = Book.find_or_fail(id, load_options=load_options) data = book.json() data['authors'] = [book.json() for book in book.authors] data['categories'] = [ categories.json() for categories in book.categories ] return data
def put(self, id): book = Book.find_or_fail(id) data = self.parser.parse_args() authors = data.pop('authors', []) categories = data.pop('categories', []) for key, value in data.items(): if key == 'isbn' and self.check_for_isbn(id, value): return dict(message='ISBN already exists'), 409 setattr(book, key, value) append_authors_to_book(book, authors) append_categories_to_book(book, categories) book.save() return book.json()
def delete(self, id): book = Book.find_or_fail(id) book.delete() return None, 204