From: Jan Provaznik <[email protected]>
---
src/app/controllers/admin/settings_controller.rb | 51 +++++++++++++++++++++-
src/config/routes.rb | 3 +-
2 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/src/app/controllers/admin/settings_controller.rb
b/src/app/controllers/admin/settings_controller.rb
index 705b19a..accf398 100644
--- a/src/app/controllers/admin/settings_controller.rb
+++ b/src/app/controllers/admin/settings_controller.rb
@@ -1,6 +1,55 @@
class Admin::SettingsController < ApplicationController
before_filter :require_user
- def index
+ # Settings MetaData Keys
+ SELF_SERVICE_DEFAULT_QUOTA = "self_service_default_quota"
+ KEYS = [SELF_SERVICE_DEFAULT_QUOTA]
+
+ def self_service
+ if !is_admin?
+ raise PermissionError.new('You have insufficient privileges to perform
action.')
+ return
+ end
+ @self_service_default_quota =
MetadataObject.lookup(SELF_SERVICE_DEFAULT_QUOTA)
+ end
+
+ def general_settings
+ if !is_admin?
+ raise PermissionError.new('You have insufficient privileges to perform
action.')
+ return
+ end
+ end
+
+ def update
+ KEYS.each do |key|
+ if params[key]
+ if key == SELF_SERVICE_DEFAULT_QUOTA
+ @self_service_default_quota = MetadataObject.lookup(key)
+ if !...@self_service_default_quota.update_attributes(params[key])
+ flash[:notice] = "Could not update the default quota"
+ render :self_service
+ return
+ end
+ elsif key == SELF_SERVICE_DEFAULT_POOL
+ if Pool.exists?(params[key])
+ MetadataObject.set(key, Pool.find(params[key]))
+ end
+ elsif key == SELF_SERVICE_DEFAULT_ROLE
+ if Role.exists?(params[key])
+ MetadataObject.set(key, Role.find(params[key]))
+ end
+ else
+ MetadataObject.set(key, params[key])
+ end
+ end
+ end
+ flash[:notice] = "Settings Updated!"
+ redirect_to :action => 'self_service'
+ end
+
+ private
+ def is_admin?
+ is_admin = @current_user.permissions.collect { |p| p.role }.find { |r|
r.name == "Administrator" }
+ return is_admin == nil ? false : true
end
end
diff --git a/src/config/routes.rb b/src/config/routes.rb
index 17d72d1..8aa67d0 100644
--- a/src/config/routes.rb
+++ b/src/config/routes.rb
@@ -44,10 +44,11 @@ ActionController::Routing::Routes.draw do |map|
map.connect '/set_layout', :controller => 'application', :action =>
'set_layout'
map.namespace 'admin' do |r|
- r.resources :hardware_profiles, :pool_families, :provider_accounts,
:realms, :roles, :settings
+ r.resources :hardware_profiles, :pool_families, :provider_accounts,
:realms, :roles
r.resources :providers, :collection => { :multi_destroy => :delete }
r.resources :users, :collection => { :multi_destroy => :delete }
r.resources :provider_accounts, :collection => { :multi_destroy => :delete
}
+ r.resources :settings, :collection => { :self_service => :get,
:general_settings => :get }
end
map.resources :pools
--
1.7.2.3
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel