summaryrefslogtreecommitdiff
path: root/addons/web/models/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/models/models.py')
-rw-r--r--addons/web/models/models.py39
1 files changed, 37 insertions, 2 deletions
diff --git a/addons/web/models/models.py b/addons/web/models/models.py
index fe01ffe6938..31e5834d200 100644
--- a/addons/web/models/models.py
+++ b/addons/web/models/models.py
@@ -1,11 +1,14 @@
# -*- coding: utf-8 -*-
-from datetime import datetime
import babel.dates
import pytz
-from odoo.tools.misc import DEFAULT_SERVER_DATETIME_FORMAT, DEFAULT_SERVER_DATE_FORMAT
from odoo import _, api, fields, models
+from odoo.tools import lazy
+class IrActionsActWindowView(models.Model):
+ _inherit = 'ir.actions.act_window.view'
+
+ view_mode = fields.Selection(selection_add=[('qweb', 'QWeb')])
class Base(models.AbstractModel):
_inherit = 'base'
@@ -78,3 +81,35 @@ class Base(models.AbstractModel):
data[group_by_value][field_value] += 1
return data
+
+ ##### qweb view hooks #####
+ @api.model
+ def qweb_render_view(self, view_id, domain):
+ assert view_id
+ return self.env['ir.qweb'].render(
+ view_id, {
+ **self.env['ir.ui.view']._prepare_qcontext(),
+ **self._qweb_prepare_qcontext(view_id, domain),
+ })
+
+ def _qweb_prepare_qcontext(self, view_id, domain):
+ """
+ Base qcontext for rendering qweb views bound to this model
+ """
+ return {
+ 'model': self,
+ 'domain': domain,
+ # not necessarily necessary as env is already part of the
+ # non-minimal qcontext
+ 'context': self.env.context,
+ 'records': lazy(self.search, domain),
+ }
+
+ @api.model
+ def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
+ r = super().fields_view_get(view_id, view_type, toolbar, submenu)
+ # avoid leaking the raw (un-rendered) template, also avoids bloating
+ # the response payload for no reason
+ if r['type'] == 'qweb':
+ r['arch'] = '<qweb/>'
+ return r