From 4ce2d60df8131b4e9314a12339ada265553533a5 Mon Sep 17 00:00:00 2001 From: Francesco Siddi Date: Fri, 8 Jan 2016 15:12:19 +0100 Subject: [PATCH] Added _format_name to handle existing extensions --- pillar/application/__init__.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/pillar/application/__init__.py b/pillar/application/__init__.py index 3e3e95f2..f52e0ef9 100644 --- a/pillar/application/__init__.py +++ b/pillar/application/__init__.py @@ -248,6 +248,14 @@ def update_file_name(item): downloading an asset we get a human-readable name. """ + def _format_name(name, format, size=None): + # If the name already has an extention, and such extension matches the + # format, only inject the size. + root, ext = os.path.splitext(name) + size = "-{0}".format(size) if size else '' + ext = ext if len(ext) > 1 and ext[1:] == format else ".{0}".format(format) + return "{0}{1}{2}".format(root, size, ext) + def _update_name(item, file_id): files_collection = app.data.driver.db['files'] f = files_collection.find_one({'_id': file_id}) @@ -257,14 +265,14 @@ def update_file_name(item): try: storage = GoogleCloudStorageBucket(str(item['project'])) blob = storage.Get(f['file_path'], to_dict=False) - storage.update_name(blob, "{0}.{1}".format( - item['name'], f['format'])) + name = _format_name(item['name'], f['format']) + storage.update_name(blob, name) try: # Assign the same name to variations for v in f['variations']: blob = storage.Get(v['file_path'], to_dict=False) - storage.update_name(blob, "{0}-{1}.{2}".format( - item['name'], v['size'], v['format'])) + name = _format_name(item['name'], v['format'], v['size']) + storage.update_name(blob, name) except KeyError: pass except AttributeError: