Commit 519edc986fbd027d6ed8d001a71b7a21407d6f4c

Authored by Rodrigo Souto
2 parents f2e97688 120db5fe

Merge branch 'ai3051' of https://gitlab.com/brauliobo/noosfero into brauliobo/noosfero-ai3051

app/models/enterprise.rb
@@ -96,14 +96,22 @@ class Enterprise < Organization @@ -96,14 +96,22 @@ class Enterprise < Organization
96 save 96 save
97 end 97 end
98 98
  99 + def activation_task
  100 + self.tasks.where(:type => 'EnterpriseActivation').first
  101 + end
  102 +
99 def enable(owner) 103 def enable(owner)
100 return if enabled 104 return if enabled
101 - affiliate(owner, Profile::Roles.all_roles(environment.id))  
102 - update_attribute(:enabled,true)  
103 - if environment.replace_enterprise_template_when_enable  
104 - apply_template(template)  
105 - end  
106 - save_without_validation! 105 + # must be set first for the following to work
  106 + self.enabled = true
  107 +
  108 + self.affiliate owner, Profile::Roles.all_roles(self.environment.id) if owner
  109 +
  110 + self.apply_template template if self.environment.replace_enterprise_template_when_enable
  111 +
  112 + self.activation_task.update_attribute :status, Task::Status::FINISHED rescue nil
  113 +
  114 + self.save_without_validation!
107 end 115 end
108 116
109 def question 117 def question
app/models/enterprise_activation.rb
1 class EnterpriseActivation < Task 1 class EnterpriseActivation < Task
2 2
3 - class RequestorRequired < Exception; end 3 + alias :person :requestor
  4 + alias :person= :requestor=
4 5
5 - settings_items :enterprise_id, :integer 6 + alias :enterprise :target
  7 + alias :enterprise= :target=
6 8
7 - validates_presence_of :enterprise_id  
8 -  
9 - def enterprise  
10 - Enterprise.find(enterprise_id)  
11 - end  
12 -  
13 - def enterprise=(ent)  
14 - self.enterprise_id = ent.id  
15 - end 9 + validates_presence_of :enterprise
16 10
17 def perform 11 def perform
18 - raise EnterpriseActivation::RequestorRequired if requestor.nil?  
19 - self.enterprise.enable(requestor) 12 + self.enterprise.enable self.requestor
20 end 13 end
21 14
22 def title 15 def title
@@ -28,15 +21,27 @@ class EnterpriseActivation &lt; Task @@ -28,15 +21,27 @@ class EnterpriseActivation &lt; Task
28 end 21 end
29 22
30 def information 23 def information
31 - {:message => _('%{requestor} wants to activate enterprise %{linked_subject}.')} 24 + if self.requestor
  25 + {:message => _('%{requestor} wants to activate enterprise %{linked_subject}.')}
  26 + else
  27 + {:message => _('Pending activation of enterprise %{linked_subject}.')}
  28 + end
32 end 29 end
33 30
34 def icon 31 def icon
35 - {:type => :profile_image, :profile => requestor, :url => requestor.url} 32 + if self.requestor
  33 + {:type => :profile_image, :profile => self.requestor, :url => self.requestor.url}
  34 + else
  35 + {:type => :profile_image, :profile => self.enterprise, :url => self.enterprise.url}
  36 + end
36 end 37 end
37 38
38 def target_notification_description 39 def target_notification_description
39 - _('%{requestor} wants to activate enterprise %{enterprise}.') % {:requestor => requestor.name, :enterprise => enterprise.name} 40 + if self.requestor
  41 + _('%{requestor} wants to activate enterprise %{enterprise}.') % {:requestor => self.requestor.name, :enterprise => self.enterprise.name}
  42 + else
  43 + _('Pending activation of enterprise %{enterprise}.') % {:enterprise => self.enterprise.name}
  44 + end
40 end 45 end
41 46
42 end 47 end
db/migrate/20140318225328_set_target_for_enterprise_activation.rb 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +class SetTargetForEnterpriseActivation < ActiveRecord::Migration
  2 + def self.up
  3 + EnterpriseActivation.find_each do |enterprise_activation|
  4 + enterprise_activation.target = enterprise_activation.enterprise
  5 + enterprise_activation.data.delete :enterprise_id
  6 + enterprise_activation.save
  7 + end
  8 + end
  9 +
  10 + def self.down
  11 + say "this migration can't be reverted"
  12 + end
  13 +end
db/migrate/20140318233831_finish_enterprise_activation_for_enabled_enterprises.rb 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +class FinishEnterpriseActivationForEnabledEnterprises < ActiveRecord::Migration
  2 + def self.up
  3 + EnterpriseActivation.find_each do |enterprise_activation|
  4 + enterprise = enterprise_activation.enterprise
  5 + next unless enterprise.enabled
  6 + enterprise_activation.update_attribute :status, Task::Status::FINISHED
  7 + end
  8 + end
  9 +
  10 + def self.down
  11 + say "this migration can't be reverted"
  12 + end
  13 +end
po/pt/noosfero.po
@@ -2815,6 +2815,14 @@ msgstr &quot;%{requestor} quer ativar o empreendimento %{linked_subject}.&quot; @@ -2815,6 +2815,14 @@ msgstr &quot;%{requestor} quer ativar o empreendimento %{linked_subject}.&quot;
2815 msgid "%{requestor} wants to activate enterprise %{enterprise}." 2815 msgid "%{requestor} wants to activate enterprise %{enterprise}."
2816 msgstr "%{requestor} quer ativar o empreendimento %{enterprise}." 2816 msgstr "%{requestor} quer ativar o empreendimento %{enterprise}."
2817 2817
  2818 +#: app/models/enterprise_activation.rb:31
  2819 +msgid "Pending activation of enterprise %{linked_subject}."
  2820 +msgstr "Ativação pendente para o empreendimento %{linked_subject}."
  2821 +
  2822 +#: app/models/enterprise_activation.rb:39
  2823 +msgid "Pending activation of enterprise %{enterprise}."
  2824 +msgstr "Ativação pendente para o empreendimento %{enterprise}."
  2825 +
2818 #: app/models/contact.rb:- app/views/friends/index.rhtml:33 2826 #: app/models/contact.rb:- app/views/friends/index.rhtml:33
2819 #: app/views/friends/index.rhtml:36 2827 #: app/views/friends/index.rhtml:36
2820 msgid "contact" 2828 msgid "contact"
test/unit/enterprise_activation_test.rb
@@ -9,24 +9,24 @@ class EnterpriseActivationTest &lt; ActiveSupport::TestCase @@ -9,24 +9,24 @@ class EnterpriseActivationTest &lt; ActiveSupport::TestCase
9 end 9 end
10 10
11 should 'keep enterprise_id' do 11 should 'keep enterprise_id' do
12 - assert_nil EnterpriseActivation.new.enterprise_id 12 + assert_nil EnterpriseActivation.new.target_id
13 end 13 end
14 14
15 should 'have an enteprise through enterprise_id' do 15 should 'have an enteprise through enterprise_id' do
16 ent = Enterprise.create!(:name => 'my enterprise', :identifier => 'myent') 16 ent = Enterprise.create!(:name => 'my enterprise', :identifier => 'myent')
17 17
18 - assert_equal ent, EnterpriseActivation.new(:enterprise_id => ent.id).enterprise 18 + assert_equal ent, EnterpriseActivation.new(:target => ent).enterprise
19 end 19 end
20 20
21 should 'require an enterprise' do 21 should 'require an enterprise' do
22 t = EnterpriseActivation.new 22 t = EnterpriseActivation.new
23 t.valid? 23 t.valid?
24 - assert t.errors.invalid?(:enterprise_id), "enterprise must be required" 24 + assert t.errors.invalid?(:enterprise), "enterprise must be required"
25 25
26 ent = Enterprise.create!(:name => 'my enterprise', :identifier => 'myent') 26 ent = Enterprise.create!(:name => 'my enterprise', :identifier => 'myent')
27 t.enterprise = ent 27 t.enterprise = ent
28 t.valid? 28 t.valid?
29 - assert !t.errors.invalid?(:enterprise_id), "must validate after enterprise is set" 29 + assert !t.errors.invalid?(:target_id), "must validate after enterprise is set"
30 end 30 end
31 31
32 should 'activate enterprise when finished' do 32 should 'activate enterprise when finished' do
@@ -40,15 +40,6 @@ class EnterpriseActivationTest &lt; ActiveSupport::TestCase @@ -40,15 +40,6 @@ class EnterpriseActivationTest &lt; ActiveSupport::TestCase
40 assert ent.enabled, "finishing task should left enterprise enabled" 40 assert ent.enabled, "finishing task should left enterprise enabled"
41 end 41 end
42 42
43 - should 'require requestor to finish' do  
44 - ent = Enterprise.create!(:name => 'my enterprise', :identifier => 'myent', :enabled => false)  
45 - t = EnterpriseActivation.create!(:enterprise => ent)  
46 -  
47 - assert_raise EnterpriseActivation::RequestorRequired do  
48 - t.finish  
49 - end  
50 - end  
51 -  
52 should 'put requestor as enterprise owner when finishing' do 43 should 'put requestor as enterprise owner when finishing' do
53 ent = Enterprise.create!(:name => 'my enterprise', :identifier => 'myent', :enabled => false) 44 ent = Enterprise.create!(:name => 'my enterprise', :identifier => 'myent', :enabled => false)
54 t = EnterpriseActivation.create!(:enterprise => ent) 45 t = EnterpriseActivation.create!(:enterprise => ent)