Commit 746963680b68f3095022172855b780c376cf96fe
1 parent
d95b90a2
Exists in
master
and in
29 other branches
ActionItem1172: creating role together with environment
Showing
3 changed files
with
81 additions
and
54 deletions
Show diff stats
app/models/environment.rb
@@ -20,6 +20,78 @@ class Environment < ActiveRecord::Base | @@ -20,6 +20,78 @@ class Environment < ActiveRecord::Base | ||
20 | end | 20 | end |
21 | end | 21 | end |
22 | 22 | ||
23 | + after_create do |e| | ||
24 | + Role.create!( | ||
25 | + :key => 'environment_administrator', | ||
26 | + :name => N_('Environment Administrator'), | ||
27 | + :environment => e, | ||
28 | + :permissions => [ | ||
29 | + 'view_environment_admin_panel', | ||
30 | + 'edit_environment_features', | ||
31 | + 'edit_environment_design', | ||
32 | + 'manage_environment_categories', | ||
33 | + 'manage_environment_roles', | ||
34 | + 'manage_environment_validators', | ||
35 | + 'edit_profile', | ||
36 | + 'destroy_profile', | ||
37 | + 'manage_memberships', | ||
38 | + 'post_content', | ||
39 | + 'edit_profile_design', | ||
40 | + 'manage_products', | ||
41 | + 'edit_appearance', | ||
42 | + 'manage_friends', | ||
43 | + 'validate_enterprise', | ||
44 | + 'perform_task', | ||
45 | + ] | ||
46 | + ) | ||
47 | + Role.create!( | ||
48 | + :key => 'profile_admin', | ||
49 | + :name => N_('Profile Administrator'), | ||
50 | + :environment => e, | ||
51 | + :permissions => [ | ||
52 | + 'edit_profile', | ||
53 | + 'destroy_profile', | ||
54 | + 'manage_memberships', | ||
55 | + 'post_content', | ||
56 | + 'edit_profile_design', | ||
57 | + 'manage_products', | ||
58 | + 'edit_appearance', | ||
59 | + ] | ||
60 | + ) | ||
61 | + # members for enterprises, communities etc | ||
62 | + Role.create!( | ||
63 | + :key => "profile_member", | ||
64 | + :name => N_('Member'), | ||
65 | + :environment => e, | ||
66 | + :permissions => [ | ||
67 | + 'edit_profile', | ||
68 | + 'post_content', | ||
69 | + 'manage_products' | ||
70 | + ] | ||
71 | + ) | ||
72 | + # moderators for enterprises, communities etc | ||
73 | + Role.create!( | ||
74 | + :key => 'profile_moderator', | ||
75 | + :name => N_('Moderator'), | ||
76 | + :environment => e, | ||
77 | + :permissions => [ | ||
78 | + 'manage_memberships', | ||
79 | + 'edit_profile_design', | ||
80 | + 'manage_products', | ||
81 | + 'manage_friends', | ||
82 | + 'perform_task' | ||
83 | + ] | ||
84 | + ) | ||
85 | + end | ||
86 | + | ||
87 | + def add_admin(user) | ||
88 | + self.affiliate(user, Environment::Roles.admin(self.id)) | ||
89 | + end | ||
90 | + | ||
91 | + def admins | ||
92 | + self.members_by_role(Environment::Roles.admin(self.id)) | ||
93 | + end | ||
94 | + | ||
23 | # returns the available features for a Environment, in the form of a | 95 | # returns the available features for a Environment, in the form of a |
24 | # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>. | 96 | # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>. |
25 | def self.available_features | 97 | def self.available_features |
lib/tasks/populate.rake
@@ -7,61 +7,7 @@ namespace :db do | @@ -7,61 +7,7 @@ namespace :db do | ||
7 | desc "Populate database with basic required data to run application" | 7 | desc "Populate database with basic required data to run application" |
8 | task :populate do | 8 | task :populate do |
9 | Environment.create!(:name => 'Noosfero', :is_default => true) unless (Environment.default) | 9 | Environment.create!(:name => 'Noosfero', :is_default => true) unless (Environment.default) |
10 | - create_roles | ||
11 | - new_permissions | ||
12 | end | 10 | end |
13 | end | 11 | end |
14 | 12 | ||
15 | -def new_permissions | ||
16 | - e = Environment.default | ||
17 | - admin = Profile::Roles.admin(e.id) | ||
18 | - admin.permissions += ['manage_friends', 'validate_enterprise', 'perform_task'] | ||
19 | - admin.save | ||
20 | - | ||
21 | - moderator = Profile::Roles.moderator(e.id) | ||
22 | - moderator.permissions += ['manage_friends', 'perform_task'] | ||
23 | - moderator.save | ||
24 | -end | ||
25 | - | ||
26 | -def create_roles | ||
27 | - e = Environment.default | ||
28 | - # Environment administrator! | ||
29 | - Role.create!(:key => 'environment_administrator', :name => N_('Environment Administrator'), :environment => e, :permissions => [ | ||
30 | - 'view_environment_admin_panel', | ||
31 | - 'edit_environment_features', | ||
32 | - 'edit_environment_design', | ||
33 | - 'manage_environment_categories', | ||
34 | - 'manage_environment_roles', | ||
35 | - 'manage_environment_validators', | ||
36 | - 'edit_profile', | ||
37 | - 'destroy_profile', | ||
38 | - 'manage_memberships', | ||
39 | - 'post_content', | ||
40 | - 'edit_profile_design', | ||
41 | - 'manage_products', | ||
42 | - 'edit_appearance', | ||
43 | - ]) | ||
44 | - Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :environment => e, :permissions => [ | ||
45 | - 'edit_profile', | ||
46 | - 'destroy_profile', | ||
47 | - 'manage_memberships', | ||
48 | - 'post_content', | ||
49 | - 'edit_profile_design', | ||
50 | - 'manage_products', | ||
51 | - 'edit_appearance', | ||
52 | - ]) | ||
53 | - # members for enterprises, communities etc | ||
54 | - Role.create!(:key => "profile_member", :name => N_('Member'), :environment => e, :permissions => [ | ||
55 | - 'edit_profile', | ||
56 | - 'post_content', | ||
57 | - 'manage_products' | ||
58 | - ]) | ||
59 | - # moderators for enterprises, communities etc | ||
60 | - Role.create!(:key => 'profile_moderator', :name => N_('Moderator'), :environment => e, :permissions => [ | ||
61 | - 'manage_memberships', | ||
62 | - 'edit_profile_design', | ||
63 | - 'manage_products' | ||
64 | - ]) | ||
65 | -end | ||
66 | - | ||
67 | # vim: ft=ruby | 13 | # vim: ft=ruby |
test/unit/environment_test.rb
@@ -326,6 +326,15 @@ class EnvironmentTest < Test::Unit::TestCase | @@ -326,6 +326,15 @@ class EnvironmentTest < Test::Unit::TestCase | ||
326 | assert_kind_of Role, Environment::Roles.admin(Environment.default.id) | 326 | assert_kind_of Role, Environment::Roles.admin(Environment.default.id) |
327 | end | 327 | end |
328 | 328 | ||
329 | + should 'be able to add admins easily' do | ||
330 | + env = Environment.create!(:name => 'test') | ||
331 | + user = create_user('testuser').person | ||
332 | + env.add_admin(user) | ||
333 | + env.reload | ||
334 | + | ||
335 | + assert_includes env.admins, user | ||
336 | + end | ||
337 | + | ||
329 | should 'have products through enterprises' do | 338 | should 'have products through enterprises' do |
330 | env = Environment.default | 339 | env = Environment.default |
331 | e1 = Enterprise.create!(:name => 'test_ent1', :identifier => 'test_ent1') | 340 | e1 = Enterprise.create!(:name => 'test_ent1', :identifier => 'test_ent1') |