453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
|
# File 'lib/gooddata/models/project.rb', line 453
def transfer_dashboard_permission(from_project, to_project, source_dashboards, target_dashboards)
source_user_groups = from_project.user_groups
target_user_groups = to_project.user_groups
source_dashboards.each do |source_dashboard|
target_dashboard = target_dashboards.select { |dash| dash.title == source_dashboard.title }.first
next unless target_dashboard
begin
source_group_dashboards = dashboard_user_groups(source_user_groups, source_dashboard)
target_group_dashboards = dashboard_user_groups(target_user_groups, target_dashboard)
common_group_names = source_group_dashboards.flat_map { |s| target_group_dashboards.select { |t| t[:name] == s[:name] } }.map { |x| [x[:name], true] }.to_h
remove_user_groups_from_dashboard(target_group_dashboards, target_dashboard, common_group_names)
add_user_groups_to_dashboard(source_group_dashboards, target_dashboard, common_group_names, target_user_groups)
rescue StandardError => e
GoodData.logger.warn "Failed to synchronize dashboard permission from project: '#{from_project.title}', PID: '#{from_project.pid}' to project: '#{to_project.title}', PID: '#{to_project.pid}', dashboard: '#{target_dashboard.title}', dashboard uri: '#{target_dashboard.uri}' . Error: #{e.message} - #{e}"
end
end
end
|