Created
February 19, 2014 00:18
-
-
Save danielnegri/9083503 to your computer and use it in GitHub Desktop.
Sample: Publish and Migrate
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
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