Skip to content

Commit 35eaa44

Browse files
ps-tubtimSaran440
authored andcommitted
[FIX] base_tier_validation_server_action: fix reject tier error
1 parent 2aa59a9 commit 35eaa44

File tree

6 files changed

+63
-6
lines changed

6 files changed

+63
-6
lines changed

Diff for: base_tier_validation_server_action/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
22

33
from . import models
4+
from . import wizard

Diff for: base_tier_validation_server_action/models/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22

33
from . import tier_definition
44
from . import tier_review
5+
from . import tier_validation

Diff for: base_tier_validation_server_action/models/tier_review.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,9 @@ class TierReview(models.Model):
99

1010
def write(self, vals):
1111
res = super().write(vals)
12-
if vals.get("status") in ["approved", "rejected"]:
12+
if vals.get("status") == "approved":
1313
for rec in self:
14-
server_action = False
15-
if rec.status == "approved":
16-
server_action = rec.definition_id.server_action_id
17-
if rec.status == "rejected":
18-
server_action = rec.definition_id.rejected_server_action_id
14+
server_action = rec.definition_id.server_action_id
1915
server_action_tier = self.env.context.get("server_action_tier")
2016
# Don't allow reentrant server action as it will lead to
2117
# recursive behaviour
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Copyright 2023 Ecosoft (http://ecosoft.co.th)
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from odoo import models
5+
6+
7+
class TierValidation(models.AbstractModel):
8+
_inherit = "tier.validation"
9+
10+
def reject_tier(self):
11+
self.ensure_one()
12+
res = super().reject_tier()
13+
review = self.review_ids[-1]
14+
server_action = review.definition_id.rejected_server_action_id
15+
server_action_tier = self.env.context.get("server_action_tier")
16+
# Don't allow reentrant server action as it will lead to
17+
# recursive behaviour
18+
if (
19+
not self.has_comment
20+
and server_action
21+
and (not server_action_tier or server_action_tier != server_action.id)
22+
):
23+
server_action.with_context(
24+
server_action_tier=server_action.id,
25+
active_model=review.model,
26+
active_id=review.res_id,
27+
).sudo().run()
28+
return res
+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
2+
3+
from . import comment_wizard
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Copyright 2023 Ecosoft Co., Ltd. (http://ecosoft.co.th)
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from odoo import models
5+
6+
7+
class CommentWizard(models.TransientModel):
8+
_inherit = "comment.wizard"
9+
10+
def add_comment(self):
11+
"""For case reject only"""
12+
res = super().add_comment()
13+
validate_reject = self._context.get("default_validate_reject")
14+
if validate_reject == "reject":
15+
review = self.review_ids[-1]
16+
reject_server_action = review.definition_id.rejected_server_action_id
17+
server_action_tier = self.env.context.get("server_action_tier")
18+
# Don't allow reentrant server action as it will lead to
19+
# recursive behaviour
20+
if reject_server_action and (
21+
not server_action_tier or server_action_tier != reject_server_action.id
22+
):
23+
reject_server_action.with_context(
24+
server_action_tier=reject_server_action.id,
25+
active_model=review.model,
26+
active_id=review.res_id,
27+
).sudo().run()
28+
return res

0 commit comments

Comments
 (0)