Skip to content

Instantly share code, notes, and snippets.

@jcreed
Created September 5, 2019 16:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcreed/cb2e4d92ea469ca632c3c59e0cbb17a9 to your computer and use it in GitHub Desktop.
Save jcreed/cb2e4d92ea469ca632c3c59e0cbb17a9 to your computer and use it in GitHub Desktop.
settings transfer
require 'csv'
namespace :releases do
namespace "2019.008.002" do
namespace :after_load do
desc "OBX-5231 - Manipulate Program Codes for Settings Transfer BusinessCAS:2020"
task "OBX-5231" => :environment do |task|
include ReleaseTaskHelpers
with_association('BusinessCAS', '2020') do |cas|
display :notice, task.full_comment
file = 'db/data/settings_transfer_code/businesscas2020_miami.csv.gz'
csv = CSV.parse(Zlib::GzipReader.open(file).read, headers: true, encoding: 'utf-8')
raise "Incorrect CSV format" unless csv.headers[0..1] == ["CAS", "Organization"]
display :success, "Loaded CSV"
csv.each do |row|
program_id = row['Program ID']
program_code = row['UNIQUE PROGRAM CODES (LIAISON)']
program = Program.where(unique_identifier: program_id)
unless program.empty?
program = program.first
program.settings_transfer_code = program_code
program.save!
display :success, "Settings Transfer Code for #{program.name} changed to #{program_code}."
end
end
settings_class = Class.new(SettingsTransfer::SettingsBundler) do
def organization_data
{
id: organization.id,
name: organization.name,
applicants: applicant_data,
assignments: assignment_data,
custom_fields: custom_field_data,
designations: designation_data,
email_addresses: email_address_data,
email_templates: email_template_data,
exports: export_data,
gpa_templates: gpa_template_data,
interviews: interview_data,
composite_lists: composite_list_data,
field_lists: field_list_data,
local_statuses: local_status_data,
pdf_manager_templates: pdf_manager_template_data,
requirements: requirement_data,
scoring_models: scoring_data,
user_identities: user_identity_data,
work_groups: work_group_data
}
end
end
current_org = cas.organizations.find_by(name: "University of Miami")
user = User.find_by(email: 'olee@bus.miami.edu')
current_user_identity = current_org.user_identities.find_by(user_id: user.id)
previous_cycle = Cycle.find_by_identifier('2019')
previous_cas = Association.find_by(name: 'BusinessCAS', cycle_id: previous_cycle.id)
previous_organization = previous_cas.organizations.find_by(name: current_org.name)
previous_user_identity = previous_organization.user_identities.find_by(user_id: user.id)
current_org.settings_transfer.reset!
settings = settings_class.new(previous_user_identity).as_json
org_settings_transfer = current_org.settings_transfer
org_settings_transfer.update_attributes!(data_hash: settings)
org_settings_transfer.save!
SettingsImporter.new(current_org, current_user_identity).run!
display :success, "Settings Transfer Complete."
csv.each do |row|
program_id = row['Program ID']
program_code = row['Program Code']
program = Program.where(unique_identifier: program_id)
unless program.empty?
program = program.first
program.settings_transfer_code = program_code
program.save!
display :success, "Settings Transfer Code for #{program.name} changed to #{program_code}."
end
end
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment