[FIX] Can't translate menus
context was not passed while setting request.website forced to refactor a bit in order to make true model methods but stopped because it will be duplicated work when migrating to the new api bzr revid: fme@openerp.com-20131107151400-9dmtgz7xs34qmbmq
This commit is contained in:
parent
28b932a40d
commit
01a28b6e03
|
@ -37,7 +37,7 @@ logger = logging.getLogger(__name__)
|
||||||
def auth_method_public():
|
def auth_method_public():
|
||||||
registry = openerp.modules.registry.RegistryManager.get(request.db)
|
registry = openerp.modules.registry.RegistryManager.get(request.db)
|
||||||
if not request.session.uid:
|
if not request.session.uid:
|
||||||
request.uid = registry['website'].get_public_user().id
|
request.uid = registry['website'].get_public_user(request.cr, openerp.SUPERUSER_ID, request.context).id
|
||||||
else:
|
else:
|
||||||
request.uid = request.session.uid
|
request.uid = request.session.uid
|
||||||
http.auth_methods['public'] = auth_method_public
|
http.auth_methods['public'] = auth_method_public
|
||||||
|
|
|
@ -35,24 +35,19 @@ def route(routes, *route_args, **route_kwargs):
|
||||||
request.route_lang = kwargs.get('lang_code', None)
|
request.route_lang = kwargs.get('lang_code', None)
|
||||||
if not hasattr(request, 'website'):
|
if not hasattr(request, 'website'):
|
||||||
request.multilang = f.multilang
|
request.multilang = f.multilang
|
||||||
request.website = request.registry['website'].get_current()
|
# TODO: Select website, currently hard coded
|
||||||
|
request.website = request.registry['website'].browse(
|
||||||
|
request.cr, request.uid, 1, context=request.context)
|
||||||
|
|
||||||
if request.route_lang:
|
if request.route_lang:
|
||||||
lang_ok = [lg.code for lg in request.website.language_ids if lg.code == request.route_lang]
|
lang_ok = [lg.code for lg in request.website.language_ids if lg.code == request.route_lang]
|
||||||
if not lang_ok:
|
if not lang_ok:
|
||||||
return request.not_found()
|
return request.not_found()
|
||||||
request.website.preprocess_request(*args, **kwargs)
|
request.website.preprocess_request(request)
|
||||||
return f(*args, **kwargs)
|
return f(*args, **kwargs)
|
||||||
return wrap
|
return wrap
|
||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def auth_method_public():
|
|
||||||
registry = openerp.modules.registry.RegistryManager.get(request.db)
|
|
||||||
if not request.session.uid:
|
|
||||||
request.uid = registry['website'].get_public_user().id
|
|
||||||
else:
|
|
||||||
request.uid = request.session.uid
|
|
||||||
http.auth_methods['public'] = auth_method_public
|
|
||||||
|
|
||||||
def url_for(path_or_uri, lang=None, keep_query=None):
|
def url_for(path_or_uri, lang=None, keep_query=None):
|
||||||
location = path_or_uri.strip()
|
location = path_or_uri.strip()
|
||||||
url = urlparse.urlparse(location)
|
url = urlparse.urlparse(location)
|
||||||
|
@ -109,32 +104,28 @@ class website(osv.osv):
|
||||||
|
|
||||||
public_user = None
|
public_user = None
|
||||||
|
|
||||||
def get_public_user(self):
|
def get_public_user(self, cr, uid, context=None):
|
||||||
if not self.public_user:
|
if not self.public_user:
|
||||||
ref = request.registry['ir.model.data'].get_object_reference(request.cr, openerp.SUPERUSER_ID, 'website', 'public_user')
|
uid = openerp.SUPERUSER_ID
|
||||||
self.public_user = request.registry[ref[0]].browse(request.cr, openerp.SUPERUSER_ID, ref[1])
|
ref = self.pool['ir.model.data'].get_object_reference(cr, uid, 'website', 'public_user')
|
||||||
|
self.public_user = self.pool[ref[0]].browse(cr, uid, ref[1])
|
||||||
return self.public_user
|
return self.public_user
|
||||||
|
|
||||||
def get_lang(self):
|
def preprocess_request(self, cr, uid, ids, request, context=None):
|
||||||
website = request.registry['website'].get_current()
|
|
||||||
|
|
||||||
if hasattr(request, 'route_lang'):
|
|
||||||
lang = request.route_lang
|
|
||||||
else:
|
|
||||||
lang = request.params.get('lang', None) or request.httprequest.cookies.get('lang', None)
|
|
||||||
|
|
||||||
if lang not in [lg.code for lg in website.language_ids]:
|
|
||||||
lang = website.default_lang_id.code
|
|
||||||
|
|
||||||
return lang
|
|
||||||
|
|
||||||
def preprocess_request(self, cr, uid, ids, *args, **kwargs):
|
|
||||||
def redirect(url):
|
def redirect(url):
|
||||||
return werkzeug.utils.redirect(url_for(url))
|
return werkzeug.utils.redirect(url_for(url))
|
||||||
request.redirect = redirect
|
request.redirect = redirect
|
||||||
|
|
||||||
is_public_user = request.uid == self.get_public_user().id
|
is_public_user = request.uid == self.get_public_user(cr, uid, context).id
|
||||||
lang = self.get_lang()
|
|
||||||
|
# Select current language
|
||||||
|
if hasattr(request, 'route_lang'):
|
||||||
|
lang = request.route_lang
|
||||||
|
else:
|
||||||
|
lang = request.params.get('lang', None) or request.httprequest.cookies.get('lang', None)
|
||||||
|
if lang not in [lg.code for lg in request.website.language_ids]:
|
||||||
|
lang = request.website.default_lang_id.code
|
||||||
|
|
||||||
is_master_lang = lang == request.website.default_lang_id.code
|
is_master_lang = lang == request.website.default_lang_id.code
|
||||||
request.context.update({
|
request.context.update({
|
||||||
'lang': lang,
|
'lang': lang,
|
||||||
|
@ -147,16 +138,15 @@ class website(osv.osv):
|
||||||
'translatable': not is_public_user and not is_master_lang and request.multilang,
|
'translatable': not is_public_user and not is_master_lang and request.multilang,
|
||||||
})
|
})
|
||||||
|
|
||||||
def get_current(self):
|
def render(self, cr, uid, ids, template, values=None, context=None):
|
||||||
# WIP, currently hard coded
|
view = self.pool.get("ir.ui.view")
|
||||||
return self.browse(request.cr, request.uid, 1)
|
IMD = self.pool.get("ir.model.data")
|
||||||
|
user = self.pool.get("res.users")
|
||||||
|
|
||||||
def render(self, cr, uid, ids, template, values=None):
|
if not context:
|
||||||
view = request.registry.get("ir.ui.view")
|
context = {}
|
||||||
IMD = request.registry.get("ir.model.data")
|
|
||||||
user = request.registry.get("res.users")
|
|
||||||
|
|
||||||
qweb_context = request.context.copy()
|
qweb_context = context.copy()
|
||||||
|
|
||||||
if values:
|
if values:
|
||||||
qweb_context.update(values)
|
qweb_context.update(values)
|
||||||
|
@ -170,7 +160,6 @@ class website(osv.osv):
|
||||||
user_id=user.browse(cr, uid, uid),
|
user_id=user.browse(cr, uid, uid),
|
||||||
)
|
)
|
||||||
|
|
||||||
context = request.context.copy()
|
|
||||||
context.update(
|
context.update(
|
||||||
inherit_branding=qweb_context.setdefault('editable', False),
|
inherit_branding=qweb_context.setdefault('editable', False),
|
||||||
)
|
)
|
||||||
|
@ -189,7 +178,7 @@ class website(osv.osv):
|
||||||
|
|
||||||
if 'main_object' not in qweb_context:
|
if 'main_object' not in qweb_context:
|
||||||
try:
|
try:
|
||||||
main_object = request.registry[view_ref[0]].browse(cr, uid, view_ref[1])
|
main_object = self.pool[view_ref[0]].browse(cr, uid, view_ref[1])
|
||||||
qweb_context['main_object'] = main_object
|
qweb_context['main_object'] = main_object
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
@ -220,7 +209,7 @@ class website(osv.osv):
|
||||||
status=code,
|
status=code,
|
||||||
content_type='text/html;charset=utf-8')
|
content_type='text/html;charset=utf-8')
|
||||||
|
|
||||||
def pager(self, cr, uid, ids, url, total, page=1, step=30, scope=5, url_args=None):
|
def pager(self, cr, uid, ids, url, total, page=1, step=30, scope=5, url_args=None, context=None):
|
||||||
# Compute Pager
|
# Compute Pager
|
||||||
page_count = int(math.ceil(float(total) / step))
|
page_count = int(math.ceil(float(total) / step))
|
||||||
|
|
||||||
|
@ -291,15 +280,15 @@ class website(osv.osv):
|
||||||
if xids[view['id']]
|
if xids[view['id']]
|
||||||
]
|
]
|
||||||
|
|
||||||
def kanban(self, cr, uid, ids, model, domain, column, template, step=None, scope=None, orderby=None):
|
def kanban(self, cr, uid, ids, model, domain, column, template, step=None, scope=None, orderby=None, context=None):
|
||||||
step = step and int(step) or 10
|
step = step and int(step) or 10
|
||||||
scope = scope and int(scope) or 5
|
scope = scope and int(scope) or 5
|
||||||
orderby = orderby or "name"
|
orderby = orderby or "name"
|
||||||
|
|
||||||
get_args = dict(request.httprequest.args or {})
|
get_args = dict(request.httprequest.args or {})
|
||||||
model_obj = request.registry[model]
|
model_obj = self.pool[model]
|
||||||
relation = model_obj._columns.get(column)._obj
|
relation = model_obj._columns.get(column)._obj
|
||||||
relation_obj = request.registry[relation]
|
relation_obj = self.pool[relation]
|
||||||
|
|
||||||
get_args.setdefault('kanban', "")
|
get_args.setdefault('kanban', "")
|
||||||
kanban = get_args.pop('kanban')
|
kanban = get_args.pop('kanban')
|
||||||
|
@ -353,9 +342,9 @@ class website(osv.osv):
|
||||||
}
|
}
|
||||||
return request.website.render("website.kanban_contain", values)
|
return request.website.render("website.kanban_contain", values)
|
||||||
|
|
||||||
def kanban_col(self, cr, uid, ids, model, domain, page, template, step, orderby):
|
def kanban_col(self, cr, uid, ids, model, domain, page, template, step, orderby, context=None):
|
||||||
html = ""
|
html = ""
|
||||||
model_obj = request.registry[model]
|
model_obj = self.pool[model]
|
||||||
domain = safe_eval(domain)
|
domain = safe_eval(domain)
|
||||||
step = int(step)
|
step = int(step)
|
||||||
offset = (int(page)-1) * step
|
offset = (int(page)-1) * step
|
||||||
|
|
|
@ -28,13 +28,13 @@ from openerp.osv import osv
|
||||||
class Website(osv.Model):
|
class Website(osv.Model):
|
||||||
_inherit = "website"
|
_inherit = "website"
|
||||||
|
|
||||||
def preprocess_request(self, cr, uid, ids, *args, **kwargs):
|
def preprocess_request(self, cr, uid, ids, request, context=None):
|
||||||
project_obj = request.registry['project.project']
|
project_obj = request.registry['project.project']
|
||||||
project_ids = project_obj.search(cr, uid, [('privacy_visibility', "=", "public")], context=request.context)
|
project_ids = project_obj.search(cr, uid, [('privacy_visibility', "=", "public")], context=request.context)
|
||||||
|
|
||||||
request.context['website_project_ids'] = project_obj.browse(cr, uid, project_ids, request.context)
|
request.context['website_project_ids'] = project_obj.browse(cr, uid, project_ids, request.context)
|
||||||
|
|
||||||
return super(Website, self).preprocess_request(cr, uid, ids, *args, **kwargs)
|
return super(Website, self).preprocess_request(cr, uid, ids, request, context)
|
||||||
|
|
||||||
|
|
||||||
class website_project(http.Controller):
|
class website_project(http.Controller):
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import random
|
import random
|
||||||
import uuid
|
import uuid
|
||||||
import urllib
|
|
||||||
import simplejson
|
import simplejson
|
||||||
|
|
||||||
import werkzeug.exceptions
|
import werkzeug.exceptions
|
||||||
|
@ -54,11 +53,11 @@ def get_current_order():
|
||||||
|
|
||||||
class Website(osv.osv):
|
class Website(osv.osv):
|
||||||
_inherit = "website"
|
_inherit = "website"
|
||||||
def preprocess_request(self, cr, uid, ids, *args, **kwargs):
|
def preprocess_request(self, cr, uid, ids, request, context=None):
|
||||||
request.context.update({
|
request.context.update({
|
||||||
'website_sale_order': get_current_order(),
|
'website_sale_order': get_current_order(),
|
||||||
})
|
})
|
||||||
return super(Website, self).preprocess_request(cr, uid, ids, *args, **kwargs)
|
return super(Website, self).preprocess_request(cr, uid, ids, request, context=None)
|
||||||
|
|
||||||
class Ecommerce(http.Controller):
|
class Ecommerce(http.Controller):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue