Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@danielnegri
Created February 19, 2014 00:18
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 danielnegri/9083503 to your computer and use it in GitHub Desktop.
Save danielnegri/9083503 to your computer and use it in GitHub Desktop.
Sample: Publish and Migrate
class PubligrationsController < ApplicationController
before_filter :admin_required
def index
render widget: Views::Publigrations::Index, user: current_user
end
def publish
messages = []
unless subtrack = Subtrack.find_by_id(params[:subtrack_id], include: {question_sets: :questions})
messages.push("No Subtrack found with id '#{params[:subtrack_id]}'")
else
subtrack.question_sets.each do |qs|
qs.questions.each do |q|
q.update_published_state_to(true)
unless q.save
messages.push("question #{q.id} failed to be published: #{q.errors.full_messages.join(', ')}")
end
end
qs.update_published_state_to(true)
unless qs.save
messages.push("question set #{qs.id} failed to be published: #{qs.errors.full_messages.join(', ')}")
end
end
subtrack.update_published_state_to(true)
unless subtrack.save
messages.push("subtrack #{subtrack.id} failed to be published: #{subtrack.errors.full_messages.join(', ')}")
end
end
render widget: Views::Publigrations::Index, user: current_user, messages: messages
end
def migrate_subtracks
subtrack_01 = Subtrack.find("600596f0-cb32-012c-422d-123139068df2")
subtrack_02 = Subtrack.find("28565800-ccd5-012c-42cd-123139068df2")
subtrack_03 = Subtrack.find("49cab56a-b98b-df12-3cc7-2a30056a6aae")
subtrack_04 = Subtrack.find("120eaa30-ce6e-012c-4320-123139068df2")
subtrack_05 = Subtrack.find("1385b4f6-639d-6daf-ab82-2ecf5b27ba82")
subtrack_06 = Subtrack.find("6c990959-38b1-3f66-d2a1-121ac4323bff")
subtrack_07 = Subtrack.find("2b4bfa95-1180-375f-a6e4-30f8d92d587d")
subtrack_08 = Subtrack.find("a972f5c1-a8c0-e875-9401-0e0378bc43fc")
subtrack_09 = Subtrack.find("7b696bd4-223a-a68e-ecb2-85586f03bf08")
subtrack_10 = Subtrack.find("ce185d71-f485-86b9-df3f-c0d37d1291f9")
subtrack_11 = Subtrack.find("5d486281-18f8-d451-553a-7210b39aaf24")
subtrack_12 = Subtrack.find("3cbcdd86-7db3-8805-d601-e160f9bd60ed")
subtrack_13 = Subtrack.find("04f36374-6982-4904-97fc-c065dea1ef55")
subtrack_14 = Subtrack.find("a14dadd4-fbe3-7a6d-35d8-126d8b213096")
subtrack_15 = Subtrack.find("58ab75aa-d5eb-9d97-eefd-dfe21c56aa7f")
subtrack_16 = Subtrack.find("f7adc144-5a17-41c9-5117-efe81b66b018")
subtrack_17 = Subtrack.find("e376120e-1971-44f0-6d6b-742a037bf8b1")
subtrack_18 = Subtrack.find("7f264994-eb76-3f84-50d4-afbc53ba30b2")
subtrack_19 = Subtrack.find("11827287-19a5-78bb-ec63-74ed501bbb0b")
subtrack_20 = Subtrack.find("c2b135f9-0bbf-0e0b-c3a5-e25794baaf10")
subtrack_21 = Subtrack.find("875f82f6-9829-6b45-2bcd-d1150383ed22")
subtrack_22 = Subtrack.find("5781df50-ea38-abf0-9d3a-364c9a558f64")
subtrack_23 = Subtrack.find("c2652627-f41a-55be-aba2-19e21d52d7b7")
standards_map = {
"1A1.0" => subtrack_01,
"1A1.1" => subtrack_01,
"1A2.0" => subtrack_01,
"1A3.0" => subtrack_01,
"1A4.0" => subtrack_01,
"1A5.0" => subtrack_01,
"1A24.0" => subtrack_01,
"1A24.1" => subtrack_01,
"1A24.2" => subtrack_01,
"1A24.3" => subtrack_01,
"1A25.0" => subtrack_01,
"1A25.1" => subtrack_01,
"1A25.2" => subtrack_01,
"1A25.3" => subtrack_01,
"1A6.0" => subtrack_02,
"1A7.0" => subtrack_02,
"1A8.0" => subtrack_02,
"1A9.0" => subtrack_02,
"1A10.0" => subtrack_03,
"1A11.0" => subtrack_03,
"1A19.0" => subtrack_03,
"1A20.0" => subtrack_03,
"1A21.0" => subtrack_03,
"1A22.0" => subtrack_03,
"1A23.0" => subtrack_03,
"1A14.0" => subtrack_03,
"1A12.0" => subtrack_04,
"1A13.0" => subtrack_04,
"1A15.0" => subtrack_04,
"1A16.0" => subtrack_04,
"1A17.0" => subtrack_04,
"1A18.0" => subtrack_04,
"GE1.0" => subtrack_05,
"GE2.0" => subtrack_05,
"GE3.0" => subtrack_05,
"GE4.0" => subtrack_05,
"GE5.0" => subtrack_05,
"GE6.0" => subtrack_05,
"GE7.0" => subtrack_05,
"GE8.0" => subtrack_06,
"GE9.0" => subtrack_06,
"GE10.0" => subtrack_06,
"GE11.0" => subtrack_06,
"GE12.0" => subtrack_07,
"GE13.0" => subtrack_07,
"GE14.0" => subtrack_07,
"GE15.0" => subtrack_07,
"GE16.0" => subtrack_07,
"GE17.0" => subtrack_07,
"GE18.0" => subtrack_08,
"GE19.0" => subtrack_08,
"GE20.0" => subtrack_08,
"GE21.0" => subtrack_08,
"GE22.0" => subtrack_08,
"2A1.0" => subtrack_09,
"2A2.0" => subtrack_09,
"2A3.0" => subtrack_09,
"2A4.0" => subtrack_09,
"2A7.0" => subtrack_09,
"2A5.0" => subtrack_10,
"2A6.0" => subtrack_10,
"2A8.0" => subtrack_10,
"2A9.0" => subtrack_10,
"2A10.0" => subtrack_10,
"2A16.0" => subtrack_10,
"2A17.0" => subtrack_10,
"2A11.0" => subtrack_11,
"2A11.1" => subtrack_11,
"2A11.2" => subtrack_11,
"2A12.0" => subtrack_11,
"2A13.0" => subtrack_11,
"2A14.0" => subtrack_11,
"2A15.0" => subtrack_11,
"2A18.0" => subtrack_12,
"2A19.0" => subtrack_12,
"2A20.0" => subtrack_12,
"2A21.0" => subtrack_12,
"2A22.0" => subtrack_12,
"2A23.0" => subtrack_12,
"2A24.0" => subtrack_12,
"2A25.0" => subtrack_12,
"Trig1.0" => subtrack_13,
"Trig2.0" => subtrack_13,
"Trig3.0" => subtrack_13,
"Trig3.1" => subtrack_13,
"Trig3.2" => subtrack_13,
"Trig4.0" => subtrack_13,
"Trig5.0" => subtrack_13,
"Trig6.0" => subtrack_13,
"Trig7.0" => subtrack_13,
"Trig8.0" => subtrack_14,
"Trig9.0" => subtrack_14,
"Trig10.0" => subtrack_14,
"Trig11.0" => subtrack_14,
"Trig12.0" => subtrack_15,
"Trig13.0" => subtrack_15,
"Trig14.0" => subtrack_15,
"Trig19.0" => subtrack_15,
"Trig15.0" => subtrack_16,
"Trig16.0" => subtrack_16,
"Trig17.0" => subtrack_16,
"Trig18.0" => subtrack_16,
"MA1.0" => subtrack_17,
"MA2.0" => subtrack_17,
"MA3.0" => subtrack_17,
"MA4.0" => subtrack_17,
"MA5.0" => subtrack_17,
"MA5.1" => subtrack_17,
"MA5.2" => subtrack_17,
"MA6.0" => subtrack_17,
"MA7.0" => subtrack_17,
"MA8.0" => subtrack_17,
"LA1.0" => subtrack_18,
"LA2.0" => subtrack_18,
"LA3.0" => subtrack_18,
"LA4.0" => subtrack_18,
"LA5.0" => subtrack_18,
"LA6.0" => subtrack_18,
"LA7.0" => subtrack_18,
"LA8.0" => subtrack_18,
"LA9.0" => subtrack_18,
"LA10.0" => subtrack_18,
"LA11.0" => subtrack_18,
"LA12.0" => subtrack_18,
"Calc1.0" => subtrack_19,
"Calc1.1" => subtrack_19,
"Calc1.2" => subtrack_19,
"Calc1.3" => subtrack_19,
"Calc2.0" => subtrack_19,
"Calc3.0" => subtrack_19,
"Calc4.0" => subtrack_20,
"Calc4.1" => subtrack_20,
"Calc4.2" => subtrack_20,
"Calc4.3" => subtrack_20,
"Calc4.4" => subtrack_20,
"Calc5.0" => subtrack_20,
"Calc6.0" => subtrack_20,
"Calc7.0" => subtrack_20,
"Calc8.0" => subtrack_20,
"Calc9.0" => subtrack_20,
"Calc10.0" => subtrack_20,
"Calc11.0" => subtrack_20,
"Calc12.0" => subtrack_20,
"Calc13.0" => subtrack_21,
"Calc14.0" => subtrack_21,
"Calc15.0" => subtrack_21,
"Calc16.0" => subtrack_21,
"Calc17.0" => subtrack_21,
"Calc27.0" => subtrack_21,
"Calc8.0" => subtrack_22,
"Calc18.0" => subtrack_22,
"Calc19.0" => subtrack_22,
"Calc20.0" => subtrack_22,
"Calc21.0" => subtrack_22,
"Calc22.0" => subtrack_22,
"Calc23.0" => subtrack_23,
"Calc24.0" => subtrack_23,
"Calc25.0" => subtrack_23,
"Calc26.0" => subtrack_23
}
messages = []
question_sets = Subtrack.find_by_id!(params[:subtrack_id]).question_sets.find(:all, conditions: "position >= #{params[:left_position]} && position <= #{params[:right_position]}") || messages.push("No QuestionSets found for Subtrack '#{params[:subtrack_id]}'")
if messages.empty?
question_sets.each do |question_set|
tags = question_set.questions.map(& :tags).flatten.uniq
standards_tags = tags.select { |tag| standards_map.has_key?(tag.name) }
if standards_tags.empty?
messages << "no standards tags on question set #{question_set.id}. all tags: #{tags.map(& :name).join(', ')}"
next
end
standards_tag_to_keep = standards_tags.sort_by(& :name).last
question_set.subtrack = standards_map[standards_tag_to_keep.name]
question_set.save!
question_set.questions.each do |question|
human_tag_taggings = question.taggings.select { |tagging| tagging.tag.name.in? ["Bonnie", "Becky", "Tristan", "Barbara", "Dan", "Gary"] }
human_tag_taggings.each do |tagging|
tagging.destroy
end
end
end
end
render widget: Views::Publigrations::Index, user: current_user, messages: messages
end
def migrate_question_sets
messages = []
subtrack = Subtrack.find_by_id(params[:subtrack_id]) || messages.push("No Subtrack found with id '#{params[:subtrack_id]}'")
question_set = QuestionSet.find_by_id(params[:question_set_id]) || messages.push("No QuestionSet found with id '#{params[:question_set_id]}'")
if messages.empty?
if question_set.update_attributes(subtrack_id: subtrack.id)
messages << "Successfully moved QuestionSet '#{question_set.id}' to Subtrack '#{subtrack.id}'"
else
messages << "Unable to move QuestionSet '#{question_set.id}' to Subtrack '#{subtrack.id}'"
end
end
render widget: Views::Publigrations::Index, user: current_user, messages: messages
end
def migrate_questions
messages = []
question_set = QuestionSet.find_by_id(params[:question_set_id]) || messages.push("No QuestionSet found with id '#{params[:question_set_id]}'")
question = Question.find_by_id(params[:question_id]) || messages.push("No Question found with id '#{params[:question_id]}'")
if messages.empty?
if question.update_attributes(question_set_id: question_set.id)
messages << "Successfully moved Question '#{question.id}' to QuestionSet '#{question_set.id}'"
else
messages << "Unable to move Question '#{question.id}' to QuestionSet '#{question_set.id}'"
end
end
render widget: Views::Publigrations::Index, user: current_user, messages: messages
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment