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,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 < StringIO | @@ -47,7 +42,7 @@ class FileData < 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 < Test::Unit::TestCase | @@ -636,11 +636,12 @@ class AccountControllerTest < 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 |