[IMP] To allow to translate pages in version.

The translations of a page A in a version are applied to all the pages
with the same key of page A.
This commit is contained in:
Goffin Simon
2015-03-18 17:19:07 +01:00
parent 825c2b3ff5
commit 5611b5e2fa
3 changed files with 51 additions and 12 deletions
@@ -49,7 +49,7 @@
});
} else {
this.translate().then(function () {
mysuper.call(self);
mysuper.call(self, true);
if(self.gengo_translate){
self.translation_gengo_display()
}
@@ -145,14 +145,3 @@ class Versioning_Controller(Website):
exp_obj = request.env['website_version.experiment']
exp_obj.create(vals)
return existing_experiment
@http.route('/website/customize_template_get', type='json', auth='user', website=True)
def customize_template_get(self, key, full=False, bundles=False, **kw):
result = Website.customize_template_get(self, key, full=full, bundles=bundles, **kw)
check = []
res = []
for data in result:
if data['name'] not in check:
check.append(data['name'])
res.append(data)
return res
@@ -126,3 +126,53 @@ class view(models.Model):
all_id = self.search(cr, uid, [('key', '=', view.key)], context=dict(context or {}, active_test=False))
for v in self.browse(cr, uid, all_id, context=dict(context or {}, active_test=False)):
v.write({'active': not v.active})
@api.model
def translate_qweb(self, id_, arch, lang):
view = self.browse(id_)
if not view.key:
return super(view, self).translate_qweb(id_, arch, lang)
views = self.search([('key', '=', view.key), '|',
('website_id', '=', view.website_id.id), ('website_id', '=', False)])
fallback_views = self
for v in views:
if v.mode == 'primary' and v.inherit_id.mode == 'primary':
# template is `cloned` from parent view
fallback_views += view.inherit_id
views += fallback_views
def translate_func(term):
Translations = self.env['ir.translation']
trans = Translations._get_source('website', 'view', lang, term, views.ids)
return trans
self._translate_qweb(arch, translate_func)
return arch
@api.model
def customize_template_get(self, key, full=False, bundles=False, **kw):
result = super(view, self).customize_template_get(key, full=full, bundles=bundles, **kw)
check = []
res = []
for data in result:
if data['name'] not in check:
check.append(data['name'])
res.append(data)
return res
@api.model
def get_view_translations(self, xml_id, lang,
field=['id', 'res_id', 'value', 'state', 'gengo_translation']):
irt = self.pool['ir.translation']
view = self.browse(xml_id)
view_list = self.search([('key', '=', view.key),
'|', ('website_id', '=', view.website_id.id), ('website_id', '=', False)])
views_ids = []
for v in view_list:
views = self.customize_template_get(v.id, full=True)
views_ids += [v.get('id') for v in views if v.get('active')]
domain = [('type', '=', 'view'), ('res_id', 'in', views_ids), ('lang', '=', lang)]
element_list = irt.search_read(self.env.cr, self.env.uid,
domain, field, context=self.env.context)
for element in element_list:
if element['res_id'] in view_list.ids:
element['res_id'] = xml_id
return element_list