--- .../controllers/admin/pool_families_controller.rb | 16 +++++++++++++++- src/app/models/pool_family.rb | 8 ++++++++ src/config/locales/en.yml | 6 +++++- src/config/navigation.rb | 2 +- src/features/pool_family.feature | 8 ++++++++ 5 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/src/app/controllers/admin/pool_families_controller.rb b/src/app/controllers/admin/pool_families_controller.rb index 42bfb04..29cbf59 100644 --- a/src/app/controllers/admin/pool_families_controller.rb +++ b/src/app/controllers/admin/pool_families_controller.rb @@ -53,7 +53,21 @@ class Admin::PoolFamiliesController < ApplicationController end
def multi_destroy - PoolFamily.destroy(params[:pool_family_selected]) + deleted = [] + not_deleted = [] + PoolFamily.find(params[:pool_family_selected]).each do |pool_family| + if pool_family.destroy + deleted << pool_family.name + else + not_deleted << pool_family.name + end + end + if deleted.size > 0 + flash[:notice] = t 'pool_families.index.deleted', :list => deleted.join(', ') + end + if not_deleted.size > 0 + flash[:error] = t 'pool_families.index.not_deleted', :list => not_deleted.join(', ') + end redirect_to admin_pool_families_path end
diff --git a/src/app/models/pool_family.rb b/src/app/models/pool_family.rb index 8d5c951..8a05ba7 100644 --- a/src/app/models/pool_family.rb +++ b/src/app/models/pool_family.rb @@ -41,6 +41,9 @@ class PoolFamily < ActiveRecord::Base
validates_presence_of :name validates_uniqueness_of :name + + before_destroy :destroyable? + def self.default MetadataObject.lookup(DEFAULT_POOL_FAMILY_KEY) end @@ -48,4 +51,9 @@ class PoolFamily < ActiveRecord::Base def set_as_default MetadataObject.set(DEFAULT_POOL_FAMILY_KEY, self) end + + def destroyable? + # A PoolFamily is destroyable unless it is the default PoolFamily + self != PoolFamily.default + end end diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 51555a4..7a448de 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -82,7 +82,11 @@ en: provider_accounts_item: Provider Account cloud_engine_hardware_profiles: Hardware Profiles cloud_engine_realms: Realms - pool_families: Pool Families + pool_families: + pool_families: Pool Families + index: + deleted: "Deleted the following Pool Families: %{list}." + not_deleted: "Could not delete the following Pool Families: %{list}." setting: Settings name: Name admin: diff --git a/src/config/navigation.rb b/src/config/navigation.rb index 83f04dc..bcf3b3b 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -18,7 +18,7 @@ SimpleNavigation::Configuration.run do |navigation| second_level.item :provider_accounts, t(:provider_accounts_item), admin_provider_accounts_path second_level.item :hardware_profiles, t(:cloud_engine_hardware_profiles), admin_hardware_profiles_path second_level.item :realms, t(:cloud_engine_realms), admin_realms_path - second_level.item :pool_families, t(:pool_families), admin_pool_families_path + second_level.item :pool_families, t('pool_families.pool_families'), admin_pool_families_path second_level.item :settings, t(:setting), admin_settings_path end first_level.item :dashboard, t(:dashboard), '#' diff --git a/src/features/pool_family.feature b/src/features/pool_family.feature index 441e927..2c0d753 100644 --- a/src/features/pool_family.feature +++ b/src/features/pool_family.feature @@ -44,3 +44,11 @@ Feature: Pool Families And I check "poolfamily1" pool family And I press "Delete" Then there should not exist a pool family named "poolfamily1" + + Scenario: Disallow deletion of default pool family + Given I am on the admin pool families page + Then I should see "default" + When I check "default" pool family + And I press "Delete" + Then I should see "Could not delete the following Pool Families: default." + And I should see "default" \ No newline at end of file
On 03/24/2011 04:42 PM, Matt Wagner wrote:
.../controllers/admin/pool_families_controller.rb | 16 +++++++++++++++- src/app/models/pool_family.rb | 8 ++++++++ src/config/locales/en.yml | 6 +++++- src/config/navigation.rb | 2 +- src/features/pool_family.feature | 8 ++++++++ 5 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/src/app/controllers/admin/pool_families_controller.rb b/src/app/controllers/admin/pool_families_controller.rb index 42bfb04..29cbf59 100644 --- a/src/app/controllers/admin/pool_families_controller.rb +++ b/src/app/controllers/admin/pool_families_controller.rb @@ -53,7 +53,21 @@ class Admin::PoolFamiliesController< ApplicationController end
def multi_destroy
- PoolFamily.destroy(params[:pool_family_selected])
- deleted = []
- not_deleted = []
- PoolFamily.find(params[:pool_family_selected]).each do |pool_family|
if pool_family.destroy
deleted<< pool_family.name
else
not_deleted<< pool_family.name
end
- end
- if deleted.size> 0
flash[:notice] = t 'pool_families.index.deleted', :list => deleted.join(', ')
- end
- if not_deleted.size> 0
flash[:error] = t 'pool_families.index.not_deleted', :list => not_deleted.join(', ')
- end redirect_to admin_pool_families_path end
diff --git a/src/app/models/pool_family.rb b/src/app/models/pool_family.rb index 8d5c951..8a05ba7 100644 --- a/src/app/models/pool_family.rb +++ b/src/app/models/pool_family.rb @@ -41,6 +41,9 @@ class PoolFamily< ActiveRecord::Base
validates_presence_of :name validates_uniqueness_of :name
- before_destroy :destroyable?
- def self.default MetadataObject.lookup(DEFAULT_POOL_FAMILY_KEY) end
@@ -48,4 +51,9 @@ class PoolFamily< ActiveRecord::Base def set_as_default MetadataObject.set(DEFAULT_POOL_FAMILY_KEY, self) end
- def destroyable?
- # A PoolFamily is destroyable unless it is the default PoolFamily
- self != PoolFamily.default
- end end
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 51555a4..7a448de 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -82,7 +82,11 @@ en: provider_accounts_item: Provider Account cloud_engine_hardware_profiles: Hardware Profiles cloud_engine_realms: Realms
- pool_families: Pool Families
- pool_families:
- pool_families: Pool Families
- index:
deleted: "Deleted the following Pool Families: %{list}."
setting: Settings name: Name admin:not_deleted: "Could not delete the following Pool Families: %{list}."
diff --git a/src/config/navigation.rb b/src/config/navigation.rb index 83f04dc..bcf3b3b 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -18,7 +18,7 @@ SimpleNavigation::Configuration.run do |navigation| second_level.item :provider_accounts, t(:provider_accounts_item), admin_provider_accounts_path second_level.item :hardware_profiles, t(:cloud_engine_hardware_profiles), admin_hardware_profiles_path second_level.item :realms, t(:cloud_engine_realms), admin_realms_path
second_level.item :pool_families, t(:pool_families), admin_pool_families_path
second_level.item :pool_families, t('pool_families.pool_families'), admin_pool_families_path second_level.item :settings, t(:setting), admin_settings_path end first_level.item :dashboard, t(:dashboard), '#'
diff --git a/src/features/pool_family.feature b/src/features/pool_family.feature index 441e927..2c0d753 100644 --- a/src/features/pool_family.feature +++ b/src/features/pool_family.feature @@ -44,3 +44,11 @@ Feature: Pool Families And I check "poolfamily1" pool family And I press "Delete" Then there should not exist a pool family named "poolfamily1"
- Scenario: Disallow deletion of default pool family
- Given I am on the admin pool families page
- Then I should see "default"
- When I check "default" pool family
- And I press "Delete"
- Then I should see "Could not delete the following Pool Families: default."
- And I should see "default"
\ No newline at end of file
Works fine, so ACK.
-- Jozef Zigmund
aeolus-devel@lists.fedorahosted.org