mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[IMP] web_widget_open_tab
This commit is contained in:
2
web_widget_open_tab/models/__init__.py
Normal file
2
web_widget_open_tab/models/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import ir_model
|
||||
from . import ir_ui_view
|
||||
10
web_widget_open_tab/models/ir_model.py
Normal file
10
web_widget_open_tab/models/ir_model.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# Copyright 2023 Quartile Limited
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class IrModel(models.Model):
|
||||
_inherit = "ir.model"
|
||||
|
||||
add_open_tab_field = fields.Boolean(help="Adds open-tab field in list views.")
|
||||
25
web_widget_open_tab/models/ir_ui_view.py
Normal file
25
web_widget_open_tab/models/ir_ui_view.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# Copyright 2023 Quartile Limited
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class Base(models.AbstractModel):
|
||||
_inherit = "base"
|
||||
|
||||
@api.model
|
||||
def _get_view(self, view_id=None, view_type="form", **options):
|
||||
arch, view = super()._get_view(view_id, view_type, **options)
|
||||
model = self.env["ir.model"]._get(self._name)
|
||||
if view_type == "tree" and model.add_open_tab_field:
|
||||
id_elem = """<field name="id" widget="open_tab" nolabel="1"/>"""
|
||||
id_elem = etree.fromstring(id_elem)
|
||||
tree = arch.xpath("//tree")[0]
|
||||
name_field = tree.xpath('./field[@name="name"]')
|
||||
if name_field:
|
||||
tree.insert(name_field[0].getparent().index(name_field[0]) + 1, id_elem)
|
||||
else:
|
||||
tree.insert(0, id_elem)
|
||||
return arch, view
|
||||
Reference in New Issue
Block a user