diff --git a/docs/release-notes/release-notes-5.4.0.rst b/docs/release-notes/release-notes-5.4.0.rst index d4766e3c..2443fb0a 100644 --- a/docs/release-notes/release-notes-5.4.0.rst +++ b/docs/release-notes/release-notes-5.4.0.rst @@ -39,6 +39,7 @@ Fixes - Fixed UI visualization issues with long commit messages - Fixed masking for some fields in admin settings - Fixed issues with caches calculations when passed search fields were empty +- Fixed observer's ability to change a PR status Upgrade notes ^^^^^^^^^^^^^ diff --git a/rhodecode/apps/repository/views/repo_pull_requests.py b/rhodecode/apps/repository/views/repo_pull_requests.py index 6df293b5..ee434ec7 100644 --- a/rhodecode/apps/repository/views/repo_pull_requests.py +++ b/rhodecode/apps/repository/views/repo_pull_requests.py @@ -487,7 +487,9 @@ class RepoPullRequestsView(RepoAppView, DataGridAppView): c.pull_request_set_reviewers_data_json = ext_json.str_json(c.pull_request_set_reviewers_data_json) # observers + observer_ids = [] for observer_obj, member in pull_request_at_ver.observers(): + observer_ids.append(observer_obj.user_id) member_observer = h.reviewer_as_json( member, reasons=[], mandatory=False, role=observer_obj.role, @@ -497,6 +499,7 @@ class RepoPullRequestsView(RepoAppView, DataGridAppView): c.pull_request_set_observers_data_json['observers'].append(member_observer) c.pull_request_set_observers_data_json = ext_json.str_json(c.pull_request_set_observers_data_json) + c.status_change_disabled = self._rhodecode_user.user_id in observer_ids general_comments, inline_comments = \ self.register_comments_vars(c, pull_request_latest, versions) diff --git a/rhodecode/templates/pullrequests/pullrequest_show.mako b/rhodecode/templates/pullrequests/pullrequest_show.mako index 64c81f9f..14388051 100644 --- a/rhodecode/templates/pullrequests/pullrequest_show.mako +++ b/rhodecode/templates/pullrequests/pullrequest_show.mako @@ -1054,6 +1054,16 @@ $(document).ready(function () { new ReviewerPresenceController(channel) // register globally so inject comment logic can re-use it. window.commentsController = commentsController; + + // hiding status change dropdown for observers + const isHidden = ${'true' if c.status_change_disabled else 'false'}; + + if (isHidden) { + const element = document.getElementById("s2id_change_status_general"); + if (element) { + element.style.display = "none"; + } + } })