From 244d20515963fa6df89e5bc315280e037624dd61 Mon Sep 17 00:00:00 2001 From: Tristan Cavelier <tristan.cavelier@nexedi.com> Date: Fri, 27 Jan 2017 13:50:56 +0100 Subject: [PATCH] erp5_dms: increase amount of export/conversion choice by improving Base_getTargetFormatItemList to return a list of all indirect portal transform conversions. --- .../erp5_dms/Base_getTargetFormatItemList.py | 33 +++++-------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getTargetFormatItemList.py b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getTargetFormatItemList.py index 891b213cfc..1df93dd931 100644 --- a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getTargetFormatItemList.py +++ b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getTargetFormatItemList.py @@ -4,40 +4,23 @@ """ from Products.ERP5Type.Cache import CachingMethod -def contentTypeMatch(content_type, glob): - if '*' == glob[-1]: - # 'image/png' must match 'image/*' - index = glob.index('*') - return content_type[:index] == glob[:index] - else: - return content_type == glob - portal = context.getPortalObject() content_type = context.getContentType() def getTargetFormatItemList(content_type): - # without content type no wayto determine target format + # returns [(title, extension), ...] if content_type is None: return [] format_list = [] - output_content_type_list = [] - for obj in portal.portal_transforms.objectValues(): - for input in obj.inputs: - if contentTypeMatch(content_type, input) and \ - obj.output not in output_content_type_list and\ - obj.output!=content_type: - output_content_type_list.append(obj.output) - - for output_content_type in output_content_type_list: - mimetypes_registry_extension_list = portal.mimetypes_registry.lookup(output_content_type) - for mimetypes_registry_extension in mimetypes_registry_extension_list: - title = mimetypes_registry_extension.name() + available_mimetype_list = portal.portal_transforms.getAvailableTargetMimetypeList(content_type) + mimetype_registry = portal.mimetypes_registry + for available_mimetype in available_mimetype_list: + mimetype_info_list = mimetype_registry.lookup(available_mimetype) + for mimetype_info in mimetype_info_list: try: - format = mimetypes_registry_extension.extensions[0] + format_list.append((mimetype_info.name(), mimetype_info.extensions[0])) except IndexError: - format = None - if format is not None and format not in format_list: - format_list.append((title, format,)) + pass return format_list getTargetFormatItemList = CachingMethod(getTargetFormatItemList, -- 2.30.9