odoo-addon-base-tier-validation 17.0.2.3.3__py3-none-any.whl → 18.0.1.0.0.8__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 +14 -6
- odoo/addons/base_tier_validation/__manifest__.py +3 -7
- odoo/addons/base_tier_validation/data/cron_data.xml +0 -2
- odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +7 -63
- odoo/addons/base_tier_validation/i18n/es.po +22 -62
- odoo/addons/base_tier_validation/i18n/es_MX.po +6 -62
- odoo/addons/base_tier_validation/i18n/fr.po +22 -62
- odoo/addons/base_tier_validation/i18n/it.po +50 -72
- odoo/addons/base_tier_validation/i18n/nl.po +935 -0
- odoo/addons/base_tier_validation/i18n/nl_NL.po +90 -97
- odoo/addons/base_tier_validation/i18n/sv.po +22 -62
- odoo/addons/base_tier_validation/i18n/tr.po +22 -62
- odoo/addons/base_tier_validation/i18n/zh_CN.po +6 -62
- odoo/addons/base_tier_validation/models/res_users.py +20 -14
- odoo/addons/base_tier_validation/models/tier_definition.py +14 -12
- odoo/addons/base_tier_validation/models/tier_review.py +15 -19
- odoo/addons/base_tier_validation/models/tier_validation.py +58 -57
- odoo/addons/base_tier_validation/models/tier_validation_exception.py +16 -14
- odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md +2 -0
- odoo/addons/base_tier_validation/readme/CREDITS.md +1 -0
- odoo/addons/base_tier_validation/security/tier_validation_security.xml +2 -6
- odoo/addons/base_tier_validation/static/description/index.html +14 -6
- odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.esm.js +18 -17
- odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml +46 -38
- odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.esm.js +17 -17
- odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.scss +1 -1
- odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml +25 -37
- odoo/addons/base_tier_validation/static/src/js/services/tier_review_service.esm.js +3 -4
- odoo/addons/base_tier_validation/templates/tier_validation_templates.xml +41 -50
- odoo/addons/base_tier_validation/tests/common.py +3 -6
- odoo/addons/base_tier_validation/views/tier_definition_view.xml +7 -11
- odoo/addons/base_tier_validation/views/tier_review_view.xml +3 -3
- odoo/addons/base_tier_validation/views/tier_validation_exception_view.xml +4 -5
- {odoo_addon_base_tier_validation-17.0.2.3.3.dist-info → odoo_addon_base_tier_validation-18.0.1.0.0.8.dist-info}/METADATA +17 -9
- odoo_addon_base_tier_validation-18.0.1.0.0.8.dist-info/RECORD +56 -0
- odoo_addon_base_tier_validation-17.0.2.3.3.dist-info/RECORD +0 -54
- {odoo_addon_base_tier_validation-17.0.2.3.3.dist-info → odoo_addon_base_tier_validation-18.0.1.0.0.8.dist-info}/WHEEL +0 -0
- {odoo_addon_base_tier_validation-17.0.2.3.3.dist-info → odoo_addon_base_tier_validation-18.0.1.0.0.8.dist-info}/top_level.txt +0 -0
@@ -55,56 +55,48 @@ msgstr ""
|
|
55
55
|
#. module: base_tier_validation
|
56
56
|
#. odoo-python
|
57
57
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
58
|
-
#, python-format
|
59
58
|
msgid "A record to be reviewed has been created by %s."
|
60
59
|
msgstr ""
|
61
60
|
|
62
61
|
#. module: base_tier_validation
|
63
62
|
#. odoo-python
|
64
63
|
#: code:addons/base_tier_validation/models/tier_review.py:0
|
65
|
-
#, python-format
|
66
64
|
msgid "A review has been requested %s days ago."
|
67
65
|
msgstr ""
|
68
66
|
|
69
67
|
#. module: base_tier_validation
|
70
68
|
#. odoo-python
|
71
69
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
72
|
-
#, python-format
|
73
70
|
msgid "A review has been requested by %s."
|
74
71
|
msgstr "%s 发起审批请求。"
|
75
72
|
|
76
73
|
#. module: base_tier_validation
|
77
74
|
#. odoo-python
|
78
75
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
79
|
-
#, python-format
|
80
76
|
msgid "A review was accepted"
|
81
77
|
msgstr "审批已通过"
|
82
78
|
|
83
79
|
#. module: base_tier_validation
|
84
80
|
#. odoo-python
|
85
81
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
86
|
-
#, python-format
|
87
82
|
msgid "A review was accepted. (%s)"
|
88
83
|
msgstr "审批已通过。 ( %s )"
|
89
84
|
|
90
85
|
#. module: base_tier_validation
|
91
86
|
#. odoo-python
|
92
87
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
93
|
-
#, python-format
|
94
88
|
msgid "A review was rejected by %(user)s. (%(comment)s)"
|
95
89
|
msgstr ""
|
96
90
|
|
97
91
|
#. module: base_tier_validation
|
98
92
|
#. odoo-python
|
99
93
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
100
|
-
#, python-format
|
101
94
|
msgid "A review was rejected by %s."
|
102
95
|
msgstr "%s 驳回了审批。"
|
103
96
|
|
104
97
|
#. module: base_tier_validation
|
105
98
|
#. odoo-python
|
106
99
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
107
|
-
#, python-format
|
108
100
|
msgid "A validation process is still open for at least one record."
|
109
101
|
msgstr "当前记录存在待批复的审批流程。"
|
110
102
|
|
@@ -113,13 +105,6 @@ msgstr "当前记录存在待批复的审批流程。"
|
|
113
105
|
msgid "Active"
|
114
106
|
msgstr "有效"
|
115
107
|
|
116
|
-
#. module: base_tier_validation
|
117
|
-
#. odoo-javascript
|
118
|
-
#: code:addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml:0
|
119
|
-
#, python-format
|
120
|
-
msgid "Activity"
|
121
|
-
msgstr ""
|
122
|
-
|
123
108
|
#. module: base_tier_validation
|
124
109
|
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search
|
125
110
|
msgid "All"
|
@@ -176,7 +161,6 @@ msgstr ""
|
|
176
161
|
#. module: base_tier_validation
|
177
162
|
#. odoo-python
|
178
163
|
#: code:addons/base_tier_validation/models/tier_validation_exception.py:0
|
179
|
-
#, python-format
|
180
164
|
msgid ""
|
181
165
|
"At least one of these fields must be checked! Write under Validation, Write "
|
182
166
|
"after Validation"
|
@@ -216,7 +200,6 @@ msgstr "取消"
|
|
216
200
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment
|
217
201
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment
|
218
202
|
#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard
|
219
|
-
#, python-format
|
220
203
|
msgid "Comment"
|
221
204
|
msgstr "审批意见"
|
222
205
|
|
@@ -280,7 +263,6 @@ msgstr "定义域"
|
|
280
263
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
281
264
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name
|
282
265
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name
|
283
|
-
#, python-format
|
284
266
|
msgid "Description"
|
285
267
|
msgstr "说明"
|
286
268
|
|
@@ -310,7 +292,6 @@ msgstr "审批人"
|
|
310
292
|
#. module: base_tier_validation
|
311
293
|
#. odoo-javascript
|
312
294
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
313
|
-
#, python-format
|
314
295
|
msgid "Done by"
|
315
296
|
msgstr "审批人"
|
316
297
|
|
@@ -327,7 +308,6 @@ msgstr ""
|
|
327
308
|
#. module: base_tier_validation
|
328
309
|
#. odoo-python
|
329
310
|
#: code:addons/base_tier_validation/models/tier_review.py:0
|
330
|
-
#, python-format
|
331
311
|
msgid "Group %s"
|
332
312
|
msgstr ""
|
333
313
|
|
@@ -360,8 +340,6 @@ msgid "ID"
|
|
360
340
|
msgstr "ID"
|
361
341
|
|
362
342
|
#. module: base_tier_validation
|
363
|
-
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__has_comment
|
364
|
-
#: model:ir.model.fields,help:base_tier_validation.field_tier_review__has_comment
|
365
343
|
#: model:ir.model.fields,help:base_tier_validation.field_tier_validation__has_comment
|
366
344
|
msgid "If set, Allow the reviewer to leave a comment on the review."
|
367
345
|
msgstr ""
|
@@ -464,7 +442,6 @@ msgstr "需要审批"
|
|
464
442
|
#. module: base_tier_validation
|
465
443
|
#. odoo-python
|
466
444
|
#: code:addons/base_tier_validation/models/tier_definition.py:0
|
467
|
-
#, python-format
|
468
445
|
msgid "New Tier Validation"
|
469
446
|
msgstr "新建多层级审批"
|
470
447
|
|
@@ -476,14 +453,12 @@ msgstr ""
|
|
476
453
|
#. module: base_tier_validation
|
477
454
|
#. odoo-python
|
478
455
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
479
|
-
#, python-format
|
480
456
|
msgid "Next: %s"
|
481
457
|
msgstr ""
|
482
458
|
|
483
459
|
#. module: base_tier_validation
|
484
460
|
#. odoo-javascript
|
485
461
|
#: code:addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml:0
|
486
|
-
#, python-format
|
487
462
|
msgid "No reviews to do."
|
488
463
|
msgstr "没有待审批的项目。"
|
489
464
|
|
@@ -526,20 +501,6 @@ msgid ""
|
|
526
501
|
"record:"
|
527
502
|
msgstr ""
|
528
503
|
|
529
|
-
#. module: base_tier_validation
|
530
|
-
#. odoo-python
|
531
|
-
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
532
|
-
#, python-format
|
533
|
-
msgid "Operation has been <b>rejected</b>."
|
534
|
-
msgstr ""
|
535
|
-
|
536
|
-
#. module: base_tier_validation
|
537
|
-
#. odoo-python
|
538
|
-
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
539
|
-
#, python-format
|
540
|
-
msgid "Operation has been <b>validated</b>!"
|
541
|
-
msgstr ""
|
542
|
-
|
543
504
|
#. module: base_tier_validation
|
544
505
|
#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget
|
545
506
|
msgid "Option to use python formula to get reviewers and find documents"
|
@@ -550,7 +511,6 @@ msgstr ""
|
|
550
511
|
#: code:addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml:0
|
551
512
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending
|
552
513
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending
|
553
|
-
#, python-format
|
554
514
|
msgid "Pending"
|
555
515
|
msgstr "待审批"
|
556
516
|
|
@@ -599,7 +559,6 @@ msgstr "发起人"
|
|
599
559
|
#. module: base_tier_validation
|
600
560
|
#. odoo-javascript
|
601
561
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
602
|
-
#, python-format
|
603
562
|
msgid "Requested by"
|
604
563
|
msgstr "发起人"
|
605
564
|
|
@@ -619,6 +578,8 @@ msgid "Restart Validation"
|
|
619
578
|
msgstr ""
|
620
579
|
|
621
580
|
#. module: base_tier_validation
|
581
|
+
#. odoo-javascript
|
582
|
+
#: code:addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml:0
|
622
583
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids
|
623
584
|
msgid "Review"
|
624
585
|
msgstr "审批"
|
@@ -652,7 +613,6 @@ msgstr "审批者"
|
|
652
613
|
#: code:addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml:0
|
653
614
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
654
615
|
#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids
|
655
|
-
#, python-format
|
656
616
|
msgid "Reviews"
|
657
617
|
msgstr "审批"
|
658
618
|
|
@@ -670,7 +630,6 @@ msgstr ""
|
|
670
630
|
#. odoo-javascript
|
671
631
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
672
632
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence
|
673
|
-
#, python-format
|
674
633
|
msgid "Sequence"
|
675
634
|
msgstr "序号"
|
676
635
|
|
@@ -683,35 +642,24 @@ msgstr "指定用户"
|
|
683
642
|
#. odoo-javascript
|
684
643
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
685
644
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status
|
686
|
-
#, python-format
|
687
645
|
msgid "Status"
|
688
646
|
msgstr "状态"
|
689
647
|
|
690
648
|
#. module: base_tier_validation
|
691
649
|
#. odoo-python
|
692
650
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
693
|
-
#, python-format
|
694
651
|
msgid "The review has been reset by %s."
|
695
652
|
msgstr ""
|
696
653
|
|
697
654
|
#. module: base_tier_validation
|
698
655
|
#. odoo-python
|
699
656
|
#: code:addons/base_tier_validation/models/tier_review.py:0
|
700
|
-
#, python-format
|
701
657
|
msgid "There are no res.users in the selected field"
|
702
658
|
msgstr ""
|
703
659
|
|
704
660
|
#. module: base_tier_validation
|
705
661
|
#. odoo-python
|
706
662
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
707
|
-
#, python-format
|
708
|
-
msgid "This %s needs to be validated"
|
709
|
-
msgstr ""
|
710
|
-
|
711
|
-
#. module: base_tier_validation
|
712
|
-
#. odoo-python
|
713
|
-
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
714
|
-
#, python-format
|
715
663
|
msgid ""
|
716
664
|
"This action needs to be validated for at least one record. Reviews pending:\n"
|
717
665
|
" - %s \n"
|
@@ -809,7 +757,6 @@ msgstr ""
|
|
809
757
|
#. module: base_tier_validation
|
810
758
|
#. odoo-javascript
|
811
759
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
812
|
-
#, python-format
|
813
760
|
msgid "Todo by"
|
814
761
|
msgstr ""
|
815
762
|
|
@@ -859,7 +806,6 @@ msgstr "审批人"
|
|
859
806
|
#. odoo-javascript
|
860
807
|
#: code:addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml:0
|
861
808
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date
|
862
|
-
#, python-format
|
863
809
|
msgid "Validation Date"
|
864
810
|
msgstr "审批日期"
|
865
811
|
|
@@ -912,25 +858,23 @@ msgstr ""
|
|
912
858
|
#. module: base_tier_validation
|
913
859
|
#. odoo-python
|
914
860
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
915
|
-
#, python-format
|
916
861
|
msgid ""
|
917
862
|
"You are not allowed to write those fields after validation.\n"
|
918
|
-
"- %(
|
863
|
+
"- %(not_allowed_fields_str)s\n"
|
919
864
|
"\n"
|
920
865
|
"Only those fields can be modified:\n"
|
921
|
-
"- %(
|
866
|
+
"- %(allowed_fields_str)s"
|
922
867
|
msgstr ""
|
923
868
|
|
924
869
|
#. module: base_tier_validation
|
925
870
|
#. odoo-python
|
926
871
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
927
|
-
#, python-format
|
928
872
|
msgid ""
|
929
873
|
"You are not allowed to write those fields under validation.\n"
|
930
|
-
"- %(
|
874
|
+
"- %(not_allowed_fields_str)s\n"
|
931
875
|
"\n"
|
932
876
|
"Only those fields can be modified:\n"
|
933
|
-
"- %(
|
877
|
+
"- %(allowed_fields_str)s"
|
934
878
|
msgstr ""
|
935
879
|
|
936
880
|
#. module: base_tier_validation
|
@@ -12,37 +12,43 @@ class Users(models.Model):
|
|
12
12
|
@api.model
|
13
13
|
def review_user_count(self):
|
14
14
|
user_reviews = {}
|
15
|
+
user = self.env.user
|
15
16
|
domain = [
|
16
17
|
("status", "=", "pending"),
|
17
18
|
("can_review", "=", True),
|
18
|
-
("id", "in",
|
19
|
+
("id", "in", user.review_ids.ids),
|
19
20
|
]
|
20
|
-
review_groups = self.env["tier.review"].
|
21
|
-
|
22
|
-
|
21
|
+
review_groups = self.env["tier.review"]._read_group(
|
22
|
+
domain=domain,
|
23
|
+
groupby=["model"],
|
24
|
+
aggregates=["id:recordset"],
|
25
|
+
)
|
26
|
+
for model, tier_review in review_groups:
|
23
27
|
Model = self.env[model]
|
24
|
-
reviews = self.env["tier.review"].search(review_group.get("__domain"))
|
25
28
|
# Skip Models not having Tier Validation enabled (example: was unistalled)
|
26
|
-
if
|
29
|
+
if tier_review and hasattr(Model, "can_review"):
|
30
|
+
records_domain = [
|
31
|
+
("id", "in", tier_review.mapped("res_id")),
|
32
|
+
("rejected", "=", False),
|
33
|
+
("can_review", "=", True),
|
34
|
+
]
|
27
35
|
records = (
|
28
|
-
Model.with_user(
|
36
|
+
Model.with_user(user)
|
29
37
|
.with_context(active_test=False)
|
30
|
-
.search(
|
31
|
-
.filtered(lambda x: not x.rejected and x.can_review)
|
38
|
+
.search(records_domain)
|
32
39
|
)
|
33
40
|
# Excludes any cancelled records depending on the structure of the model
|
34
|
-
if
|
41
|
+
if Model._state_field in Model._fields:
|
35
42
|
records = records.filtered(
|
36
43
|
lambda x: x[x._state_field] != x._cancel_state
|
37
44
|
)
|
38
45
|
if records:
|
39
|
-
record = self.env[model]
|
40
46
|
user_reviews[model] = {
|
41
47
|
"id": records[0].id,
|
42
|
-
"name":
|
48
|
+
"name": Model._description,
|
43
49
|
"model": model,
|
44
|
-
"active_field": "active" in
|
45
|
-
"icon": modules.module.get_module_icon(
|
50
|
+
"active_field": "active" in Model._fields,
|
51
|
+
"icon": modules.module.get_module_icon(Model._original_module),
|
46
52
|
"type": "tier_review",
|
47
53
|
"pending_count": len(records),
|
48
54
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright 2017 ForgeFlow S.L. (https://www.forgeflow.com)
|
2
2
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
3
3
|
|
4
|
-
from odoo import
|
4
|
+
from odoo import api, fields, models
|
5
5
|
|
6
6
|
|
7
7
|
class TierDefinition(models.Model):
|
@@ -10,7 +10,7 @@ class TierDefinition(models.Model):
|
|
10
10
|
|
11
11
|
@api.model
|
12
12
|
def _get_default_name(self):
|
13
|
-
return _("New Tier Validation")
|
13
|
+
return self.env._("New Tier Validation")
|
14
14
|
|
15
15
|
@api.model
|
16
16
|
def _get_tier_validation_model_names(self):
|
@@ -93,11 +93,7 @@ class TierDefinition(models.Model):
|
|
93
93
|
help="If set, reviewers will be notified by email when a reviews related "
|
94
94
|
"to this definition are restarted.",
|
95
95
|
)
|
96
|
-
has_comment = fields.Boolean(
|
97
|
-
string="Comment",
|
98
|
-
default=False,
|
99
|
-
help="If set, Allow the reviewer to leave a comment on the review.",
|
100
|
-
)
|
96
|
+
has_comment = fields.Boolean(string="Comment", default=False)
|
101
97
|
notify_reminder_delay = fields.Integer(
|
102
98
|
string="Send reminder message on pending reviews",
|
103
99
|
help="Number of days after which a message must be posted to remind about "
|
@@ -120,12 +116,18 @@ class TierDefinition(models.Model):
|
|
120
116
|
|
121
117
|
@api.depends("review_type", "model_id")
|
122
118
|
def _compute_domain_reviewer_field(self):
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
119
|
+
models = self.mapped("model")
|
120
|
+
valid_reviewer_fields = dict(
|
121
|
+
self.env["ir.model.fields"]
|
122
|
+
.sudo()
|
123
|
+
._read_group(
|
124
|
+
domain=[("model", "in", models), ("relation", "=", "res.users")],
|
125
|
+
groupby=["model"],
|
126
|
+
aggregates=["id:array_agg"],
|
128
127
|
)
|
128
|
+
)
|
129
|
+
for rec in self:
|
130
|
+
rec.valid_reviewer_field_ids = valid_reviewer_fields.get(rec.model, [])
|
129
131
|
|
130
132
|
def _get_review_needing_reminder(self):
|
131
133
|
"""Return all the reviews that have the reminder setup."""
|
@@ -5,7 +5,7 @@ import logging
|
|
5
5
|
|
6
6
|
import pytz
|
7
7
|
|
8
|
-
from odoo import
|
8
|
+
from odoo import api, fields, models
|
9
9
|
from odoo.exceptions import ValidationError
|
10
10
|
|
11
11
|
_logger = logging.getLogger(__name__)
|
@@ -15,7 +15,7 @@ class TierReview(models.Model):
|
|
15
15
|
_name = "tier.review"
|
16
16
|
_description = "Tier Review"
|
17
17
|
|
18
|
-
name = fields.Char(related="definition_id.name"
|
18
|
+
name = fields.Char(related="definition_id.name")
|
19
19
|
status = fields.Selection(
|
20
20
|
[
|
21
21
|
("waiting", "Waiting"),
|
@@ -32,14 +32,10 @@ class TierReview(models.Model):
|
|
32
32
|
related="definition_id.company_id",
|
33
33
|
store=True,
|
34
34
|
)
|
35
|
-
review_type = fields.Selection(related="definition_id.review_type"
|
36
|
-
reviewer_id = fields.Many2one(related="definition_id.reviewer_id"
|
37
|
-
reviewer_group_id = fields.Many2one(
|
38
|
-
|
39
|
-
)
|
40
|
-
reviewer_field_id = fields.Many2one(
|
41
|
-
related="definition_id.reviewer_field_id", readonly=True
|
42
|
-
)
|
35
|
+
review_type = fields.Selection(related="definition_id.review_type")
|
36
|
+
reviewer_id = fields.Many2one(related="definition_id.reviewer_id")
|
37
|
+
reviewer_group_id = fields.Many2one(related="definition_id.reviewer_group_id")
|
38
|
+
reviewer_field_id = fields.Many2one(related="definition_id.reviewer_field_id")
|
43
39
|
reviewer_ids = fields.Many2many(
|
44
40
|
string="Reviewers",
|
45
41
|
comodel_name="res.users",
|
@@ -55,7 +51,7 @@ class TierReview(models.Model):
|
|
55
51
|
reviewed_formated_date = fields.Char(
|
56
52
|
string="Validation Formated Date", compute="_compute_reviewed_formated_date"
|
57
53
|
)
|
58
|
-
has_comment = fields.Boolean(related="definition_id.has_comment"
|
54
|
+
has_comment = fields.Boolean(related="definition_id.has_comment")
|
59
55
|
comment = fields.Char(string="Comments")
|
60
56
|
can_review = fields.Boolean(
|
61
57
|
compute="_compute_can_review",
|
@@ -63,11 +59,9 @@ class TierReview(models.Model):
|
|
63
59
|
help="""Can review will be marked if the review is pending and the
|
64
60
|
approve sequence has been achieved""",
|
65
61
|
)
|
66
|
-
approve_sequence = fields.Boolean(
|
67
|
-
related="definition_id.approve_sequence", readonly=True
|
68
|
-
)
|
62
|
+
approve_sequence = fields.Boolean(related="definition_id.approve_sequence")
|
69
63
|
approve_sequence_bypass = fields.Boolean(
|
70
|
-
related="definition_id.approve_sequence_bypass"
|
64
|
+
related="definition_id.approve_sequence_bypass"
|
71
65
|
)
|
72
66
|
last_reminder_date = fields.Datetime(readonly=True)
|
73
67
|
|
@@ -141,7 +135,7 @@ class TierReview(models.Model):
|
|
141
135
|
for rec in self:
|
142
136
|
todo_by = False
|
143
137
|
if rec.reviewer_group_id:
|
144
|
-
todo_by = _("Group %s"
|
138
|
+
todo_by = self.env._("Group %s", rec.reviewer_group_id.name)
|
145
139
|
else:
|
146
140
|
todo_by = ", ".join(rec.reviewer_ids[:num_show].mapped("display_name"))
|
147
141
|
num_users = len(rec.reviewer_ids)
|
@@ -157,7 +151,9 @@ class TierReview(models.Model):
|
|
157
151
|
resource = self.env[self.model].browse(self.res_id)
|
158
152
|
reviewer_field = getattr(resource, self.reviewer_field_id.name, False)
|
159
153
|
if not reviewer_field or not reviewer_field._name == "res.users":
|
160
|
-
raise ValidationError(
|
154
|
+
raise ValidationError(
|
155
|
+
self.env._("There are no res.users in the selected field")
|
156
|
+
)
|
161
157
|
return reviewer_field
|
162
158
|
|
163
159
|
def _notify_pending_status(self, review_ids):
|
@@ -173,7 +169,7 @@ class TierReview(models.Model):
|
|
173
169
|
|
174
170
|
def _notify_review_reminder_body(self):
|
175
171
|
delay = (fields.Datetime.now() - self.create_date).days
|
176
|
-
return _("A review has been requested %s days ago."
|
172
|
+
return self.env._("A review has been requested %s days ago.", delay)
|
177
173
|
|
178
174
|
def _send_review_reminder(self):
|
179
175
|
record = self.env[self.model].browse(self.res_id)
|
@@ -183,7 +179,7 @@ class TierReview(models.Model):
|
|
183
179
|
elif hasattr(record, "message_post"):
|
184
180
|
self._notify_review_reminder(record)
|
185
181
|
else:
|
186
|
-
msg = "Could not send reminder for record
|
182
|
+
msg = f"Could not send reminder for record {record}"
|
187
183
|
_logger.exception(msg)
|
188
184
|
self.last_reminder_date = fields.Datetime.now()
|
189
185
|
|