X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/06aa9a0cfb91249b55aafe26967730c3ea29ad96..11cf55cf2859a23edd2d1dba56e574d01cacce4f:/apps/api/handlers.py diff --git a/apps/api/handlers.py b/apps/api/handlers.py index be5993cd9..7f74c19e7 100644 --- a/apps/api/handlers.py +++ b/apps/api/handlers.py @@ -17,7 +17,7 @@ from sorl.thumbnail import default from api.helpers import timestamp from api.models import Deleted from catalogue.forms import BookImportForm -from catalogue.models import Book, Tag, BookMedia, Fragment +from catalogue.models import Book, Tag, BookMedia, Fragment, Collection from picture.models import Picture from picture.forms import PictureImportForm @@ -138,7 +138,7 @@ class BookDetails(object): @classmethod def cover_thumb(cls, book): return MEDIA_BASE + default.backend.get_thumbnail( - book.cover, "139x193").url + book.cover, "139x193").url if book.cover else '' @@ -258,6 +258,52 @@ for format in Book.formats: setattr(BookDetails, format, _file_getter(format)) +class CollectionDetails(object): + """Custom Collection fields.""" + + @classmethod + def href(cls, collection): + """ Returns URI in the API for the collection. """ + + return API_BASE + reverse("api_collection", args=[collection.slug]) + + @classmethod + def url(cls, collection): + """ Returns URL on the site. """ + + return WL_BASE + collection.get_absolute_url() + + @classmethod + def books(cls, collection): + return Book.objects.filter(collection.get_query()) + + + +class CollectionDetailHandler(BaseHandler, CollectionDetails): + allowed_methods = ('GET',) + fields = ['url', 'title', 'description', 'books'] + + @piwik_track + def read(self, request, slug): + print slug + """ Returns details of a collection, identified by slug. """ + try: + return Collection.objects.get(slug=slug) + except Collection.DoesNotExist: + return rc.NOT_FOUND + + +class CollectionsHandler(BaseHandler, CollectionDetails): + allowed_methods = ('GET',) + model = Collection + fields = ['url', 'href', 'title'] + + @piwik_track + def read(self, request): + """ Returns all collections. """ + return Collection.objects.all() + + class TagDetails(object): """Custom Tag fields."""