Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions base_tier_validation_server_action/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import models
from . import wizard
1 change: 1 addition & 0 deletions base_tier_validation_server_action/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@

from . import tier_definition
from . import tier_review
from . import tier_validation
8 changes: 2 additions & 6 deletions base_tier_validation_server_action/models/tier_review.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,9 @@ class TierReview(models.Model):

def write(self, vals):
res = super().write(vals)
if vals.get("status") in ["approved", "rejected"]:
if vals.get("status") == "approved":
for rec in self:
server_action = False
if rec.status == "approved":
server_action = rec.definition_id.server_action_id
if rec.status == "rejected":
server_action = rec.definition_id.rejected_server_action_id
server_action = rec.definition_id.server_action_id
server_action_tier = self.env.context.get("server_action_tier")
# Don't allow reentrant server action as it will lead to
# recursive behaviour
Expand Down
28 changes: 28 additions & 0 deletions base_tier_validation_server_action/models/tier_validation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright 2022 Ecosoft (http://ecosoft.co.th)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import models


class TierValidation(models.AbstractModel):
_inherit = "tier.validation"

def reject_tier(self):
self.ensure_one()
res = super().reject_tier()
review = self.review_ids[-1]
server_action = review.definition_id.rejected_server_action_id
server_action_tier = self.env.context.get("server_action_tier")
# Don't allow reentrant server action as it will lead to
# recursive behaviour
if (
not self.has_comment
and server_action
and (not server_action_tier or server_action_tier != server_action.id)
):
server_action.with_context(
server_action_tier=server_action.id,
active_model=review.model,
active_id=review.res_id,
).sudo().run()
return res
3 changes: 3 additions & 0 deletions base_tier_validation_server_action/wizard/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import comment_wizard
27 changes: 27 additions & 0 deletions base_tier_validation_server_action/wizard/comment_wizard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Copyright 2022 Ecosoft Co., Ltd. (http://ecosoft.co.th)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models


class CommentWizard(models.TransientModel):
_inherit = "comment.wizard"

def add_comment(self):
"""For case reject only"""
res = super().add_comment()
validate_reject = self._context.get("default_validate_reject")
if validate_reject == "reject":
review = self.review_ids[-1]
reject_server_action = review.definition_id.rejected_server_action_id
server_action_tier = self.env.context.get("server_action_tier")
# Don't allow reentrant server action as it will lead to
# recursive behaviour
if reject_server_action and (
not server_action_tier or server_action_tier != reject_server_action.id
):
reject_server_action.with_context(
server_action_tier=reject_server_action.id,
active_model=review.model,
active_id=review.res_id,
).sudo().run()
return res
Loading