summaryrefslogtreecommitdiff
path: root/addons/web/controllers/main.py
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2016-05-19 13:52:08 +0200
committerNicolas Martinelli <nim@odoo.com>2016-05-19 13:52:08 +0200
commit03c032ecb9061ca30bea59a86d7373517ff67f46 (patch)
tree3e360261209f11640024a788e013c54332a99f39 /addons/web/controllers/main.py
parent1def9911df74c3df4d28b8a609d537cb156f0952 (diff)
[FIX] web: company logo file extension
The company logo file extension is always '.png', even if the logo is of another type such as 'jpg' or 'gif'. This is not an issue for decent browsers, but IE might not display the image under specific circumstancies, e.g. in combination with nginx. opw-676836
Diffstat (limited to 'addons/web/controllers/main.py')
-rw-r--r--addons/web/controllers/main.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 4b7634da132..3cd15189496 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
@@ -1077,7 +1078,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:
@@ -1090,7 +1092,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
@@ -1104,12 +1106,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