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 29  
30 30 after_create do |user|
31 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 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 35 end
36 36  
37 37 attr_writer :person_data
... ...
script/import-cooperation.net
... ... @@ -30,12 +30,7 @@ class UploadedFile
30 30 attr_accessor :is_homepage, :filesystem_location
31 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 35 class FileData < StringIO
41 36 attr_reader :original_filename, :content_type
... ... @@ -47,7 +42,7 @@ class FileData &lt; StringIO
47 42 end
48 43  
49 44 class Progress
50   - DEBUG = false
  45 + DEBUG = true
51 46 class << self
52 47 def start(n)
53 48 @total = n
... ... @@ -59,6 +54,9 @@ class Progress
59 54 def step_done
60 55 say('=> done', true)
61 56 end
  57 + def step_failed
  58 + say('=> FAILED', true)
  59 + end
62 60 def say(msg, force = Progress::DEBUG)
63 61 puts("[%d/%d] %s" % [@current, @total, msg]) if force
64 62 end
... ... @@ -86,14 +84,17 @@ for username in ARGV
86 84 user = User.new(:login => login, :email => username, :environment => environment)
87 85  
88 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 93 user.save!
95 94 Progress.say "I: #{username} data imported"
96 95  
  96 + person = user.person
  97 +
97 98 # import articles
98 99 Dir.glob(File.join(IMPORT_DIR, username, 'articles', '*.xml')) do |xml|
99 100 Progress.say "I: Trying to import #{username}'s article in #{xml} ..."
... ... @@ -165,6 +166,7 @@ for username in ARGV
165 166 end
166 167  
167 168 end
  169 + Progress.step_done
168 170 rescue Exception => e
169 171 $stderr.puts "=================================="
170 172 $stderr.puts "E: importing <#{username}> failed."
... ... @@ -172,6 +174,6 @@ for username in ARGV
172 174 $stderr.puts e.backtrace
173 175 $stderr.puts "=================================="
174 176 $stderr.puts "E: Note that ALL operations above relative to <#{username}> were CANCELLED due to these errors."
  177 + Progress.step_failed
175 178 end
176   - Progress.step_done
177 179 end
... ...
test/functional/account_controller_test.rb
... ... @@ -636,11 +636,12 @@ class AccountControllerTest &lt; Test::Unit::TestCase
636 636 end
637 637  
638 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 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 642 assert_redirected_to :controller => 'profile_editor', :profile => 'testuser'
643 643 end
  644 + assert_equal 'example.com', Person['testuser'].organization
644 645 end
645 646  
646 647 protected
... ...