Project

General

Profile

Download (1.63 KB) Statistics
| Branch: | Tag: | Revision:
module Foreman::Controller::TaxonomyMultiple
extend ActiveSupport::Concern

included do
#TODO: make this before filter work, its not working as the same filter is defined in the hosts controller
#before_filter :find_multiple, :only => [:select_multiple_organization, :update_multiple_organization,
# :select_multiple_location, :update_multiple_location]
end

def select_multiple_organization
@hosts = find_multiple
end

def select_multiple_location
@hosts = find_multiple
end

def update_multiple_organization
@hosts = find_multiple
update_multiple_taxonomies(:organization)
end

def update_multiple_location
@hosts = find_multiple
update_multiple_taxonomies(:location)
end

private

def update_multiple_taxonomies type
# simple validations
if (params[type].nil?) or (id=params[type][:id]).blank?
error "No #{type.to_s.classify} selected!"
redirect_to(hosts_path) and return
end

taxonomy = Taxonomy.find_by_id(id)

if params[type][:optimistic_import] == 'yes'
@hosts.update_all("#{type}_id".to_sym => taxonomy.id)
#hosts location needs to be updated before import missing ids
taxonomy.import_missing_ids
else
if taxonomy.need_to_be_selected_ids.count == 0
@hosts.update_all("#{type}_id".to_sym => taxonomy.id)
else
error "Cannot update #{taxonomy.type} to #{taxonomy.name} because of mismatch in settings"
redirect_back_or_to hosts_path
return
end
end
notice "Updated hosts: Changed #{type.to_s.classify}"
redirect_back_or_to hosts_path
end

end
(7-7/8)