Commit e66821bd403bdc86d8605687835407d25b183575
1 parent
82f42c57
Exists in
sisp_simple_version
Improve import_sisp task
- Acronym is not mandatory for institution anymore Signed-off-by: Arthur Del Esposte<arthurmde@gmail.com> Signed-off-by: Marcos Ronaldo <marcos.rpj2@gmail.com>
Showing
2 changed files
with
58 additions
and
40 deletions
Show diff stats
src/noosfero-spb/gov_user/lib/public_institution.rb
| ... | ... | @@ -2,9 +2,6 @@ class PublicInstitution < Institution |
| 2 | 2 | validates :governmental_power, :governmental_sphere, :juridical_nature, |
| 3 | 3 | :presence=>true |
| 4 | 4 | |
| 5 | - validates :acronym, :allow_blank => true, :allow_nil => true, | |
| 6 | - :uniqueness=>true | |
| 7 | - | |
| 8 | 5 | validates_format_of( |
| 9 | 6 | :cnpj, |
| 10 | 7 | :with => /^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$/, | ... | ... |
src/noosfero-spb/software_communities/lib/tasks/import_sisp_software.rake
| ... | ... | @@ -15,12 +15,14 @@ namespace :software do |
| 15 | 15 | end |
| 16 | 16 | |
| 17 | 17 | desc "Import sisp software from yml" |
| 18 | - task :import_sisp_from_yml => :environment do | |
| 19 | - $imported_data = YAML.load_file('script/sisp-catalogo.yml') | |
| 20 | - $env = Environment.default | |
| 18 | + task :import_sisp => :environment do | |
| 19 | + | |
| 20 | + $imported_data = YAML.load_file('script/sisp-catalogo.yml') #TODO change yml folder | |
| 21 | + $env = Environment.default #TODO change this to correct environment | |
| 21 | 22 | |
| 22 | 23 | $software_category = Category.find_by_name("Software") |
| 23 | 24 | $software_category ||= Category.create(:name => "Software", :environment => $env) |
| 25 | + | |
| 24 | 26 | $sisp_user = create_sisp_user |
| 25 | 27 | |
| 26 | 28 | $created_software={} |
| ... | ... | @@ -30,6 +32,7 @@ namespace :software do |
| 30 | 32 | |
| 31 | 33 | sisp = $imported_data[key]['software_info'] |
| 32 | 34 | |
| 35 | + next if sisp['3 - Identificação do software']['Nome'].size <= 2 | |
| 33 | 36 | sw = create_software_and_attrs sisp |
| 34 | 37 | |
| 35 | 38 | sw.sisp_url = $imported_data[key]['url'] |
| ... | ... | @@ -39,8 +42,8 @@ namespace :software do |
| 39 | 42 | set_sisp_hashes sw, sisp |
| 40 | 43 | |
| 41 | 44 | if sw.valid? && sw.community.valid? |
| 42 | - sw.community.save | |
| 43 | - sw.save | |
| 45 | + sw.community.save! | |
| 46 | + sw.save! | |
| 44 | 47 | print '.' |
| 45 | 48 | else |
| 46 | 49 | puts sw.errors.full_messages |
| ... | ... | @@ -49,21 +52,28 @@ namespace :software do |
| 49 | 52 | end |
| 50 | 53 | |
| 51 | 54 | puts "\n Done" |
| 55 | + return | |
| 52 | 56 | end |
| 53 | 57 | end |
| 54 | 58 | |
| 55 | 59 | def create_community name |
| 56 | - community = Community.new | |
| 57 | - community.name = name | |
| 60 | + | |
| 58 | 61 | identifier = create_identifier name |
| 59 | 62 | |
| 60 | 63 | $created_software[identifier]= $created_software[identifier].nil? ? 0 : $created_software[identifier]+1 |
| 64 | + | |
| 65 | + name = name + " copy#{$created_software[identifier]}" if ($created_software[identifier] != 0) | |
| 61 | 66 | identifier = (identifier + "-copy#{$created_software[identifier]}") if ($created_software[identifier] != 0) |
| 62 | 67 | |
| 63 | - #TODO remove | |
| 64 | - p "created new: #{identifier}" | |
| 68 | + community = Community.find_or_initialize_by_name(name) | |
| 65 | 69 | |
| 66 | 70 | community.identifier = identifier |
| 71 | + | |
| 72 | + #p "achei? #{!community.id.nil?}" | |
| 73 | + #p "nome: #{name}" | |
| 74 | + #p "iden: #{identifier}" | |
| 75 | + #p " " | |
| 76 | + community.save! | |
| 67 | 77 | community |
| 68 | 78 | end |
| 69 | 79 | |
| ... | ... | @@ -73,8 +83,7 @@ def create_software_info name, finality = "blank", acronym = "" |
| 73 | 83 | software_info.community = community |
| 74 | 84 | software_info.finality = finality |
| 75 | 85 | software_info.acronym = acronym |
| 76 | - software_info.public_software = true | |
| 77 | - | |
| 86 | + software_info.save! | |
| 78 | 87 | software_info |
| 79 | 88 | end |
| 80 | 89 | |
| ... | ... | @@ -103,38 +112,45 @@ def set_sisp_hashes software, sisp_hash |
| 103 | 112 | end |
| 104 | 113 | |
| 105 | 114 | def create_identifier name |
| 106 | - "#{name.to_slug}".truncate(150, :omission => '', :separator => '-') | |
| 115 | + "#{name.to_slug}".truncate(240, :omission => '', :separator => '-') | |
| 107 | 116 | end |
| 108 | 117 | |
| 109 | 118 | def create_sisp_user #TODO change user info |
| 110 | 119 | user = User.find_by_login('sisp') |
| 111 | 120 | user ||= User.new(:login => 'sisp', :email => 'sisp_user@changeme.com', :password => 'sisp1234', :password_confirmation => 'sisp1234', :environment => $env) |
| 121 | + user.save! | |
| 112 | 122 | user.activate if !user.activated? |
| 113 | 123 | user |
| 114 | 124 | end |
| 115 | 125 | |
| 116 | 126 | def create_institution sisp_hash |
| 117 | 127 | |
| 118 | - #TODO create_institution if doesnt exist | |
| 119 | - | |
| 120 | 128 | name = sisp_hash['1 - Identificação do órgão']['Nome da Empresa/Órgão'] |
| 121 | - institution_community = Community::new | |
| 129 | + | |
| 130 | + if name.size <=2 | |
| 131 | + return nil | |
| 132 | + end | |
| 133 | + | |
| 134 | + institution_community = Community.find_or_initialize_by_identifier(name.to_slug) | |
| 135 | + | |
| 136 | + #puts institution_community.inspect | |
| 137 | + institution = PublicInstitution.find_or_initialize_by_name(name) | |
| 122 | 138 | institution_community.name = name |
| 123 | - institution_community.country = "Brasil" | |
| 124 | - institution_community.state = "Unknown" #TODO see what to put here | |
| 125 | - institution_community.city = "Unknown" #TODO see what to put here | |
| 126 | - institution_community.save | |
| 139 | + institution_community.country = "BR" | |
| 140 | + institution_community.state = "DF" | |
| 141 | + institution_community.city = "Unknown" | |
| 142 | + institution_community.save! | |
| 127 | 143 | |
| 128 | - institution = PublicInstitution.new | |
| 129 | 144 | institution.community = institution_community |
| 130 | 145 | institution.name = name |
| 131 | - institution.juridical_nature = sisp_hash['1 - Identificação do órgão']['Natureza'] | |
| 132 | - institution.acronym = sisp_hash['1 - Identificação do órgão']['Sigla'] #TODO empty if bigger than 10 | |
| 133 | - institution.governmental_power = sisp_hash['1 - Identificação do órgão']['Abrangência'] | |
| 134 | - institution.governmental_sphere = sisp_hash['1 - Identificação do órgão']['Esfera'] | |
| 135 | - institution.cnpj = "Unknown" #TODO see what to put here | |
| 136 | - institution.corporate_name = name #TODO see what to put here | |
| 137 | - institution.save | |
| 146 | + institution.juridical_nature = JuridicalNature.find_or_create_by_name(:name => sisp_hash['1 - Identificação do órgão']['Natureza']) | |
| 147 | + institution.acronym = sisp_hash['1 - Identificação do órgão']['Sigla'].split[0] | |
| 148 | + institution.acronym = nil if (institution.acronym.size > 10) | |
| 149 | + institution.governmental_power = GovernmentalPower.find_or_create_by_name(:name => sisp_hash['1 - Identificação do órgão']['Esfera']) | |
| 150 | + institution.governmental_sphere = GovernmentalSphere.find_or_create_by_name(:name => sisp_hash['1 - Identificação do órgão']['Abrangência']) | |
| 151 | + institution.cnpj = nil | |
| 152 | + institution.corporate_name = name | |
| 153 | + institution.save! | |
| 138 | 154 | institution |
| 139 | 155 | |
| 140 | 156 | end |
| ... | ... | @@ -142,14 +158,21 @@ end |
| 142 | 158 | def create_ratings community_identifier, sisp_hash |
| 143 | 159 | software_community = Community.find_by_identifier(community_identifier) |
| 144 | 160 | |
| 145 | - comment_system = Comment.create!(:body=>"Informações de custo de sistema importadas automaticamente do catálogo SISP.", :target => software_community, :author=> $sisp_user) | |
| 146 | - comment_maintenance = Comment.create!(:body=>"Informações de custo de manutenção importadas automaticamente do catálogo SISP.", :target => software_community, :author=> $sisp_user) | |
| 147 | - | |
| 148 | 161 | institution = create_institution(sisp_hash) |
| 162 | + if institution.nil? | |
| 163 | + return nil | |
| 164 | + end | |
| 165 | + | |
| 166 | + comment_system = Comment.new(:body=>"Informações de custo de sistema importadas automaticamente do catálogo SISP.", :author=> $sisp_user.person) | |
| 167 | + comment_system.source = software_community | |
| 168 | + comment_system.save! | |
| 169 | +comment_maintenance = Comment.new(:body=>"Informações de custo de manutenção importadas automaticamente do catálogo SISP.", :author=> $sisp_user.person) | |
| 170 | + comment_maintenance.source = software_community | |
| 171 | + comment_maintenance.save! | |
| 149 | 172 | |
| 150 | - system_rating = OrganizationRating.create!( | |
| 173 | + OrganizationRating.create!( | |
| 151 | 174 | :comment => comment_system, |
| 152 | - :value => 3, | |
| 175 | + :value => 1, #TODO see what to put here | |
| 153 | 176 | :person => $sisp_user.person, |
| 154 | 177 | :organization => software_community, |
| 155 | 178 | :institution => institution, |
| ... | ... | @@ -157,9 +180,9 @@ def create_ratings community_identifier, sisp_hash |
| 157 | 180 | :people_benefited => 0 |
| 158 | 181 | ) |
| 159 | 182 | |
| 160 | - maintenance_rating = OrganizationRating.create!( | |
| 183 | + OrganizationRating.create!( | |
| 161 | 184 | :comment => comment_maintenance, |
| 162 | - :value => 3, | |
| 185 | + :value => 1, #TODO see what to put here | |
| 163 | 186 | :person => $sisp_user.person, |
| 164 | 187 | :organization => software_community, |
| 165 | 188 | :institution => institution, |
| ... | ... | @@ -171,11 +194,9 @@ end |
| 171 | 194 | |
| 172 | 195 | def create_software_and_attrs sisp_hash |
| 173 | 196 | name = sisp_hash['3 - Identificação do software']['Nome'].truncate(240, :omission => '', :separator => ' ') |
| 197 | + | |
| 174 | 198 | identifier = create_identifier name |
| 175 | 199 | |
| 176 | - #software = Community.find_by_identifier(identifier) | |
| 177 | - #software = software.software_info if software | |
| 178 | - #software ||= create_software_info(name) | |
| 179 | 200 | software = create_software_info(name) |
| 180 | 201 | |
| 181 | 202 | create_ratings identifier, sisp_hash | ... | ... |