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

Reply via email to