[ADD] lang_info in rendering context
bzr revid: fme@openerp.com-20130827145116-jkgdvxmsrw7bpwe3
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
import simplejson
|
||||
|
||||
import openerp
|
||||
from openerp.osv import osv, orm
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.controllers import main
|
||||
from openerp.addons.web.http import request
|
||||
@@ -33,6 +33,8 @@ def urlplus(url, params):
|
||||
url += "%s=%s&" % (k, urllib.quote_plus(str(v)))
|
||||
return url
|
||||
|
||||
class WebsiteError(Exception):
|
||||
pass
|
||||
|
||||
class website(osv.osv):
|
||||
_name = "website" # Avoid website.website convention for conciseness (for new api). Got a special authorization from xmo and rco
|
||||
@@ -46,6 +48,35 @@ class website(osv.osv):
|
||||
self.public_user = request.registry[ref[0]].browse(request.cr, openerp.SUPERUSER_ID, ref[1])
|
||||
return self.public_user
|
||||
|
||||
def get_lang_info(self):
|
||||
fields = ['id', 'name', 'code', 'website_default']
|
||||
lang_obj = request.registry['res.lang']
|
||||
languages = lang_obj.search_read(
|
||||
request.cr, openerp.SUPERUSER_ID, [('website_activated', '=', True)], fields
|
||||
)
|
||||
activated = [lg['code'] for lg in languages]
|
||||
default = [lg['code'] for lg in languages if lg['website_default']]
|
||||
default = default[0] if default else None
|
||||
|
||||
# Try to get the language from cookie
|
||||
lang = request.httprequest.cookies.get('lang', None)
|
||||
if not lang or lang not in activated:
|
||||
# Try to get the default language
|
||||
if default:
|
||||
lang = default
|
||||
# Otherwise get the first activated language
|
||||
elif activated:
|
||||
lang = activated[0]
|
||||
# Otherwise the language setup is broken
|
||||
else:
|
||||
raise WebsiteError("Could not aquire default language")
|
||||
|
||||
return {
|
||||
'list': languages,
|
||||
'default': default,
|
||||
'selected': (lg for lg in languages if lg['code'] == lang).next(),
|
||||
}
|
||||
|
||||
def get_rendering_context(self, additional_values=None):
|
||||
debug = 'debug' in request.params
|
||||
is_logged = True
|
||||
@@ -54,6 +85,7 @@ class website(osv.osv):
|
||||
except: # TODO fme: check correct exception
|
||||
is_logged = False
|
||||
is_public_user = request.uid == self.get_public_user().id
|
||||
|
||||
values = {
|
||||
'debug': debug,
|
||||
'is_public_user': is_public_user,
|
||||
@@ -67,7 +99,8 @@ class website(osv.osv):
|
||||
'json': simplejson,
|
||||
'snipped': {
|
||||
'kanban': self.kanban
|
||||
}
|
||||
},
|
||||
'lang_info': self.get_lang_info(),
|
||||
}
|
||||
if additional_values:
|
||||
values.update(additional_values)
|
||||
@@ -236,6 +269,14 @@ class website(osv.osv):
|
||||
html += self.render(template, self.get_rendering_context({'object_id': object_id}))
|
||||
return html
|
||||
|
||||
class res_lang(osv.osv):
|
||||
_inherit = "res.lang"
|
||||
|
||||
_columns = {
|
||||
'website_activated': fields.boolean('Active on website'),
|
||||
'website_default': fields.boolean('Website default language'),
|
||||
}
|
||||
|
||||
class res_partner(osv.osv):
|
||||
_inherit = "res.partner"
|
||||
|
||||
|
||||
@@ -1,6 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="res_lang_tree" model="ir.ui.view">
|
||||
<field name="name">res.lang.tree website</field>
|
||||
<field name="model">res.lang</field>
|
||||
<field name="inherit_id" ref="base.res_lang_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="active" position="after">
|
||||
<field name="website_activated"/>
|
||||
<field name="website_default"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="res_lang_form" model="ir.ui.view">
|
||||
<field name="name">res.lang.form website</field>
|
||||
<field name="model">res.lang</field>
|
||||
<field name="inherit_id" ref="base.res_lang_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="active" position="after">
|
||||
<field name="website_activated"/>
|
||||
<field name="website_default"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
<record id="base.lang_en" model="res.lang">
|
||||
<field name="website_activated">True</field>
|
||||
<field name="website_default">True</field>
|
||||
</record>
|
||||
|
||||
<record id="public_user" model="res.users">
|
||||
<field name="name">public</field>
|
||||
|
||||
Reference in New Issue
Block a user