allow specification of filename on download

This commit is contained in:
Helmut Merz 2014-03-31 11:17:26 +02:00
parent ad30929cfb
commit 70b473a48a

View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # Copyright (c) 2014 Helmut Merz helmutm@cy55.de
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -188,7 +188,7 @@ class ResourceView(BaseView):
return DocumentView(context, self.request) return DocumentView(context, self.request)
return self return self
def show(self, useAttachment=False): def show(self, useAttachment=False, filename=None):
""" show means: "download"...""" """ show means: "download"..."""
# TODO: control access, e.g. to protected images # TODO: control access, e.g. to protected images
# if self.adapted.isProtected(): # if self.adapted.isProtected():
@ -205,12 +205,17 @@ class ResourceView(BaseView):
from loops.media.browser.asset import MediaAssetView from loops.media.browser.asset import MediaAssetView
view = MediaAssetView(context, self.request) view = MediaAssetView(context, self.request)
return view.show(useAttachment) return view.show(useAttachment)
else:
response.setHeader('Cache-Control', '')
response.setHeader('Pragma', '')
ti = IType(context).typeInterface ti = IType(context).typeInterface
if ti is not None: if ti is not None:
context = ti(context) context = ti(context)
data = context.data data = context.data
if useAttachment: if useAttachment:
filename = adapted(self.context).localFilename or getName(self.context) if filename is None:
filename = (adapted(self.context).localFilename or
getName(self.context))
if self.typeOptions('no_normalize_download_filename'): if self.typeOptions('no_normalize_download_filename'):
filename = '"%s"' % filename filename = '"%s"' % filename
else: else: