Project

General

Profile

Download (1.66 KB) Statistics
| Branch: | Tag: | Revision:
require Rails.root + 'db/seeds.d/020-roles_list.rb'

class TidyCurrentRoles < ActiveRecord::Migration[4.2]
def up
# if there are no roles, then this is a new installation and we will create them in seeds
return if Role.count == 0
Filter.reset_column_information
Role.without_auditing do
::RolesList.seeded_roles.each do |name, options|
role = Role.find_by :name => name
if role
process_existing name, role, options
else
create_from_seeds name, options
end
end
end
process_default_role
end

def process_existing(original_name, role, options)
diff = role.permission_diff options[:permissions]
return if diff.empty?
rename_existing role, original_name
create_from_seeds original_name, options
end

def rename_existing(role, original_name)
prefix = "Customized"
role_name = "#{prefix} #{original_name}"
if Role.find_by(:name => role_name)
rename_with_free_name role, prefix, original_name
else
role.update_attribute :name, role_name
end
end

def rename_with_free_name(role, prefix, original_name)
num = 1
new_name = generate_name prefix, original_name, num
while Role.find_by :name => new_name
new_name = generate_name prefix, original_name, num
num += 1
end
role.update_attribute :name, new_name
end

def generate_name(prefix, original_name, num)
"#{prefix} #{original_name} #{num}"
end

def create_from_seeds(name, options)
SeedHelper.create_role name, options.merge(:update_permissions => false), 0, false
end

def process_default_role
Role.default.update_attribute :origin, "foreman"
end
end
(359-359/407)