-for format in ('xml', 'txt', 'html', 'epub', 'pdf'):
- setattr(BooksHandler, format, _file_getter(format))
+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']