From 42573b39ef555a0bbe6a6633c8e09fe05d93a80b Mon Sep 17 00:00:00 2001 From: Martin Artnik Date: Tue, 22 Jul 2025 12:48:18 +0200 Subject: [PATCH] Fix migration to cover global sharing [SCI-12146] --- ...one_else_assignment_to_team_assignments.rb | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/db/migrate/20250707080048_move_every_one_else_assignment_to_team_assignments.rb b/db/migrate/20250707080048_move_every_one_else_assignment_to_team_assignments.rb index f5d0da5a4..a08462384 100644 --- a/db/migrate/20250707080048_move_every_one_else_assignment_to_team_assignments.rb +++ b/db/migrate/20250707080048_move_every_one_else_assignment_to_team_assignments.rb @@ -25,10 +25,36 @@ class MoveEveryOneElseAssignmentToTeamAssignments < ActiveRecord::Migration[7.2] # Other repositories Repository.find_each do |repository| + repository.user_assignments.where(team_id: repository.team_id).update_all(assigned: :manually) + repository.user_assignments.where(team_id: repository.team_id, user_role: normal_user_role).delete_all repository.team_assignments.find_or_create_by!(team_id: repository.team_id, user_role: normal_user_role) end + # global share + Repository.where(permission_level: %i(shared_read shared_write)).find_each do |repository| + Team.where.not(id: repository.team_id).find_each do |team| + next if repository.private_shared_with?(team) || repository.team_assignments.exists?(team: team) + + repository.user_assignments.where(team: team).delete_all + + if repository.permission_level == 'shared_read' + repository.team_assignments.find_or_create_by!(team_id: team.id, user_role: viewer_role) + else + repository.team_assignments.find_or_create_by!(team_id: team.id, user_role: normal_user_role) + team.user_assignments.where.not(user_role: normal_user_role).find_each do |user_assignment| + UserAssignment.create!( + assignable: repository, + team: team, + user: user_assignment.user, + user_role: user_assignment.user_role, + assigned: :manually + ) + end + end + end + end + # Forms Form.find_each do |form| replace_automatic_user_assignments_with_team_assignment(record: form, team_id: form.team_id)