Skip to content

Commit

Permalink
[16.0][IMP] add a info message for reviewers
Browse files Browse the repository at this point in the history
  • Loading branch information
Kev-Roche committed May 15, 2024
1 parent 389fd38 commit 226cb2c
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 1 deletion.
7 changes: 7 additions & 0 deletions base_tier_validation/models/tier_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ def _get_tier_validation_model_names(self):
approve_sequence_bypass = fields.Boolean(
help="Bypassed (auto validated), if previous tier was validated by same reviewer",
)
reviewer_helper_message = fields.Text()

field_for_review_ids = fields.Many2many(
comodel_name="ir.model.fields",
string="Fields to validate",
domain="[('model_id', '=', model_id)]",
)

@api.onchange("review_type")
def onchange_review_type(self):
Expand Down
44 changes: 43 additions & 1 deletion base_tier_validation/models/tier_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
from odoo.osv.expression import OR
from odoo.tools.misc import frozendict
from odoo.tools.misc import format_date, format_datetime, frozendict


class TierValidation(models.AbstractModel):
Expand Down Expand Up @@ -67,6 +67,48 @@ class TierValidation(models.AbstractModel):
)
has_comment = fields.Boolean(compute="_compute_has_comment")
next_review = fields.Char(compute="_compute_next_review")
reviewer_helper_message = fields.Html(
compute="_compute_reviewer_helper_message",
store=True,
)

def _get_field_value(self, field, field_value):
if field.ttype == "many2one":
field_value = field_value.name

Check warning on line 77 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L77

Added line #L77 was not covered by tests
elif field.ttype == "selection":
field_value = dict(self._fields[field.name].selection).get(field_value)

Check warning on line 79 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L79

Added line #L79 was not covered by tests
elif field.ttype in ["many2many", "one2many"]:
field_value = ", ".join(field_value.mapped("name"))

Check warning on line 81 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L81

Added line #L81 was not covered by tests
elif field.ttype == "date":
field_value = format_date(self.env, field_value)

Check warning on line 83 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L83

Added line #L83 was not covered by tests
elif field.ttype == "datetime":
field_value = format_datetime(self.env, field_value)
return field_value

Check warning on line 86 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L85-L86

Added lines #L85 - L86 were not covered by tests

@api.depends("review_ids", "review_ids.status", "review_ids.reviewer_ids")
def _compute_reviewer_helper_message(self):
for rec in self:
message = ""
reviews = rec.review_ids.filtered(
lambda r: r.status == "pending" and (self.env.user in r.reviewer_ids)
)
if reviews:
if any(r.approve_sequence for r in reviews):
reviews = reviews[0]
for review in reviews:
definition = review.definition_id
message += f"<b>{definition.name}</b>:<br/>"
if definition.reviewer_helper_message:
message += definition.reviewer_helper_message
message += "<br/>"

Check warning on line 103 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L102-L103

Added lines #L102 - L103 were not covered by tests
if definition.field_for_review_ids:
for field in definition.field_for_review_ids:
descr = field.field_description
field_value = getattr(rec, field.name)

Check warning on line 107 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L106-L107

Added lines #L106 - L107 were not covered by tests
if field_value:
value = self._get_field_value(field, field_value)
message += f"- {descr}: {value}<br/>"

Check warning on line 110 in base_tier_validation/models/tier_validation.py

View check run for this annotation

Codecov / codecov/patch

base_tier_validation/models/tier_validation.py#L109-L110

Added lines #L109 - L110 were not covered by tests
rec.reviewer_helper_message = message

def _compute_has_comment(self):
for rec in self:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
icon="fa-thumbs-down"
/>
<br /><field name="next_review" readonly="1" />
<br /><field name="reviewer_helper_message" readonly="1" />
</p>
</div>
<div
Expand Down
16 changes: 16 additions & 0 deletions base_tier_validation/views/tier_definition_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,22 @@
</group>
</group>
</page>
<page
name="reviewer_helper"
string="Informations For Reviewers"
>
<group>
<field name="reviewer_helper_message" />
</group>
<group>
<field name="field_for_review_ids" widget="many2many">
<tree editable="bottom">
<field name="name" />
</tree>
</field>

</group>
</page>
</notebook>
</sheet>
</form>
Expand Down

0 comments on commit 226cb2c

Please sign in to comment.