diff options
Diffstat (limited to 'addons/web/controllers/main.py')
| -rw-r--r-- | addons/web/controllers/main.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 9d9f90a89df..18a9d55e601 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -4,6 +4,7 @@ import base64 import csv import functools import glob +import imghdr import itertools import jinja2 import logging @@ -1067,7 +1068,8 @@ class Binary(http.Controller): '/logo.png', ], type='http', auth="none", cors="*") def company_logo(self, dbname=None, **kw): - imgname = 'logo.png' + imgname = 'logo' + imgext = '.png' placeholder = functools.partial(get_resource_path, 'web', 'static', 'src', 'img') uid = None if request.session.db: @@ -1080,7 +1082,7 @@ class Binary(http.Controller): uid = openerp.SUPERUSER_ID if not dbname: - response = http.send_file(placeholder(imgname)) + response = http.send_file(placeholder(imgname + imgext)) else: try: # create an empty registry @@ -1094,12 +1096,14 @@ class Binary(http.Controller): """, (uid,)) row = cr.fetchone() if row and row[0]: - image_data = StringIO(str(row[0]).decode('base64')) - response = http.send_file(image_data, filename=imgname, mtime=row[1]) + image_base64 = str(row[0]).decode('base64') + image_data = StringIO(image_base64) + imgext = '.' + (imghdr.what(None, h=image_base64) or 'png') + response = http.send_file(image_data, filename=imgname + imgext, mtime=row[1]) else: response = http.send_file(placeholder('nologo.png')) except Exception: - response = http.send_file(placeholder(imgname)) + response = http.send_file(placeholder(imgname + imgext)) return response |
