odoo-addon-base-view-inheritance-extension 18.0.1.0.2.1__py3-none-any.whl → 19.0.1.0.0.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ Extended view inheritance
11
11
  !! This file is generated by oca-gen-addon-readme !!
12
12
  !! changes will be overwritten. !!
13
13
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
- !! source digest: sha256:cb2fb0b7f832559d24b4af1f66ac9d92258ed4cb2a2f32b5b1afaa3437f7b9eb
14
+ !! source digest: sha256:9089555b5aea01b23ff4a0350d6fd69589d63f1beb4e272ed5a96eebf05b2a81
15
15
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
16
 
17
17
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -21,13 +21,13 @@ Extended view inheritance
21
21
  :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
22
22
  :alt: License: LGPL-3
23
23
  .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
24
- :target: https://github.com/OCA/server-tools/tree/18.0/base_view_inheritance_extension
24
+ :target: https://github.com/OCA/server-tools/tree/19.0/base_view_inheritance_extension
25
25
  :alt: OCA/server-tools
26
26
  .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
27
- :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-base_view_inheritance_extension
27
+ :target: https://translation.odoo-community.org/projects/server-tools-19-0/server-tools-19-0-base_view_inheritance_extension
28
28
  :alt: Translate me on Weblate
29
29
  .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
30
- :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0
30
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=19.0
31
31
  :alt: Try me on Runboat
32
32
 
33
33
  |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -76,6 +76,39 @@ conditional changes**
76
76
  $domain_to_add
77
77
  </attribute>
78
78
 
79
+ **Wrap loose text in an element for further processing**
80
+
81
+ .. code:: xml
82
+
83
+ <wraptext expr="//some/node" position="text" element="span" />
84
+ <wraptext expr="//some/node/other_node" position="tail" element="div" />
85
+
86
+ which transforms
87
+
88
+ .. code:: xml
89
+
90
+ <some>
91
+ <node>
92
+ plain text 1
93
+ <other_node />
94
+ plain text2
95
+ </node>
96
+ </some>
97
+
98
+ to
99
+
100
+ .. code:: xml
101
+
102
+ <some>
103
+ <node>
104
+ <span>plain text 1</span>
105
+ <other_node />
106
+ <div>plain text2</div>
107
+ </node>
108
+ </some>
109
+
110
+ making those texts accessible for further operations
111
+
79
112
  Known issues / Roadmap
80
113
  ======================
81
114
 
@@ -87,7 +120,7 @@ Bug Tracker
87
120
  Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
88
121
  In case of trouble, please check there if your issue has already been reported.
89
122
  If you spotted it first, help us to smash it by providing a detailed and welcomed
90
- `feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20base_view_inheritance_extension%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
123
+ `feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20base_view_inheritance_extension%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
91
124
 
92
125
  Do not contact contributors directly about support or help with technical issues.
93
126
 
@@ -102,7 +135,7 @@ Authors
102
135
  Contributors
103
136
  ------------
104
137
 
105
- - Holger Brunn <hbrunn@therp.nl>
138
+ - Holger Brunn <mail@hunki-enterprises.com>
106
139
  - Ronald Portier <rportier@therp.nl>
107
140
  - `Tecnativa <https://www.tecnativa.com>`__:
108
141
 
@@ -129,6 +162,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
129
162
  mission is to support the collaborative development of Odoo features and
130
163
  promote its widespread use.
131
164
 
132
- This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/18.0/base_view_inheritance_extension>`_ project on GitHub.
165
+ .. |maintainer-hbrunn| image:: https://github.com/hbrunn.png?size=40px
166
+ :target: https://github.com/hbrunn
167
+ :alt: hbrunn
168
+
169
+ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
170
+
171
+ |maintainer-hbrunn|
172
+
173
+ This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/19.0/base_view_inheritance_extension>`_ project on GitHub.
133
174
 
134
175
  You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -3,7 +3,7 @@
3
3
  # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
4
4
  {
5
5
  "name": "Extended view inheritance",
6
- "version": "18.0.1.0.2",
6
+ "version": "19.0.1.0.0",
7
7
  "development_status": "Mature",
8
8
  "author": "Therp BV,Odoo Community Association (OCA)",
9
9
  "license": "LGPL-3",
@@ -12,4 +12,5 @@
12
12
  "website": "https://github.com/OCA/server-tools",
13
13
  "depends": ["base"],
14
14
  "demo": ["demo/ir_ui_view.xml"],
15
+ "maintainers": ["hbrunn"],
15
16
  }
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: Odoo Server 18.0\n"
7
+ "Project-Id-Version: Odoo Server 19.0\n"
8
8
  "Report-Msgid-Bugs-To: \n"
9
9
  "Last-Translator: \n"
10
10
  "Language-Team: \n"
@@ -14,21 +14,34 @@ msgstr ""
14
14
  "Plural-Forms: \n"
15
15
 
16
16
  #. module: base_view_inheritance_extension
17
- #: model_terms:ir.ui.view,arch_db:base_view_inheritance_extension.view_partner_simple_form
18
- msgid "Partner form"
17
+ #: model:ir.model.fields,field_description:base_view_inheritance_extension.field_ir_ui_view__display_name
18
+ msgid "Display Name"
19
19
  msgstr ""
20
20
 
21
21
  #. module: base_view_inheritance_extension
22
- #: model_terms:ir.ui.view,arch_db:base_view_inheritance_extension.view_partner_simple_form
23
- msgid "Phone numbers"
22
+ #: model:ir.model.fields,field_description:base_view_inheritance_extension.field_ir_ui_view__id
23
+ msgid "ID"
24
24
  msgstr ""
25
25
 
26
26
  #. module: base_view_inheritance_extension
27
- #: model:ir.model.fields,field_description:base_view_inheritance_extension.field_ir_ui_view__smart_search
28
- msgid "Smart Search"
27
+ #: model:ir.model,name:base_view_inheritance_extension.model_ir_ui_view
28
+ msgid "View"
29
29
  msgstr ""
30
30
 
31
31
  #. module: base_view_inheritance_extension
32
- #: model:ir.model,name:base_view_inheritance_extension.model_ir_ui_view
33
- msgid "View"
32
+ #. odoo-python
33
+ #: code:addons/base_view_inheritance_extension/models/ir_ui_view.py:0
34
+ msgid "wraptext elements cannot have children"
35
+ msgstr ""
36
+
37
+ #. module: base_view_inheritance_extension
38
+ #. odoo-python
39
+ #: code:addons/base_view_inheritance_extension/models/ir_ui_view.py:0
40
+ msgid "wraptext: nothing found for expression %r"
41
+ msgstr ""
42
+
43
+ #. module: base_view_inheritance_extension
44
+ #. odoo-python
45
+ #: code:addons/base_view_inheritance_extension/models/ir_ui_view.py:0
46
+ msgid "wraptext: the only valid positions are 'text' or 'tail'"
34
47
  msgstr ""
@@ -9,15 +9,14 @@ msgstr ""
9
9
  "Project-Id-Version: Odoo Server 9.0c\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2016-12-29 03:39+0000\n"
12
- "PO-Revision-Date: 2026-01-22 08:50+0000\n"
13
- "Last-Translator: Betül Öğmen <betulo@eska.biz>\n"
12
+ "PO-Revision-Date: 2016-12-29 03:39+0000\n"
13
+ "Last-Translator: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2016\n"
14
14
  "Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n"
15
15
  "Language: tr\n"
16
16
  "MIME-Version: 1.0\n"
17
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
18
  "Content-Transfer-Encoding: \n"
19
19
  "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20
- "X-Generator: Weblate 5.15.2\n"
21
20
 
22
21
  #. module: base_view_inheritance_extension
23
22
  #: model_terms:ir.ui.view,arch_db:base_view_inheritance_extension.view_partner_simple_form
@@ -27,17 +26,17 @@ msgstr "İş ortağı formu"
27
26
  #. module: base_view_inheritance_extension
28
27
  #: model_terms:ir.ui.view,arch_db:base_view_inheritance_extension.view_partner_simple_form
29
28
  msgid "Phone numbers"
30
- msgstr "Telefon numaraları"
29
+ msgstr ""
31
30
 
32
31
  #. module: base_view_inheritance_extension
33
32
  #: model:ir.model.fields,field_description:base_view_inheritance_extension.field_ir_ui_view__smart_search
34
33
  msgid "Smart Search"
35
- msgstr "Akıllı Arama"
34
+ msgstr ""
36
35
 
37
36
  #. module: base_view_inheritance_extension
38
37
  #: model:ir.model,name:base_view_inheritance_extension.model_ir_ui_view
39
38
  msgid "View"
40
- msgstr "Görünüm"
39
+ msgstr ""
41
40
 
42
41
  #~ msgid "ir.ui.view"
43
42
  #~ msgstr "ir.ui.view"
@@ -9,7 +9,8 @@ import re
9
9
  from lxml import etree
10
10
 
11
11
  from odoo import api, models
12
- from odoo.osv import expression
12
+ from odoo.exceptions import ValidationError
13
+ from odoo.fields import Domain
13
14
 
14
15
 
15
16
  def ast_dict_update(source, update):
@@ -83,6 +84,85 @@ class IrUiView(models.Model):
83
84
  handler = getattr(self, f"inheritance_handler_{node.tag}")
84
85
  return handler
85
86
 
87
+ @api.model
88
+ def inheritance_handler_wraptext(self, source, specs):
89
+ """Implement wraptext inheritance spec
90
+
91
+ .. code-block:: xml
92
+
93
+ <wraptext expr="//some/node" position="text" element="span" />
94
+
95
+ Which transforms xml like
96
+
97
+ .. code-block:: xml
98
+
99
+ <some>
100
+ <node>
101
+ plain text
102
+ <other_node />
103
+ </node>
104
+ </some>
105
+
106
+ to
107
+
108
+ .. code-block:: xml
109
+
110
+ <some>
111
+ <node>
112
+ <span>plain text</span>
113
+ <other_node />
114
+ </node>
115
+ </some>
116
+
117
+ """
118
+ if len(specs):
119
+ raise ValidationError(self.env._("wraptext elements cannot have children"))
120
+
121
+ expression = specs.attrib.get("expr")
122
+ found = source.xpath(specs.attrib["expr"])
123
+ if not found:
124
+ raise ValidationError(
125
+ self.env._("wraptext: nothing found for expression %r", expression)
126
+ )
127
+
128
+ found = found[0]
129
+ text_position = specs.attrib.get("position", "text")
130
+ if text_position not in ("text", "tail"):
131
+ raise ValidationError(
132
+ self.env._("wraptext: the only valid positions are 'text' or 'tail'")
133
+ )
134
+
135
+ wrapped = etree.Element(specs.attrib.get("element", "t"))
136
+ wrapped.text = getattr(found, text_position)
137
+ setattr(found, text_position, None)
138
+
139
+ if self.env.context.get("edit_translations") and not wrapped.text:
140
+ # translation might have wrapped the text already in a <span> element
141
+ # we wrap this element so that subsequent view manipulations find
142
+ # the wrapped element at the same position in the tree it would be at
143
+ # without translation
144
+ next_sibling = found.getnext()
145
+
146
+ if (
147
+ text_position == "text"
148
+ and len(found)
149
+ and found[0].attrib.get("data-oe-translation-state")
150
+ ):
151
+ wrapped.append(found[0])
152
+ elif (
153
+ text_position == "tail"
154
+ and next_sibling is not None
155
+ and next_sibling.attrib.get("data-oe-translation-state")
156
+ ):
157
+ wrapped.append(next_sibling)
158
+
159
+ if text_position == "text":
160
+ found.insert(0, wrapped)
161
+ elif text_position == "tail":
162
+ found.addnext(wrapped)
163
+
164
+ return source
165
+
86
166
  @api.model
87
167
  def _get_inheritance_handler_attributes(self, node):
88
168
  handler = super().apply_inheritance_specs
@@ -163,9 +243,9 @@ class IrUiView(models.Model):
163
243
  self._var2str_domain_text(attribute_node.text.strip())
164
244
  )
165
245
  if join_operator == "OR":
166
- new_value = str(expression.OR([old_domain, new_domain]))
246
+ new_value = str(Domain.OR([old_domain, new_domain]))
167
247
  else:
168
- new_value = str(expression.AND([old_domain, new_domain]))
248
+ new_value = str(Domain.AND([old_domain, new_domain]))
169
249
  new_value = self._str2var_domain_text(new_value)
170
250
  old_value = "".join(old_value.splitlines())
171
251
  else:
@@ -1,4 +1,4 @@
1
- - Holger Brunn \<<hbrunn@therp.nl>\>
1
+ - Holger Brunn \<<mail@hunki-enterprises.com>\>
2
2
  - Ronald Portier \<<rportier@therp.nl>\>
3
3
  - [Tecnativa](https://www.tecnativa.com):
4
4
  - Sergio Teruel
@@ -30,3 +30,36 @@ conditional changes**
30
30
  $domain_to_add
31
31
  </attribute>
32
32
  ```
33
+
34
+ **Wrap loose text in an element for further processing**
35
+
36
+ ``` xml
37
+ <wraptext expr="//some/node" position="text" element="span" />
38
+ <wraptext expr="//some/node/other_node" position="tail" element="div" />
39
+ ```
40
+
41
+ which transforms
42
+
43
+ ``` xml
44
+ <some>
45
+ <node>
46
+ plain text 1
47
+ <other_node />
48
+ plain text2
49
+ </node>
50
+ </some>
51
+ ```
52
+
53
+ to
54
+
55
+ ``` xml
56
+ <some>
57
+ <node>
58
+ <span>plain text 1</span>
59
+ <other_node />
60
+ <div>plain text2</div>
61
+ </node>
62
+ </some>
63
+ ```
64
+
65
+ making those texts accessible for further operations
@@ -372,9 +372,9 @@ ul.auto-toc {
372
372
  !! This file is generated by oca-gen-addon-readme !!
373
373
  !! changes will be overwritten. !!
374
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
- !! source digest: sha256:cb2fb0b7f832559d24b4af1f66ac9d92258ed4cb2a2f32b5b1afaa3437f7b9eb
375
+ !! source digest: sha256:9089555b5aea01b23ff4a0350d6fd69589d63f1beb4e272ed5a96eebf05b2a81
376
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
- <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Mature" src="https://img.shields.io/badge/maturity-Mature-brightgreen.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-tools/tree/18.0/base_view_inheritance_extension"><img alt="OCA/server-tools" src="https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-base_view_inheritance_extension"><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/server-tools&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
377
+ <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Mature" src="https://img.shields.io/badge/maturity-Mature-brightgreen.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-tools/tree/19.0/base_view_inheritance_extension"><img alt="OCA/server-tools" src="https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-tools-19-0/server-tools-19-0-base_view_inheritance_extension"><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/server-tools&amp;target_branch=19.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
378
  <p>This module was written to make it simple to add custom operators for
379
379
  view inheritance.</p>
380
380
  <p><strong>Table of contents</strong></p>
@@ -419,6 +419,32 @@ conditional changes</strong></p>
419
419
  </span>$domain_to_add<span class="w">
420
420
  </span><span class="nt">&lt;/attribute&gt;</span>
421
421
  </pre>
422
+ <p><strong>Wrap loose text in an element for further processing</strong></p>
423
+ <pre class="code xml literal-block">
424
+ <span class="nt">&lt;wraptext</span><span class="w"> </span><span class="na">expr=</span><span class="s">&quot;//some/node&quot;</span><span class="w"> </span><span class="na">position=</span><span class="s">&quot;text&quot;</span><span class="w"> </span><span class="na">element=</span><span class="s">&quot;span&quot;</span><span class="w"> </span><span class="nt">/&gt;</span><span class="w">
425
+ </span><span class="nt">&lt;wraptext</span><span class="w"> </span><span class="na">expr=</span><span class="s">&quot;//some/node/other_node&quot;</span><span class="w"> </span><span class="na">position=</span><span class="s">&quot;tail&quot;</span><span class="w"> </span><span class="na">element=</span><span class="s">&quot;div&quot;</span><span class="w"> </span><span class="nt">/&gt;</span>
426
+ </pre>
427
+ <p>which transforms</p>
428
+ <pre class="code xml literal-block">
429
+ <span class="nt">&lt;some&gt;</span><span class="w">
430
+ </span><span class="nt">&lt;node&gt;</span><span class="w">
431
+ </span>plain<span class="w"> </span>text<span class="w"> </span>1<span class="w">
432
+ </span><span class="nt">&lt;other_node</span><span class="w"> </span><span class="nt">/&gt;</span><span class="w">
433
+ </span>plain<span class="w"> </span>text2<span class="w">
434
+ </span><span class="nt">&lt;/node&gt;</span><span class="w">
435
+ </span><span class="nt">&lt;/some&gt;</span>
436
+ </pre>
437
+ <p>to</p>
438
+ <pre class="code xml literal-block">
439
+ <span class="nt">&lt;some&gt;</span><span class="w">
440
+ </span><span class="nt">&lt;node&gt;</span><span class="w">
441
+ </span><span class="nt">&lt;span&gt;</span>plain<span class="w"> </span>text<span class="w"> </span>1<span class="nt">&lt;/span&gt;</span><span class="w">
442
+ </span><span class="nt">&lt;other_node</span><span class="w"> </span><span class="nt">/&gt;</span><span class="w">
443
+ </span><span class="nt">&lt;div&gt;</span>plain<span class="w"> </span>text2<span class="nt">&lt;/div&gt;</span><span class="w">
444
+ </span><span class="nt">&lt;/node&gt;</span><span class="w">
445
+ </span><span class="nt">&lt;/some&gt;</span>
446
+ </pre>
447
+ <p>making those texts accessible for further operations</p>
422
448
  </div>
423
449
  <div class="section" id="known-issues-roadmap">
424
450
  <h2><a class="toc-backref" href="#toc-entry-2">Known issues / Roadmap</a></h2>
@@ -431,7 +457,7 @@ conditional changes</strong></p>
431
457
  <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/server-tools/issues">GitHub Issues</a>.
432
458
  In case of trouble, please check there if your issue has already been reported.
433
459
  If you spotted it first, help us to smash it by providing a detailed and welcomed
434
- <a class="reference external" href="https://github.com/OCA/server-tools/issues/new?body=module:%20base_view_inheritance_extension%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
460
+ <a class="reference external" href="https://github.com/OCA/server-tools/issues/new?body=module:%20base_view_inheritance_extension%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
435
461
  <p>Do not contact contributors directly about support or help with technical issues.</p>
436
462
  </div>
437
463
  <div class="section" id="credits">
@@ -445,7 +471,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
445
471
  <div class="section" id="contributors">
446
472
  <h3><a class="toc-backref" href="#toc-entry-6">Contributors</a></h3>
447
473
  <ul class="simple">
448
- <li>Holger Brunn &lt;<a class="reference external" href="mailto:hbrunn&#64;therp.nl">hbrunn&#64;therp.nl</a>&gt;</li>
474
+ <li>Holger Brunn &lt;<a class="reference external" href="mailto:mail&#64;hunki-enterprises.com">mail&#64;hunki-enterprises.com</a>&gt;</li>
449
475
  <li>Ronald Portier &lt;<a class="reference external" href="mailto:rportier&#64;therp.nl">rportier&#64;therp.nl</a>&gt;</li>
450
476
  <li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
451
477
  <li>Sergio Teruel</li>
@@ -469,7 +495,9 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
469
495
  <p>OCA, or the Odoo Community Association, is a nonprofit organization whose
470
496
  mission is to support the collaborative development of Odoo features and
471
497
  promote its widespread use.</p>
472
- <p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-tools/tree/18.0/base_view_inheritance_extension">OCA/server-tools</a> project on GitHub.</p>
498
+ <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
499
+ <p><a class="reference external image-reference" href="https://github.com/hbrunn"><img alt="hbrunn" src="https://github.com/hbrunn.png?size=40px" /></a></p>
500
+ <p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-tools/tree/19.0/base_view_inheritance_extension">OCA/server-tools</a> project on GitHub.</p>
473
501
  <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>
474
502
  </div>
475
503
  </div>
@@ -5,6 +5,7 @@
5
5
 
6
6
  from lxml import etree
7
7
 
8
+ from odoo.exceptions import ValidationError
8
9
  from odoo.tests.common import TransactionCase
9
10
 
10
11
 
@@ -13,10 +14,33 @@ class TestBaseViewInheritanceExtension(TransactionCase):
13
14
  def setUpClass(cls):
14
15
  super().setUpClass()
15
16
  cls.maxDiff = None
17
+ cls.view = cls.env["ir.ui.view"].create(
18
+ {
19
+ "name": "Test Partner Simple Form Override",
20
+ "type": "form",
21
+ "model": "res.partner",
22
+ "inherit_id": cls.env.ref("base.view_partner_simple_form").id,
23
+ "arch": """
24
+ <data>
25
+ <xpath expr="." position="attributes">
26
+ <attribute name="string">Partner form</attribute>
27
+ </xpath>
28
+
29
+ <field name="parent_id" position="attributes">
30
+ <attribute name="context" operation="update">
31
+ {
32
+ "default_email": "info@odoo-community.org",
33
+ "default_company_id": allowed_company_ids[0]
34
+ }
35
+ </attribute>
36
+ </field>
37
+ </data>
38
+ """,
39
+ }
40
+ )
16
41
 
17
42
  def test_base_view_inheritance_extension(self):
18
- view_id = self.env.ref("base.view_partner_simple_form").id
19
- arch, _ = self.env["res.partner"]._get_view(view_id=view_id)
43
+ arch, _ = self.env["res.partner"]._get_view(view_id=self.view.id)
20
44
  # Verify normal attributes work
21
45
  self.assertEqual(arch.xpath("//form")[0].get("string"), "Partner form")
22
46
  # Verify our extra context key worked
@@ -199,3 +223,47 @@ class TestBaseViewInheritanceExtension(TransactionCase):
199
223
  )
200
224
  with self.assertRaisesRegex(TypeError, "Attribute `domain` is not a dict"):
201
225
  self.env["ir.ui.view"].apply_inheritance_specs(source, specs)
226
+
227
+ def test_wraptext(self):
228
+ """Test textwrap transformations"""
229
+ base_view = self.env["ir.ui.view"].create(
230
+ {
231
+ "type": "qweb",
232
+ "arch": "<some>"
233
+ "<node>plain text 1<other_node />plain text2</node></some>",
234
+ }
235
+ )
236
+ inherited_view = self.env["ir.ui.view"].create(
237
+ {
238
+ "type": "qweb",
239
+ "inherit_id": base_view.id,
240
+ "arch": "<data>"
241
+ '<wraptext expr="//some/node" position="text" element="span" />'
242
+ '<wraptext expr="//some/node/other_node" position="tail" '
243
+ 'element="div" />'
244
+ "</data>",
245
+ }
246
+ )
247
+ self.assertEqual(
248
+ base_view.with_context(load_all_views=True).get_combined_arch(),
249
+ "<some><node><span>plain text 1</span><other_node/>"
250
+ "<div>plain text2</div></node></some>",
251
+ )
252
+ translatable_arch = base_view.with_context(
253
+ load_all_views=True, edit_translations=True
254
+ )._get_combined_arch()
255
+ self.assertTrue(
256
+ translatable_arch.xpath("//some/node/span/span[@data-oe-translation-state]")
257
+ )
258
+ self.assertTrue(
259
+ translatable_arch.xpath("//some/node/div/span[@data-oe-translation-state]")
260
+ )
261
+
262
+ with self.assertRaisesRegex(ValidationError, "children"):
263
+ inherited_view.write({"arch": "<wraptext><node /></wraptext>"})
264
+ with self.assertRaisesRegex(ValidationError, "found"):
265
+ inherited_view.write({"arch": '<wraptext expr="//not/existing" />'})
266
+ with self.assertRaisesRegex(ValidationError, "positions"):
267
+ inherited_view.write(
268
+ {"arch": '<wraptext expr="//some/node" position="other" />'}
269
+ )
@@ -1,8 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-base_view_inheritance_extension
3
- Version: 18.0.1.0.2.1
4
- Requires-Python: >=3.10
5
- Requires-Dist: odoo==18.0.*
3
+ Version: 19.0.1.0.0.6
4
+ Requires-Dist: odoo==19.0.*
6
5
  Summary: Adds more operators for view inheritance
7
6
  Home-page: https://github.com/OCA/server-tools
8
7
  License: LGPL-3
@@ -10,7 +9,7 @@ Author: Therp BV,Odoo Community Association (OCA)
10
9
  Author-email: support@odoo-community.org
11
10
  Classifier: Programming Language :: Python
12
11
  Classifier: Framework :: Odoo
13
- Classifier: Framework :: Odoo :: 18.0
12
+ Classifier: Framework :: Odoo :: 19.0
14
13
  Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
15
14
  Classifier: Development Status :: 6 - Mature
16
15
  Description-Content-Type: text/x-rst
@@ -28,7 +27,7 @@ Extended view inheritance
28
27
  !! This file is generated by oca-gen-addon-readme !!
29
28
  !! changes will be overwritten. !!
30
29
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31
- !! source digest: sha256:cb2fb0b7f832559d24b4af1f66ac9d92258ed4cb2a2f32b5b1afaa3437f7b9eb
30
+ !! source digest: sha256:9089555b5aea01b23ff4a0350d6fd69589d63f1beb4e272ed5a96eebf05b2a81
32
31
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
33
32
 
34
33
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -38,13 +37,13 @@ Extended view inheritance
38
37
  :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
39
38
  :alt: License: LGPL-3
40
39
  .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
41
- :target: https://github.com/OCA/server-tools/tree/18.0/base_view_inheritance_extension
40
+ :target: https://github.com/OCA/server-tools/tree/19.0/base_view_inheritance_extension
42
41
  :alt: OCA/server-tools
43
42
  .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
44
- :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-base_view_inheritance_extension
43
+ :target: https://translation.odoo-community.org/projects/server-tools-19-0/server-tools-19-0-base_view_inheritance_extension
45
44
  :alt: Translate me on Weblate
46
45
  .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
47
- :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0
46
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=19.0
48
47
  :alt: Try me on Runboat
49
48
 
50
49
  |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -93,6 +92,39 @@ conditional changes**
93
92
  $domain_to_add
94
93
  </attribute>
95
94
 
95
+ **Wrap loose text in an element for further processing**
96
+
97
+ .. code:: xml
98
+
99
+ <wraptext expr="//some/node" position="text" element="span" />
100
+ <wraptext expr="//some/node/other_node" position="tail" element="div" />
101
+
102
+ which transforms
103
+
104
+ .. code:: xml
105
+
106
+ <some>
107
+ <node>
108
+ plain text 1
109
+ <other_node />
110
+ plain text2
111
+ </node>
112
+ </some>
113
+
114
+ to
115
+
116
+ .. code:: xml
117
+
118
+ <some>
119
+ <node>
120
+ <span>plain text 1</span>
121
+ <other_node />
122
+ <div>plain text2</div>
123
+ </node>
124
+ </some>
125
+
126
+ making those texts accessible for further operations
127
+
96
128
  Known issues / Roadmap
97
129
  ======================
98
130
 
@@ -104,7 +136,7 @@ Bug Tracker
104
136
  Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
105
137
  In case of trouble, please check there if your issue has already been reported.
106
138
  If you spotted it first, help us to smash it by providing a detailed and welcomed
107
- `feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20base_view_inheritance_extension%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
139
+ `feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20base_view_inheritance_extension%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
108
140
 
109
141
  Do not contact contributors directly about support or help with technical issues.
110
142
 
@@ -119,7 +151,7 @@ Authors
119
151
  Contributors
120
152
  ------------
121
153
 
122
- - Holger Brunn <hbrunn@therp.nl>
154
+ - Holger Brunn <mail@hunki-enterprises.com>
123
155
  - Ronald Portier <rportier@therp.nl>
124
156
  - `Tecnativa <https://www.tecnativa.com>`__:
125
157
 
@@ -146,6 +178,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
146
178
  mission is to support the collaborative development of Odoo features and
147
179
  promote its widespread use.
148
180
 
149
- This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/18.0/base_view_inheritance_extension>`_ project on GitHub.
181
+ .. |maintainer-hbrunn| image:: https://github.com/hbrunn.png?size=40px
182
+ :target: https://github.com/hbrunn
183
+ :alt: hbrunn
184
+
185
+ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
186
+
187
+ |maintainer-hbrunn|
188
+
189
+ This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/19.0/base_view_inheritance_extension>`_ project on GitHub.
150
190
 
151
191
  You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -1,8 +1,8 @@
1
- odoo/addons/base_view_inheritance_extension/README.rst,sha256=_TzMhlTdYzBFZ0du6XByycpO6fyvYacqwU14aM61L0g,4296
1
+ odoo/addons/base_view_inheritance_extension/README.rst,sha256=bPpTwuVzGuH7aGBQc9eMk1RbUeLzYH1aEIgBVC-x3_o,5188
2
2
  odoo/addons/base_view_inheritance_extension/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
- odoo/addons/base_view_inheritance_extension/__manifest__.py,sha256=LcGtP2zbL6k1o7ytSimPS0VGb3Sp7v2lrnb0rWGlDWg,564
3
+ odoo/addons/base_view_inheritance_extension/__manifest__.py,sha256=JexcyLW9M5Oauk85oOYaJXwpVJt0j3OK3-hOvh32AhQ,595
4
4
  odoo/addons/base_view_inheritance_extension/demo/ir_ui_view.xml,sha256=MHPVOGOM6XnNOTsq0ylz1B5r0sPJpRKHLan3K2mZ6sA,1200
5
- odoo/addons/base_view_inheritance_extension/i18n/base_view_inheritance_extension.pot,sha256=B58XyI67dJ5JIr1k0RmjiZGGO1p-57Sp5PSZq4BIn5I,1031
5
+ odoo/addons/base_view_inheritance_extension/i18n/base_view_inheritance_extension.pot,sha256=q-gDEdipn5UuPHpC6P6M_ZHpW3JNHSGh5JmASj9_Tcg,1437
6
6
  odoo/addons/base_view_inheritance_extension/i18n/ca.po,sha256=7ncEf2XfOWoOIlU7jysZhKYtd1KEF7oUHABgxJeEm9Q,1443
7
7
  odoo/addons/base_view_inheritance_extension/i18n/de.po,sha256=yaXLt5LJ08bt1zv4h76aKSH0blNmlHOW8ZMI34VOix8,1364
8
8
  odoo/addons/base_view_inheritance_extension/i18n/es.po,sha256=iQy3KiLd16FHheppaA1xkRNV7uFkkBiNAGw7wlVIwYE,1458
@@ -11,18 +11,18 @@ odoo/addons/base_view_inheritance_extension/i18n/hr.po,sha256=9jsjrpjkiQ6eE36_vy
11
11
  odoo/addons/base_view_inheritance_extension/i18n/it.po,sha256=342XK5tLJJavpToQ_TK5f2n93-XkP5CY7t2BrKTVWUA,1446
12
12
  odoo/addons/base_view_inheritance_extension/i18n/nl.po,sha256=GhwvImKVOxKFw8GyANTKjBi1i9NLHAyUQ9ekbLViDSc,1261
13
13
  odoo/addons/base_view_inheritance_extension/i18n/sl.po,sha256=qcdE0TSP9_F3oCAKT3zL2pJG9Wfntzb6gx08OKIkvlw,1446
14
- odoo/addons/base_view_inheritance_extension/i18n/tr.po,sha256=VA8qaVHwJiCOiLB3Ye--SvquChbDfl5jpzzl4gKbl74,1509
14
+ odoo/addons/base_view_inheritance_extension/i18n/tr.po,sha256=S3G6M2N5DNbiTpctuhlJ14hfKa_BJ_v0Ju-4cHu7eQQ,1453
15
15
  odoo/addons/base_view_inheritance_extension/models/__init__.py,sha256=SjKfc8ocbCImvP5DpGQbS0hWmQRYPjtzJdyio6TPII0,25
16
- odoo/addons/base_view_inheritance_extension/models/ir_ui_view.py,sha256=lFC5IfOf5vtc-OQaSVzUnix6cPo5GO_7m7w06mkCZY8,7789
17
- odoo/addons/base_view_inheritance_extension/readme/CONTRIBUTORS.md,sha256=p9NQX_0BmuvidOJpkxO_NiDS6L19JI3lfxeHfuyG7Fs,319
16
+ odoo/addons/base_view_inheritance_extension/models/ir_ui_view.py,sha256=Ly32LApnmlBDbEVksSVcXvtdV_A9hck3aU9P6b8OmZo,10304
17
+ odoo/addons/base_view_inheritance_extension/readme/CONTRIBUTORS.md,sha256=twGLhOqn0hj9V64aQoEEPwLAe6XnicJdvvUABWyAtws,330
18
18
  odoo/addons/base_view_inheritance_extension/readme/DESCRIPTION.md,sha256=TC-vXmaSQ5oo7nNl5jxSyurQiz2597hDzQirRGw73BI,88
19
19
  odoo/addons/base_view_inheritance_extension/readme/ROADMAP.md,sha256=79XqQ49EvpKp11-P-rimu8Mwklpwor3rkWKFPym9YbA,54
20
- odoo/addons/base_view_inheritance_extension/readme/USAGE.md,sha256=g7ZkBJmm4ldDD-tkQjlzW7WpvssmBi23Dj2KCUuxlug,748
20
+ odoo/addons/base_view_inheritance_extension/readme/USAGE.md,sha256=JUcs3LBeorMlOSzQYLVsAO6ERQlNLoT3_GeBdIQ8pIA,1347
21
21
  odoo/addons/base_view_inheritance_extension/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
22
- odoo/addons/base_view_inheritance_extension/static/description/index.html,sha256=lNCXGAhRaUoGAUzJTunzq09Kbx7A7kx50BjDbT3Dauo,16054
22
+ odoo/addons/base_view_inheritance_extension/static/description/index.html,sha256=a8oLdse7HgvcjLRPX_2P8CFpBSJl5laCHN1e4NKfY8w,18601
23
23
  odoo/addons/base_view_inheritance_extension/tests/__init__.py,sha256=kTcGsgnWhpM7vII3sEdNX5XVxDHHqRc5KdrxInG6GSw,51
24
- odoo/addons/base_view_inheritance_extension/tests/test_base_view_inheritance_extension.py,sha256=7EDc_2z-Cr3v8MFYGj2crWL7kVWc7cvGI2FgY5HVBvY,7185
25
- odoo_addon_base_view_inheritance_extension-18.0.1.0.2.1.dist-info/METADATA,sha256=i4jeEbFRUZe_tHdzkYuU5LwBnV6V-t5btDGIX2ne0T0,4924
26
- odoo_addon_base_view_inheritance_extension-18.0.1.0.2.1.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
27
- odoo_addon_base_view_inheritance_extension-18.0.1.0.2.1.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
28
- odoo_addon_base_view_inheritance_extension-18.0.1.0.2.1.dist-info/RECORD,,
24
+ odoo/addons/base_view_inheritance_extension/tests/test_base_view_inheritance_extension.py,sha256=HfNUvwVWkXvciOoprNkYqD6JobT2_n9w8qCCddE8X8g,9958
25
+ odoo_addon_base_view_inheritance_extension-19.0.1.0.0.6.dist-info/METADATA,sha256=v_-BF-F2RbwqMY57YTu_TeLxGm0B39Xtqe6P5oQm2JA,5792
26
+ odoo_addon_base_view_inheritance_extension-19.0.1.0.0.6.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
27
+ odoo_addon_base_view_inheritance_extension-19.0.1.0.0.6.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
28
+ odoo_addon_base_view_inheritance_extension-19.0.1.0.0.6.dist-info/RECORD,,