odoo-addon-base-view-inheritance-extension 16.0.1.1.0__py3-none-any.whl → 16.0.1.2.1__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.
@@ -7,7 +7,7 @@ Extended view inheritance
7
7
  !! This file is generated by oca-gen-addon-readme !!
8
8
  !! changes will be overwritten. !!
9
9
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:56c707d911c93aace4dc1593e4c0f7de5816cdf8883d581a9cfdf7d500b2de66
10
+ !! source digest: sha256:2d8fbf4939d14cf8a9a3bd23e9443daf262d094983fe68dd734e477add384199
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -73,6 +73,15 @@ to refer to some xmlid, say ``%(xmlid)s``.
73
73
  $domain_to_add
74
74
  </attribute>
75
75
 
76
+ **Add domain with AND/OR join operator (AND if missed) for key in attrs**
77
+
78
+ .. code-block:: xml
79
+
80
+ <attribute name="$attribute" operation="attrs_domain_add"
81
+ key="$attrs_key" join_operator="OR">
82
+ $domain_to_add_to_attrs_key
83
+ </attribute>
84
+
76
85
  Known issues / Roadmap
77
86
  ======================
78
87
 
@@ -107,6 +116,7 @@ Contributors
107
116
  * Carlos Dauden
108
117
 
109
118
  * Iván Todorovich <ivan.todorovich@camptocamp.com>
119
+ * Carlos Serra-Toro <carlos.serra@braintec.com>
110
120
 
111
121
  Maintainers
112
122
  ~~~~~~~~~~~
@@ -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": "16.0.1.1.0",
6
+ "version": "16.0.1.2.1",
7
7
  "development_status": "Mature",
8
8
  "author": "Therp BV,Odoo Community Association (OCA)",
9
9
  "license": "LGPL-3",
@@ -176,6 +176,7 @@ class IrUiView(models.Model):
176
176
  else:
177
177
  new_value = str(expression.AND([old_domain, new_domain]))
178
178
  new_value = self.str2var_domain_text(new_value)
179
+ old_value = "".join(old_value.splitlines())
179
180
  else:
180
181
  # We must ensure that the domain definition has not line breaks because
181
182
  # in update mode the domain cause an invalid syntax error
@@ -189,6 +190,42 @@ class IrUiView(models.Model):
189
190
  node.attrib[attribute_name] = new_value
190
191
  return source
191
192
 
193
+ @api.model
194
+ def inheritance_handler_attributes_attrs_domain_add(self, source, specs):
195
+ """Implement attrs_domain_add
196
+
197
+ <attribute name="$attribute" operation="attrs_domain_add"
198
+ key="$attrs_key" join_operator="OR">
199
+ $domain_to_add_to_attrs_key
200
+ </attribute>
201
+ """
202
+ node = self.locate_node(source, specs)
203
+ for attribute_node in specs:
204
+ attribute_name = attribute_node.get("name")
205
+ key = attribute_node.get("key")
206
+ join_operator = attribute_node.get("join_operator") or "AND"
207
+ old_value = node.get(attribute_name) or ""
208
+ if old_value:
209
+ old_value = ast.literal_eval(
210
+ self.var2str_domain_text(old_value.strip())
211
+ )
212
+ old_domain_attrs = old_value.get(key)
213
+ new_domain = ast.literal_eval(
214
+ self.var2str_domain_text(attribute_node.text.strip())
215
+ )
216
+ if join_operator == "OR":
217
+ new_value = expression.OR([old_domain_attrs, new_domain])
218
+ else:
219
+ new_value = expression.AND([old_domain_attrs, new_domain])
220
+ old_value[key] = new_value
221
+ new_value = self.str2var_domain_text(str(old_value))
222
+ else:
223
+ # We must ensure that the domain definition has not line breaks because
224
+ # in update mode the domain cause an invalid syntax error
225
+ new_value = "{'%s': %s}" % (key, attribute_node.text.strip())
226
+ node.attrib[attribute_name] = new_value
227
+ return source
228
+
192
229
  @api.model
193
230
  def var2str_domain_text(self, domain_str):
194
231
  """Replaces var names with str names to allow eval without defined vars"""
@@ -6,3 +6,4 @@
6
6
  * Carlos Dauden
7
7
 
8
8
  * Iván Todorovich <ivan.todorovich@camptocamp.com>
9
+ * Carlos Serra-Toro <carlos.serra@braintec.com>
@@ -31,3 +31,12 @@ to refer to some xmlid, say ``%(xmlid)s``.
31
31
  condition="$field_condition" join_operator="OR">
32
32
  $domain_to_add
33
33
  </attribute>
34
+
35
+ **Add domain with AND/OR join operator (AND if missed) for key in attrs**
36
+
37
+ .. code-block:: xml
38
+
39
+ <attribute name="$attribute" operation="attrs_domain_add"
40
+ key="$attrs_key" join_operator="OR">
41
+ $domain_to_add_to_attrs_key
42
+ </attribute>
@@ -1,4 +1,3 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
1
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
3
  <head>
@@ -367,7 +366,7 @@ ul.auto-toc {
367
366
  !! This file is generated by oca-gen-addon-readme !!
368
367
  !! changes will be overwritten. !!
369
368
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:56c707d911c93aace4dc1593e4c0f7de5816cdf8883d581a9cfdf7d500b2de66
369
+ !! source digest: sha256:2d8fbf4939d14cf8a9a3bd23e9443daf262d094983fe68dd734e477add384199
371
370
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
371
  <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/licence-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-tools/tree/16.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-16-0/server-tools-16-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=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
372
  <p>This module was written to make it simple to add custom operators for view
@@ -413,6 +412,13 @@ to refer to some xmlid, say <tt class="docutils literal">%(xmlid)s</tt>.</p>
413
412
  </span>$domain_to_add<span class="w">
414
413
  </span><span class="nt">&lt;/attribute&gt;</span>
415
414
  </pre>
415
+ <p><strong>Add domain with AND/OR join operator (AND if missed) for key in attrs</strong></p>
416
+ <pre class="code xml literal-block">
417
+ <span class="nt">&lt;attribute</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;$attribute&quot;</span><span class="w"> </span><span class="na">operation=</span><span class="s">&quot;attrs_domain_add&quot;</span><span class="w">
418
+ </span><span class="na">key=</span><span class="s">&quot;$attrs_key&quot;</span><span class="w"> </span><span class="na">join_operator=</span><span class="s">&quot;OR&quot;</span><span class="nt">&gt;</span><span class="w">
419
+ </span>$domain_to_add_to_attrs_key<span class="w">
420
+ </span><span class="nt">&lt;/attribute&gt;</span>
421
+ </pre>
416
422
  </div>
417
423
  <div class="section" id="known-issues-roadmap">
418
424
  <h1><a class="toc-backref" href="#toc-entry-2">Known issues / Roadmap</a></h1>
@@ -447,6 +453,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
447
453
  </ul>
448
454
  </li>
449
455
  <li>Iván Todorovich &lt;<a class="reference external" href="mailto:ivan.todorovich&#64;camptocamp.com">ivan.todorovich&#64;camptocamp.com</a>&gt;</li>
456
+ <li>Carlos Serra-Toro &lt;<a class="reference external" href="mailto:carlos.serra&#64;braintec.com">carlos.serra&#64;braintec.com</a>&gt;</li>
450
457
  </ul>
451
458
  </div>
452
459
  <div class="section" id="maintainers">
@@ -240,3 +240,70 @@ class TestBaseViewInheritanceExtension(TransactionCase):
240
240
  )
241
241
  with self.assertRaisesRegex(TypeError, "Attribute `domain` is not a dict"):
242
242
  self.env["ir.ui.view"].apply_inheritance_specs(source, specs)
243
+
244
+ def test_attrs_domain_add_join_operator_or(self):
245
+ """Test that we can add an OR domain to an existing attrs key."""
246
+ self._test_attrs_domain_add(join_operator="OR")
247
+
248
+ def test_attrs_domain_add_join_operator_and(self):
249
+ """Test that we can add an AND domain to an existing attrs key."""
250
+ self._test_attrs_domain_add(join_operator="AND")
251
+
252
+ def _test_attrs_domain_add(self, join_operator):
253
+ """Test that we can add a domain to an existing attrs domain key."""
254
+ source = etree.fromstring(
255
+ """
256
+ <form>
257
+ <field
258
+ name="ref"
259
+ attrs="{
260
+ 'invisible': [('state', '=', 'draft')],
261
+ 'required': [('state', '=', False)],
262
+ }"
263
+ />
264
+ </form>
265
+ """
266
+ )
267
+ specs = etree.fromstring(
268
+ """
269
+ <field name="ref" position="attributes">
270
+ <attribute name="attrs" operation="attrs_domain_add"
271
+ key="required" join_operator="%s">
272
+ [('state', '!=', 'draft')]
273
+ </attribute>
274
+ </field>
275
+ """
276
+ % (join_operator,)
277
+ )
278
+ res = self.env["ir.ui.view"].apply_inheritance_specs(source, specs)
279
+ self.assertEqual(
280
+ res.xpath('//field[@name="ref"]')[0].attrib["attrs"],
281
+ "{'invisible': [('state', '=', 'draft')], "
282
+ "'required': ['%s', ('state', '=', False), ('state', '!=', 'draft')]}"
283
+ % ("|" if join_operator == "OR" else "&"),
284
+ )
285
+
286
+ def test_attrs_domain_add_no_attrs(self):
287
+ """Test attrs_domain_add if there is no attrs: attrs is created."""
288
+ source = etree.fromstring(
289
+ """
290
+ <form>
291
+ <field name="ref"/>
292
+ </form>
293
+ """
294
+ )
295
+ specs = etree.fromstring(
296
+ """
297
+ <field name="ref" position="attributes">
298
+ <attribute name="attrs" operation="attrs_domain_add"
299
+ key="required" join_operator="OR">
300
+ [('state', '!=', 'draft')]
301
+ </attribute>
302
+ </field>
303
+ """
304
+ )
305
+ res = self.env["ir.ui.view"].apply_inheritance_specs(source, specs)
306
+ self.assertEqual(
307
+ res.xpath('//field[@name="ref"]')[0].attrib["attrs"],
308
+ "{'required': [('state', '!=', 'draft')]}",
309
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-base-view-inheritance-extension
3
- Version: 16.0.1.1.0
3
+ Version: 16.0.1.2.1
4
4
  Summary: Adds more operators for view inheritance
5
5
  Home-page: https://github.com/OCA/server-tools
6
6
  Author: Therp BV,Odoo Community Association (OCA)
@@ -25,7 +25,7 @@ Extended view inheritance
25
25
  !! This file is generated by oca-gen-addon-readme !!
26
26
  !! changes will be overwritten. !!
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
- !! source digest: sha256:56c707d911c93aace4dc1593e4c0f7de5816cdf8883d581a9cfdf7d500b2de66
28
+ !! source digest: sha256:2d8fbf4939d14cf8a9a3bd23e9443daf262d094983fe68dd734e477add384199
29
29
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30
30
 
31
31
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -91,6 +91,15 @@ to refer to some xmlid, say ``%(xmlid)s``.
91
91
  $domain_to_add
92
92
  </attribute>
93
93
 
94
+ **Add domain with AND/OR join operator (AND if missed) for key in attrs**
95
+
96
+ .. code-block:: xml
97
+
98
+ <attribute name="$attribute" operation="attrs_domain_add"
99
+ key="$attrs_key" join_operator="OR">
100
+ $domain_to_add_to_attrs_key
101
+ </attribute>
102
+
94
103
  Known issues / Roadmap
95
104
  ======================
96
105
 
@@ -125,6 +134,7 @@ Contributors
125
134
  * Carlos Dauden
126
135
 
127
136
  * Iván Todorovich <ivan.todorovich@camptocamp.com>
137
+ * Carlos Serra-Toro <carlos.serra@braintec.com>
128
138
 
129
139
  Maintainers
130
140
  ~~~~~~~~~~~
@@ -1,6 +1,6 @@
1
- odoo/addons/base_view_inheritance_extension/README.rst,sha256=s4SK60OIEUpRCYl5j3Lrr9n4-4OCelf2iFyY3pC7Tv4,4059
1
+ odoo/addons/base_view_inheritance_extension/README.rst,sha256=xZcGLfthaxIoLHtfL6dMnpZ6ojWzYCwcRWVGC4bphzI,4371
2
2
  odoo/addons/base_view_inheritance_extension/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
- odoo/addons/base_view_inheritance_extension/__manifest__.py,sha256=Ca1864xMAWhDjammHW65ShRb_59XN3XIMHQMTzG5jO4,616
3
+ odoo/addons/base_view_inheritance_extension/__manifest__.py,sha256=185VxDJxD7lHpQN1GhX4SRbQ7_-rjcLsL3ve6plcDSg,616
4
4
  odoo/addons/base_view_inheritance_extension/demo/ir_ui_view.xml,sha256=MHPVOGOM6XnNOTsq0ylz1B5r0sPJpRKHLan3K2mZ6sA,1200
5
5
  odoo/addons/base_view_inheritance_extension/i18n/base_view_inheritance_extension.pot,sha256=fs9N7L3F1tQYphJ4_BoE725z8zXA0ULVEIW4-qsQRTw,1031
6
6
  odoo/addons/base_view_inheritance_extension/i18n/ca.po,sha256=7ncEf2XfOWoOIlU7jysZhKYtd1KEF7oUHABgxJeEm9Q,1443
@@ -12,16 +12,16 @@ odoo/addons/base_view_inheritance_extension/i18n/it.po,sha256=342XK5tLJJavpToQ_T
12
12
  odoo/addons/base_view_inheritance_extension/i18n/sl.po,sha256=YjMtgl3N0bkOH8ngh_FMy7m-vxpNXt12WWiHYSmnFhY,1446
13
13
  odoo/addons/base_view_inheritance_extension/i18n/tr.po,sha256=S3G6M2N5DNbiTpctuhlJ14hfKa_BJ_v0Ju-4cHu7eQQ,1453
14
14
  odoo/addons/base_view_inheritance_extension/models/__init__.py,sha256=SjKfc8ocbCImvP5DpGQbS0hWmQRYPjtzJdyio6TPII0,25
15
- odoo/addons/base_view_inheritance_extension/models/ir_ui_view.py,sha256=MGk_4Y-jJNky5SlwklDNRnJyztnng0EPpMffGXcv048,8191
16
- odoo/addons/base_view_inheritance_extension/readme/CONTRIBUTORS.rst,sha256=c9RfnEkKnqbGzA9LVlOz37yIL6hsprsap_73E5_kqyQ,204
15
+ odoo/addons/base_view_inheritance_extension/models/ir_ui_view.py,sha256=AIeWfScFWgfylcFwL8QPwX3HnIQ2YrkgvhPho_M33cc,9903
16
+ odoo/addons/base_view_inheritance_extension/readme/CONTRIBUTORS.rst,sha256=er1wsP0tAgTprk5TY_A9qnHgOIfb9-v9CgD6ooWGifg,252
17
17
  odoo/addons/base_view_inheritance_extension/readme/DESCRIPTION.rst,sha256=pamURJDYfLUcZtHl0ZvXTtzKO1LvHlhhYIND05AMzbk,88
18
18
  odoo/addons/base_view_inheritance_extension/readme/ROADMAP.rst,sha256=Cz02ovrYCAgtqjY3nTSnikVgWaKPcWLP-bsuJxCTlKw,56
19
- odoo/addons/base_view_inheritance_extension/readme/USAGE.rst,sha256=Hbr5TnkYHTP2Ek3PnlL1h7fL11hOX7tnoaOSObfh3Y8,835
19
+ odoo/addons/base_view_inheritance_extension/readme/USAGE.rst,sha256=qVIT8mE5xZVenXbqbWFEqx9bwbF4w-2jgEzdBYKSkAg,1099
20
20
  odoo/addons/base_view_inheritance_extension/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
21
- odoo/addons/base_view_inheritance_extension/static/description/index.html,sha256=loy9GN6OOMvPfMm6NupcLrEbYf0hfEIrM69gJinkL_k,15475
21
+ odoo/addons/base_view_inheritance_extension/static/description/index.html,sha256=POPtPAJ_RZSS4HMIdl1j3NjWWLWAW4bblHWrmgekwMg,16318
22
22
  odoo/addons/base_view_inheritance_extension/tests/__init__.py,sha256=kTcGsgnWhpM7vII3sEdNX5XVxDHHqRc5KdrxInG6GSw,51
23
- odoo/addons/base_view_inheritance_extension/tests/test_base_view_inheritance_extension.py,sha256=vl07csg7Q9ZNtlnOgnL3AiyNEo7OHpcSdhxULPZuV5k,8618
24
- odoo_addon_base_view_inheritance_extension-16.0.1.1.0.dist-info/METADATA,sha256=-2LxoLluRkOiFSDwsNRS_zutag5wmP_suaRYNK6Rc5E,4698
25
- odoo_addon_base_view_inheritance_extension-16.0.1.1.0.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
26
- odoo_addon_base_view_inheritance_extension-16.0.1.1.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
27
- odoo_addon_base_view_inheritance_extension-16.0.1.1.0.dist-info/RECORD,,
23
+ odoo/addons/base_view_inheritance_extension/tests/test_base_view_inheritance_extension.py,sha256=4_43OP09f63VK-3B_iErrGqUj_UCcC4p6I3_YibhP_g,11114
24
+ odoo_addon_base_view_inheritance_extension-16.0.1.2.1.dist-info/METADATA,sha256=7PnLA0RquY9BgQ16T1WSRsSnliXczldWyHzaIDzaqE0,5010
25
+ odoo_addon_base_view_inheritance_extension-16.0.1.2.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
26
+ odoo_addon_base_view_inheritance_extension-16.0.1.2.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
27
+ odoo_addon_base_view_inheritance_extension-16.0.1.2.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.3)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5