[IMP] use http.send_file() for /logo.png

This commit is contained in:
Fabien Meghazi 2014-09-03 14:45:05 +02:00
parent 6fd3982e23
commit eea8d81a86
1 changed files with 10 additions and 11 deletions

View File

@ -32,6 +32,7 @@ except ImportError:
import openerp
import openerp.modules.registry
from openerp.addons.base.ir.ir_qweb import AssetsBundle, QWebTemplateNotFound
from openerp.modules import get_module_resource
from openerp.tools import topological_sort
from openerp.tools.translate import _
from openerp import http
@ -1180,7 +1181,8 @@ class Binary(http.Controller):
'/logo.png',
], type='http', auth="none")
def company_logo(self, dbname=None, **kw):
# TODO add etag, refactor to use /image code for etag
imgname = 'logo.png'
placeholder = functools.partial(get_module_resource, 'web', 'static', 'src', 'img')
uid = None
if request.session.db:
dbname = request.session.db
@ -1192,13 +1194,13 @@ class Binary(http.Controller):
uid = openerp.SUPERUSER_ID
if not dbname:
image_data = self.placeholder('logo.png')
response = http.send_file(placeholder(imgname))
else:
try:
# create an empty registry
registry = openerp.modules.registry.Registry(dbname)
with registry.cursor() as cr:
cr.execute("""SELECT c.logo_web
cr.execute("""SELECT c.logo_web, c.write_date
FROM res_users u
LEFT JOIN res_company c
ON c.id = u.company_id
@ -1206,17 +1208,14 @@ class Binary(http.Controller):
""", (uid,))
row = cr.fetchone()
if row and row[0]:
image_data = str(row[0]).decode('base64')
image_data = StringIO(str(row[0]).decode('base64'))
response = http.send_file(image_data, filename=imgname, mtime=row[1])
else:
image_data = self.placeholder('nologo.png')
response = http.send_file(placeholder('nologo.png'))
except Exception:
image_data = self.placeholder('logo.png')
response = http.send_file(placeholder(imgname))
headers = [
('Content-Type', 'image/png'),
('Content-Length', len(image_data)),
]
return request.make_response(image_data, headers)
return response
class Action(http.Controller):