odoo-addon-base-tier-validation 16.0.2.2.2.3__py3-none-any.whl → 16.0.2.3.0.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.
- odoo/addons/base_tier_validation/README.rst +1 -1
- odoo/addons/base_tier_validation/__manifest__.py +1 -1
- odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +10 -0
- odoo/addons/base_tier_validation/i18n/es.po +10 -0
- odoo/addons/base_tier_validation/i18n/es_MX.po +10 -0
- odoo/addons/base_tier_validation/i18n/fr.po +10 -0
- odoo/addons/base_tier_validation/i18n/it.po +11 -1
- odoo/addons/base_tier_validation/i18n/nl_NL.po +10 -0
- odoo/addons/base_tier_validation/i18n/sv.po +10 -0
- odoo/addons/base_tier_validation/i18n/tr.po +10 -0
- odoo/addons/base_tier_validation/i18n/zh_CN.po +10 -0
- odoo/addons/base_tier_validation/models/tier_validation.py +39 -5
- odoo/addons/base_tier_validation/static/description/index.html +1 -1
- odoo/addons/base_tier_validation/templates/tier_validation_templates.xml +7 -0
- odoo/addons/base_tier_validation/tests/test_tier_validation.py +82 -0
- {odoo_addon_base_tier_validation-16.0.2.2.2.3.dist-info → odoo_addon_base_tier_validation-16.0.2.3.0.2.dist-info}/METADATA +2 -2
- {odoo_addon_base_tier_validation-16.0.2.2.2.3.dist-info → odoo_addon_base_tier_validation-16.0.2.3.0.2.dist-info}/RECORD +19 -19
- {odoo_addon_base_tier_validation-16.0.2.2.2.3.dist-info → odoo_addon_base_tier_validation-16.0.2.3.0.2.dist-info}/WHEEL +0 -0
- {odoo_addon_base_tier_validation-16.0.2.2.2.3.dist-info → odoo_addon_base_tier_validation-16.0.2.3.0.2.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:b8ad9914d3d83a36f03df6d1027d6d363fbce13a577a647069407aa865d65e24
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
12
12
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -363,6 +363,11 @@ msgid ""
|
|
363
363
|
"definition are restarted."
|
364
364
|
msgstr ""
|
365
365
|
|
366
|
+
#. module: base_tier_validation
|
367
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
368
|
+
msgid "Is Reevaluation Required"
|
369
|
+
msgstr ""
|
370
|
+
|
366
371
|
#. module: base_tier_validation
|
367
372
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
368
373
|
msgid "It's fully validated"
|
@@ -523,6 +528,11 @@ msgstr ""
|
|
523
528
|
msgid "Pending"
|
524
529
|
msgstr ""
|
525
530
|
|
531
|
+
#. module: base_tier_validation
|
532
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
533
|
+
msgid "Reevaluate Reviews"
|
534
|
+
msgstr ""
|
535
|
+
|
526
536
|
#. module: base_tier_validation
|
527
537
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
528
538
|
msgid "Referenced Model"
|
@@ -381,6 +381,11 @@ msgstr ""
|
|
381
381
|
"Si está establecido, los revisores serán notificados por email cuando una "
|
382
382
|
"revisión relativa a ésta definición se ha reiniciado."
|
383
383
|
|
384
|
+
#. module: base_tier_validation
|
385
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
386
|
+
msgid "Is Reevaluation Required"
|
387
|
+
msgstr ""
|
388
|
+
|
384
389
|
#. module: base_tier_validation
|
385
390
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
386
391
|
msgid "It's fully validated"
|
@@ -546,6 +551,11 @@ msgstr ""
|
|
546
551
|
msgid "Pending"
|
547
552
|
msgstr "Pendiente"
|
548
553
|
|
554
|
+
#. module: base_tier_validation
|
555
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
556
|
+
msgid "Reevaluate Reviews"
|
557
|
+
msgstr ""
|
558
|
+
|
549
559
|
#. module: base_tier_validation
|
550
560
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
551
561
|
msgid "Referenced Model"
|
@@ -371,6 +371,11 @@ msgid ""
|
|
371
371
|
"definition are restarted."
|
372
372
|
msgstr ""
|
373
373
|
|
374
|
+
#. module: base_tier_validation
|
375
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
376
|
+
msgid "Is Reevaluation Required"
|
377
|
+
msgstr ""
|
378
|
+
|
374
379
|
#. module: base_tier_validation
|
375
380
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
376
381
|
msgid "It's fully validated"
|
@@ -531,6 +536,11 @@ msgstr ""
|
|
531
536
|
msgid "Pending"
|
532
537
|
msgstr "Pendiente"
|
533
538
|
|
539
|
+
#. module: base_tier_validation
|
540
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
541
|
+
msgid "Reevaluate Reviews"
|
542
|
+
msgstr ""
|
543
|
+
|
534
544
|
#. module: base_tier_validation
|
535
545
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
536
546
|
msgid "Referenced Model"
|
@@ -384,6 +384,11 @@ msgstr ""
|
|
384
384
|
"Si défini, les réviseurs seront notifiés par email quand une revue liée à "
|
385
385
|
"cette définition est recommencée."
|
386
386
|
|
387
|
+
#. module: base_tier_validation
|
388
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
389
|
+
msgid "Is Reevaluation Required"
|
390
|
+
msgstr ""
|
391
|
+
|
387
392
|
#. module: base_tier_validation
|
388
393
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
389
394
|
msgid "It's fully validated"
|
@@ -552,6 +557,11 @@ msgstr ""
|
|
552
557
|
msgid "Pending"
|
553
558
|
msgstr "En attente"
|
554
559
|
|
560
|
+
#. module: base_tier_validation
|
561
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
562
|
+
msgid "Reevaluate Reviews"
|
563
|
+
msgstr ""
|
564
|
+
|
555
565
|
#. module: base_tier_validation
|
556
566
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
557
567
|
msgid "Referenced Model"
|
@@ -6,7 +6,7 @@ msgid ""
|
|
6
6
|
msgstr ""
|
7
7
|
"Project-Id-Version: Odoo Server 14.0\n"
|
8
8
|
"Report-Msgid-Bugs-To: \n"
|
9
|
-
"PO-Revision-Date:
|
9
|
+
"PO-Revision-Date: 2025-01-05 19:06+0000\n"
|
10
10
|
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
|
11
11
|
"Language-Team: none\n"
|
12
12
|
"Language: it\n"
|
@@ -383,6 +383,11 @@ msgstr ""
|
|
383
383
|
"Se impostata, i revisori verranno avvisati con e-mail quando una revisione "
|
384
384
|
"relativa a questa definizione viene riavviata."
|
385
385
|
|
386
|
+
#. module: base_tier_validation
|
387
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
388
|
+
msgid "Is Reevaluation Required"
|
389
|
+
msgstr "È richiesta la rivalutazione"
|
390
|
+
|
386
391
|
#. module: base_tier_validation
|
387
392
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
388
393
|
msgid "It's fully validated"
|
@@ -550,6 +555,11 @@ msgstr ""
|
|
550
555
|
msgid "Pending"
|
551
556
|
msgstr "In attesa"
|
552
557
|
|
558
|
+
#. module: base_tier_validation
|
559
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
560
|
+
msgid "Reevaluate Reviews"
|
561
|
+
msgstr "Rivalutazione revisioni"
|
562
|
+
|
553
563
|
#. module: base_tier_validation
|
554
564
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
555
565
|
msgid "Referenced Model"
|
@@ -375,6 +375,11 @@ msgid ""
|
|
375
375
|
"definition are restarted."
|
376
376
|
msgstr ""
|
377
377
|
|
378
|
+
#. module: base_tier_validation
|
379
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
380
|
+
msgid "Is Reevaluation Required"
|
381
|
+
msgstr ""
|
382
|
+
|
378
383
|
#. module: base_tier_validation
|
379
384
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
380
385
|
msgid "It's fully validated"
|
@@ -538,6 +543,11 @@ msgstr ""
|
|
538
543
|
msgid "Pending"
|
539
544
|
msgstr "In afwachting"
|
540
545
|
|
546
|
+
#. module: base_tier_validation
|
547
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
548
|
+
msgid "Reevaluate Reviews"
|
549
|
+
msgstr ""
|
550
|
+
|
541
551
|
#. module: base_tier_validation
|
542
552
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
543
553
|
msgid "Referenced Model"
|
@@ -373,6 +373,11 @@ msgid ""
|
|
373
373
|
"definition are restarted."
|
374
374
|
msgstr ""
|
375
375
|
|
376
|
+
#. module: base_tier_validation
|
377
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
378
|
+
msgid "Is Reevaluation Required"
|
379
|
+
msgstr ""
|
380
|
+
|
376
381
|
#. module: base_tier_validation
|
377
382
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
378
383
|
msgid "It's fully validated"
|
@@ -537,6 +542,11 @@ msgstr ""
|
|
537
542
|
msgid "Pending"
|
538
543
|
msgstr "Väntande"
|
539
544
|
|
545
|
+
#. module: base_tier_validation
|
546
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
547
|
+
msgid "Reevaluate Reviews"
|
548
|
+
msgstr ""
|
549
|
+
|
540
550
|
#. module: base_tier_validation
|
541
551
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
542
552
|
msgid "Referenced Model"
|
@@ -370,6 +370,11 @@ msgid ""
|
|
370
370
|
"definition are restarted."
|
371
371
|
msgstr ""
|
372
372
|
|
373
|
+
#. module: base_tier_validation
|
374
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
375
|
+
msgid "Is Reevaluation Required"
|
376
|
+
msgstr ""
|
377
|
+
|
373
378
|
#. module: base_tier_validation
|
374
379
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
375
380
|
msgid "It's fully validated"
|
@@ -530,6 +535,11 @@ msgstr ""
|
|
530
535
|
msgid "Pending"
|
531
536
|
msgstr "Bekleyen"
|
532
537
|
|
538
|
+
#. module: base_tier_validation
|
539
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
540
|
+
msgid "Reevaluate Reviews"
|
541
|
+
msgstr ""
|
542
|
+
|
533
543
|
#. module: base_tier_validation
|
534
544
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
535
545
|
msgid "Referenced Model"
|
@@ -366,6 +366,11 @@ msgid ""
|
|
366
366
|
"definition are restarted."
|
367
367
|
msgstr ""
|
368
368
|
|
369
|
+
#. module: base_tier_validation
|
370
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__is_reevaluation_required
|
371
|
+
msgid "Is Reevaluation Required"
|
372
|
+
msgstr ""
|
373
|
+
|
369
374
|
#. module: base_tier_validation
|
370
375
|
#: model_terms:ir.actions.act_window,help:base_tier_validation.tier_validation_exception_action
|
371
376
|
msgid "It's fully validated"
|
@@ -526,6 +531,11 @@ msgstr ""
|
|
526
531
|
msgid "Pending"
|
527
532
|
msgstr "待审批"
|
528
533
|
|
534
|
+
#. module: base_tier_validation
|
535
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons
|
536
|
+
msgid "Reevaluate Reviews"
|
537
|
+
msgstr ""
|
538
|
+
|
529
539
|
#. module: base_tier_validation
|
530
540
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id
|
531
541
|
msgid "Referenced Model"
|
@@ -12,7 +12,7 @@ from odoo.exceptions import ValidationError
|
|
12
12
|
from odoo.osv.expression import OR
|
13
13
|
from odoo.tools.misc import frozendict
|
14
14
|
|
15
|
-
BASE_EXCEPTION_FIELDS = ["message_follower_ids", "access_token"]
|
15
|
+
BASE_EXCEPTION_FIELDS = ["message_follower_ids", "access_token", "need_validation"]
|
16
16
|
|
17
17
|
|
18
18
|
class TierValidation(models.AbstractModel):
|
@@ -70,6 +70,9 @@ class TierValidation(models.AbstractModel):
|
|
70
70
|
)
|
71
71
|
has_comment = fields.Boolean(compute="_compute_has_comment")
|
72
72
|
next_review = fields.Char(compute="_compute_next_review")
|
73
|
+
is_reevaluation_required = fields.Boolean(
|
74
|
+
compute="_compute_is_reevaluation_required"
|
75
|
+
)
|
73
76
|
|
74
77
|
def _compute_has_comment(self):
|
75
78
|
for rec in self:
|
@@ -206,6 +209,27 @@ class TierValidation(models.AbstractModel):
|
|
206
209
|
)[:1]
|
207
210
|
rec.next_review = review and _("Next: %s") % review.name or ""
|
208
211
|
|
212
|
+
def _compute_is_reevaluation_required(self):
|
213
|
+
for rec in self:
|
214
|
+
if isinstance(rec.id, models.NewId):
|
215
|
+
rec.is_reevaluation_required = False
|
216
|
+
continue
|
217
|
+
tiers = (
|
218
|
+
self.env["tier.definition"]
|
219
|
+
.with_context(active_test=True)
|
220
|
+
.search(
|
221
|
+
[
|
222
|
+
("model", "=", self._name),
|
223
|
+
("company_id", "in", [False] + self.env.company.ids),
|
224
|
+
]
|
225
|
+
)
|
226
|
+
)
|
227
|
+
rec.is_reevaluation_required = False
|
228
|
+
valid_tiers = tiers.filtered(lambda x: rec.evaluate_tier(x))
|
229
|
+
if valid_tiers and rec.review_ids.definition_id:
|
230
|
+
if len(valid_tiers) != len(rec.review_ids.definition_id):
|
231
|
+
rec.is_reevaluation_required = True
|
232
|
+
|
209
233
|
@api.model
|
210
234
|
def _calc_reviews_validated(self, reviews):
|
211
235
|
"""Override for different validation policy."""
|
@@ -233,10 +257,12 @@ class TierValidation(models.AbstractModel):
|
|
233
257
|
]
|
234
258
|
)
|
235
259
|
)
|
236
|
-
valid_tiers =
|
237
|
-
|
238
|
-
|
239
|
-
)
|
260
|
+
valid_tiers = tiers.filtered(lambda x: rec.evaluate_tier(x))
|
261
|
+
requested_tiers = rec.review_ids.filtered(
|
262
|
+
lambda x: x.status != "pending"
|
263
|
+
).mapped("definition_id")
|
264
|
+
new_tiers = valid_tiers - requested_tiers
|
265
|
+
rec.need_validation = new_tiers and rec._check_state_from_condition()
|
240
266
|
|
241
267
|
def evaluate_tier(self, tier):
|
242
268
|
if tier.definition_domain:
|
@@ -620,6 +646,7 @@ class TierValidation(models.AbstractModel):
|
|
620
646
|
[
|
621
647
|
("model", "=", self._name),
|
622
648
|
("company_id", "in", [False] + self.env.company.ids),
|
649
|
+
("id", "not in", rec.review_ids.mapped("definition_id").ids),
|
623
650
|
],
|
624
651
|
order="sequence desc",
|
625
652
|
)
|
@@ -674,6 +701,13 @@ class TierValidation(models.AbstractModel):
|
|
674
701
|
getattr(self, subscribe)(partner_ids=partners_to_notify_ids)
|
675
702
|
rec._notify_restarted_review()
|
676
703
|
|
704
|
+
def reevaluate_reviews(self):
|
705
|
+
reviews = self.env["tier.review"]
|
706
|
+
for rec in self:
|
707
|
+
rec._compute_need_validation()
|
708
|
+
reviews += rec.request_validation()
|
709
|
+
return reviews
|
710
|
+
|
677
711
|
@api.model
|
678
712
|
def _update_counter(self, review_counter):
|
679
713
|
self.review_ids._compute_can_review()
|
@@ -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:b8ad9914d3d83a36f03df6d1027d6d363fbce13a577a647069407aa865d65e24
|
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
|
@@ -18,11 +18,18 @@
|
|
18
18
|
('#{state_field}', '#{state_operator}', #{state_value})]}"
|
19
19
|
type="object"
|
20
20
|
/>
|
21
|
+
<button
|
22
|
+
name="reevaluate_reviews"
|
23
|
+
string="Reevaluate Reviews"
|
24
|
+
t-attf-attrs="{'invisible': ['|',('is_reevaluation_required', '!=', True),('#{state_field}', '#{state_operator}', #{state_value})]}"
|
25
|
+
type="object"
|
26
|
+
/>
|
21
27
|
</div>
|
22
28
|
</template>
|
23
29
|
<template id="tier_validation_label">
|
24
30
|
<div>
|
25
31
|
<field name="need_validation" invisible="1" />
|
32
|
+
<field name="is_reevaluation_required" invisible="1" />
|
26
33
|
<field name="validated" invisible="1" />
|
27
34
|
<field name="rejected" invisible="1" />
|
28
35
|
<div
|
@@ -905,6 +905,88 @@ class TierTierValidation(CommonTierValidation):
|
|
905
905
|
)
|
906
906
|
self.assertEqual(self.test_record.test_validation_field, 4)
|
907
907
|
|
908
|
+
def test_27_reevaluate_validation(self):
|
909
|
+
# Create new test record
|
910
|
+
test_record = self.test_model.create(
|
911
|
+
{"test_field": 100, "test_validation_field": 15}
|
912
|
+
)
|
913
|
+
# Create tier definitions
|
914
|
+
self.tier_def_obj.create(
|
915
|
+
{
|
916
|
+
"model_id": self.tester_model.id,
|
917
|
+
"review_type": "individual",
|
918
|
+
"reviewer_id": self.test_user_1.id,
|
919
|
+
"definition_domain": "[('test_field', '>', 100)]",
|
920
|
+
}
|
921
|
+
)
|
922
|
+
# Request validation
|
923
|
+
reviews = test_record.with_user(self.test_user_2.id).request_validation()
|
924
|
+
# Check need validation
|
925
|
+
self.assertTrue(test_record.need_validation)
|
926
|
+
self.assertEqual(len(reviews), 1)
|
927
|
+
|
928
|
+
# Now record is not validated yet and new definition create,
|
929
|
+
# and then we reevaluate object then it will add new definition validation
|
930
|
+
# also in current object
|
931
|
+
self.tier_def_obj.create(
|
932
|
+
{
|
933
|
+
"model_id": self.tester_model.id,
|
934
|
+
"review_type": "individual",
|
935
|
+
"reviewer_id": self.test_user_1.id,
|
936
|
+
"definition_domain": "[('test_validation_field', '>', 10)]",
|
937
|
+
}
|
938
|
+
)
|
939
|
+
|
940
|
+
# Reevaluate Validation
|
941
|
+
reviews = test_record.with_user(self.test_user_2.id).reevaluate_reviews()
|
942
|
+
# Check need validation
|
943
|
+
self.assertTrue(test_record.need_validation)
|
944
|
+
self.assertEqual(len(reviews), 2)
|
945
|
+
|
946
|
+
def test_28_reevaluate_validation(self):
|
947
|
+
# Create new test record
|
948
|
+
test_record = self.test_model.create(
|
949
|
+
{"test_field": 100, "test_validation_field": 15}
|
950
|
+
)
|
951
|
+
# Create tier definitions
|
952
|
+
# 1st defination to check test_field
|
953
|
+
self.tier_def_obj.create(
|
954
|
+
{
|
955
|
+
"model_id": self.tester_model.id,
|
956
|
+
"review_type": "individual",
|
957
|
+
"reviewer_id": self.test_user_1.id,
|
958
|
+
"definition_domain": "[('test_field', '>', 100)]",
|
959
|
+
}
|
960
|
+
)
|
961
|
+
# 2nd definition will be trigger only when there is
|
962
|
+
# new message with body "This record need extra validation"
|
963
|
+
test_message = "This record need extra validation"
|
964
|
+
self.tier_def_obj.create(
|
965
|
+
{
|
966
|
+
"model_id": self.tester_model.id,
|
967
|
+
"review_type": "individual",
|
968
|
+
"reviewer_id": self.test_user_1.id,
|
969
|
+
"definition_domain": "[('message_ids.body', 'ilike', '%s')]"
|
970
|
+
% (test_message),
|
971
|
+
}
|
972
|
+
)
|
973
|
+
|
974
|
+
# Request validation
|
975
|
+
reviews = test_record.with_user(self.test_user_2.id).request_validation()
|
976
|
+
# Check need validation
|
977
|
+
self.assertTrue(test_record.need_validation)
|
978
|
+
self.assertEqual(len(reviews), 1)
|
979
|
+
|
980
|
+
# now post new message "This record need extra validation",
|
981
|
+
# it will need to reevaluate record and will add new tier validation
|
982
|
+
test_record.with_user(self.test_user_2.id).message_post(body=test_message)
|
983
|
+
|
984
|
+
# Reevaluate Validation
|
985
|
+
reviews = test_record.with_user(self.test_user_2.id).reevaluate_reviews()
|
986
|
+
# Check need validation
|
987
|
+
self.assertTrue(test_record.need_validation)
|
988
|
+
self.assertEqual(len(reviews), 2)
|
989
|
+
|
908
990
|
|
909
991
|
@tagged("at_install")
|
910
992
|
class TierTierValidationView(CommonTierValidation):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-base_tier_validation
|
3
|
-
Version: 16.0.2.
|
3
|
+
Version: 16.0.2.3.0.2
|
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:b8ad9914d3d83a36f03df6d1027d6d363fbce13a577a647069407aa865d65e24
|
27
27
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
28
28
|
|
29
29
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -1,23 +1,23 @@
|
|
1
|
-
odoo/addons/base_tier_validation/README.rst,sha256=
|
1
|
+
odoo/addons/base_tier_validation/README.rst,sha256=POG5AbEptBmF9jKRhniSDwG-uM4_C_JjKt8ypZkpOvk,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=QHoUIYdO9MTnehkfTn2ZsGc8XDOJmkpx72xtn1GRwbc,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
|
-
odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=
|
7
|
-
odoo/addons/base_tier_validation/i18n/es.po,sha256=
|
8
|
-
odoo/addons/base_tier_validation/i18n/es_MX.po,sha256=
|
9
|
-
odoo/addons/base_tier_validation/i18n/fr.po,sha256=
|
10
|
-
odoo/addons/base_tier_validation/i18n/it.po,sha256=
|
11
|
-
odoo/addons/base_tier_validation/i18n/nl_NL.po,sha256=
|
12
|
-
odoo/addons/base_tier_validation/i18n/sv.po,sha256=
|
13
|
-
odoo/addons/base_tier_validation/i18n/tr.po,sha256=
|
14
|
-
odoo/addons/base_tier_validation/i18n/zh_CN.po,sha256=
|
6
|
+
odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=RtlXdM30mKs3ju2AjK4QxnQJ4RsuW5-RVl4aXG_UZ6I,32406
|
7
|
+
odoo/addons/base_tier_validation/i18n/es.po,sha256=urCnXenhaB4cIIyDfx9CBoC1dDMF7Y4mYZTi9u847j4,37588
|
8
|
+
odoo/addons/base_tier_validation/i18n/es_MX.po,sha256=j4qAtTP7tfChP8t15yme358bzY5Y9cuOYlimKkcoCB8,35719
|
9
|
+
odoo/addons/base_tier_validation/i18n/fr.po,sha256=PGCnYOAYyPlWhQu-B_LteqXnR9EyAxp70R6wTwxqZdE,38688
|
10
|
+
odoo/addons/base_tier_validation/i18n/it.po,sha256=_WIPBDSZRWg9w76VUmGx-4ewfS9OoG0uInoIpW1ZP10,38741
|
11
|
+
odoo/addons/base_tier_validation/i18n/nl_NL.po,sha256=Bh388ouDd7IkMsIn10lIVeScp_Tq6TDBh5ufyGAWgt8,36570
|
12
|
+
odoo/addons/base_tier_validation/i18n/sv.po,sha256=P8bAPHdPdndhxvK131VSBVBMcPxuDovcrdZVzOWRHq0,36589
|
13
|
+
odoo/addons/base_tier_validation/i18n/tr.po,sha256=N1LV6RcQtWijjpGZSfiJgxAuncy-YazMQzoryFyJixI,35591
|
14
|
+
odoo/addons/base_tier_validation/i18n/zh_CN.po,sha256=jrDET9-y8-fr3etFKhkvDitutGeCz4uPzJQHfGf81n8,34142
|
15
15
|
odoo/addons/base_tier_validation/models/__init__.py,sha256=X8c8CFM5eOXyIErFr7xsaGDBPZMBSKE2v4W-_2h9B2s,250
|
16
16
|
odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=n-i1InkXDcFrKmNkTCWtxcDSaxIAvxY7JsU5NrufmmA,617
|
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=CH2pPpWUYvVmfWJelpo2GVxOdhlYzuQPWg7UB104-nE,32682
|
21
21
|
odoo/addons/base_tier_validation/models/tier_validation_exception.py,sha256=9H_FbTF04IyB2u6a82UAdIPmv_MUcFKmLNVl7UOM1lg,2882
|
22
22
|
odoo/addons/base_tier_validation/readme/CONFIGURE.rst,sha256=ABgtWmfnm0QieIj7_ZsvoTHwjaKiZkBLCAjUXJeOnm4,1466
|
23
23
|
odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst,sha256=hyMj4T9es9vnGNmdg-uPF9wc1xGRxC5DU39McI03xjA,479
|
@@ -27,7 +27,7 @@ odoo/addons/base_tier_validation/readme/ROADMAP.rst,sha256=UWhIpMUTM_ido6s3jZiF8
|
|
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=euBSWf1WoZj3bdZ0JUqpevOntjLo-vBLCJGNScsu2B4,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
|
@@ -43,10 +43,10 @@ odoo/addons/base_tier_validation/static/src/scss/systray.scss,sha256=vco1l3nsJfX
|
|
43
43
|
odoo/addons/base_tier_validation/static/src/xml/reviewer_menu_container.xml,sha256=pMgADQ7SgdHrE_FTo2hnpDJqPbuc9jOHXHSAaa0Gjbk,271
|
44
44
|
odoo/addons/base_tier_validation/static/src/xml/systray.xml,sha256=8W04E80UhUPQp6U9zvmDu1qqOXsDaDP8Q5YFw6Dgg7s,4987
|
45
45
|
odoo/addons/base_tier_validation/static/src/xml/tier_review_template.xml,sha256=o72pPVkPiPmr2KWucaTJahR945MbD4gaYyi3KQn6AyI,6217
|
46
|
-
odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=
|
46
|
+
odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=yBB3Sm9dPy9eJ2E6pD97od3Sr7I04_U21Jkcvy9LGYs,4559
|
47
47
|
odoo/addons/base_tier_validation/tests/__init__.py,sha256=7tj1DSbPnyA__lAKxvjX53Ll_ZTE8y8Z1bewtZJoURI,166
|
48
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=
|
49
|
+
odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=z7NjMeysN44OK5JEeGtn_QfxKobhRns7RTPLWG4zjmQ,40838
|
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.
|
60
|
-
odoo_addon_base_tier_validation-16.0.2.
|
61
|
-
odoo_addon_base_tier_validation-16.0.2.
|
62
|
-
odoo_addon_base_tier_validation-16.0.2.
|
59
|
+
odoo_addon_base_tier_validation-16.0.2.3.0.2.dist-info/METADATA,sha256=9ClQ7IGFQoFVEKtwa8oi-BIoF5fiH89wo2p_rkMB6QE,8580
|
60
|
+
odoo_addon_base_tier_validation-16.0.2.3.0.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
61
|
+
odoo_addon_base_tier_validation-16.0.2.3.0.2.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
62
|
+
odoo_addon_base_tier_validation-16.0.2.3.0.2.dist-info/RECORD,,
|
File without changes
|