[ADD] lang_info in rendering context

bzr revid: fme@openerp.com-20130827145116-jkgdvxmsrw7bpwe3
This commit is contained in:
Fabien Meghazi
2013-08-27 16:51:16 +02:00
parent eb039323d2
commit 717e6ad280
2 changed files with 73 additions and 2 deletions
+43 -2
View File
@@ -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"
+30
View File
@@ -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>