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 | 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') | ... | ... |