From 746963680b68f3095022172855b780c376cf96fe Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Fri, 17 Jul 2009 17:50:29 -0300 Subject: [PATCH] ActionItem1172: creating role together with environment --- app/models/environment.rb | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/tasks/populate.rake | 54 ------------------------------------------------------ test/unit/environment_test.rb | 9 +++++++++ 3 files changed, 81 insertions(+), 54 deletions(-) diff --git a/app/models/environment.rb b/app/models/environment.rb index 22c5af4..422c50a 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -20,6 +20,78 @@ class Environment < ActiveRecord::Base end end + after_create do |e| + Role.create!( + :key => 'environment_administrator', + :name => N_('Environment Administrator'), + :environment => e, + :permissions => [ + 'view_environment_admin_panel', + 'edit_environment_features', + 'edit_environment_design', + 'manage_environment_categories', + 'manage_environment_roles', + 'manage_environment_validators', + 'edit_profile', + 'destroy_profile', + 'manage_memberships', + 'post_content', + 'edit_profile_design', + 'manage_products', + 'edit_appearance', + 'manage_friends', + 'validate_enterprise', + 'perform_task', + ] + ) + Role.create!( + :key => 'profile_admin', + :name => N_('Profile Administrator'), + :environment => e, + :permissions => [ + 'edit_profile', + 'destroy_profile', + 'manage_memberships', + 'post_content', + 'edit_profile_design', + 'manage_products', + 'edit_appearance', + ] + ) + # members for enterprises, communities etc + Role.create!( + :key => "profile_member", + :name => N_('Member'), + :environment => e, + :permissions => [ + 'edit_profile', + 'post_content', + 'manage_products' + ] + ) + # moderators for enterprises, communities etc + Role.create!( + :key => 'profile_moderator', + :name => N_('Moderator'), + :environment => e, + :permissions => [ + 'manage_memberships', + 'edit_profile_design', + 'manage_products', + 'manage_friends', + 'perform_task' + ] + ) + end + + def add_admin(user) + self.affiliate(user, Environment::Roles.admin(self.id)) + end + + def admins + self.members_by_role(Environment::Roles.admin(self.id)) + end + # returns the available features for a Environment, in the form of a # hash, with pairs in the form 'feature_name' => 'Feature name'. def self.available_features diff --git a/lib/tasks/populate.rake b/lib/tasks/populate.rake index b5955ac..83f4651 100644 --- a/lib/tasks/populate.rake +++ b/lib/tasks/populate.rake @@ -7,61 +7,7 @@ namespace :db do desc "Populate database with basic required data to run application" task :populate do Environment.create!(:name => 'Noosfero', :is_default => true) unless (Environment.default) - create_roles - new_permissions end end -def new_permissions - e = Environment.default - admin = Profile::Roles.admin(e.id) - admin.permissions += ['manage_friends', 'validate_enterprise', 'perform_task'] - admin.save - - moderator = Profile::Roles.moderator(e.id) - moderator.permissions += ['manage_friends', 'perform_task'] - moderator.save -end - -def create_roles - e = Environment.default - # Environment administrator! - Role.create!(:key => 'environment_administrator', :name => N_('Environment Administrator'), :environment => e, :permissions => [ - 'view_environment_admin_panel', - 'edit_environment_features', - 'edit_environment_design', - 'manage_environment_categories', - 'manage_environment_roles', - 'manage_environment_validators', - 'edit_profile', - 'destroy_profile', - 'manage_memberships', - 'post_content', - 'edit_profile_design', - 'manage_products', - 'edit_appearance', - ]) - Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :environment => e, :permissions => [ - 'edit_profile', - 'destroy_profile', - 'manage_memberships', - 'post_content', - 'edit_profile_design', - 'manage_products', - 'edit_appearance', - ]) - # members for enterprises, communities etc - Role.create!(:key => "profile_member", :name => N_('Member'), :environment => e, :permissions => [ - 'edit_profile', - 'post_content', - 'manage_products' - ]) - # moderators for enterprises, communities etc - Role.create!(:key => 'profile_moderator', :name => N_('Moderator'), :environment => e, :permissions => [ - 'manage_memberships', - 'edit_profile_design', - 'manage_products' - ]) -end - # vim: ft=ruby diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb index 1b8f837..8543b4a 100644 --- a/test/unit/environment_test.rb +++ b/test/unit/environment_test.rb @@ -326,6 +326,15 @@ class EnvironmentTest < Test::Unit::TestCase assert_kind_of Role, Environment::Roles.admin(Environment.default.id) end + should 'be able to add admins easily' do + env = Environment.create!(:name => 'test') + user = create_user('testuser').person + env.add_admin(user) + env.reload + + assert_includes env.admins, user + end + should 'have products through enterprises' do env = Environment.default e1 = Enterprise.create!(:name => 'test_ent1', :identifier => 'test_ent1') -- libgit2 0.21.2