diff options
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index f23116d21..a4b979bd9 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1777,6 +1777,33 @@ def get_bookmark(request, pk): ) +def gen_generate_doc(model): + + def func(request, pk, template_pk=None): + if not request.user.has_perm('view_' + model.SLUG, model): + return HttpResponse(content_type='text/plain') + try: + item = model.objects.get(pk=pk) + doc = item.publish(template_pk) + except model.DoesNotExist: + doc = None + if doc: + MIMES = {'odt': 'application/vnd.oasis.opendocument.text', + 'ods': 'application/vnd.oasis.opendocument.spreadsheet'} + ext = doc.split('.')[-1] + doc_name = item.get_filename() + "." + ext + mimetype = 'text/csv' + if ext in MIMES: + mimetype = MIMES[ext] + response = HttpResponse(open(doc), content_type=mimetype) + response['Content-Disposition'] = 'attachment; filename=%s' % \ + doc_name + return response + return HttpResponse(content_type='text/plain') + return func + + + class SearchQueryMixin(object): """ Manage content type and profile init |