diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/board/models | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/board/models')
| -rw-r--r-- | addons/board/models/__init__.py | 4 | ||||
| -rw-r--r-- | addons/board/models/board.py | 51 |
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') |
