diff options
| author | Xavier Morel <xmo@openerp.com> | 2013-10-08 11:22:33 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2013-10-08 11:22:33 +0200 |
| commit | 510a4f51d2a5b75f7b4c3b8b345f693eb044b337 (patch) | |
| tree | f480943b4eeeff06a150234b180300acb0cf9bfd /addons | |
| parent | 3d5857d504291fe83cba74dad2e00dd5a7c94773 (diff) | |
[ADD] customizable qweb rendering, add translate flag on fields through this
bzr revid: xmo@openerp.com-20131008092233-9su66923zthl9jyg
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/website/models/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website/models/ir_qweb.py | 62 | ||||
| -rw-r--r-- | addons/website/models/website.py | 5 | ||||
| -rw-r--r-- | addons/website/security/ir.model.access.csv | 13 |
4 files changed, 78 insertions, 3 deletions
diff --git a/addons/website/models/__init__.py b/addons/website/models/__init__.py index 4977118e925..5fcab989d6c 100644 --- a/addons/website/models/__init__.py +++ b/addons/website/models/__init__.py @@ -3,3 +3,4 @@ import ir_fields import view import website +import ir_qweb diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py new file mode 100644 index 00000000000..eeaee4a94e0 --- /dev/null +++ b/addons/website/models/ir_qweb.py @@ -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'] diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 90957b584a4..c36ed829699 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -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] diff --git a/addons/website/security/ir.model.access.csv b/addons/website/security/ir.model.access.csv index d2c3d4ee534..e9679c50ba9 100644 --- a/addons/website/security/ir.model.access.csv +++ b/addons/website/security/ir.model.access.csv @@ -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
\ No newline at end of file +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 |
