diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r-- | ishtar/furnitures/views.py | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 34d5c4655..b6e6f91eb 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -25,7 +25,9 @@ import csv import json import datetime import optparse +import cStringIO as StringIO from tempfile import NamedTemporaryFile +import ho.pisa as pisa from django.http import HttpResponse, Http404 from django.template import RequestContext, loader @@ -238,9 +240,12 @@ def show_item(model, name): except ObjectDoesNotExist: return HttpResponse(None) doc_type = 'type' in dct and dct.pop('type') - dct['item'] = item + dct['item'], dct['item_name'] = item, name context_instance = RequestContext(request) context_instance.update(dct) + n = datetime.datetime.now() + filename = u'%s_%s_%s' % (name, slugify(unicode(item)), + n.strftime('%Y%m%d-%H%M%S')) if doc_type == "odt" and settings.XHTML2ODT_PATH and \ settings.ODT_TEMPLATE: tpl = loader.get_template('sheet_%s.html' % name) @@ -276,12 +281,23 @@ def show_item(model, name): return HttpResponse(content, content_type="application/xhtml") response = HttpResponse( mimetype='application/vnd.oasis.opendocument.text') - n = datetime.datetime.now() - filename = u'%s_%s_%s.odt' % (name, slugify(unicode(item)), - n.strftime('%Y%m%d-%H%M%S')) - response['Content-Disposition'] = 'attachment; filename=%s'%filename + response['Content-Disposition'] = 'attachment; filename=%s.odt' % \ + filename response.write(hop) return response + elif doc_type == 'pdf': + tpl = loader.get_template('sheet_%s.html' % name) + content = tpl.render(context_instance) + result = StringIO.StringIO() + pdf = pisa.pisaDocument(StringIO.StringIO(content.encode("utf-8")), + result) + response = HttpResponse(result.getvalue(), + mimetype='application/pdf') + response['Content-Disposition'] = 'attachment; filename=%s.pdf' % \ + filename + if not pdf.err: + return response + return HttpResponse(content, content_type="application/xhtml") else: tpl = loader.get_template('sheet_%s_window.html' % name) content = tpl.render(context_instance) |