[IMP] use http.send_file() for /logo.png
This commit is contained in:
parent
6fd3982e23
commit
eea8d81a86
|
@ -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):
|
||||
|
||||
|
|
Loading…
Reference in New Issue