odoo-module-colors_customiz.../controllers/web_contr.py

107 lines
3.9 KiB
Python

# -*- coding: utf-8 -*-
import re
import openerp
import functools
from openerp import SUPERUSER_ID
from openerp import http
from openerp.http import request
from openerp.tools.translate import _
from openerp.addons.web.controllers.main import Home
from openerp.addons.web.controllers.main import Binary
from openerp.addons.web.controllers.main import ensure_db
from openerp.addons.web.controllers.main import login_redirect
from openerp.modules import get_module_resource
from cStringIO import StringIO
class HomeStyle(Home):
@http.route('/web', type='http', auth="none")
def web_client(self, s_action=None, **kw):
ensure_db()
if request.session.uid:
if kw.get('redirect'):
return werkzeug.utils.redirect(kw.get('redirect'), 303)
if not request.uid:
request.uid = request.session.uid
theme_id = request.registry['res.users'].browse(request.cr,request.uid,request.uid, context=request.context).company_color_theme
theme_data = False
if theme_id:
if theme_id.footer_color:
footer_color = theme_id.footer_color
else:
footer_color = '#a24689'
if theme_id.footer_url:
footer_url = theme_id.footer_url
else:
footer_url = '/web'
theme_data = {
'footer_text':theme_id.footer_text,
'footer_url':footer_url,
'url_favicon':theme_id.url_favicon,
'footer_color':footer_color,
'meta_title':theme_id.meta_title
}
else:
theme_data = {
'footer_text':False,
'footer_url':False,
'url_favicon':False,
'footer_color':False,
'meta_title':False,
}
menu_data = request.registry['ir.ui.menu'].load_menus(request.cr, request.uid, context=request.context)
return request.render('web.webclient_bootstrap', qcontext={'menu_data': menu_data,'theme_data':theme_data})
else:
return login_redirect()
class Binary_ITL(Binary):
@http.route([
'/web/binary/company_logo',
'/logo',
'/logo.png',
], type='http', auth="none", cors="*")
def company_logo(self, dbname=None, **kw):
imgname = 'placeholder.png'
placeholder = functools.partial(get_module_resource, 'web', 'static', 'src', 'img')
uid = None
if request.session.db:
dbname = request.session.db
uid = request.session.uid
elif dbname is None:
dbname = db_monodb()
if not uid:
uid = openerp.SUPERUSER_ID
if not dbname:
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, c.write_date
FROM res_users u
LEFT JOIN res_company c
ON c.id = u.company_id
WHERE u.id = %s
""", (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])
else:
response = http.send_file(placeholder('placeholder.png'))
except Exception:
response = http.send_file(placeholder(imgname))
return response