X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c8060b94c485d5bf0e500d2321793cd56db4c856..9cdf7a2f51489403a488c3d06cf252a36b8e4198:/apps/workbench/app/controllers/actions_controller.rb?ds=sidebyside diff --git a/apps/workbench/app/controllers/actions_controller.rb b/apps/workbench/app/controllers/actions_controller.rb index 74e5831235..368d9a8e8c 100644 --- a/apps/workbench/app/controllers/actions_controller.rb +++ b/apps/workbench/app/controllers/actions_controller.rb @@ -1,8 +1,39 @@ class ActionsController < ApplicationController - skip_before_filter :find_object_by_uuid, only: :post + @@exposed_actions = {} + def self.expose_action method, &block + @@exposed_actions[method] = true + define_method method, block + end + + def model_class + ArvadosBase::resource_class_for_uuid(params[:uuid]) + end + + def post + params.keys.collect(&:to_sym).each do |param| + if @@exposed_actions[param] + return self.send(param) + end + end + redirect_to :back + end + + expose_action :copy_selections_into_folder do + already_named = Link. + filter([['tail_uuid','=',@object.uuid], + ['head_uuid','in',params["selection"]]]). + collect(&:head_uuid) + (params["selection"] - already_named).each do |s| + Link.create(tail_uuid: @object.uuid, + head_uuid: s, + link_class: 'name', + name: "#{s} added #{Time.now}") + end + redirect_to @object + end - def combine_selected_files_into_collection + expose_action :combine_selected_files_into_collection do lst = [] files = [] params["selection"].each do |s| @@ -55,7 +86,7 @@ class ActionsController < ApplicationController env = Hash[ENV]. merge({ 'ARVADOS_API_HOST' => - $arvados_api_client.arvados_v1_base. + arvados_api_client.arvados_v1_base. sub(/\/arvados\/v1/, ''). sub(/^https?:\/\//, ''), 'ARVADOS_API_TOKEN' => Thread.current[:arvados_api_token], @@ -76,9 +107,7 @@ class ActionsController < ApplicationController chash.each do |k,v| l = Link.new({ - tail_kind: "arvados#collection", tail_uuid: k, - head_kind: "arvados#collection", head_uuid: newuuid, link_class: "provenance", name: "provided" @@ -89,11 +118,4 @@ class ActionsController < ApplicationController redirect_to controller: 'collections', action: :show, id: newc.uuid end - def post - if params["combine_selected_files_into_collection"] - combine_selected_files_into_collection - else - redirect_to :back - end - end end