From 2ea4672a91f6ac5ef7c3a2ecc12d8fab6e688d68 Mon Sep 17 00:00:00 2001 From: Eduardo Navarro Date: Mon, 27 May 2024 16:46:01 +0200 Subject: [PATCH] Make sure a changed manager group gets the reviewer role The manager group of a staging workflow could have lost its review role of the project attached to a staging workflow. That made updating the manager group to throw an error. Remove reviewer role for old managers role and add reviewer role for new managers role. --- src/api/app/models/staging/workflow.rb | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/api/app/models/staging/workflow.rb b/src/api/app/models/staging/workflow.rb index 895abd63b11..63dd24a07e7 100644 --- a/src/api/app/models/staging/workflow.rb +++ b/src/api/app/models/staging/workflow.rb @@ -125,18 +125,13 @@ def update_managers_group # the object is reloaded and we lost the changes. self.managers_group = new_managers_group - # update reviewer group in staging workflow project reviewer_role = Role.find_by_title('reviewer') - relationship = project.relationships.find_by(group: old_managers_group, role: reviewer_role) - if project.relationships.exists?(group: new_managers_group, role: reviewer_role) - relationship.destroy - else - relationship.update(group: new_managers_group) - end + project.relationships.find_by(group: old_managers_group, role: reviewer_role)&.destroy # Remove reviewer role for old managers group + project.relationships.find_or_create_by!(group: new_managers_group, role: reviewer_role) # Add reviewer role for new managers group + project.store end end - # == Schema Information # # Table name: staging_workflows