On 12/22/2010 03:47 PM, [email protected] wrote:
> From: Jozef Zigmund<[email protected]>
>
> ---
>   src/app/controllers/admin/providers_controller.rb  |  113 
> ++++++++++++++++++++
>   src/app/views/admin/providers/_form.haml           |   14 +++
>   src/app/views/admin/providers/_list.haml           |   19 ++++
>   src/app/views/admin/providers/_properties.haml     |    4 +
>   src/app/views/admin/providers/edit.haml            |    7 ++
>   src/app/views/admin/providers/index.haml           |    3 +-
>   src/app/views/admin/providers/new.haml             |    3 +
>   src/app/views/admin/providers/show.haml            |    5 +
>   src/config/routes.rb                               |    3 +-
>   9 files changed, 169 insertions(+), 2 deletions(-)
>   create mode 100644 src/app/views/admin/providers/_form.haml
>   create mode 100644 src/app/views/admin/providers/_history.haml
>   create mode 100644 src/app/views/admin/providers/_hw_profiles.haml
>   create mode 100644 src/app/views/admin/providers/_list.haml
>   create mode 100644 src/app/views/admin/providers/_permissions.haml
>   create mode 100644 src/app/views/admin/providers/_properties.haml
>   create mode 100644 src/app/views/admin/providers/_provider_accounts.haml
>   create mode 100644 src/app/views/admin/providers/_realms.haml
>   create mode 100644 src/app/views/admin/providers/_services.haml
>   create mode 100644 src/app/views/admin/providers/edit.haml
>   create mode 100644 src/app/views/admin/providers/new.haml
>   create mode 100644 src/app/views/admin/providers/show.haml
>
> diff --git a/src/app/controllers/admin/providers_controller.rb 
> b/src/app/controllers/admin/providers_controller.rb
> index 80a7f28..1836061 100644
> --- a/src/app/controllers/admin/providers_controller.rb
> +++ b/src/app/controllers/admin/providers_controller.rb
> @@ -1,6 +1,119 @@
>   class Admin::ProvidersController<  ApplicationController
>     before_filter :require_user
> +  before_filter :load_providers, :only =>  [:index, :show]
> +
> +require 'ruby-debug'

I guess this ^^^ was for debuging only and you can delete it now, right?

>
>     def index
>     end
> +
> +  def new
> +    require_privilege(Privilege::PROVIDER_MODIFY)
> +    @provider = Provider.new
> +    kick_condor
> +  end
> +
> +  def edit
> +    @provider = Provider.find_by_id(params[:id])
> +    require_privilege(Privilege::PROVIDER_MODIFY, @provider)
> +  end
> +
> +  def show
> +    @provider = Provider.find(params[:id])
> +    @url_params = params.clone
> +    @tab_captions = ['Properties', 'HW Profiles', 'Realms', 'Provider 
> Accounts', 'Services','History','Permissions']
> +    @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 :partial =>  @details_tab and return
> +      end
> +      format.html { render :action =>  'show'}
> +    end
> +  end
> +
> +  def create
> +    require_privilege(Privilege::PROVIDER_MODIFY)
> +    @provider = Provider.new(params[:provider])
> +    if params[:test_connection]
> +      test_connection(@provider)
> +      render :action =>  'new'
> +    else
> +      @provider.set_cloud_type!
> +      if @provider.save&&  @provider.populate_hardware_profiles
> +        flash[:notice] = "Provider added."
> +        redirect_to admin_providers_path
> +      else
> +        flash[:notice] = "Cannot add the provider."
> +        render :action =>  "new"
> +      end
> +      kick_condor
> +    end
> +  end
> +
> +  def update
> +   require_privilege(Privilege::PROVIDER_MODIFY)
> +   @provider = Provider.find_by_id(params[:id])
> +   previous_cloud_type = @provider.cloud_type
> +   @provider.update_attributes(params[:provider])
> +   if params[:test_connection]
> +     test_connection(@provider)
> +     render :action =>  'edit'
> +   else
> +    @provider.set_cloud_type!
> +     if previous_cloud_type != @provider.cloud_type
> +      @provider.errors.add :url, "points to a different provider"
> +    end
> +
> +     if @provider.errors.empty? and @provider.save
> +       flash[:notice] = "Provider updated."
> +       redirect_to admin_providers_path
> +     else
> +       flash[:notice] = "Cannot update the provider."
> +       render :action =>  'edit'
> +     end
> +     kick_condor
> +   end
> +  end
> +
> +  def multi_destroy
> +    #debugger

This ^^^ is commented out, could you please just delete it?

> +    Provider.destroy(params[:provider_selected])
> +    redirect_to admin_providers_url
> +  end
> +
> +  def test_connection(provider)
> +    #...@provider = Provider.find_by_id(params[:id])
> +    #if @provider.nil?
> +    #  @provider = Provider.new(params[:provider])
> +    #else
> +    #  @provider.attributes = params[:provider]
> +    #end

Again, commented-out, please delete it.

> +    @provider.errors.clear
> +    if @provider.connect
> +      flash[:notice] = "Successfuly Connected to Provider"
> +    else
> +      flash[:notice] = "Failed to Connect to Provider"
> +      @provider.errors.add :url
> +    end
> +
> +    #if ['new', 'edit'].include? params[:a]
> +    #  action = params[:a]
> +    #end
> +
> +    #render :action =>  (action || 'new')

Same here ^^^

> +  end
> +
> +
> +  protected
> +
> +    def load_providers
> +      @header = [{ :name =>  "Provider name", :sort_attr =>  :name },
> +                 { :name =>  "Provider URL", :sort_attr =>  :name }
> +      ]
> +      @providers = Provider.list_for_user(@current_user, 
> Privilege::PROVIDER_VIEW)
> +      @url_params = params.clone
> +    end
>   end
> diff --git a/src/app/views/admin/providers/_form.haml 
> b/src/app/views/admin/providers/_form.haml
> new file mode 100644
> index 0000000..fe8c9ca
> --- /dev/null
> +++ b/src/app/views/admin/providers/_form.haml
> @@ -0,0 +1,a14 @@
> += form.error_message_on :name, 'Name'
> += form.error_message_on :url, 'URL'
> +%fieldset.clear
> +  = form.label :name,'Provider name :'
> +  = form.text_field :name, :title =>  'provider_name', :value =>  
> @provider.name, :class =>  "clear grid_4 alpha"
> +%fieldset.clear
> +  = form.label :url, 'Provider URL :'
> +  = form.text_field :url, :title =>  'provider_url', :value =>  
> @provider.url, :class =>  "grid_5"
> +  (
> +  %button.linkbutton.nospace{ :type =>  'submit', :value =>  
> t('.test_connection'), :name =>  'test_connection', :id =>  'test_connection' 
> }
> +    Test connection
> +  )
> +  %fieldset.clear
> +    = form.submit "Save",  :class =>  "submit formbutton"
> diff --git a/src/app/views/admin/providers/_history.haml 
> b/src/app/views/admin/providers/_history.haml
> new file mode 100644
> index 0000000..e69de29
> diff --git a/src/app/views/admin/providers/_hw_profiles.haml 
> b/src/app/views/admin/providers/_hw_profiles.haml
> new file mode 100644
> index 0000000..e69de29
> diff --git a/src/app/views/admin/providers/_list.haml 
> b/src/app/views/admin/providers/_list.haml
> new file mode 100644
> index 0000000..0735340
> --- /dev/null
> +++ b/src/app/views/admin/providers/_list.haml
> @@ -0,0 +1,19 @@
> +- form_tag do
> +  = link_to "Create", new_admin_provider_url, :class =>  "button"
> +  = restful_submit_tag "Delete", 'destroy', 
> multi_destroy_admin_providers_path, 'DELETE', :id =>  'delete_button'
> +
> +  %p
> +    Select:&nbsp;
> +    = link_to "All", @url_params.merge(:select =>  'all')
> +    %span>  ,&nbsp;
> +    = link_to "None", @url_params.merge(:select =>  'none')
> +
> +  %table#providers_table
> +    = sortable_table_header @header
> +    [email protected] do |provider|
> +      %tr
> +        %td
> +          - selected = @url_params[:select] == 'all'
> +          %input{:name =>  "provider_selected[]", :type =>  "checkbox", 
> :value =>  provider.id, :id =>  "provider_checkbox_#{provider.id}" }

The links "Select All, None" don't currently work. Please append the 
following code to the line above:

     :checked => selected

(put it at the end of the %input hash)



> +          = link_to provider.name, admin_provider_path(provider)
> +        %td= provider.url
> diff --git a/src/app/views/admin/providers/_permissions.haml 
> b/src/app/views/admin/providers/_permissions.haml
> new file mode 100644
> index 0000000..e69de29
> diff --git a/src/app/views/admin/providers/_properties.haml 
> b/src/app/views/admin/providers/_properties.haml
> new file mode 100644
> index 0000000..163401e
> --- /dev/null
> +++ b/src/app/views/admin/providers/_properties.haml
> @@ -0,0 +1,4 @@
> +%h3
> +  Properties for
> +  = @provider.name
> += link_to "Edit", edit_admin_provider_path(@provider), {:class =>  'button'}
> diff --git a/src/app/views/admin/providers/_provider_accounts.haml 
> b/src/app/views/admin/providers/_provider_accounts.haml
> new file mode 100644
> index 0000000..e69de29
> diff --git a/src/app/views/admin/providers/_realms.haml 
> b/src/app/views/admin/providers/_realms.haml
> new file mode 100644
> index 0000000..e69de29
> diff --git a/src/app/views/admin/providers/_services.haml 
> b/src/app/views/admin/providers/_services.haml
> new file mode 100644
> index 0000000..e69de29
> diff --git a/src/app/views/admin/providers/edit.haml 
> b/src/app/views/admin/providers/edit.haml
> new file mode 100644
> index 0000000..66864e9
> --- /dev/null
> +++ b/src/app/views/admin/providers/edit.haml
> @@ -0,0 +1,7 @@
> +%h3
> +  Editing
> +  = @provider.name
> +  Provider
> +
> +-form_for @provider, :url =>  admin_provider_path(@provider), :html =>  { 
> :method =>  :put } do |f|
> +  = render :partial =>  'form', :locals =>  { :form =>  f, :cancel_path =>  
> admin_providers_path }
> diff --git a/src/app/views/admin/providers/index.haml 
> b/src/app/views/admin/providers/index.haml
> index 589bac8..62ccbc6 100644
> --- a/src/app/views/admin/providers/index.haml
> +++ b/src/app/views/admin/providers/index.haml
> @@ -1 +1,2 @@
> -admin/providers/index.haml
> +- content_for :list do
> +  = render :partial =>  'list'
> diff --git a/src/app/views/admin/providers/new.haml 
> b/src/app/views/admin/providers/new.haml
> new file mode 100644
> index 0000000..516fdb3
> --- /dev/null
> +++ b/src/app/views/admin/providers/new.haml
> @@ -0,0 +1,3 @@
> +%h2 Create a new Provider
> +- form_for @provider, :url =>  admin_providers_path do |f|
> +  = render :partial =>  "form", :locals =>  { :form =>  f, :cancel_path =>  
> admin_providers_path }
> diff --git a/src/app/views/admin/providers/show.haml 
> b/src/app/views/admin/providers/show.haml
> new file mode 100644
> index 0000000..0c36221
> --- /dev/null
> +++ b/src/app/views/admin/providers/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 99af504..2a50133 100644
> --- a/src/config/routes.rb
> +++ b/src/config/routes.rb
> @@ -44,7 +44,8 @@ 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, :providers, 
> :provider_accounts, :realms, :roles, :settings
> +    r.resources :hardware_profiles, :pool_families, :provider_accounts, 
> :realms, :roles, :settings
> +    r.resources :providers, :collection =>  { :multi_destroy =>  :delete }
>       r.resources :users, :collection =>  { :multi_destroy =>  :delete }
>     end
>

ACK with a few nits:

There are some leftovers from debugging, please remove them. Also, the 
"Select all/none" code doesn't work.

I've marked everything inline. When you fix it, feel free to push the code.

Thanks,
Thomas
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to