-
-
Save jcreed/cb2e4d92ea469ca632c3c59e0cbb17a9 to your computer and use it in GitHub Desktop.
settings transfer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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