From a13f2218db51d82215588c16a4cd0705515f304b Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 12 Feb 2015 12:09:54 +0100 Subject: [PATCH] provide type option for using resource title for download filename --- browser/resource.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/browser/resource.py b/browser/resource.py index 2b7a7ec..b502c23 100644 --- a/browser/resource.py +++ b/browser/resource.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2012 Helmut Merz helmutm@cy55.de +# Copyright (c) 2015 Helmut Merz helmutm@cy55.de # # 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 @@ -20,6 +20,7 @@ View class for resource objects. """ +import os.path import urllib from zope.cachedescriptors.property import Lazy from zope import component @@ -47,7 +48,7 @@ from loops.browser.common import EditForm, BaseView from loops.browser.concept import BaseRelationView, ConceptRelationView from loops.browser.concept import ConceptConfigureView from loops.browser.node import NodeView, node_macros -from loops.common import adapted, NameChooser, normalizeName +from loops.common import adapted, baseObject, NameChooser, normalizeName from loops.interfaces import IBaseResource, IDocument, ITextDocument from loops.interfaces import IMediaAsset as legacy_IMediaAsset from loops.interfaces import ITypeConcept @@ -211,6 +212,16 @@ class ResourceView(BaseView): data = context.data if useAttachment: filename = adapted(self.context).localFilename or getName(self.context) + if self.typeOptions('use_title_for_download_filename'): + base, ext = os.path.splitext(filename) + filename = context.title + vr = IVersionable(baseObject(context)) + if len(vr.versions) > 0: + filename = vr.generateName(filename, ext, vr.versionId) + else: + if not filename.endswith(ext): + filename += ext + filename = filename.encode('UTF-8') if self.typeOptions('no_normalize_download_filename'): filename = '"%s"' % filename else: