Commit b9007961bf394e46c8a4de26ac7ec3fb022054e4

Authored by Antonio Terceiro
1 parent f2fd0dc1

ActionItem1165: fixing import script

app/models/user.rb
@@ -29,9 +29,9 @@ class User < ActiveRecord::Base @@ -29,9 +29,9 @@ class User < ActiveRecord::Base
29 29
30 after_create do |user| 30 after_create do |user|
31 user.person ||= Person.new 31 user.person ||= Person.new
32 - user.person.attributes = user.person_data 32 + user.person.attributes = user.person_data.merge(:identifier => user.login, :user_id => user.id, :environment_id => user.environment_id)
33 user.person.name ||= user.login 33 user.person.name ||= user.login
34 - user.person.update_attributes(:identifier => user.login, :user_id => user.id, :environment_id => user.environment_id) 34 + user.person.save!
35 end 35 end
36 36
37 attr_writer :person_data 37 attr_writer :person_data
script/import-cooperation.net
@@ -30,12 +30,7 @@ class UploadedFile @@ -30,12 +30,7 @@ class UploadedFile
30 attr_accessor :is_homepage, :filesystem_location 30 attr_accessor :is_homepage, :filesystem_location
31 end 31 end
32 32
33 -Person # forces loading Noosfero class before adding stuff to id  
34 -class Person  
35 - delegate :crypted_password=, :to => :user  
36 - delegate :salt=, :to => :user  
37 - delegate :password_type=, :to => :user  
38 -end 33 +Person
39 34
40 class FileData < StringIO 35 class FileData < StringIO
41 attr_reader :original_filename, :content_type 36 attr_reader :original_filename, :content_type
@@ -47,7 +42,7 @@ class FileData &lt; StringIO @@ -47,7 +42,7 @@ class FileData &lt; StringIO
47 end 42 end
48 43
49 class Progress 44 class Progress
50 - DEBUG = false 45 + DEBUG = true
51 class << self 46 class << self
52 def start(n) 47 def start(n)
53 @total = n 48 @total = n
@@ -59,6 +54,9 @@ class Progress @@ -59,6 +54,9 @@ class Progress
59 def step_done 54 def step_done
60 say('=> done', true) 55 say('=> done', true)
61 end 56 end
  57 + def step_failed
  58 + say('=> FAILED', true)
  59 + end
62 def say(msg, force = Progress::DEBUG) 60 def say(msg, force = Progress::DEBUG)
63 puts("[%d/%d] %s" % [@current, @total, msg]) if force 61 puts("[%d/%d] %s" % [@current, @total, msg]) if force
64 end 62 end
@@ -86,14 +84,17 @@ for username in ARGV @@ -86,14 +84,17 @@ for username in ARGV
86 user = User.new(:login => login, :email => username, :environment => environment) 84 user = User.new(:login => login, :email => username, :environment => environment)
87 85
88 # import person data 86 # import person data
89 - person = Person.new(:identifier => login)  
90 - user.person = person  
91 - person.user = user  
92 - person.from_xml(File.read(File.join(IMPORT_DIR, username + '.xml')))  
93 - person.preferred_domain = get_domain(domain_name) 87 + imported_data = Hash.from_xml(File.read(File.join(IMPORT_DIR, username + '.xml')))['person']
  88 + user.crypted_password = imported_data.delete(:crypted_password.to_s)
  89 + user.salt = imported_data.delete(:salt.to_s)
  90 + user.password_type = imported_data.delete(:password_type.to_s)
  91 +
  92 + user.person_data = imported_data.merge('preferred_domain_id' => get_domain(domain_name).id)
94 user.save! 93 user.save!
95 Progress.say "I: #{username} data imported" 94 Progress.say "I: #{username} data imported"
96 95
  96 + person = user.person
  97 +
97 # import articles 98 # import articles
98 Dir.glob(File.join(IMPORT_DIR, username, 'articles', '*.xml')) do |xml| 99 Dir.glob(File.join(IMPORT_DIR, username, 'articles', '*.xml')) do |xml|
99 Progress.say "I: Trying to import #{username}'s article in #{xml} ..." 100 Progress.say "I: Trying to import #{username}'s article in #{xml} ..."
@@ -165,6 +166,7 @@ for username in ARGV @@ -165,6 +166,7 @@ for username in ARGV
165 end 166 end
166 167
167 end 168 end
  169 + Progress.step_done
168 rescue Exception => e 170 rescue Exception => e
169 $stderr.puts "==================================" 171 $stderr.puts "=================================="
170 $stderr.puts "E: importing <#{username}> failed." 172 $stderr.puts "E: importing <#{username}> failed."
@@ -172,6 +174,6 @@ for username in ARGV @@ -172,6 +174,6 @@ for username in ARGV
172 $stderr.puts e.backtrace 174 $stderr.puts e.backtrace
173 $stderr.puts "==================================" 175 $stderr.puts "=================================="
174 $stderr.puts "E: Note that ALL operations above relative to <#{username}> were CANCELLED due to these errors." 176 $stderr.puts "E: Note that ALL operations above relative to <#{username}> were CANCELLED due to these errors."
  177 + Progress.step_failed
175 end 178 end
176 - Progress.step_done  
177 end 179 end
test/functional/account_controller_test.rb
@@ -636,11 +636,12 @@ class AccountControllerTest &lt; Test::Unit::TestCase @@ -636,11 +636,12 @@ class AccountControllerTest &lt; Test::Unit::TestCase
636 end 636 end
637 637
638 should 'signup filling in mandatory person fields' do 638 should 'signup filling in mandatory person fields' do
639 - Person.any_instance.stubs(:required_fields).returns(['organization_website']) 639 + Person.any_instance.stubs(:required_fields).returns(['organization'])
640 assert_difference User, :count do 640 assert_difference User, :count do
641 - post :signup, :user => { :login => 'testuser', :password => '123456', :password_confirmation => '123456', :email => 'testuser@example.com' }, :profile_data => { :organization_website => 'example.com' } 641 + post :signup, :user => { :login => 'testuser', :password => '123456', :password_confirmation => '123456', :email => 'testuser@example.com' }, :profile_data => { :organization => 'example.com' }
642 assert_redirected_to :controller => 'profile_editor', :profile => 'testuser' 642 assert_redirected_to :controller => 'profile_editor', :profile => 'testuser'
643 end 643 end
  644 + assert_equal 'example.com', Person['testuser'].organization
644 end 645 end
645 646
646 protected 647 protected