[ADD] customizable qweb rendering, add translate flag on fields through this

bzr revid: xmo@openerp.com-20131008092233-9su66923zthl9jyg
This commit is contained in:
Xavier Morel
2013-10-08 11:22:33 +02:00
parent 3d5857d504
commit 510a4f51d2
4 changed files with 78 additions and 3 deletions
+1
View File
@@ -3,3 +3,4 @@
import ir_fields
import view
import website
import ir_qweb
+62
View File
@@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
import itertools
from openerp.osv import orm, fields
class QWeb(orm.AbstractModel):
""" QWeb object for rendering stuff in the website context
Website-context rendering needs to add some metadata to rendered fields,
as well as render a few fields differently.
Also, add methods to convert values back to openerp models.
"""
_name = 'website.qweb'
_inherit = 'ir.qweb'
def get_converter_for(self, field_type):
return self.pool.get(
'website.qweb.field.' + field_type,
self.pool['website.qweb.field'])
class Field(orm.AbstractModel):
_name = 'website.qweb.field'
_inherit = 'ir.qweb.field'
def attributes(self, cr, uid, field_name, record, options,
source_element, g_att, t_att, qweb_context):
column = record._model._all_columns[field_name].column
return itertools.chain(
super(Field, self).attributes(cr, uid, field_name, record, options,
source_element, g_att, t_att,
qweb_context),
[('data-oe-translate', 1 if column.translate else 0)]
)
class Float(orm.AbstractModel):
_name = 'website.qweb.field.float'
_inherit = ['website.qweb.field', 'ir.qweb.field.float']
class Text(orm.AbstractModel):
_name = 'website.qweb.field.text'
_inherit = ['website.qweb.field', 'ir.qweb.field.text']
class Selection(orm.AbstractModel):
_name = 'website.qweb.field.selection'
_inherit = ['website.qweb.field', 'ir.qweb.field.selection']
class ManyToOne(orm.AbstractModel):
_name = 'website.qweb.field.many2one'
_inherit = ['website.qweb.field', 'ir.qweb.field.many2one']
class HTML(orm.AbstractModel):
_name = 'website.qweb.field.html'
_inherit = ['website.qweb.field', 'ir.qweb.field.html']
class Image(orm.AbstractModel):
_name = 'website.qweb.field.image'
_inherit = ['website.qweb.field', 'ir.qweb.field.image']
class Currency(orm.AbstractModel):
_name = 'website.qweb.field.currency'
_inherit = ['website.qweb.field', 'ir.qweb.field.currency']
+3 -2
View File
@@ -168,8 +168,9 @@ class website(osv.osv):
return self.render(cr, uid, ids, 'website.404', qweb_context)
try:
return view.render(cr, uid, "%s.%s" % (module, xmlid),
qweb_context, context=context)
return view.render(
cr, uid, "%s.%s" % (module, xmlid), qweb_context,
engine='website.qweb', context=context)
except (AccessError, AccessDenied), err:
logger.error(err)
qweb_context['error'] = err[1]
+12 -1
View File
@@ -1,3 +1,14 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_website_public,website,website.model_website,base.group_public,1,0,0,0
access_website,website,website.model_website,base.group_user,1,0,0,0
access_website,website,website.model_website,base.group_user,1,0,0,0
access_website_converter_test,access_website_converter_test,model_website_converter_test,,1,1,1,1
access_website_converter_test_sub,access_website_converter_test_sub,model_website_converter_test_sub,,1,1,1,1
access_website_qweb,access_website_qweb,model_website_qweb,,0,0,0,0
access_website_qweb_field,access_website_qweb_field,model_website_qweb_field,,0,0,0,0
access_website_qweb_field_float,access_website_qweb_field_float,model_website_qweb_field_float,,0,0,0,0
access_website_qweb_field_text,access_website_qweb_field_text,model_website_qweb_field_text,,0,0,0,0
access_website_qweb_field_selection,access_website_qweb_field_selection,model_website_qweb_field_selection,,0,0,0,0
access_website_qweb_field_many2one,access_website_qweb_field_many2one,model_website_qweb_field_many2one,,0,0,0,0
access_website_qweb_field_html,access_website_qweb_field_html,model_website_qweb_field_html,,0,0,0,0
access_website_qweb_field_image,access_website_qweb_field_image,model_website_qweb_field_image,,0,0,0,0
access_website_qweb_field_currency,access_website_qweb_field_currency,model_website_qweb_field_currency,,0,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_website_public website website.model_website base.group_public 1 0 0 0
3 access_website website website.model_website base.group_user 1 0 0 0
4 access_website_converter_test access_website_converter_test model_website_converter_test 1 1 1 1
5 access_website_converter_test_sub access_website_converter_test_sub model_website_converter_test_sub 1 1 1 1
6 access_website_qweb access_website_qweb model_website_qweb 0 0 0 0
7 access_website_qweb_field access_website_qweb_field model_website_qweb_field 0 0 0 0
8 access_website_qweb_field_float access_website_qweb_field_float model_website_qweb_field_float 0 0 0 0
9 access_website_qweb_field_text access_website_qweb_field_text model_website_qweb_field_text 0 0 0 0
10 access_website_qweb_field_selection access_website_qweb_field_selection model_website_qweb_field_selection 0 0 0 0
11 access_website_qweb_field_many2one access_website_qweb_field_many2one model_website_qweb_field_many2one 0 0 0 0
12 access_website_qweb_field_html access_website_qweb_field_html model_website_qweb_field_html 0 0 0 0
13 access_website_qweb_field_image access_website_qweb_field_image model_website_qweb_field_image 0 0 0 0
14 access_website_qweb_field_currency access_website_qweb_field_currency model_website_qweb_field_currency 0 0 0 0