From 8ebcd93c46458a0687e0b68e7aeb0386e09fff0c Mon Sep 17 00:00:00 2001 From: Arthur Del Esposte Date: Tue, 15 Sep 2015 19:16:33 +0000 Subject: [PATCH] Handle some cases in migrations to not crash in clean environments --- db/migrate/20150720190133_change_blocks_mirror_option.rb | 24 ++++++++++++++---------- db/migrate/20150910121056_create_siorg_institutions.rb | 78 +++++++++++++++++++++++++++++++++++++++++------------------------------------- db/migrate/20150910133925_add_community_block_in_place_of_profile_image_block.rb | 34 ++++++++++++++++++---------------- 3 files changed, 73 insertions(+), 63 deletions(-) diff --git a/db/migrate/20150720190133_change_blocks_mirror_option.rb b/db/migrate/20150720190133_change_blocks_mirror_option.rb index 7f13c08..a809624 100644 --- a/db/migrate/20150720190133_change_blocks_mirror_option.rb +++ b/db/migrate/20150720190133_change_blocks_mirror_option.rb @@ -4,26 +4,30 @@ class ChangeBlocksMirrorOption < ActiveRecord::Migration institution = Community["institution"] software = Community["software"] - boxTemplateInstitution = institution.boxes.where(:position => 2).first + if institution + boxTemplateInstitution = institution.boxes.where(:position => 2).first - boxTemplateInstitution.blocks.each do |block| - block.mirror = true - print "." if block.save + boxTemplateInstitution.blocks.each do |block| + block.mirror = true + print "." if block.save + end end - boxTemplateSoftware = software.boxes.where(:position => 2).first + if software + boxTemplateSoftware = software.boxes.where(:position => 2).first - boxTemplateSoftware.blocks.each do |block| - block.mirror = true - print "." if block.save + boxTemplateSoftware.blocks.each do |block| + block.mirror = true + print "." if block.save + end end blocks.each do |block| if !(block.owner.class == Environment) && block.owner.organization? && !block.owner.enterprise? - if block.owner.software? + if software && block.owner.software? software_block = boxTemplateSoftware.blocks.where(:title => block.title).first block.mirror_block_id = software_block.id if software_block - elsif block.owner.institution? + elsif institution && block.owner.institution? institution_block = boxTemplateInstitution.blocks.where(:title => block.title).first block.mirror_block_id = institution_block.id if institution_block end diff --git a/db/migrate/20150910121056_create_siorg_institutions.rb b/db/migrate/20150910121056_create_siorg_institutions.rb index 1440641..50769a7 100644 --- a/db/migrate/20150910121056_create_siorg_institutions.rb +++ b/db/migrate/20150910121056_create_siorg_institutions.rb @@ -5,56 +5,60 @@ class CreateSiorgInstitutions < ActiveRecord::Migration def up governmental_power = GovernmentalPower.where("name ILIKE ?", "Executivo").first governmental_sphere = GovernmentalSphere.where("name ILIKE ?", "Federal").first + env = Environment.default - CSV.foreach("plugins/spb_migrations/files/orgaos_siorg.csv", :headers => true) do |row| - template = Community["institution"] + if env && governmental_power && governmental_sphere + CSV.foreach("plugins/spb_migrations/files/orgaos_siorg.csv", :headers => true) do |row| + template = Community["institution"] - community = Community.where("identifier ILIKE ?", row["Nome"].to_slug).first - unless community - institution = Institution.where("acronym ILIKE ?", row["Sigla"]).first - community = institution.community if institution - end - - community = Community.new unless community + community = Community.where("identifier ILIKE ?", row["Nome"].to_slug).first + unless community + institution = Institution.where("acronym ILIKE ?", row["Sigla"]).first + community = institution.community if institution + end - community.name = row["Nome"].rstrip - community.country = row["Pais"] - community.state = row["Estado"] - community.city = row["Cidade"] - community.template = template if template + community = Community.new unless community - community.save + community.environment = env if community.environment.blank? + community.name = row["Nome"].rstrip + community.country = row["Pais"] + community.state = row["Estado"] + community.city = row["Cidade"] + community.template = template if template - juridical_nature = JuridicalNature.where("name ILIKE ? OR name ILIKE ?", "#{I18n.transliterate(row['Natureza Jurídica'].rstrip)}", "#{row['Natureza Jurídica'].rstrip}").first + community.save! - juridical_nature = JuridicalNature.create!(name: row['Natureza Jurídica'].rstrip) unless juridical_nature + juridical_nature = JuridicalNature.where("name ILIKE ? OR name ILIKE ?", "#{I18n.transliterate(row['Natureza Jurídica'].rstrip)}", "#{row['Natureza Jurídica'].rstrip}").first + juridical_nature = JuridicalNature.create!(name: row['Natureza Jurídica'].rstrip) unless juridical_nature - institution = Hash.new - institution[:name] = row["Nome"] - institution[:siorg_code] = row["Código do SIORG"] - institution[:acronym] = row["Sigla"] - institution[:governmental_sphere] = governmental_sphere - institution[:governmental_power] = governmental_power - institution[:juridical_nature] = juridical_nature - institution[:sisp] = (row["SISP"] == "Sim") - institution[:cnpj] = row["CNPJ"] - institution[:community] = community + institution = Hash.new - if community.institution - community.institution.update_attributes(institution) - else + institution[:name] = row["Nome"] + institution[:siorg_code] = row["Código do SIORG"] + institution[:acronym] = row["Sigla"] + institution[:governmental_sphere] = governmental_sphere + institution[:governmental_power] = governmental_power + institution[:juridical_nature] = juridical_nature + institution[:sisp] = (row["SISP"] == "Sim") + institution[:cnpj] = row["CNPJ"] institution[:community] = community - community.institution = PublicInstitution.create!(institution) - end - if community.save - print "." - else - print "F" - end + if community.institution + community.institution.update_attributes(institution) + else + institution[:community] = community + community.institution = PublicInstitution.create!(institution) + end + + if community.save + print "." + else + print "F" + end + end end puts "" end diff --git a/db/migrate/20150910133925_add_community_block_in_place_of_profile_image_block.rb b/db/migrate/20150910133925_add_community_block_in_place_of_profile_image_block.rb index 64037d4..e2a5a5f 100644 --- a/db/migrate/20150910133925_add_community_block_in_place_of_profile_image_block.rb +++ b/db/migrate/20150910133925_add_community_block_in_place_of_profile_image_block.rb @@ -2,26 +2,28 @@ class AddCommunityBlockInPlaceOfProfileImageBlock < ActiveRecord::Migration def up software_template = Community['software'] - software_area_two = software_template.boxes.find_by_position 2 + if software_template + software_area_two = software_template.boxes.find_by_position 2 - community_block_template = CommunityBlock.new :mirror => true, :move_modes => "none", :edit_modes => "none" - community_block_template.settings[:fixed] = true - community_block_template.display = "except_home_page" - community_block_template.save! - print "." - - software_area_two.blocks << community_block_template - software_area_two.save! - print "." - - profile_image_block = software_area_two.blocks.find_by_type("ProfileImageBlock") - if !profile_image_block.nil? - community_block_template.position = profile_image_block.position + community_block_template = CommunityBlock.new :mirror => true, :move_modes => "none", :edit_modes => "none" + community_block_template.settings[:fixed] = true + community_block_template.display = "except_home_page" community_block_template.save! print "." - profile_image_block.destroy + software_area_two.blocks << community_block_template + software_area_two.save! print "." + + profile_image_block = software_area_two.blocks.find_by_type("ProfileImageBlock") + if !profile_image_block.nil? + community_block_template.position = profile_image_block.position + community_block_template.save! + print "." + + profile_image_block.destroy + print "." + end end Community.joins(:software_info).each do |software_community| @@ -31,7 +33,7 @@ class AddCommunityBlockInPlaceOfProfileImageBlock < ActiveRecord::Migration community_block = CommunityBlock.new :mirror => true, :move_modes => "none", :edit_modes => "none" community_block.settings[:fixed] = true community_block.display = "except_home_page" - community_block.mirror_block_id = community_block_template.id + community_block.mirror_block_id = community_block_template.id if community_block_template community_block.save! print "." -- libgit2 0.21.2