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
15 changes: 15 additions & 0 deletions base_tier_validation/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,21 @@ UI improvement:
``to_validate_message`` Html field, which was previously defined on
the model but never rendered.

19.0.1.0.3 (2026-05-13)
-----------------------

Improvements:

- ``notify_on_pending`` chatter body now names the assignee(s) so the
recipient can tell at a glance that the message is for them. Reuses
``tier.review.todo_by`` so every review type (individual user, group,
``res.users`` / ``res.groups`` field) is handled uniformly.
- ``notify_on_pending`` chatter body now attributes the request to
``review.requested_by`` (the user who actually pressed *Request
Validation*) instead of ``env.user``. On second-and-later tier
promotions ``env.user`` is the previous-tier approver, which was the
wrong person to credit.

19.0.1.0.1 (2026-05-12)
-----------------------

Expand Down
32 changes: 29 additions & 3 deletions base_tier_validation/models/tier_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -746,8 +746,34 @@ def _notify_created_review_body(self):
self.env.user.name,
)

def _notify_requested_review_body(self):
return self.env._("A review has been requested by %s.", self.env.user.name)
def _notify_requested_review_body(self, tier_reviews=None):
"""Chatter body for a tier reaching ``pending``.

Sources the requester from the review's ``requested_by`` rather
than ``env.user`` -- on second-and-later tier promotions
``env.user`` is the previous-tier *approver*, which is the wrong
person to attribute the request to.

Names the assignee(s) in the body so the recipient sees at a
glance that the message is meant for them (chatter notifications
do not render the "Notified to" pill, so the body has to carry
that information itself). Reuses ``tier.review.todo_by`` so the
wording is consistent with the Reviews table and handles every
review type out of the box -- individual user, group, or field.
"""
if tier_reviews:
requester = tier_reviews[:1].requested_by or self.env.user
assignees = ", ".join(
filter(None, tier_reviews.mapped("todo_by"))
) or self.env._("the assigned reviewer")
return self.env._(
"Review pending for %(assignees)s, requested by %(requester)s.",
assignees=assignees,
requester=requester.display_name,
)
return self.env._(
"A review has been requested by %s.", self.env.user.display_name
)

def _notify_review_requested(self, tier_reviews):
"""method to notify when tier validation is created"""
Expand Down Expand Up @@ -980,7 +1006,7 @@ def _notify_review_available(self, tier_reviews):
)
rec.message_post(
subtype_xmlid=self._get_requested_notification_subtype(),
body=rec._notify_requested_review_body(),
body=rec._notify_requested_review_body(tier_reviews),
)


Expand Down
14 changes: 14 additions & 0 deletions base_tier_validation/readme/HISTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@ UI improvement:
field, which was previously defined on the model but never
rendered.

## 19.0.1.0.3 (2026-05-13)

Improvements:

- ``notify_on_pending`` chatter body now names the assignee(s) so the
recipient can tell at a glance that the message is for them. Reuses
``tier.review.todo_by`` so every review type (individual user,
group, ``res.users`` / ``res.groups`` field) is handled uniformly.
- ``notify_on_pending`` chatter body now attributes the request to
``review.requested_by`` (the user who actually pressed *Request
Validation*) instead of ``env.user``. On second-and-later tier
promotions ``env.user`` is the previous-tier approver, which was the
wrong person to credit.

## 19.0.1.0.1 (2026-05-12)

Fixes:
Expand Down
134 changes: 75 additions & 59 deletions base_tier_validation/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -399,30 +399,31 @@ <h1>Base Tier Validation</h1>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-2">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#changelog" id="toc-entry-3">Changelog</a><ul>
<li><a class="reference internal" href="#section-1" id="toc-entry-4">19.0.1.0.4 (2026-05-13)</a></li>
<li><a class="reference internal" href="#section-2" id="toc-entry-5">19.0.1.0.1 (2026-05-12)</a></li>
<li><a class="reference internal" href="#section-3" id="toc-entry-6">17.0.1.0.0 (2024-01-10)</a></li>
<li><a class="reference internal" href="#section-4" id="toc-entry-7">14.0.1.0.0 (2020-11-19)</a></li>
<li><a class="reference internal" href="#section-5" id="toc-entry-8">13.0.1.2.2 (2020-08-30)</a></li>
<li><a class="reference internal" href="#section-6" id="toc-entry-9">12.0.3.3.1 (2019-12-02)</a></li>
<li><a class="reference internal" href="#section-7" id="toc-entry-10">12.0.3.3.0 (2019-11-27)</a></li>
<li><a class="reference internal" href="#section-8" id="toc-entry-11">12.0.3.2.1 (2019-11-26)</a></li>
<li><a class="reference internal" href="#section-9" id="toc-entry-12">12.0.3.2.0 (2019-11-25)</a></li>
<li><a class="reference internal" href="#section-10" id="toc-entry-13">12.0.3.1.0 (2019-07-08)</a></li>
<li><a class="reference internal" href="#section-11" id="toc-entry-14">12.0.3.0.0 (2019-12-02)</a></li>
<li><a class="reference internal" href="#section-12" id="toc-entry-15">12.0.2.1.0 (2019-05-29)</a></li>
<li><a class="reference internal" href="#section-13" id="toc-entry-16">12.0.2.0.0 (2019-05-28)</a></li>
<li><a class="reference internal" href="#section-14" id="toc-entry-17">12.0.1.0.0 (2019-02-18)</a></li>
<li><a class="reference internal" href="#section-15" id="toc-entry-18">11.0.1.0.0 (2018-05-09)</a></li>
<li><a class="reference internal" href="#section-16" id="toc-entry-19">10.0.1.0.0 (2018-03-26)</a></li>
<li><a class="reference internal" href="#section-17" id="toc-entry-20">9.0.1.0.0 (2017-12-02)</a></li>
<li><a class="reference internal" href="#section-2" id="toc-entry-5">19.0.1.0.3 (2026-05-13)</a></li>
<li><a class="reference internal" href="#section-3" id="toc-entry-6">19.0.1.0.1 (2026-05-12)</a></li>
<li><a class="reference internal" href="#section-4" id="toc-entry-7">17.0.1.0.0 (2024-01-10)</a></li>
<li><a class="reference internal" href="#section-5" id="toc-entry-8">14.0.1.0.0 (2020-11-19)</a></li>
<li><a class="reference internal" href="#section-6" id="toc-entry-9">13.0.1.2.2 (2020-08-30)</a></li>
<li><a class="reference internal" href="#section-7" id="toc-entry-10">12.0.3.3.1 (2019-12-02)</a></li>
<li><a class="reference internal" href="#section-8" id="toc-entry-11">12.0.3.3.0 (2019-11-27)</a></li>
<li><a class="reference internal" href="#section-9" id="toc-entry-12">12.0.3.2.1 (2019-11-26)</a></li>
<li><a class="reference internal" href="#section-10" id="toc-entry-13">12.0.3.2.0 (2019-11-25)</a></li>
<li><a class="reference internal" href="#section-11" id="toc-entry-14">12.0.3.1.0 (2019-07-08)</a></li>
<li><a class="reference internal" href="#section-12" id="toc-entry-15">12.0.3.0.0 (2019-12-02)</a></li>
<li><a class="reference internal" href="#section-13" id="toc-entry-16">12.0.2.1.0 (2019-05-29)</a></li>
<li><a class="reference internal" href="#section-14" id="toc-entry-17">12.0.2.0.0 (2019-05-28)</a></li>
<li><a class="reference internal" href="#section-15" id="toc-entry-18">12.0.1.0.0 (2019-02-18)</a></li>
<li><a class="reference internal" href="#section-16" id="toc-entry-19">11.0.1.0.0 (2018-05-09)</a></li>
<li><a class="reference internal" href="#section-17" id="toc-entry-20">10.0.1.0.0 (2018-03-26)</a></li>
<li><a class="reference internal" href="#section-18" id="toc-entry-21">9.0.1.0.0 (2017-12-02)</a></li>
</ul>
</li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-21">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-22">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-23">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-24">Contributors</a></li>
<li><a class="reference internal" href="#other-credits" id="toc-entry-25">Other credits</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-26">Maintainers</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-22">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-23">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-24">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-25">Contributors</a></li>
<li><a class="reference internal" href="#other-credits" id="toc-entry-26">Other credits</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-27">Maintainers</a></li>
</ul>
</li>
</ul>
Expand Down Expand Up @@ -508,7 +509,22 @@ <h3><a class="toc-backref" href="#toc-entry-4">19.0.1.0.4 (2026-05-13)</a></h3>
</ul>
</div>
<div class="section" id="section-2">
<h3><a class="toc-backref" href="#toc-entry-5">19.0.1.0.1 (2026-05-12)</a></h3>
<h3><a class="toc-backref" href="#toc-entry-5">19.0.1.0.3 (2026-05-13)</a></h3>
<p>Improvements:</p>
<ul class="simple">
<li><tt class="docutils literal">notify_on_pending</tt> chatter body now names the assignee(s) so the
recipient can tell at a glance that the message is for them. Reuses
<tt class="docutils literal">tier.review.todo_by</tt> so every review type (individual user, group,
<tt class="docutils literal">res.users</tt> / <tt class="docutils literal">res.groups</tt> field) is handled uniformly.</li>
<li><tt class="docutils literal">notify_on_pending</tt> chatter body now attributes the request to
<tt class="docutils literal">review.requested_by</tt> (the user who actually pressed <em>Request
Validation</em>) instead of <tt class="docutils literal">env.user</tt>. On second-and-later tier
promotions <tt class="docutils literal">env.user</tt> is the previous-tier approver, which was the
wrong person to credit.</li>
</ul>
</div>
<div class="section" id="section-3">
<h3><a class="toc-backref" href="#toc-entry-6">19.0.1.0.1 (2026-05-12)</a></h3>
<p>Fixes:</p>
<ul class="simple">
<li>Restore auto-promotion of the lowest-sequence review to <tt class="docutils literal">pending</tt>
Expand All @@ -530,18 +546,18 @@ <h3><a class="toc-backref" href="#toc-entry-5">19.0.1.0.1 (2026-05-12)</a></h3>
<tt class="docutils literal">subtype_ids</tt> explicitly (mirroring <tt class="docutils literal">_notify_review_requested</tt>).</li>
</ul>
</div>
<div class="section" id="section-3">
<h3><a class="toc-backref" href="#toc-entry-6">17.0.1.0.0 (2024-01-10)</a></h3>
<div class="section" id="section-4">
<h3><a class="toc-backref" href="#toc-entry-7">17.0.1.0.0 (2024-01-10)</a></h3>
<p>Migrated to Odoo 17. Merged module with tier_validation_waiting. To
support sending messages in a validation sequence when it is their turn
to validate.</p>
</div>
<div class="section" id="section-4">
<h3><a class="toc-backref" href="#toc-entry-7">14.0.1.0.0 (2020-11-19)</a></h3>
<div class="section" id="section-5">
<h3><a class="toc-backref" href="#toc-entry-8">14.0.1.0.0 (2020-11-19)</a></h3>
<p>Migrated to Odoo 14.</p>
</div>
<div class="section" id="section-5">
<h3><a class="toc-backref" href="#toc-entry-8">13.0.1.2.2 (2020-08-30)</a></h3>
<div class="section" id="section-6">
<h3><a class="toc-backref" href="#toc-entry-9">13.0.1.2.2 (2020-08-30)</a></h3>
<p>Fixes:</p>
<ul class="simple">
<li>When using approve_sequence option in any tier.definition there can be
Expand All @@ -550,100 +566,100 @@ <h3><a class="toc-backref" href="#toc-entry-8">13.0.1.2.2 (2020-08-30)</a></h3>
sequence, but also other sequence for the same approver</li>
</ul>
</div>
<div class="section" id="section-6">
<h3><a class="toc-backref" href="#toc-entry-9">12.0.3.3.1 (2019-12-02)</a></h3>
<div class="section" id="section-7">
<h3><a class="toc-backref" href="#toc-entry-10">12.0.3.3.1 (2019-12-02)</a></h3>
<p>Fixes:</p>
<ul class="simple">
<li>Show comment on Reviews Table.</li>
<li>Edit notification with approve_sequence.</li>
</ul>
</div>
<div class="section" id="section-7">
<h3><a class="toc-backref" href="#toc-entry-10">12.0.3.3.0 (2019-11-27)</a></h3>
<div class="section" id="section-8">
<h3><a class="toc-backref" href="#toc-entry-11">12.0.3.3.0 (2019-11-27)</a></h3>
<p>New features:</p>
<ul class="simple">
<li>Add comment on Reviews Table.</li>
<li>Approve by sequence.</li>
</ul>
</div>
<div class="section" id="section-8">
<h3><a class="toc-backref" href="#toc-entry-11">12.0.3.2.1 (2019-11-26)</a></h3>
<div class="section" id="section-9">
<h3><a class="toc-backref" href="#toc-entry-12">12.0.3.2.1 (2019-11-26)</a></h3>
<p>Fixes:</p>
<ul class="simple">
<li>Remove message_subscribe_users</li>
</ul>
</div>
<div class="section" id="section-9">
<h3><a class="toc-backref" href="#toc-entry-12">12.0.3.2.0 (2019-11-25)</a></h3>
<div class="section" id="section-10">
<h3><a class="toc-backref" href="#toc-entry-13">12.0.3.2.0 (2019-11-25)</a></h3>
<p>New features:</p>
<ul class="simple">
<li>Notify reviewers</li>
</ul>
</div>
<div class="section" id="section-10">
<h3><a class="toc-backref" href="#toc-entry-13">12.0.3.1.0 (2019-07-08)</a></h3>
<div class="section" id="section-11">
<h3><a class="toc-backref" href="#toc-entry-14">12.0.3.1.0 (2019-07-08)</a></h3>
<p>Fixes:</p>
<ul class="simple">
<li>Singleton error</li>
</ul>
</div>
<div class="section" id="section-11">
<h3><a class="toc-backref" href="#toc-entry-14">12.0.3.0.0 (2019-12-02)</a></h3>
<div class="section" id="section-12">
<h3><a class="toc-backref" href="#toc-entry-15">12.0.3.0.0 (2019-12-02)</a></h3>
<p>Fixes:</p>
<ul class="simple">
<li>Edit Reviews Table</li>
</ul>
</div>
<div class="section" id="section-12">
<h3><a class="toc-backref" href="#toc-entry-15">12.0.2.1.0 (2019-05-29)</a></h3>
<div class="section" id="section-13">
<h3><a class="toc-backref" href="#toc-entry-16">12.0.2.1.0 (2019-05-29)</a></h3>
<p>Fixes:</p>
<ul class="simple">
<li>Edit drop-down style width and position</li>
</ul>
</div>
<div class="section" id="section-13">
<h3><a class="toc-backref" href="#toc-entry-16">12.0.2.0.0 (2019-05-28)</a></h3>
<div class="section" id="section-14">
<h3><a class="toc-backref" href="#toc-entry-17">12.0.2.0.0 (2019-05-28)</a></h3>
<p>New features:</p>
<ul class="simple">
<li>Pass parameters as functions.</li>
<li>Add Systray.</li>
</ul>
</div>
<div class="section" id="section-14">
<h3><a class="toc-backref" href="#toc-entry-17">12.0.1.0.0 (2019-02-18)</a></h3>
<div class="section" id="section-15">
<h3><a class="toc-backref" href="#toc-entry-18">12.0.1.0.0 (2019-02-18)</a></h3>
<p>Migrated to Odoo 12.</p>
</div>
<div class="section" id="section-15">
<h3><a class="toc-backref" href="#toc-entry-18">11.0.1.0.0 (2018-05-09)</a></h3>
<div class="section" id="section-16">
<h3><a class="toc-backref" href="#toc-entry-19">11.0.1.0.0 (2018-05-09)</a></h3>
<p>Migrated to Odoo 11.</p>
</div>
<div class="section" id="section-16">
<h3><a class="toc-backref" href="#toc-entry-19">10.0.1.0.0 (2018-03-26)</a></h3>
<div class="section" id="section-17">
<h3><a class="toc-backref" href="#toc-entry-20">10.0.1.0.0 (2018-03-26)</a></h3>
<p>Migrated to Odoo 10.</p>
</div>
<div class="section" id="section-17">
<h3><a class="toc-backref" href="#toc-entry-20">9.0.1.0.0 (2017-12-02)</a></h3>
<div class="section" id="section-18">
<h3><a class="toc-backref" href="#toc-entry-21">9.0.1.0.0 (2017-12-02)</a></h3>
<p>First version.</p>
</div>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-21">Bug Tracker</a></h2>
<h2><a class="toc-backref" href="#toc-entry-22">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/tier-validation/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/tier-validation/issues/new?body=module:%20base_tier_validation%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-22">Credits</a></h2>
<h2><a class="toc-backref" href="#toc-entry-23">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-23">Authors</a></h3>
<h3><a class="toc-backref" href="#toc-entry-24">Authors</a></h3>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-24">Contributors</a></h3>
<h3><a class="toc-backref" href="#toc-entry-25">Contributors</a></h3>
<ul class="simple">
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt;</li>
<li>Naglis Jonaitis &lt;<a class="reference external" href="mailto:naglis&#64;versada.eu">naglis&#64;versada.eu</a>&gt;</li>
Expand All @@ -668,10 +684,10 @@ <h3><a class="toc-backref" href="#toc-entry-24">Contributors</a></h3>
</ul>
</div>
<div class="section" id="other-credits">
<h3><a class="toc-backref" href="#toc-entry-25">Other credits</a></h3>
<h3><a class="toc-backref" href="#toc-entry-26">Other credits</a></h3>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-26">Maintainers</a></h3>
<h3><a class="toc-backref" href="#toc-entry-27">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
Expand Down
Loading
Loading