summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2013-10-08 11:22:33 +0200
committerXavier Morel <xmo@openerp.com>2013-10-08 11:22:33 +0200
commit510a4f51d2a5b75f7b4c3b8b345f693eb044b337 (patch)
treef480943b4eeeff06a150234b180300acb0cf9bfd
parent3d5857d504291fe83cba74dad2e00dd5a7c94773 (diff)
[ADD] customizable qweb rendering, add translate flag on fields through this
bzr revid: xmo@openerp.com-20131008092233-9su66923zthl9jyg
-rw-r--r--addons/website/models/__init__.py1
-rw-r--r--addons/website/models/ir_qweb.py62
-rw-r--r--addons/website/models/website.py5
-rw-r--r--addons/website/security/ir.model.access.csv13
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