You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2018/09/27 17:45:52 UTC

allura git commit: [#2578] Add Convert bmp to jpeg screenshots when uploading

Repository: allura
Updated Branches:
  refs/heads/master b37c80570 -> 10b0d7586


[#2578] Add Convert bmp to jpeg screenshots when uploading


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/10b0d758
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/10b0d758
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/10b0d758

Branch: refs/heads/master
Commit: 10b0d7586fb726eb0eb51f19d605fa9c5ff7761f
Parents: b37c805
Author: Shalitha <sh...@gmail.com>
Authored: Tue Sep 25 22:12:03 2018 +0530
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Thu Sep 27 17:40:37 2018 +0000

----------------------------------------------------------------------
 Allura/allura/ext/admin/admin_main.py | 12 ++++++++++--
 Allura/allura/model/filesystem.py     | 15 +++++++++++++--
 2 files changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/10b0d758/Allura/allura/ext/admin/admin_main.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index 1b61002..c2d8239 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -17,6 +17,7 @@
 
 import logging
 import re
+import os
 from random import randint
 from collections import OrderedDict
 from datetime import datetime
@@ -518,8 +519,15 @@ class ProjectAdminController(BaseController):
             flash('You may not have more than 6 screenshots per project.',
                   'error')
         elif screenshot is not None and screenshot != '':
+            future_bmp = False
+            e_filename, e_fileext = os.path.splitext(screenshot.filename)
             for screen in screenshots:
-                if screen.filename == screenshot.filename:
+                c_filename, c_fileext = os.path.splitext(screen.filename)
+                if c_fileext == '.png' and e_fileext.lower() == '.bmp' and e_filename == c_filename:
+                    future_bmp = True
+                    # If both filename(without ext.) equals and exiting file ext. is png and given file ext is bmp, there will be two similar png files.
+
+                if screen.filename == screenshot.filename or future_bmp:
                     screenshot.filename = re.sub('(.*)\.(.*)', r'\1-' + str(randint(1000,9999)) + r'.\2', screenshot.filename)
                     # if filename already exists append a random number
                     break
@@ -534,7 +542,7 @@ class ProjectAdminController(BaseController):
                     caption=caption,
                     sort=sort),
                 square=True, thumbnail_size=(150, 150),
-                thumbnail_meta=dict(project_id=c.project._id, category='screenshot_thumb'))
+                thumbnail_meta=dict(project_id=c.project._id, category='screenshot_thumb'), convert_bmp=True)
             g.post_event('project_updated')
         redirect('screenshots')
 

http://git-wip-us.apache.org/repos/asf/allura/blob/10b0d758/Allura/allura/model/filesystem.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/filesystem.py b/Allura/allura/model/filesystem.py
index 00a306e..3f2824c 100644
--- a/Allura/allura/model/filesystem.py
+++ b/Allura/allura/model/filesystem.py
@@ -16,6 +16,7 @@
 #       under the License.
 
 import os
+import re
 from cStringIO import StringIO
 import logging
 
@@ -37,7 +38,8 @@ SUPPORTED_BY_PIL = set([
     'image/pjpeg',
     'image/png',
     'image/x-png',
-    'image/gif'])
+    'image/gif',
+    'image/bmp'])
 
 
 class File(MappedClass):
@@ -151,6 +153,8 @@ class File(MappedClass):
         thumbnail = cls(
             filename=filename, content_type=content_type, **thumbnail_meta)
         format = image.format or 'png'
+        if format == 'BMP': # use jpg format if bmp is provided
+            format = 'PNG'
         with thumbnail.wfile() as fp_w:
             if 'transparency' in image.info:
                 image.save(fp_w,
@@ -167,7 +171,8 @@ class File(MappedClass):
                    thumbnail_meta=None,
                    square=False,
                    save_original=False,
-                   original_meta=None):
+                   original_meta=None,
+                   convert_bmp=False):
         if content_type is None:
             content_type = utils.guess_mime_type(filename)
         if not content_type.lower() in SUPPORTED_BY_PIL:
@@ -182,6 +187,12 @@ class File(MappedClass):
             return None, None
 
         format = image.format
+
+        if format == 'BMP' and convert_bmp: # use jpg format if bitmap is provided
+            format = 'PNG'
+            content_type = 'image/png'
+            filename = re.sub('.bmp$', '.png', filename, flags=re.IGNORECASE)
+ 
         if save_original:
             original_meta = original_meta or {}
             original = cls(