from django.core.urlresolvers import reverse
from piston.handler import AnonymousBaseHandler, BaseHandler
from piston.utils import rc
+from sorl.thumbnail import default
from api.helpers import timestamp
from api.models import Deleted
@classmethod
def author(cls, book):
- return ",".join(t[0] for t in book.related_info()['tags']['author'])
+ return ",".join(t[0] for t in book.related_info()['tags'].get('author', []))
@classmethod
def href(cls, book):
def cover(cls, book):
return MEDIA_BASE + book.cover.url if book.cover else ''
+ @classmethod
+ def cover_thumb(cls, book):
+ return MEDIA_BASE + default.backend.get_thumbnail(
+ book.cover, "139x193").url if book.cover else ''
+
class BookDetailHandler(BaseHandler, BookDetails):
"""
allowed_methods = ['GET']
fields = ['title', 'parent', 'children'] + Book.formats + [
- 'media', 'url', 'cover'] + [
+ 'media', 'url', 'cover', 'cover_thumb'] + [
category_plural[c] for c in book_tag_categories]
@piwik_track
if top_level:
books = books.filter(parent=None)
if audiobooks:
- books = books.filter(media__type='mp3')
+ books = books.filter(media__type='mp3').distinct()
if daisy:
- books = books.filter(media__type='daisy')
+ books = books.filter(media__type='daisy').distinct()
if books.exists():
return books
return rc.NOT_FOUND
+class EBooksHandler(AnonymousBooksHandler):
+ fields = ('author', 'href', 'title', 'cover') + tuple(Book.ebook_formats)
+
+
# add categorized tags fields for Book
def _tags_getter(category):
@classmethod
def book_dict(book, fields=None):
all_fields = ['url', 'title', 'description',
'gazeta_link', 'wiki_link',
- ] + Book.formats + BookMedia.formats + [
+ ] + Book.formats + BookMedia.formats.keys() + [
'parent', 'parent_number',
'tags',
'license', 'license_description', 'source_name',