odoo-addon-base-tier-validation 16.0.2.2.0.1__py3-none-any.whl → 16.0.2.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 @@ 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:8b1acaf63ebb5ca436aa5ceacd1eda68013349402be0a94052155ba9f286e931
10
+ !! source digest: sha256:317f7069b7925d3e05983c45eb279f5a622afcda17ab4562a7774a362960ef75
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -229,6 +229,9 @@ Contributors
229
229
  * Evan Soh <evan.soh@omnisoftsolution.com>
230
230
  * Manuel Regidor <manuel.regidor@sygel.es>
231
231
  * Eduardo de Miguel <edu@moduon.team>
232
+ * `XCG Consulting <https://xcg-consulting.fr>`_:
233
+
234
+ * Houzéfa Abbasbhay
232
235
 
233
236
  Maintainers
234
237
  ~~~~~~~~~~~
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "name": "Base Tier Validation",
5
5
  "summary": "Implement a validation process based on tiers.",
6
- "version": "16.0.2.2.0",
6
+ "version": "16.0.2.2.1",
7
7
  "development_status": "Mature",
8
8
  "maintainers": ["LoisRForgeFlow"],
9
9
  "category": "Tools",
@@ -713,12 +713,7 @@ class TierValidation(models.AbstractModel):
713
713
  @api.model
714
714
  def get_view(self, view_id=None, view_type="form", **options):
715
715
  res = super().get_view(view_id=view_id, view_type=view_type, **options)
716
-
717
716
  View = self.env["ir.ui.view"]
718
-
719
- # Override context for postprocessing
720
- if view_id and res.get("base_model", self._name) != self._name:
721
- View = View.with_context(base_model_name=res["base_model"])
722
717
  if view_type == "form" and not self._tier_validation_manual_config:
723
718
  doc = etree.XML(res["arch"])
724
719
  params = {
@@ -726,7 +721,7 @@ class TierValidation(models.AbstractModel):
726
721
  "state_operator": "not in",
727
722
  "state_value": self._state_from,
728
723
  }
729
- all_models = res["models"].copy()
724
+ all_models = res["models"].copy() # {modelname(str) ➔ fields(tuple)}
730
725
  for node in doc.xpath(self._tier_validation_buttons_xpath):
731
726
  # By default, after the last button of the header
732
727
  # _add_tier_validation_buttons process
@@ -735,6 +730,7 @@ class TierValidation(models.AbstractModel):
735
730
  new_node = etree.fromstring(new_arch)
736
731
  for new_element in new_node:
737
732
  node.addnext(new_element)
733
+ _merge_view_fields(all_models, new_models)
738
734
  for node in doc.xpath("/form/sheet"):
739
735
  # _add_tier_validation_label process
740
736
  new_node = self._add_tier_validation_label(node, params)
@@ -742,18 +738,13 @@ class TierValidation(models.AbstractModel):
742
738
  new_node = etree.fromstring(new_arch)
743
739
  for new_element in new_node:
744
740
  node.addprevious(new_element)
741
+ _merge_view_fields(all_models, new_models)
745
742
  # _add_tier_validation_reviews process
746
743
  new_node = self._add_tier_validation_reviews(node, params)
747
744
  new_arch, new_models = View.postprocess_and_fields(new_node, self._name)
748
- for model in new_models:
749
- if model in all_models:
750
- continue
751
- if model not in res["models"]:
752
- all_models[model] = new_models[model]
753
- else:
754
- all_models[model] = res["models"][model]
755
745
  new_node = etree.fromstring(new_arch)
756
746
  node.append(new_node)
747
+ _merge_view_fields(all_models, new_models)
757
748
  excepted_fields = self._get_all_validation_exceptions()
758
749
  for node in doc.xpath("//field[@name][not(ancestor::field)]"):
759
750
  if node.attrib.get("name") in excepted_fields:
@@ -772,3 +763,12 @@ class TierValidation(models.AbstractModel):
772
763
  res["arch"] = etree.tostring(doc)
773
764
  res["models"] = frozendict(all_models)
774
765
  return res
766
+
767
+
768
+ def _merge_view_fields(all_models: dict, new_models: dict):
769
+ """Merge new_models into all_models. Both are {modelname(str) ➔ fields(tuple)}."""
770
+ for model, view_fields in new_models.items():
771
+ if model in all_models:
772
+ all_models[model] = tuple(set(all_models[model]) | set(view_fields))
773
+ else:
774
+ all_models[model] = tuple(view_fields)
@@ -8,3 +8,6 @@
8
8
  * Evan Soh <evan.soh@omnisoftsolution.com>
9
9
  * Manuel Regidor <manuel.regidor@sygel.es>
10
10
  * Eduardo de Miguel <edu@moduon.team>
11
+ * `XCG Consulting <https://xcg-consulting.fr>`_:
12
+
13
+ * 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:8b1acaf63ebb5ca436aa5ceacd1eda68013349402be0a94052155ba9f286e931
370
+ !! source digest: sha256:317f7069b7925d3e05983c45eb279f5a622afcda17ab4562a7774a362960ef75
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/16.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-16-0/server-ux-16-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=16.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 company
@@ -582,6 +582,10 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
582
582
  <li>Evan Soh &lt;<a class="reference external" href="mailto:evan.soh&#64;omnisoftsolution.com">evan.soh&#64;omnisoftsolution.com</a>&gt;</li>
583
583
  <li>Manuel Regidor &lt;<a class="reference external" href="mailto:manuel.regidor&#64;sygel.es">manuel.regidor&#64;sygel.es</a>&gt;</li>
584
584
  <li>Eduardo de Miguel &lt;<a class="reference external" href="mailto:edu&#64;moduon.team">edu&#64;moduon.team</a>&gt;</li>
585
+ <li><a class="reference external" href="https://xcg-consulting.fr">XCG Consulting</a>:<ul>
586
+ <li>Houzéfa Abbasbhay</li>
587
+ </ul>
588
+ </li>
585
589
  </ul>
586
590
  </div>
587
591
  <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(
@@ -909,23 +909,6 @@ class TierTierValidation(CommonTierValidation):
909
909
  @tagged("at_install")
910
910
  class TierTierValidationView(CommonTierValidation):
911
911
  def test_view_manual(self):
912
- # We need to add a view in order to ensure that an automatic view with all
913
- # fields is not created
914
- self.env["ir.ui.view"].create(
915
- {
916
- "model": self.test_record._name,
917
- "name": "Demo view",
918
- "arch": """<form>
919
- <header>
920
- <button name="action_confirm" type="object" string="Confirm" />
921
- <field name="state" widget="statusbar" />
922
- </header>
923
- <sheet>
924
- <field name="test_field" />
925
- </sheet>
926
- </form>""",
927
- }
928
- )
929
912
  with Form(self.test_record) as f:
930
913
  self.assertNotIn("review_ids", f._values)
931
914
  form = etree.fromstring(f._view["arch"])
@@ -934,26 +917,19 @@ class TierTierValidationView(CommonTierValidation):
934
917
  self.assertFalse(form.xpath("//button[@name='request_validation']"))
935
918
 
936
919
  def test_view_automatic(self):
937
- # We need to add a view in order to ensure that an automatic view with all
938
- # fields is not created
939
- self.env["ir.ui.view"].create(
940
- {
941
- "model": self.test_record_2._name,
942
- "name": "Demo view",
943
- "arch": """<form>
944
- <header>
945
- <button name="action_confirm" type="object" string="Confirm" />
946
- <field name="state" widget="statusbar" />
947
- </header>
948
- <sheet>
949
- <field name="test_field" />
950
- </sheet>
951
- </form>""",
952
- }
953
- )
954
920
  with Form(self.test_record_2) as f:
955
921
  self.assertIn("review_ids", f._values)
956
922
  form = etree.fromstring(f._view["arch"])
957
923
  self.assertTrue(form.xpath("//field[@name='review_ids']"))
958
924
  self.assertTrue(form.xpath("//field[@name='can_review']"))
959
925
  self.assertTrue(form.xpath("//button[@name='request_validation']"))
926
+
927
+ def test_get_view(self):
928
+ view = self.test_record_2.get_view()
929
+ model = "tier.validation.tester2"
930
+ self.assertEqual(view["model"], model)
931
+ self.assertEqual(view["models"].keys(), {model, "tier.review"})
932
+ self.assertIn("id", view["models"][model])
933
+ self.assertIn("need_validation", view["models"][model])
934
+ self.assertIn("next_review", view["models"][model])
935
+ 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: 16.0.2.2.0.1
3
+ Version: 16.0.2.2.1
4
4
  Summary: Implement a validation process based on tiers.
5
5
  Home-page: https://github.com/OCA/server-ux
6
6
  Author: ForgeFlow, Odoo Community Association (OCA)
@@ -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:8b1acaf63ebb5ca436aa5ceacd1eda68013349402be0a94052155ba9f286e931
26
+ !! source digest: sha256:317f7069b7925d3e05983c45eb279f5a622afcda17ab4562a7774a362960ef75
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
28
 
29
29
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -245,6 +245,9 @@ Contributors
245
245
  * Evan Soh <evan.soh@omnisoftsolution.com>
246
246
  * Manuel Regidor <manuel.regidor@sygel.es>
247
247
  * Eduardo de Miguel <edu@moduon.team>
248
+ * `XCG Consulting <https://xcg-consulting.fr>`_:
249
+
250
+ * Houzéfa Abbasbhay
248
251
 
249
252
  Maintainers
250
253
  ~~~~~~~~~~~
@@ -1,6 +1,6 @@
1
- odoo/addons/base_tier_validation/README.rst,sha256=WKb2UQhzf26eoEp_QtiAqqUpzzknkes42lAgTthn33A,7923
1
+ odoo/addons/base_tier_validation/README.rst,sha256=SEU9KGrO449Ao3C7RXIT-vR_ergLZXwPuFOc9_TGIpo,7996
2
2
  odoo/addons/base_tier_validation/__init__.py,sha256=rKfzYX9RhkkCxgh2f0PJLYN45Kw8T8-fwxw1pbjLuug,108
3
- odoo/addons/base_tier_validation/__manifest__.py,sha256=f5nlAgFFR2kvfzRhgYjR_x8tjgy-L4wwfVnByUubnRI,2011
3
+ odoo/addons/base_tier_validation/__manifest__.py,sha256=bLCXfXiMNcXjHp7jTas2GKXyaM7beBMEeJu6qMMZAq0,2011
4
4
  odoo/addons/base_tier_validation/data/cron_data.xml,sha256=HMA_SgAk3_vLu_QQLHd0UyzPASuDRj5cvpiK_17esQc,707
5
5
  odoo/addons/base_tier_validation/data/mail_data.xml,sha256=hXhGTSyG2NAsDfZShmpyBKTXJi46L5PP1mFJAlKmlVE,1984
6
6
  odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=ei6nid7LgkDWw5XSppYPq98Lm40Un5EZZkJoWHgVNos,31951
@@ -17,17 +17,17 @@ odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=n-i1InkXDc
17
17
  odoo/addons/base_tier_validation/models/res_users.py,sha256=JhUZ0NxJ9EPwpkJ-mvsNTrE1avQncGNKqAF-xFxokEo,2638
18
18
  odoo/addons/base_tier_validation/models/tier_definition.py,sha256=rcDv7ySDKqBD1ksJ09um_4Reec_Im1MrdotivQ7Q_44,5173
19
19
  odoo/addons/base_tier_validation/models/tier_review.py,sha256=ic6Rkh0PhliJ4gkWHmPJ84Ln2puGC1U5W5N2PCFlXw8,7267
20
- odoo/addons/base_tier_validation/models/tier_validation.py,sha256=66CUEME8O7yfLLyexzz9KCMVvK2M5i43J15Ljts_sbM,31180
20
+ odoo/addons/base_tier_validation/models/tier_validation.py,sha256=I1F00jlUJIjSsV04u8_eFut_9jG8J3vJF6S4OlbRzxw,31260
21
21
  odoo/addons/base_tier_validation/models/tier_validation_exception.py,sha256=A0cgAMLVm9WcQlF93UXNruxjJ4tLVLMwyiRoalBOkaI,2877
22
22
  odoo/addons/base_tier_validation/readme/CONFIGURE.rst,sha256=ABgtWmfnm0QieIj7_ZsvoTHwjaKiZkBLCAjUXJeOnm4,1466
23
- odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst,sha256=8y6Y3oIQodx0W7JKaUK9asvrvZbIPQCC6jTpms_HjuY,406
23
+ odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst,sha256=hyMj4T9es9vnGNmdg-uPF9wc1xGRxC5DU39McI03xjA,479
24
24
  odoo/addons/base_tier_validation/readme/DESCRIPTION.rst,sha256=MFbI1iBk0moWjdQUueJa05am8-JfIiiLRSyGgi1NBFY,653
25
25
  odoo/addons/base_tier_validation/readme/HISTORY.rst,sha256=YAvhjBTl1mz8-V5WxMmn3wwwSCcPwnczeRQtkxNmqBU,1440
26
26
  odoo/addons/base_tier_validation/readme/ROADMAP.rst,sha256=UWhIpMUTM_ido6s3jZiF8YYkAyC-mhMjAGJx6vGEn3w,867
27
27
  odoo/addons/base_tier_validation/security/ir.model.access.csv,sha256=vsKy73mk8r45jzU0fAt_vfM7-JSH7lIAA7JBr1P6FAY,633
28
28
  odoo/addons/base_tier_validation/security/tier_validation_security.xml,sha256=eWFwz-osHgYFmVoEVzOSboO9oqUMtQ8oygyaz0os50Y,806
29
29
  odoo/addons/base_tier_validation/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
30
- odoo/addons/base_tier_validation/static/description/index.html,sha256=jtyz_01QflmYS1GoMfSuAamGTzGmtjk1TMqr0tmOMAM,22175
30
+ odoo/addons/base_tier_validation/static/description/index.html,sha256=MByMpy6pBraRRNQqAI89cD-9arrCXkgV-O-HE6Ofw6A,22306
31
31
  odoo/addons/base_tier_validation/static/src/js/ir_model.esm.js,sha256=kHSA7CeIt02IZmsKJdn2yZVqKqSyQ6_g6QVmtq5Qo2A,706
32
32
  odoo/addons/base_tier_validation/static/src/js/main.esm.js,sha256=ZSHScoLlMQcO6jW9mLVusJOfyH5kJIw4szPK3xU-KHA,263
33
33
  odoo/addons/base_tier_validation/static/src/js/review_group_view.esm.js,sha256=G110cBwOwENHBUkuScOB8Xg05D0FzOqlsSl_US0PngA,1677
@@ -45,8 +45,8 @@ odoo/addons/base_tier_validation/static/src/xml/systray.xml,sha256=8W04E80UhUPQp
45
45
  odoo/addons/base_tier_validation/static/src/xml/tier_review_template.xml,sha256=o72pPVkPiPmr2KWucaTJahR945MbD4gaYyi3KQn6AyI,6217
46
46
  odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=fuIyMgIwp_UWrlR75TeAKMrfiK-kd2lH8xshLkwWeRg,4191
47
47
  odoo/addons/base_tier_validation/tests/__init__.py,sha256=7tj1DSbPnyA__lAKxvjX53Ll_ZTE8y8Z1bewtZJoURI,166
48
- odoo/addons/base_tier_validation/tests/common.py,sha256=sl4yBrOQzQW7nXJMeXIMYPp606NcOHeWGlZpElwQKrk,3080
49
- odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=u2p6FZuLYsx4Ol1quw6wresVtvxkbp87Nbof4qid_KA,38308
48
+ odoo/addons/base_tier_validation/tests/common.py,sha256=Jnt8vMSca4XsiUGbnSDXvyKCCP6aeXepI476_2Gg_to,3787
49
+ odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=RKGH9WI-q2u9uTFWnemBlvrhLICpWxCWSUDZPNPjQFk,37572
50
50
  odoo/addons/base_tier_validation/tests/test_tier_validation_reminder.py,sha256=jsLU-7pJtbUvKPi7ddXU4jAwiJp32pKTrluarrtLKvU,1963
51
51
  odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=3usFbhfDhlKIWbVu--3qsbsm52B6RwTP4zy244dY1yk,1757
52
52
  odoo/addons/base_tier_validation/views/res_config_settings_views.xml,sha256=Al6XKCN1QGLPcgAaXTvEnSTYkwBrzDGfSRh3CQD4g5Q,4234
@@ -56,7 +56,7 @@ odoo/addons/base_tier_validation/views/tier_validation_exception_view.xml,sha256
56
56
  odoo/addons/base_tier_validation/wizard/__init__.py,sha256=52q6-LAjYeJ1Vu5ahon_jnhds9VsoJvYaQCiZc82WKw,95
57
57
  odoo/addons/base_tier_validation/wizard/comment_wizard.py,sha256=gj7zCcpe47-2ifxSRlE6okQ1wtq5Ok3JBVg2CtN0ZIU,879
58
58
  odoo/addons/base_tier_validation/wizard/comment_wizard_view.xml,sha256=9XFTqrNwDCZH2IEX3HutaznSkBYk-6RERXzUDwObz4I,979
59
- odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info/METADATA,sha256=YDNJwEKH14O9ydqae4HyCgwkszI-oiccilgLsP-itNk,8508
60
- odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
61
- odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
62
- odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info/RECORD,,
59
+ odoo_addon_base_tier_validation-16.0.2.2.1.dist-info/METADATA,sha256=x1vjr9io26SvdhtENt54KFBdR33Qe6Drr0ipF8_1OHI,8579
60
+ odoo_addon_base_tier_validation-16.0.2.2.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
61
+ odoo_addon_base_tier_validation-16.0.2.2.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
62
+ odoo_addon_base_tier_validation-16.0.2.2.1.dist-info/RECORD,,