[MIG] web_widget_open_tab: Migration to 18.0

pull/3029/head
Adam Heinz 2024-12-20 10:41:01 -05:00
parent 998a017c5e
commit 556a3ccf6a
No known key found for this signature in database
5 changed files with 30 additions and 27 deletions

View File

@ -17,13 +17,13 @@ Widget Open on new Tab
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3 :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/17.0/web_widget_open_tab :target: https://github.com/OCA/web/tree/18.0/web_widget_open_tab
:alt: OCA/web :alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-17-0/web-17-0-web_widget_open_tab :target: https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_widget_open_tab
:alt: Translate me on Weblate :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=17.0 :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=18.0
:alt: Try me on Runboat :alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5| |badge1| |badge2| |badge3| |badge4| |badge5|
@ -58,7 +58,7 @@ exists, otherwise at the beginning of the tree.
Known issues / Roadmap Known issues / Roadmap
====================== ======================
- Add many2one fields support. - Add many2one fields support.
Bug Tracker Bug Tracker
=========== ===========
@ -66,7 +66,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_. Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_widget_open_tab%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. `feedback <https://github.com/OCA/web/issues/new?body=module:%20web_widget_open_tab%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues. Do not contact contributors directly about support or help with technical issues.
@ -81,12 +81,12 @@ Authors
Contributors Contributors
------------ ------------
- Enric Tobella <etobella@creublanca.es> - Enric Tobella <etobella@creublanca.es>
- Raf Ven <raf.ven@dynapps.be> - Raf Ven <raf.ven@dynapps.be>
- Dhara Solanki <dhara.solanki@initos.com> - Dhara Solanki <dhara.solanki@initos.com>
- `Quartile <https://www.quartile.co>`__: - `Quartile <https://www.quartile.co>`__:
- Aung Ko Ko Lin - Aung Ko Ko Lin
Maintainers Maintainers
----------- -----------
@ -101,6 +101,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and mission is to support the collaborative development of Odoo features and
promote its widespread use. promote its widespread use.
This module is part of the `OCA/web <https://github.com/OCA/web/tree/17.0/web_widget_open_tab>`_ project on GitHub. This module is part of the `OCA/web <https://github.com/OCA/web/tree/18.0/web_widget_open_tab>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@ -5,7 +5,7 @@
"name": "Widget Open on new Tab", "name": "Widget Open on new Tab",
"summary": """ "summary": """
Allow to open record from trees on new tab from tree views""", Allow to open record from trees on new tab from tree views""",
"version": "17.0.1.0.0", "version": "18.0.1.0.0",
"license": "AGPL-3", "license": "AGPL-3",
"author": "Creu Blanca,Odoo Community Association (OCA)", "author": "Creu Blanca,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web", "website": "https://github.com/OCA/web",

View File

@ -13,13 +13,13 @@ class Base(models.AbstractModel):
def _get_view(self, view_id=None, view_type="form", **options): def _get_view(self, view_id=None, view_type="form", **options):
arch, view = super()._get_view(view_id, view_type, **options) arch, view = super()._get_view(view_id, view_type, **options)
model = self.env["ir.model"]._get(self._name) model = self.env["ir.model"]._get(self._name)
if view_type == "tree" and model.add_open_tab_field: if view_type == "list" and model.add_open_tab_field:
id_elem = """<field name="id" widget="open_tab" nolabel="1"/>""" id_elem = """<field name="id" widget="open_tab" nolabel="1"/>"""
id_elem = etree.fromstring(id_elem) id_elem = etree.fromstring(id_elem)
tree = arch.xpath("//tree")[0] node = arch.xpath("//list")[0]
name_field = tree.xpath('./field[@name="name"]') name_field = node.xpath('./field[@name="name"]')
if name_field: if name_field:
tree.insert(name_field[0].getparent().index(name_field[0]) + 1, id_elem) node.insert(name_field[0].getparent().index(name_field[0]) + 1, id_elem)
else: else:
tree.insert(0, id_elem) node.insert(0, id_elem)
return arch, view return arch, view

View File

@ -8,10 +8,11 @@
/* /*
:Author: David Goodger (goodger@python.org) :Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ :Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain. :Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils. Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet. customize this style sheet.
@ -274,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ; margin-left: 2em ;
margin-right: 2em } margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */ pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee } pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 } pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
@ -300,7 +301,7 @@ span.option {
span.pre { span.pre {
white-space: pre } white-space: pre }
span.problematic { span.problematic, pre.problematic {
color: red } color: red }
span.section-subtitle { span.section-subtitle {
@ -368,7 +369,7 @@ ul.auto-toc {
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:90d7cc228138169b341debfd9c1b844aad258431599a76243147e17916e53b0f !! source digest: sha256:90d7cc228138169b341debfd9c1b844aad258431599a76243147e17916e53b0f
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/web/tree/17.0/web_widget_open_tab"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/web-17-0/web-17-0-web_widget_open_tab"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/web&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p> <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/web/tree/18.0/web_widget_open_tab"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_widget_open_tab"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/web&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This addon introduces a new widget. When added to a field in a tree <p>This addon introduces a new widget. When added to a field in a tree
view, the field appears as a button which opens the record in a new tab. view, the field appears as a button which opens the record in a new tab.
When clicking on the line (but not on the button), the record is opened When clicking on the line (but not on the button), the record is opened
@ -412,7 +413,7 @@ exists, otherwise at the beginning of the tree.</p>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>. <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20web_widget_open_tab%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p> <a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20web_widget_open_tab%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p> <p>Do not contact contributors directly about support or help with technical issues.</p>
</div> </div>
<div class="section" id="credits"> <div class="section" id="credits">
@ -438,11 +439,13 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
<div class="section" id="maintainers"> <div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2> <h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p> <p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a> <a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose <p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and mission is to support the collaborative development of Odoo features and
promote its widespread use.</p> promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/17.0/web_widget_open_tab">OCA/web</a> project on GitHub.</p> <p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/18.0/web_widget_open_tab">OCA/web</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p> <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div> </div>
</div> </div>

View File

@ -4,18 +4,18 @@ from odoo.tests import common
class Test(common.TransactionCase): class Test(common.TransactionCase):
def test_add_open_tab_field(self): def test_add_open_tab_field(self):
self.env["ir.model"]._get("res.company").add_open_tab_field = True self.env["ir.model"]._get("res.company").add_open_tab_field = True
arch, view = self.env["res.company"]._get_view(view_id=None, view_type="tree") arch, view = self.env["res.company"]._get_view(view_id=None, view_type="list")
found = arch.xpath("//field[@widget='open_tab']") found = arch.xpath("//field[@widget='open_tab']")
self.assertEqual(len(found), 1) self.assertEqual(len(found), 1)
def test_no_add_open_tab_field(self): def test_no_add_open_tab_field(self):
self.env["ir.model"]._get("res.company").add_open_tab_field = False self.env["ir.model"]._get("res.company").add_open_tab_field = False
arch, view = self.env["res.company"]._get_view(view_id=None, view_type="tree") arch, view = self.env["res.company"]._get_view(view_id=None, view_type="list")
found = arch.xpath("//field[@widget='open_tab']") found = arch.xpath("//field[@widget='open_tab']")
self.assertFalse(found) self.assertFalse(found)
def test_add_open_tab_field_no_name_field(self): def test_add_open_tab_field_no_name_field(self):
self.env["ir.model"]._get("res.groups").add_open_tab_field = True self.env["ir.model"]._get("res.groups").add_open_tab_field = True
arch, view = self.env["res.groups"]._get_view(view_id=None, view_type="tree") arch, view = self.env["res.groups"]._get_view(view_id=None, view_type="list")
found = arch.xpath("//field[@widget='open_tab']") found = arch.xpath("//field[@widget='open_tab']")
self.assertEqual(len(found), 1) self.assertEqual(len(found), 1)