Commit 746963680b68f3095022172855b780c376cf96fe

Authored by Antonio Terceiro
1 parent d95b90a2

ActionItem1172: creating role together with environment

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 &lt; 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')
... ...