ACK
On 01/12/2011 02:01 PM, [email protected] wrote: > From: Jozef Zigmund<[email protected]> > > --- > .../controllers/admin/pool_families_controller.rb | 66 > ++++++++++++++++++++ > src/app/controllers/admin/providers_controller.rb | 2 +- > src/app/models/pool_family.rb | 3 +- > src/app/views/admin/pool_families/_form.haml | 6 ++ > src/app/views/admin/pool_families/_list.haml | 22 +++++++ > src/app/views/admin/pool_families/_properties.haml | 4 + > src/app/views/admin/pool_families/edit.haml | 7 ++ > src/app/views/admin/pool_families/index.haml | 3 +- > src/app/views/admin/pool_families/new.haml | 3 + > src/app/views/admin/pool_families/show.haml | 5 ++ > src/config/routes.rb | 3 +- > src/features/pool_family.feature | 47 ++++++++++++++ > src/features/step_definitions/pool_family_steps.rb | 27 ++++++++ > 13 files changed, 194 insertions(+), 4 deletions(-) > create mode 100644 src/app/views/admin/pool_families/_form.haml > create mode 100644 src/app/views/admin/pool_families/_history.haml > create mode 100644 src/app/views/admin/pool_families/_list.haml > create mode 100644 src/app/views/admin/pool_families/_permissions.haml > create mode 100644 src/app/views/admin/pool_families/_pools.haml > create mode 100644 src/app/views/admin/pool_families/_properties.haml > create mode 100644 src/app/views/admin/pool_families/_provider_accounts.haml > create mode 100644 src/app/views/admin/pool_families/edit.haml > create mode 100644 src/app/views/admin/pool_families/new.haml > create mode 100644 src/app/views/admin/pool_families/show.haml > create mode 100644 src/features/pool_family.feature > create mode 100644 src/features/step_definitions/pool_family_steps.rb > > diff --git a/src/app/controllers/admin/pool_families_controller.rb > b/src/app/controllers/admin/pool_families_controller.rb > index a1a3a9a..9fe2c25 100644 > --- a/src/app/controllers/admin/pool_families_controller.rb > +++ b/src/app/controllers/admin/pool_families_controller.rb > @@ -1,6 +1,72 @@ > class Admin::PoolFamiliesController< ApplicationController > before_filter :require_user > + before_filter :load_pool_families, :only =>[:index,:show] > > def index > end > + > + def new > + @pool_family = PoolFamily.new > + end > + > + def create > + @pool_family = PoolFamily.new(params[:pool_family]) > + unless @pool_family.save > + flash.now[:warning] = "Pool family's creation failed." > + render :new and return > + else > + flash[:notice] = "Pool family was added." > + redirect_to admin_pool_families_path > + end > + end > + > + def edit > + @pool_family = PoolFamily.find(params[:id]) > + end > + > + def update > + @pool_family = PoolFamily.find(params[:id]) > + unless @pool_family.update_attributes(params[:pool_family]) > + flash[:error] = "Pool Family wasn't updated!" > + render :action => 'edit' and return > + else > + flash[:notice] = "Pool Family was updated!" > + redirect_to admin_pool_families_path > + end > + end > + > + def show > + @pool_family = PoolFamily.find(params[:id]) > + @url_params = params.clone > + @tab_captions = ['Properties', 'History', 'Permissions', 'Provider > Accounts', 'Pools'] > + @details_tab = params[:details_tab].blank? ? 'properties' : > params[:details_tab] > + respond_to do |format| > + format.js do > + if @url_params.delete :details_pane > + render :partial => 'layouts/details_pane' and return > + end > + render :parial => @details_tab and return > + end > + format.html { render :show } > + end > + end > + > + def multi_destroy > + PoolFamily.destroy(params[:pool_family_selected]) > + redirect_to admin_pool_families_path > + end > + > + protected > + > + def load_pool_families > + @header = [{ :name => "Name", :sort_attr => :name}, > + { :name => "Quota limit", :sort_attr => :name}, > + { :name => "Quota currently in use", :sort_attr => :name}, > + ] > + @pool_families = PoolFamily.paginate(:all, > + :page => params[:page] || 1, > + :order => ( params[:order_field] > || 'name' ) + ' ' + (params[:order_dir] || 'asc') > + ) > + @url_params = params.clone > + end > end > diff --git a/src/app/controllers/admin/providers_controller.rb > b/src/app/controllers/admin/providers_controller.rb > index 5f2f437..aac2c1d 100644 > --- a/src/app/controllers/admin/providers_controller.rb > +++ b/src/app/controllers/admin/providers_controller.rb > @@ -28,7 +28,7 @@ class Admin::ProvidersController< ApplicationController > end > render :partial => @details_tab and return > end > - format.html { render :action => 'show'} > + format.html { render :action => 'show' } > end > end > > diff --git a/src/app/models/pool_family.rb b/src/app/models/pool_family.rb > index c070ee8..bc96fee 100644 > --- a/src/app/models/pool_family.rb > +++ b/src/app/models/pool_family.rb > @@ -20,13 +20,14 @@ > # Likewise, all the methods added will be available for all controllers. > > class PoolFamily< ActiveRecord::Base > - > + include PermissionedObject > DEFAULT_POOL_FAMILY_KEY = "default_pool_family" > > has_many :pools, :dependent => :destroy > has_and_belongs_to_many :cloud_accounts > > validates_presence_of :name > + validates_uniqueness_of :name > def self.default > MetadataObject.lookup(DEFAULT_POOL_FAMILY_KEY) > end > diff --git a/src/app/views/admin/pool_families/_form.haml > b/src/app/views/admin/pool_families/_form.haml > new file mode 100644 > index 0000000..362b67c > --- /dev/null > +++ b/src/app/views/admin/pool_families/_form.haml > @@ -0,0 +1,6 @@ > += form.error_message_on :name, 'Name' > +%fieldset.clear > + = form.label :name,'Pool Family Name :' > + = form.text_field :name, :title => 'pool_family_name', :value => > @pool_family.name, :class => "clear grid_4 alpha" > +%fieldset.clear > + = form.submit "Save", :class => "submit formbutton" > diff --git a/src/app/views/admin/pool_families/_history.haml > b/src/app/views/admin/pool_families/_history.haml > new file mode 100644 > index 0000000..e69de29 > diff --git a/src/app/views/admin/pool_families/_list.haml > b/src/app/views/admin/pool_families/_list.haml > new file mode 100644 > index 0000000..a824676 > --- /dev/null > +++ b/src/app/views/admin/pool_families/_list.haml > @@ -0,0 +1,22 @@ > +- form_tag do > + = link_to "Create", new_admin_pool_family_path, :class => "button" > + = restful_submit_tag "Delete", 'destroy', > multi_destroy_admin_pool_families_path, 'DELETE', :id => 'delete_button' > + > + %p > + Select: > + = link_to "All", @url_params.merge(:select => 'all') > + %span> , > + = link_to "None", @url_params.merge(:select => 'none') > + > + %table#pool_famlies_table > + = sortable_table_header @header > + - unless @pool_families.blank? > + - @pool_families.each do |pool_family| > + %tr > + %td > + - selected = @url_params[:select] == 'all' > + %input{:name => "pool_family_selected[]", :type => "checkbox", > :value => pool_family.id, :id => "pool_family_checkbox_#{pool_family.id}", > :checked => selected } > + = link_to pool_family.name, admin_pool_family_path(pool_family) > + %td > + %td > + xx % > diff --git a/src/app/views/admin/pool_families/_permissions.haml > b/src/app/views/admin/pool_families/_permissions.haml > new file mode 100644 > index 0000000..e69de29 > diff --git a/src/app/views/admin/pool_families/_pools.haml > b/src/app/views/admin/pool_families/_pools.haml > new file mode 100644 > index 0000000..e69de29 > diff --git a/src/app/views/admin/pool_families/_properties.haml > b/src/app/views/admin/pool_families/_properties.haml > new file mode 100644 > index 0000000..02d197e > --- /dev/null > +++ b/src/app/views/admin/pool_families/_properties.haml > @@ -0,0 +1,4 @@ > +%h3 > + Properties for > + = @pool_family.name > += link_to "Edit", edit_admin_pool_family_path(@pool_family), {:class => > 'button'} > diff --git a/src/app/views/admin/pool_families/_provider_accounts.haml > b/src/app/views/admin/pool_families/_provider_accounts.haml > new file mode 100644 > index 0000000..e69de29 > diff --git a/src/app/views/admin/pool_families/edit.haml > b/src/app/views/admin/pool_families/edit.haml > new file mode 100644 > index 0000000..1c09438 > --- /dev/null > +++ b/src/app/views/admin/pool_families/edit.haml > @@ -0,0 +1,7 @@ > +%h3 > + Editing > + = @pool_family.name > + Pool Family > + > +-form_for @pool_family, :url => admin_pool_family_path(@pool_family), :html > => { :method => :put } do |f| > + = render :partial => 'form', :locals => { :form => f, :cancel_path => > admin_providers_path } > diff --git a/src/app/views/admin/pool_families/index.haml > b/src/app/views/admin/pool_families/index.haml > index e50f43b..62ccbc6 100644 > --- a/src/app/views/admin/pool_families/index.haml > +++ b/src/app/views/admin/pool_families/index.haml > @@ -1 +1,2 @@ > -admin/pool_families/index.haml > +- content_for :list do > + = render :partial => 'list' > diff --git a/src/app/views/admin/pool_families/new.haml > b/src/app/views/admin/pool_families/new.haml > new file mode 100644 > index 0000000..7dbac4c > --- /dev/null > +++ b/src/app/views/admin/pool_families/new.haml > @@ -0,0 +1,3 @@ > +%h2 Create a new Pool family > +- form_for @pool_family, :url => admin_pool_families_path do |f| > + = render :partial => "form", :locals => { :form => f, :cancel_path => > admin_pool_families_path } > diff --git a/src/app/views/admin/pool_families/show.haml > b/src/app/views/admin/pool_families/show.haml > new file mode 100644 > index 0000000..0c36221 > --- /dev/null > +++ b/src/app/views/admin/pool_families/show.haml > @@ -0,0 +1,5 @@ > +- content_for 'list' do > + = render :partial => 'list' > + > +- content_for 'details' do > + = render :partial => 'layouts/details_pane' > diff --git a/src/config/routes.rb b/src/config/routes.rb > index 6d9b5cf..b3049f7 100644 > --- a/src/config/routes.rb > +++ b/src/config/routes.rb > @@ -47,12 +47,13 @@ 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, :realms > + r.resources :hardware_profiles, :realms > r.resources :providers, :collection => { :multi_destroy => :delete } > r.resources :users, :collection => { :multi_destroy => :delete } > r.resources :provider_accounts, :collection => { :multi_destroy => > :delete } > r.resources :roles, :collection => { :multi_destroy => :delete } > r.resources :settings, :collection => { :self_service => :get, > :general_settings => :get } > + r.resources :pool_families, :collection => { :multi_destroy => :delete > } > end > > map.resources :pools > diff --git a/src/features/pool_family.feature > b/src/features/pool_family.feature > new file mode 100644 > index 0000000..64c5635 > --- /dev/null > +++ b/src/features/pool_family.feature > @@ -0,0 +1,47 @@ > +Feature: Pool Families > + In order to manage my cloud infrastructure > + As a user > + I want to manage pool families > + > + Background: > + Given I am an authorised user > + And I am logged in > + And I am using new UI > + > + Scenario: List pool families > + Given I am on the homepage > + And there are these pool families: > + | name | > + | pool_family1 | > + | pool_family2 | > + | pool_family3 | > + When I go to the admin pool families page > + Then I should see the following: > + | pool_family1 | > + | pool_family2 | > + | pool_family3 | > + > + Scenario: Show pool family details > + Given there is a pool family named "testpoolfamily" > + And I am on the admin pool families page > + When I follow "testpoolfamily" > + Then I should see "Name" > + > + Scenario: Create a new Pool family > + Given I am on the admin pool families page > + And there is not a pool family named "testpoolfamily" > + When I follow "Create" > + Then I should be on the new admin pool family page > + When I fill in "pool_family[name]" with "testpoolfamily" > + And I press "Save" > + Then I should be on the admin pool families page > + And I should see "Pool family was added." > + And I should have a pool family named "testpoolfamily" > + > + Scenario: Delete a pool family > + Given I am on the homepage > + And there is a pool family named "poolfamily1" > + When I go to the admin pool families page > + And I check "poolfamily1" pool family > + And I press "Delete" > + Then there should not exist a pool family named "poolfamily1" > diff --git a/src/features/step_definitions/pool_family_steps.rb > b/src/features/step_definitions/pool_family_steps.rb > new file mode 100644 > index 0000000..9585a21 > --- /dev/null > +++ b/src/features/step_definitions/pool_family_steps.rb > @@ -0,0 +1,27 @@ > +Given /^there are these pool families:$/ do |table| > + table.hashes.each do |hash| > + Factory(:pool_family, :name => hash['name']) > + end > +end > + > +Given /^there is a pool family named "([^\"]*)"$/ do |name| > + @provider = Factory(:pool_family, :name => name) > +end > + > +Given /^there is not a pool family named "([^"]*)"$/ do |name| > + pool_family = PoolFamily.find_by_name(name) > + if pool_family then pool_family.destroy end > +end > + > +Then /^I should have a pool family named "([^\"]*)"$/ do |name| > + PoolFamily.find_by_name(name).should_not be_nil > +end > + > +When /^(?:|I )check "([^"]*)" pool family$/ do |name| > + poolfamily = PoolFamily.find_by_name(name) > + check("pool_family_checkbox_#{poolfamily.id}") > +end > + > +Then /^there should not exist a pool family named "([^\"]*)"$/ do |name| > + PoolFamily.find_by_name(name).should be_nil > +end _______________________________________________ deltacloud-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/deltacloud-devel
