X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/5f176bb52a7a59bf88f5728e60a3a62e12fb3d54..df053d3c7f0f292d1ab4d3407313da6fd7489222:/apps/api/handlers.py diff --git a/apps/api/handlers.py b/apps/api/handlers.py index 7f74c19e7..b436024b1 100644 --- a/apps/api/handlers.py +++ b/apps/api/handlers.py @@ -18,6 +18,7 @@ from api.helpers import timestamp 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 @@ -105,10 +106,6 @@ class BookMediaHandler(BaseHandler): 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. """ @@ -168,7 +165,12 @@ class AnonymousBooksHandler(AnonymousBaseHandler, BookDetails): """ 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, @@ -214,7 +216,7 @@ class AnonymousBooksHandler(AnonymousBaseHandler, BookDetails): 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): @@ -240,8 +242,14 @@ def _tags_getter(category): 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):