summaryrefslogtreecommitdiff
path: root/addons/board/models
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/board/models
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/board/models')
-rw-r--r--addons/board/models/__init__.py4
-rw-r--r--addons/board/models/board.py51
2 files changed, 55 insertions, 0 deletions
diff --git a/addons/board/models/__init__.py b/addons/board/models/__init__.py
new file mode 100644
index 00000000..a7b07a28
--- /dev/null
+++ b/addons/board/models/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import board
diff --git a/addons/board/models/board.py b/addons/board/models/board.py
new file mode 100644
index 00000000..a3355755
--- /dev/null
+++ b/addons/board/models/board.py
@@ -0,0 +1,51 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, models
+
+
+class Board(models.AbstractModel):
+ _name = 'board.board'
+ _description = "Board"
+ _auto = False
+
+ @api.model
+ def create(self, vals):
+ return self
+
+ @api.model
+ def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
+ """
+ Overrides orm field_view_get.
+ @return: Dictionary of Fields, arch and toolbar.
+ """
+
+ res = super(Board, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
+
+ custom_view = self.env['ir.ui.view.custom'].search([('user_id', '=', self.env.uid), ('ref_id', '=', view_id)], limit=1)
+ if custom_view:
+ res.update({'custom_view_id': custom_view.id,
+ 'arch': custom_view.arch})
+ res.update({
+ 'arch': self._arch_preprocessing(res['arch']),
+ 'toolbar': {'print': [], 'action': [], 'relate': []}
+ })
+ return res
+
+ @api.model
+ def _arch_preprocessing(self, arch):
+ from lxml import etree
+
+ def remove_unauthorized_children(node):
+ for child in node.iterchildren():
+ if child.tag == 'action' and child.get('invisible'):
+ node.remove(child)
+ else:
+ remove_unauthorized_children(child)
+ return node
+
+ archnode = etree.fromstring(arch)
+ # add the js_class 'board' on the fly to force the webclient to
+ # instantiate a BoardView instead of FormView
+ archnode.set('js_class', 'board')
+ return etree.tostring(remove_unauthorized_children(archnode), pretty_print=True, encoding='unicode')