Commit b9007961bf394e46c8a4de26ac7ec3fb022054e4
1 parent
f2fd0dc1
Exists in
master
and in
28 other branches
ActionItem1165: fixing import script
Showing
3 changed files
with
20 additions
and
17 deletions
Show diff stats
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 < 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 < 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 | ... | ... |