There is only one part, the subject should have read PATCH, not PATCH 1/8.
On 03/01/2011 05:17 PM, Richard Su wrote:
.../controllers/image_factory/builds_controller.rb | 7 +++++ .../image_factory/templates_controller.rb | 14 +++++++++- src/app/models/image.rb | 6 ++-- src/app/views/image_factory/templates/_builds.haml | 25 ++++++++++++++----- src/config/routes.rb | 2 +- 5 files changed, 41 insertions(+), 13 deletions(-)
diff --git a/src/app/controllers/image_factory/builds_controller.rb b/src/app/controllers/image_factory/builds_controller.rb index 9b83bd7..9f0579f 100644 --- a/src/app/controllers/image_factory/builds_controller.rb +++ b/src/app/controllers/image_factory/builds_controller.rb @@ -43,6 +43,13 @@ class ImageFactory::BuildsController< ApplicationController render :action => 'new' end end
def upload_or_delete
@tpl = Template.find(params[:template_id])
# FIXME: add logic to upload image
# or delete image depending on which button was used
redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
end
def edit # FIXME: is @tpl defined here? do we need check_permission here?
diff --git a/src/app/controllers/image_factory/templates_controller.rb b/src/app/controllers/image_factory/templates_controller.rb index c79cdce..eef4e61 100644 --- a/src/app/controllers/image_factory/templates_controller.rb +++ b/src/app/controllers/image_factory/templates_controller.rb @@ -196,20 +196,30 @@ class ImageFactory::TemplatesController< ApplicationController
def load_images(tpl) @images_header = [
{:name => '', :sort_attr => 'select'}, {:name => 'ARCH', :sort_attr => 'templates.architecture'}, {:name => 'PROVIDER', :sort_attr => 'provider'}, {:name => 'STATUS', :sort_attr => 'status'}, {:name => 'UPLOADED?', :sort_attr => 'images.uploaded'}, ]
@imaged_provider_types = {}
- @targets_not_built = {}
- @target_build_status = {}
- Image.available_targets.each do |id, target|
@targets_not_built[id] = target
- end
tpl.images.each do |img|
@target_build_status[img.target] = img.status
@targets_not_built.delete(img.target) img.provider_images.each do |pimg| @imaged_provider_types[pimg.provider_id] = img.target end end
- @targets_not_built = @targets_not_built.invert
- @providers_not_uploaded = Provider.find_all_by_provider_type(@imaged_provider_types.keys.uniq)
- @providers_not_uploaded = Provider.find_all_by_provider_type(@imaged_provider_types.values.uniq) @providers_not_uploaded.each do |provider| if @imaged_provider_types.has_key?(provider.id) @providers_not_uploaded.delete(provider)
diff --git a/src/app/models/image.rb b/src/app/models/image.rb index 7d71089..aee6e98 100644 --- a/src/app/models/image.rb +++ b/src/app/models/image.rb @@ -82,11 +82,11 @@ class Image< ActiveRecord::Base if Image.find_by_template_id_and_target(template.id, target) raise ImageExistsError, "An attempted build of this template for the target '#{target}' already exists" end
unless provider = Provider.find_by_target_with_account(target) raise "There is no provider for '#{target}' type with valid account." end
img = nil Image.transaction do img = Image.create!(
@@ -97,7 +97,7 @@ class Image< ActiveRecord::Base ) ProviderImage.create!( :image_id => img.id,
:provider_id => provider
:provider_id => provider.id ) end return img
diff --git a/src/app/views/image_factory/templates/_builds.haml b/src/app/views/image_factory/templates/_builds.haml index a9822f0..f1a98c8 100644 --- a/src/app/views/image_factory/templates/_builds.haml +++ b/src/app/views/image_factory/templates/_builds.haml @@ -3,11 +3,20 @@ Builds for = @tpl.platform_version , template "#{@tpl.name}"
-- form_tag :action => "" do +- form_tag(image_factory_builds_path, { :action => 'create', :method => :post }) do
- = hidden_field_tag :template_id, @tpl.id
- New Build for
- = select( "targets", "", options_for_select(@targets_not_built))
- = submit_tag "Go", :name => "build"
+- form_tag(upload_or_delete_image_factory_builds_path, { :action => "destroy", :method => :post }) do
= hidden_field_tag :template_id, @tpl.id /= restful_submit_tag "Cancel Job", :name => "job_details", :disabled => true, :class => "icon" /= restful_submit_tag "Show Job Details", :name => "job_details", :disabled => true, :class => "icon" /= restful_submit_tag "Show Job Log", :name => "job_log", :disabled => true, :class => "icon" /= restful_submit_tag "Clear Job History", :name => "job_history", :disabled => true, :class => "icon"
= submit_tag "Upload", :name => "upload"
= submit_tag "Delete", :name => "delete"
%table = sortable_table_header(@images_header)
@@ -19,13 +28,15 @@ Builds for - @images.each do |img| - img.provider_images.each do |pimg| %tr
%td= check_box_tag 'selected[]', pimg.provider_id, @url_params[:select] == 'all', :id => "selected_#{pimg.provider_id}" %td= img.template.architecture %td= pimg.provider.nil? ? '' : pimg.provider.name %td= img.status %td= pimg.uploaded? ? 'yes' : 'no'
- @providers_not_uploaded.each do |provider|
%tr
%td= @tpl.architecture
%td= provider.name
%td= img.status
%td no
\ No newline at end of file
- @providers_not_uploaded.each do |provider|
%tr
%td= check_box_tag 'selected[]', provider.id, @url_params[:select] == 'all', :id => "selected_#{provider.id}"
%td= @tpl.architecture
%td= provider.name
%td= @target_build_status[provider.provider_type]
%td no
\ No newline at end of file diff --git a/src/config/routes.rb b/src/config/routes.rb index ee65acb..48853da 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -45,7 +45,7 @@ ActionController::Routing::Routes.draw do |map| r.resources :assemblies r.resources :deployables, :collection => { :multi_destroy => :delete } r.resources :templates, :collection => {:collections => :get, :add_selected => :get, :metagroup_packages => :get, :remove_package => :get, :multi_destroy => :delete}
- r.resources :builds
r.resources :builds, :collection => { :upload_or_delete => :delete } end
map.namespace 'admin' do |r|