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 | 20 | end |
21 | 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 | 95 | # returns the available features for a Environment, in the form of a |
24 | 96 | # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>. |
25 | 97 | def self.available_features | ... | ... |
lib/tasks/populate.rake
... | ... | @@ -7,61 +7,7 @@ namespace :db do |
7 | 7 | desc "Populate database with basic required data to run application" |
8 | 8 | task :populate do |
9 | 9 | Environment.create!(:name => 'Noosfero', :is_default => true) unless (Environment.default) |
10 | - create_roles | |
11 | - new_permissions | |
12 | 10 | end |
13 | 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 | 13 | # vim: ft=ruby | ... | ... |
test/unit/environment_test.rb
... | ... | @@ -326,6 +326,15 @@ class EnvironmentTest < Test::Unit::TestCase |
326 | 326 | assert_kind_of Role, Environment::Roles.admin(Environment.default.id) |
327 | 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 | 338 | should 'have products through enterprises' do |
330 | 339 | env = Environment.default |
331 | 340 | e1 = Enterprise.create!(:name => 'test_ent1', :identifier => 'test_ent1') | ... | ... |