X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/9a938c8b406ce05e3bca4a5a483d473ece9e17b0..39b99a8a8920dca527eb823b860303103389fd91:/src/api/emitters.py
diff --git a/src/api/emitters.py b/src/api/emitters.py
index 36babb2bf..50a2d4101 100644
--- a/src/api/emitters.py
+++ b/src/api/emitters.py
@@ -4,68 +4,13 @@
#
"""
Wrappers for piston Emitter classes.
-
-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
-from catalogue.models import Book, Fragment, Tag
-from django.utils.translation import get_language
-
-
-class SsiQS(object):
- """A wrapper for QuerySet that won't serialize."""
-
- def __init__(self, queryset):
- self.queryset = queryset
-
- def __unicode__(self):
- raise TypeError("This is not serializable.")
-
- 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(),
- })
- for instance in self.queryset:
- yield "" % url_pattern.replace('0000', str(instance.pk))
-
-
-class SsiEmitterMixin(object):
- def construct(self):
- 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()
-
-
-class SsiJsonEmitter(SsiEmitterMixin, JSONEmitter):
- def render(self, request):
- try:
- return super(SsiJsonEmitter, self).render(request)
- except TypeError:
- return '[%s]' % ",".join(self.construct().get_ssis('json'))
-
-Emitter.register('json', SsiJsonEmitter, 'application/json; charset=utf-8')
+from piston.emitters import Emitter
-class SsiXmlEmitter(SsiEmitterMixin, XMLEmitter):
+# hack
+class EpubEmitter(Emitter):
def render(self, request):
- try:
- return super(SsiXmlEmitter, self).render(request)
- except TypeError:
- return '\n' \
- '%s' % \
- ''.join(self.construct().get_ssis('xml'))
+ return self.data
-Emitter.register('xml', SsiXmlEmitter, 'text/xml; charset=utf-8')
+Emitter.register('epub', EpubEmitter, 'application/epub+zip')