107 lines
3.9 KiB
Python
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
|