X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..18511ed6b34798bf4d1cf9baab998aa43662bed4:/src/api/emitters.py diff --git a/src/api/emitters.py b/src/api/emitters.py index 2f6f7e75f..531ae19bb 100644 --- a/src/api/emitters.py +++ b/src/api/emitters.py @@ -9,6 +9,7 @@ When outputting a queryset of selected models, instead of returning XML or JSON stanzas, SSI include statements are returned. """ +from django.conf import settings from django.core.urlresolvers import reverse from django.db.models.query import QuerySet from piston.emitters import Emitter, XMLEmitter, JSONEmitter @@ -27,21 +28,22 @@ class SsiQS(object): def get_ssis(self, emitter_format): """Yields SSI include statements for the queryset.""" - url_pattern = reverse('api_include', - kwargs={'model': self.queryset.model.__name__.lower(), - 'pk': '0000', - 'emitter_format': emitter_format, - 'lang': get_language(), - }) + url_pattern = reverse( + 'api_include', + kwargs={ + 'model': self.queryset.model.__name__.lower(), + 'pk': '0000', + 'emitter_format': emitter_format, + 'lang': get_language(), + }) for instance in self.queryset: - yield "" % url_pattern.replace('0000', - str(instance.pk)) + yield "" % url_pattern.replace('0000', str(instance.pk)) class SsiEmitterMixin(object): def construct(self): - if isinstance(self.data, QuerySet) and self.data.model in (Book, - Fragment, Tag): + ssify_api = getattr(settings, 'SSIFY_API', True) + if ssify_api and isinstance(self.data, QuerySet) and self.data.model in (Book, Fragment, Tag): return SsiQS(self.data) else: return super(SsiEmitterMixin, self).construct() @@ -68,3 +70,10 @@ class SsiXmlEmitter(SsiEmitterMixin, XMLEmitter): Emitter.register('xml', SsiXmlEmitter, 'text/xml; charset=utf-8') + +# hack +class EpubEmitter(Emitter): + def render(self, request): + return self.data + +Emitter.register('epub', EpubEmitter, 'application/epub+zip')