from api.models import Deleted
from catalogue.forms import BookImportForm
from catalogue.models import Book, Tag, BookMedia, Fragment, Collection
+from catalogue.utils import related_tag_name
from picture.models import Picture
from picture.forms import PictureImportForm
class BookDetails(object):
"""Custom fields used for representing Books."""
- @classmethod
- def author(cls, book):
- return ",".join(t[0] for t in book.related_info()['tags'].get('author', []))
-
@classmethod
def href(cls, book):
""" Returns an URI for a Book in the API. """
"""
allowed_methods = ('GET',)
model = Book
- fields = ['author', 'href', 'title', 'url', 'cover']
+ fields = book_tag_categories + ['href', 'title', 'url', 'cover', 'cover_thumb']
+
+ @classmethod
+ def genres(cls, book):
+ """ Returns all media for a book. """
+ return book.tags.filter(category='genre')
@piwik_track
def read(self, request, tags, top_level=False,
class BooksHandler(BookDetailHandler):
allowed_methods = ('GET', 'POST')
model = Book
- fields = ['author', 'href', 'title', 'url']
+ fields = book_tag_categories + ['href', 'title', 'url', 'cover', 'cover_thumb']
anonymous = AnonymousBooksHandler
def create(self, request, *args, **kwargs):
def get_tags(cls, book):
return book.tags.filter(category=category)
return get_tags
+def _tag_getter(category):
+ @classmethod
+ def get_tag(cls, book):
+ return ", ".join(related_tag_name(t) for t in book.related_info()['tags'].get(category, []))
+ return get_tag
for plural, singular in category_singular.items():
setattr(BookDetails, plural, _tags_getter(singular))
+ setattr(BookDetails, singular, _tag_getter(singular))
# add fields for files in Book
def _file_getter(format):