Commit 519edc986fbd027d6ed8d001a71b7a21407d6f4c
Exists in
master
and in
29 other branches
Merge branch 'ai3051' of https://gitlab.com/brauliobo/noosfero into brauliobo/noosfero-ai3051
Showing
6 changed files
with
73 additions
and
35 deletions
Show diff stats
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 < Task | @@ -28,15 +21,27 @@ class EnterpriseActivation < 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 "%{requestor} quer ativar o empreendimento %{linked_subject}." | @@ -2815,6 +2815,14 @@ msgstr "%{requestor} quer ativar o empreendimento %{linked_subject}." | ||
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 < ActiveSupport::TestCase | @@ -9,24 +9,24 @@ class EnterpriseActivationTest < 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 < ActiveSupport::TestCase | @@ -40,15 +40,6 @@ class EnterpriseActivationTest < 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) |