[ADD] @multilang attribute in website.route() decorator
bzr revid: fme@openerp.com-20130923115905-ajzm4e3t7w4j123g
This commit is contained in:
parent
db00b45803
commit
8075b1f65c
|
@ -15,14 +15,23 @@ from openerp.exceptions import AccessError, AccessDenied
|
|||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def route(*route_args, **route_kwargs):
|
||||
def route(routes, *route_args, **route_kwargs):
|
||||
def decorator(f):
|
||||
@http.route(*route_args, **route_kwargs)
|
||||
new_routes = routes if isinstance(routes, list) else [routes]
|
||||
if route_kwargs.get('multilang', False):
|
||||
route_kwargs.pop('multilang')
|
||||
for r in list(new_routes):
|
||||
new_routes.append('/<string(length=5):lang_code>' + r)
|
||||
@http.route(new_routes, *route_args, **route_kwargs)
|
||||
@functools.wraps(f, assigned=functools.WRAPPER_ASSIGNMENTS + ('func_name',))
|
||||
def wrap(*args, **kwargs):
|
||||
request.route_lang = None # WIP: decorator will support lang argument
|
||||
request.route_lang = kwargs.get('lang_code', None)
|
||||
if not hasattr(request, 'website'):
|
||||
request.website = request.registry['website'].get_current()
|
||||
if request.route_lang:
|
||||
lang_ok = [lg.code for lg in request.website.language_ids if lg.code == request.route_lang]
|
||||
if not lang_ok:
|
||||
return request.not_found()
|
||||
request.website.preprocess_request(*args, **kwargs)
|
||||
return f(*args, **kwargs)
|
||||
return wrap
|
||||
|
@ -78,11 +87,15 @@ class website(osv.osv):
|
|||
|
||||
def preprocess_request(self, cr, uid, ids, *args, **kwargs):
|
||||
is_public_user = request.uid == self.get_public_user().id
|
||||
lang = self.get_lang()
|
||||
is_master_lang = lang == request.website.default_lang_id.code
|
||||
request.context.update({
|
||||
'lang': lang,
|
||||
'is_public_user': is_public_user,
|
||||
'editable': not is_public_user, # TODO: check perms
|
||||
'is_master_lang': is_master_lang,
|
||||
'editable': not is_public_user,
|
||||
'translatable': not is_public_user and not is_master_lang,
|
||||
})
|
||||
request.context['lang'] = self.get_lang()
|
||||
|
||||
def get_current(self):
|
||||
# WIP, currently hard coded
|
||||
|
@ -106,9 +119,10 @@ class website(osv.osv):
|
|||
})
|
||||
|
||||
qweb_context.update(values)
|
||||
context = {
|
||||
context = request.context.copy()
|
||||
context.update({
|
||||
'inherit_branding': qweb_context.get('editable', False),
|
||||
}
|
||||
})
|
||||
|
||||
# check if xmlid of the template exists
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue