Commit 746963680b68f3095022172855b780c376cf96fe
1 parent
d95b90a2
Exists in
staging
and in
42 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') |