fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Offers have covers
[wolnelektury.git]
/
apps
/
api
/
handlers.py
diff --git
a/apps/api/handlers.py
b/apps/api/handlers.py
index
260384d
..
dbe905b
100644
(file)
--- a/
apps/api/handlers.py
+++ b/
apps/api/handlers.py
@@
-12,6
+12,7
@@
from django.core.cache import get_cache
from django.core.urlresolvers import reverse
from piston.handler import AnonymousBaseHandler, BaseHandler
from piston.utils import rc
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
from api.helpers import timestamp
from api.models import Deleted
@@
-93,11
+94,11
@@
class BookMediaHandler(BaseHandler):
@classmethod
def artist(cls, media):
@classmethod
def artist(cls, media):
- return media.
get_extra_info_value()
.get('artist_name', '')
+ return media.
extra_info
.get('artist_name', '')
@classmethod
def director(cls, media):
@classmethod
def director(cls, media):
- return media.
get_extra_info_value()
.get('director_name', '')
+ return media.
extra_info
.get('director_name', '')
@@
-106,7
+107,7
@@
class BookDetails(object):
@classmethod
def author(cls, book):
@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):
@classmethod
def href(cls, book):
@@
-134,6
+135,11
@@
class BookDetails(object):
def cover(cls, book):
return MEDIA_BASE + book.cover.url if book.cover else ''
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):
class BookDetailHandler(BaseHandler, BookDetails):
@@
-143,7
+149,7
@@
class BookDetailHandler(BaseHandler, BookDetails):
"""
allowed_methods = ['GET']
fields = ['title', 'parent', 'children'] + Book.formats + [
"""
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
category_plural[c] for c in book_tag_categories]
@piwik_track
@@
-192,9
+198,9
@@
class AnonymousBooksHandler(AnonymousBaseHandler, BookDetails):
if top_level:
books = books.filter(parent=None)
if audiobooks:
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:
if daisy:
- books = books.filter(media__type='daisy')
+ books = books.filter(media__type='daisy')
.distinct()
if books.exists():
return books
if books.exists():
return books
@@
-224,6
+230,10
@@
class BooksHandler(BookDetailHandler):
return rc.NOT_FOUND
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
# add categorized tags fields for Book
def _tags_getter(category):
@classmethod
@@
-410,7
+420,7
@@
class CatalogueHandler(BaseHandler):
def book_dict(book, fields=None):
all_fields = ['url', 'title', 'description',
'gazeta_link', 'wiki_link',
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',
'parent', 'parent_number',
'tags',
'license', 'license_description', 'source_name',
@@
-422,7
+432,7
@@
class CatalogueHandler(BaseHandler):
else:
fields = all_fields
else:
fields = all_fields
- extra_info = book.
get_extra_info_value()
+ extra_info = book.
extra_info
obj = {}
for field in fields:
obj = {}
for field in fields:
@@
-437,7
+447,7
@@
class CatalogueHandler(BaseHandler):
elif field in BookMedia.formats:
media = []
elif field in BookMedia.formats:
media = []
- for m in book.media.filter(type=field):
+ for m in book.media.filter(type=field)
.iterator()
:
media.append({
'url': m.file.url,
'size': m.file.size,
media.append({
'url': m.file.url,
'size': m.file.size,
@@
-449,10
+459,10
@@
class CatalogueHandler(BaseHandler):
obj[field] = book.get_absolute_url()
elif field == 'tags':
obj[field] = book.get_absolute_url()
elif field == 'tags':
- obj[field] = [t.id for t in book.tags.exclude(category__in=('book', 'set'))]
+ obj[field] = [t.id for t in book.tags.exclude(category__in=('book', 'set'))
.iterator()
]
elif field == 'author':
elif field == 'author':
- obj[field] = ", ".join(t.name for t in book.tags.filter(category='author'))
+ obj[field] = ", ".join(t.name for t in book.tags.filter(category='author')
.iterator()
)
elif field == 'parent':
obj[field] = book.parent_id
elif field == 'parent':
obj[field] = book.parent_id
@@
-489,7
+499,7
@@
class CatalogueHandler(BaseHandler):
last_change = since
for book in Book.objects.filter(changed_at__gte=since,
last_change = since
for book in Book.objects.filter(changed_at__gte=since,
- changed_at__lt=until):
+ changed_at__lt=until)
.iterator()
:
book_d = cls.book_dict(book, fields)
updated.append(book_d)
if updated:
book_d = cls.book_dict(book, fields)
updated.append(book_d)
if updated:
@@
-498,7
+508,7
@@
class CatalogueHandler(BaseHandler):
for book in Deleted.objects.filter(content_type=Book,
deleted_at__gte=since,
deleted_at__lt=until,
for book in Deleted.objects.filter(content_type=Book,
deleted_at__gte=since,
deleted_at__lt=until,
- created_at__lt=since):
+ created_at__lt=since)
.iterator()
:
deleted.append(book.id)
if deleted:
changes['deleted'] = deleted
deleted.append(book.id)
if deleted:
changes['deleted'] = deleted
@@
-524,7
+534,7
@@
class CatalogueHandler(BaseHandler):
obj[field] = tag.get_absolute_url()
elif field == 'books':
obj[field] = tag.get_absolute_url()
elif field == 'books':
- obj[field] = [b.id for b in Book.tagged_top_level([tag])]
+ obj[field] = [b.id for b in Book.tagged_top_level([tag])
.iterator()
]
elif field == 'sort_key':
obj[field] = tag.sort_key
elif field == 'sort_key':
obj[field] = tag.sort_key
@@
-562,7
+572,7
@@
class CatalogueHandler(BaseHandler):
for tag in Tag.objects.filter(category__in=categories,
changed_at__gte=since,
for tag in Tag.objects.filter(category__in=categories,
changed_at__gte=since,
- changed_at__lt=until):
+ changed_at__lt=until)
.iterator()
:
# only serve non-empty tags
if tag.book_count:
tag_d = cls.tag_dict(tag, fields)
# only serve non-empty tags
if tag.book_count:
tag_d = cls.tag_dict(tag, fields)
@@
-576,7
+586,7
@@
class CatalogueHandler(BaseHandler):
content_type=Tag,
deleted_at__gte=since,
deleted_at__lt=until,
content_type=Tag,
deleted_at__gte=since,
deleted_at__lt=until,
- created_at__lt=since):
+ created_at__lt=since)
.iterator()
:
deleted.append(tag.id)
if deleted:
changes['deleted'] = deleted
deleted.append(tag.id)
if deleted:
changes['deleted'] = deleted