odoo-addon-base-tier-validation 17.0.2.1.1.2__py3-none-any.whl → 17.0.2.1.2__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 @@ Base Tier Validation
7
7
  !! This file is generated by oca-gen-addon-readme !!
8
8
  !! changes will be overwritten. !!
9
9
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:7cd893ad4c0ec4a8016552e03b14d5688a73089c9e0249f35340050655889f41
10
+ !! source digest: sha256:f66a6423b1055e1fd357661ea6165ca35a45086b86b4bb7d7f165500bf957a97
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -260,6 +260,9 @@ Contributors
260
260
  - Evan Soh <evan.soh@omnisoftsolution.com>
261
261
  - Manuel Regidor <manuel.regidor@sygel.es>
262
262
  - Eduardo de Miguel <edu@moduon.team>
263
+ - `XCG Consulting <https://xcg-consulting.fr>`__:
264
+
265
+ - Houzéfa Abbasbhay
263
266
 
264
267
  Maintainers
265
268
  -----------
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "name": "Base Tier Validation",
5
5
  "summary": "Implement a validation process based on tiers.",
6
- "version": "17.0.2.1.1",
6
+ "version": "17.0.2.1.2",
7
7
  "development_status": "Mature",
8
8
  "maintainers": ["LoisRForgeFlow"],
9
9
  "category": "Tools",
@@ -749,16 +749,11 @@ class TierValidation(models.AbstractModel):
749
749
  @api.model
750
750
  def get_view(self, view_id=None, view_type="form", **options):
751
751
  res = super().get_view(view_id=view_id, view_type=view_type, **options)
752
-
753
752
  View = self.env["ir.ui.view"]
754
-
755
- # Override context for postprocessing
756
- if view_id and res.get("base_model", self._name) != self._name:
757
- View = View.with_context(base_model_name=res["base_model"])
758
753
  if view_type == "form" and not self._tier_validation_manual_config:
759
754
  doc = etree.XML(res["arch"])
760
755
  params = {}
761
- all_models = res["models"].copy()
756
+ all_models = res["models"].copy() # {modelname(str) ➔ fields(tuple)}
762
757
  for node in doc.xpath(self._tier_validation_buttons_xpath):
763
758
  # By default, after the last button of the header
764
759
  # _add_tier_validation_buttons process
@@ -767,6 +762,7 @@ class TierValidation(models.AbstractModel):
767
762
  new_node = etree.fromstring(new_arch)
768
763
  for new_element in new_node:
769
764
  node.addnext(new_element)
765
+ _merge_view_fields(all_models, new_models)
770
766
  for node in doc.xpath("/form/sheet"):
771
767
  # _add_tier_validation_label process
772
768
  new_node = self._add_tier_validation_label(node, params)
@@ -774,18 +770,13 @@ class TierValidation(models.AbstractModel):
774
770
  new_node = etree.fromstring(new_arch)
775
771
  for new_element in new_node:
776
772
  node.addprevious(new_element)
773
+ _merge_view_fields(all_models, new_models)
777
774
  # _add_tier_validation_reviews process
778
775
  new_node = self._add_tier_validation_reviews(node, params)
779
776
  new_arch, new_models = View.postprocess_and_fields(new_node, self._name)
780
- for model in new_models:
781
- if model in all_models:
782
- continue
783
- if model not in res["models"]:
784
- all_models[model] = new_models[model]
785
- else:
786
- all_models[model] = res["models"][model]
787
777
  new_node = etree.fromstring(new_arch)
788
778
  node.append(new_node)
779
+ _merge_view_fields(all_models, new_models)
789
780
  excepted_fields = self._get_all_validation_exceptions()
790
781
  for node in doc.xpath("//field[@name][not(ancestor::field)]"):
791
782
  if node.attrib.get("name") in excepted_fields:
@@ -817,3 +808,12 @@ class TierValidation(models.AbstractModel):
817
808
  subtype_xmlid=self._get_requested_notification_subtype(),
818
809
  body=rec._notify_requested_review_body(),
819
810
  )
811
+
812
+
813
+ def _merge_view_fields(all_models: dict, new_models: dict):
814
+ """Merge new_models into all_models. Both are {modelname(str) ➔ fields(tuple)}."""
815
+ for model, view_fields in new_models.items():
816
+ if model in all_models:
817
+ all_models[model] = tuple(set(all_models[model]) | set(view_fields))
818
+ else:
819
+ all_models[model] = tuple(view_fields)
@@ -10,4 +10,6 @@
10
10
  - bosd
11
11
  - Evan Soh \<<evan.soh@omnisoftsolution.com>\>
12
12
  - Manuel Regidor \<<manuel.regidor@sygel.es>\>
13
- - Eduardo de Miguel \<<edu@moduon.team>\>
13
+ - Eduardo de Miguel \<<edu@moduon.team>\>
14
+ - [XCG Consulting](https://xcg-consulting.fr):
15
+ - Houzéfa Abbasbhay
@@ -367,7 +367,7 @@ ul.auto-toc {
367
367
  !! This file is generated by oca-gen-addon-readme !!
368
368
  !! changes will be overwritten. !!
369
369
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:7cd893ad4c0ec4a8016552e03b14d5688a73089c9e0249f35340050655889f41
370
+ !! source digest: sha256:f66a6423b1055e1fd357661ea6165ca35a45086b86b4bb7d7f165500bf957a97
371
371
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
372
  <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/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/server-ux/tree/17.0/base_tier_validation"><img alt="OCA/server-ux" src="https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-ux-17-0/server-ux-17-0-base_tier_validation"><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-ux&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
373
  <p>Validating some operations is a common need across different areas in a
@@ -614,6 +614,10 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
614
614
  <li>Evan Soh &lt;<a class="reference external" href="mailto:evan.soh&#64;omnisoftsolution.com">evan.soh&#64;omnisoftsolution.com</a>&gt;</li>
615
615
  <li>Manuel Regidor &lt;<a class="reference external" href="mailto:manuel.regidor&#64;sygel.es">manuel.regidor&#64;sygel.es</a>&gt;</li>
616
616
  <li>Eduardo de Miguel &lt;<a class="reference external" href="mailto:edu&#64;moduon.team">edu&#64;moduon.team</a>&gt;</li>
617
+ <li><a class="reference external" href="https://xcg-consulting.fr">XCG Consulting</a>:<ul>
618
+ <li>Houzéfa Abbasbhay</li>
619
+ </ul>
620
+ </li>
617
621
  </ul>
618
622
  </div>
619
623
  <div class="section" id="maintainers">
@@ -57,6 +57,24 @@ class CommonTierValidation(common.TransactionCase):
57
57
  }
58
58
  )
59
59
 
60
+ # Define views to avoid automatic views with all fields.
61
+ for model in cls.test_model._name, cls.test_model_2._name:
62
+ cls.env["ir.ui.view"].create(
63
+ {
64
+ "model": model,
65
+ "name": f"Demo view for {model}",
66
+ "arch": """<form>
67
+ <header>
68
+ <button name="action_confirm" type="object" string="Confirm" />
69
+ <field name="state" widget="statusbar" />
70
+ </header>
71
+ <sheet>
72
+ <field name="test_field" />
73
+ </sheet>
74
+ </form>""",
75
+ }
76
+ )
77
+
60
78
  # Create users:
61
79
  group_ids = cls.env.ref("base.group_system").ids
62
80
  cls.test_user_1 = cls.env["res.users"].create(
@@ -978,23 +978,6 @@ class TierTierValidation(CommonTierValidation):
978
978
  @tagged("at_install")
979
979
  class TierTierValidationView(CommonTierValidation):
980
980
  def test_view_manual(self):
981
- # We need to add a view in order to ensure that an automatic view with all
982
- # fields is not created
983
- self.env["ir.ui.view"].create(
984
- {
985
- "model": self.test_record._name,
986
- "name": "Demo view",
987
- "arch": """<form>
988
- <header>
989
- <button name="action_confirm" type="object" string="Confirm" />
990
- <field name="state" widget="statusbar" />
991
- </header>
992
- <sheet>
993
- <field name="test_field" />
994
- </sheet>
995
- </form>""",
996
- }
997
- )
998
981
  view = self.env[self.test_record._name].get_view(False, "form")
999
982
  with Form(self.test_record) as f:
1000
983
  self.assertNotIn("review_ids", f._values)
@@ -1004,23 +987,6 @@ class TierTierValidationView(CommonTierValidation):
1004
987
  self.assertFalse(form.xpath("//button[@name='request_validation']"))
1005
988
 
1006
989
  def test_view_automatic(self):
1007
- # We need to add a view in order to ensure that an automatic view with all
1008
- # fields is not created
1009
- self.env["ir.ui.view"].create(
1010
- {
1011
- "model": self.test_record_2._name,
1012
- "name": "Demo view",
1013
- "arch": """<form>
1014
- <header>
1015
- <button name="action_confirm" type="object" string="Confirm" />
1016
- <field name="state" widget="statusbar" />
1017
- </header>
1018
- <sheet>
1019
- <field name="test_field" />
1020
- </sheet>
1021
- </form>""",
1022
- }
1023
- )
1024
990
  view = self.env[self.test_record_2._name].get_view(False, "form")
1025
991
  with Form(self.test_record_2) as f:
1026
992
  self.assertIn("review_ids", f._values)
@@ -1028,3 +994,13 @@ class TierTierValidationView(CommonTierValidation):
1028
994
  self.assertTrue(form.xpath("//field[@name='review_ids']"))
1029
995
  self.assertTrue(form.xpath("//field[@name='can_review']"))
1030
996
  self.assertTrue(form.xpath("//button[@name='request_validation']"))
997
+
998
+ def test_get_view(self):
999
+ view = self.test_record_2.get_view()
1000
+ model = "tier.validation.tester2"
1001
+ self.assertEqual(view["model"], model)
1002
+ self.assertEqual(view["models"].keys(), {model, "tier.review"})
1003
+ self.assertIn("id", view["models"][model])
1004
+ self.assertIn("need_validation", view["models"][model])
1005
+ self.assertIn("next_review", view["models"][model])
1006
+ self.assertIn("review_ids", view["models"][model])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-base_tier_validation
3
- Version: 17.0.2.1.1.2
3
+ Version: 17.0.2.1.2
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: odoo>=17.0a,<17.1dev
6
6
  Summary: Implement a validation process based on tiers.
@@ -23,7 +23,7 @@ Base Tier Validation
23
23
  !! This file is generated by oca-gen-addon-readme !!
24
24
  !! changes will be overwritten. !!
25
25
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
- !! source digest: sha256:7cd893ad4c0ec4a8016552e03b14d5688a73089c9e0249f35340050655889f41
26
+ !! source digest: sha256:f66a6423b1055e1fd357661ea6165ca35a45086b86b4bb7d7f165500bf957a97
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
28
 
29
29
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -276,6 +276,9 @@ Contributors
276
276
  - Evan Soh <evan.soh@omnisoftsolution.com>
277
277
  - Manuel Regidor <manuel.regidor@sygel.es>
278
278
  - Eduardo de Miguel <edu@moduon.team>
279
+ - `XCG Consulting <https://xcg-consulting.fr>`__:
280
+
281
+ - Houzéfa Abbasbhay
279
282
 
280
283
  Maintainers
281
284
  -----------
@@ -1,6 +1,6 @@
1
- odoo/addons/base_tier_validation/README.rst,sha256=b7egJBq94kMcpK1xQBNz_5B8jUDSObnO8gjucA-HS-8,8551
1
+ odoo/addons/base_tier_validation/README.rst,sha256=byryeO7xRWxuAAWzsMdLdzhjRqgThVBJM7Mzvlt8CN0,8628
2
2
  odoo/addons/base_tier_validation/__init__.py,sha256=rKfzYX9RhkkCxgh2f0PJLYN45Kw8T8-fwxw1pbjLuug,108
3
- odoo/addons/base_tier_validation/__manifest__.py,sha256=-X_LhicXVWXfdmx9dtMa80L6J3Qkyv0uPDxGpj8MkbA,1658
3
+ odoo/addons/base_tier_validation/__manifest__.py,sha256=-zSDv2kPPaigdPk2XfPVsrgG1Js0UpmB5J1wNxIKtcQ,1658
4
4
  odoo/addons/base_tier_validation/data/mail_data.xml,sha256=UKzkLT8rYrFuThdp43v7nLW5SOco4vvIIAhbB_IAQZs,1414
5
5
  odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=kMrxSb-JBx09Ips79-X6pyC0yPsc-fEQ8W_1Zv9z1wM,31554
6
6
  odoo/addons/base_tier_validation/i18n/es.po,sha256=foXNBuNeOITckWNhyRzAi_MnAAcH0TL17il_MM2x2xc,37396
@@ -16,17 +16,17 @@ odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=xMdQiCfU5p
16
16
  odoo/addons/base_tier_validation/models/res_users.py,sha256=JhUZ0NxJ9EPwpkJ-mvsNTrE1avQncGNKqAF-xFxokEo,2638
17
17
  odoo/addons/base_tier_validation/models/tier_definition.py,sha256=I-HeOZopA1n-bISs28XDeAosUrTnhL_mp_TB3awb2w0,4168
18
18
  odoo/addons/base_tier_validation/models/tier_review.py,sha256=vuR832VVM-ZUDm-4j9zK1BSNnL0JfesxBSLyhW4Zia8,6754
19
- odoo/addons/base_tier_validation/models/tier_validation.py,sha256=iLSmswQy7pr8loUi6QNeY1tRCJYGodGU21TR9Vi_xTg,32863
19
+ odoo/addons/base_tier_validation/models/tier_validation.py,sha256=ahNgJJAfULCescQrih72IPvGbzpBrdr7iPL9IAiY6oY,32943
20
20
  odoo/addons/base_tier_validation/models/tier_validation_exception.py,sha256=9H_FbTF04IyB2u6a82UAdIPmv_MUcFKmLNVl7UOM1lg,2882
21
21
  odoo/addons/base_tier_validation/readme/CONFIGURE.md,sha256=MuyVCH75T0_3Rtrkl7RUg7XzxjoU7zUkbPWv84_a-XU,1709
22
- odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md,sha256=J7LBj933qFHjWwQrkaxWQUhFE-O3rqObqyRw96H5dpc,545
22
+ odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md,sha256=DJp09K9mooM4Qy1fPUVPjAU02fUNudXVeTRzA2gxOoA,616
23
23
  odoo/addons/base_tier_validation/readme/DESCRIPTION.md,sha256=nFbYOx89EsI26v6NJF9d-Wm-X2YtHduSRlV5Euk3WWc,651
24
24
  odoo/addons/base_tier_validation/readme/HISTORY.md,sha256=P8GfoUhYG7QGIpa8Z0L67E3YEeZBFQCwpDXnt5WG-DY,1332
25
25
  odoo/addons/base_tier_validation/readme/ROADMAP.md,sha256=HRRQQuOlSeOF5yfqG0KuANnvrde8y6Suz2pbrXB1OyU,864
26
26
  odoo/addons/base_tier_validation/security/ir.model.access.csv,sha256=g6B58IuYYqxD54e9I9vyre7mD74tkpauqTqMAH4Oey0,1134
27
27
  odoo/addons/base_tier_validation/security/tier_validation_security.xml,sha256=eWFwz-osHgYFmVoEVzOSboO9oqUMtQ8oygyaz0os50Y,806
28
28
  odoo/addons/base_tier_validation/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
29
- odoo/addons/base_tier_validation/static/description/index.html,sha256=7orMqzmZ9B3wiZ_8s_2txRQx2l6TSRZ5iQhjPHHFXoo,23060
29
+ odoo/addons/base_tier_validation/static/description/index.html,sha256=VNG2i-bVPQtUAJbO5YtIC0x69nMBpUxjvqrF272f-wo,23191
30
30
  odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.esm.js,sha256=MNfjKSg-9h3JfeXiYlf15SAdVHjj3aUvedj0BqVvJrk,2254
31
31
  odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml,sha256=_wIy5Gv2VUJEXD5_FGphx1J19-Y8uzFlWryuPqlIh8c,2798
32
32
  odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.esm.js,sha256=MDWUp2ozeRdBoLeCfTcOnD-bKnk3yF6pHwtTAnsLZmg,1090
@@ -35,8 +35,8 @@ odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_r
35
35
  odoo/addons/base_tier_validation/static/src/js/services/tier_review_service.esm.js,sha256=E4xNh1WmnofpFt88EYYCGcDWyP53S2Mt450QawcrsCM,972
36
36
  odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=VI6kY0V6nVSz6KQ9GRxY_9TZkRrJgzBzsl9xFKtA__Y,3620
37
37
  odoo/addons/base_tier_validation/tests/__init__.py,sha256=3z2_lQ9JiDSFDam4p24qDw5j02iaPb4m2naxv9DkbGA,122
38
- odoo/addons/base_tier_validation/tests/common.py,sha256=Q0g3zv6cYrSPx8QHwsikFxRmi7TtmuUr4ID_9WvImd8,4504
39
- odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=7l1kfCv31dqzNgAirZMaQM5OVvaA2OvJ7uAc0O7PLYw,41566
38
+ odoo/addons/base_tier_validation/tests/common.py,sha256=9KAJHlWXLj9TDX2ZM_J5WhDC53jTojRiObPKxc4bcFI,5211
39
+ odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=t4FQSrDPCP9JpwcIvCXFqNhzEezqFmb73e-5xbEDuTY,40830
40
40
  odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=3usFbhfDhlKIWbVu--3qsbsm52B6RwTP4zy244dY1yk,1757
41
41
  odoo/addons/base_tier_validation/views/res_config_settings_views.xml,sha256=5HbrsAVaXRoQNX7utIQ_EzZrqzKnwBrV9uHsi-PHb9M,2640
42
42
  odoo/addons/base_tier_validation/views/tier_definition_view.xml,sha256=FHpO2tW8FYKQffayERVlQEJH_ip8baZ7nC1NcFDsP7Y,7635
@@ -45,7 +45,7 @@ odoo/addons/base_tier_validation/views/tier_validation_exception_view.xml,sha256
45
45
  odoo/addons/base_tier_validation/wizard/__init__.py,sha256=52q6-LAjYeJ1Vu5ahon_jnhds9VsoJvYaQCiZc82WKw,95
46
46
  odoo/addons/base_tier_validation/wizard/comment_wizard.py,sha256=gj7zCcpe47-2ifxSRlE6okQ1wtq5Ok3JBVg2CtN0ZIU,879
47
47
  odoo/addons/base_tier_validation/wizard/comment_wizard_view.xml,sha256=9XFTqrNwDCZH2IEX3HutaznSkBYk-6RERXzUDwObz4I,979
48
- odoo_addon_base_tier_validation-17.0.2.1.1.2.dist-info/METADATA,sha256=luw89gKJhpPufKiuS1eLrhUZgISq-8PcR1i8dJ6OJNU,9149
49
- odoo_addon_base_tier_validation-17.0.2.1.1.2.dist-info/WHEEL,sha256=8Rd4enx1PCuyDWP4SABqO5Fv8rpaknqp3VzjoFFLa6c,83
50
- odoo_addon_base_tier_validation-17.0.2.1.1.2.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
51
- odoo_addon_base_tier_validation-17.0.2.1.1.2.dist-info/RECORD,,
48
+ odoo_addon_base_tier_validation-17.0.2.1.2.dist-info/METADATA,sha256=UnNgzSyraZF3AycUDQfMGQc322qryTKoi9nJrtOeeLw,9224
49
+ odoo_addon_base_tier_validation-17.0.2.1.2.dist-info/WHEEL,sha256=8Rd4enx1PCuyDWP4SABqO5Fv8rpaknqp3VzjoFFLa6c,83
50
+ odoo_addon_base_tier_validation-17.0.2.1.2.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
51
+ odoo_addon_base_tier_validation-17.0.2.1.2.dist-info/RECORD,,