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.
Files changed (38) hide show
  1. odoo/addons/base_tier_validation/README.rst +14 -6
  2. odoo/addons/base_tier_validation/__manifest__.py +3 -7
  3. odoo/addons/base_tier_validation/data/cron_data.xml +0 -2
  4. odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +7 -63
  5. odoo/addons/base_tier_validation/i18n/es.po +22 -62
  6. odoo/addons/base_tier_validation/i18n/es_MX.po +6 -62
  7. odoo/addons/base_tier_validation/i18n/fr.po +22 -62
  8. odoo/addons/base_tier_validation/i18n/it.po +50 -72
  9. odoo/addons/base_tier_validation/i18n/nl.po +935 -0
  10. odoo/addons/base_tier_validation/i18n/nl_NL.po +90 -97
  11. odoo/addons/base_tier_validation/i18n/sv.po +22 -62
  12. odoo/addons/base_tier_validation/i18n/tr.po +22 -62
  13. odoo/addons/base_tier_validation/i18n/zh_CN.po +6 -62
  14. odoo/addons/base_tier_validation/models/res_users.py +20 -14
  15. odoo/addons/base_tier_validation/models/tier_definition.py +14 -12
  16. odoo/addons/base_tier_validation/models/tier_review.py +15 -19
  17. odoo/addons/base_tier_validation/models/tier_validation.py +58 -57
  18. odoo/addons/base_tier_validation/models/tier_validation_exception.py +16 -14
  19. odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md +2 -0
  20. odoo/addons/base_tier_validation/readme/CREDITS.md +1 -0
  21. odoo/addons/base_tier_validation/security/tier_validation_security.xml +2 -6
  22. odoo/addons/base_tier_validation/static/description/index.html +14 -6
  23. odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.esm.js +18 -17
  24. odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml +46 -38
  25. odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.esm.js +17 -17
  26. odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.scss +1 -1
  27. odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml +25 -37
  28. odoo/addons/base_tier_validation/static/src/js/services/tier_review_service.esm.js +3 -4
  29. odoo/addons/base_tier_validation/templates/tier_validation_templates.xml +41 -50
  30. odoo/addons/base_tier_validation/tests/common.py +3 -6
  31. odoo/addons/base_tier_validation/views/tier_definition_view.xml +7 -11
  32. odoo/addons/base_tier_validation/views/tier_review_view.xml +3 -3
  33. odoo/addons/base_tier_validation/views/tier_validation_exception_view.xml +4 -5
  34. {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
  35. odoo_addon_base_tier_validation-18.0.1.0.0.8.dist-info/RECORD +56 -0
  36. odoo_addon_base_tier_validation-17.0.2.3.3.dist-info/RECORD +0 -54
  37. {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
  38. {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
- "- %(not_allowed_fields)s\n"
863
+ "- %(not_allowed_fields_str)s\n"
919
864
  "\n"
920
865
  "Only those fields can be modified:\n"
921
- "- %(allowed_fields)s"
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
- "- %(not_allowed_fields)s\n"
874
+ "- %(not_allowed_fields_str)s\n"
931
875
  "\n"
932
876
  "Only those fields can be modified:\n"
933
- "- %(allowed_fields)s"
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", self.env.user.review_ids.ids),
19
+ ("id", "in", user.review_ids.ids),
19
20
  ]
20
- review_groups = self.env["tier.review"].read_group(domain, ["model"], ["model"])
21
- for review_group in review_groups:
22
- model = review_group["model"]
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 reviews and hasattr(Model, "can_review"):
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(self.env.user)
36
+ Model.with_user(user)
29
37
  .with_context(active_test=False)
30
- .search([("id", "in", reviews.mapped("res_id"))])
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 self.env[model]._state_field in self.env[model]._fields:
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": record._description,
48
+ "name": Model._description,
43
49
  "model": model,
44
- "active_field": "active" in record._fields,
45
- "icon": modules.module.get_module_icon(record._original_module),
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 _, api, fields, models
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
- for rec in self:
124
- rec.valid_reviewer_field_ids = (
125
- self.env["ir.model.fields"]
126
- .sudo()
127
- .search([("model", "=", rec.model), ("relation", "=", "res.users")])
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 _, api, fields, models
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", readonly=True)
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", readonly=True)
36
- reviewer_id = fields.Many2one(related="definition_id.reviewer_id", readonly=True)
37
- reviewer_group_id = fields.Many2one(
38
- related="definition_id.reviewer_group_id", readonly=True
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", readonly=True)
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", readonly=True
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") % rec.reviewer_group_id.name
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(_("There are no res.users in the selected field"))
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.") % (delay)
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 %s" % 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