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.
- odoo/addons/base_tier_validation/README.rst +4 -1
- odoo/addons/base_tier_validation/__manifest__.py +1 -1
- odoo/addons/base_tier_validation/models/tier_validation.py +13 -13
- odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst +3 -0
- odoo/addons/base_tier_validation/static/description/index.html +5 -1
- odoo/addons/base_tier_validation/tests/common.py +18 -0
- odoo/addons/base_tier_validation/tests/test_tier_validation.py +10 -34
- {odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info → odoo_addon_base_tier_validation-16.0.2.2.1.dist-info}/METADATA +5 -2
- {odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info → odoo_addon_base_tier_validation-16.0.2.2.1.dist-info}/RECORD +11 -11
- {odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info → odoo_addon_base_tier_validation-16.0.2.2.1.dist-info}/WHEEL +0 -0
- {odoo_addon_base_tier_validation-16.0.2.2.0.1.dist-info → odoo_addon_base_tier_validation-16.0.2.2.1.dist-info}/top_level.txt +0 -0
@@ -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:
|
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
|
~~~~~~~~~~~
|
@@ -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)
|
@@ -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:
|
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&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 <<a class="reference external" href="mailto:evan.soh@omnisoftsolution.com">evan.soh@omnisoftsolution.com</a>></li>
|
583
583
|
<li>Manuel Regidor <<a class="reference external" href="mailto:manuel.regidor@sygel.es">manuel.regidor@sygel.es</a>></li>
|
584
584
|
<li>Eduardo de Miguel <<a class="reference external" href="mailto:edu@moduon.team">edu@moduon.team</a>></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.
|
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:
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
49
|
-
odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=
|
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.
|
60
|
-
odoo_addon_base_tier_validation-16.0.2.2.
|
61
|
-
odoo_addon_base_tier_validation-16.0.2.2.
|
62
|
-
odoo_addon_base_tier_validation-16.0.2.2.
|
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,,
|
File without changes
|