class ActionsController < ApplicationController
+ skip_filter :require_thread_api_token, only: [:report_issue_popup, :report_issue]
+ skip_filter :check_user_agreements, only: [:report_issue_popup, :report_issue]
+
@@exposed_actions = {}
def self.expose_action method, &block
@@exposed_actions[method] = true
def move_or_copy action
uuids_to_add = params["selection"]
+ uuids_to_add = [ uuids_to_add ] unless uuids_to_add.is_a? Array
uuids_to_add.
collect { |x| ArvadosBase::resource_class_for_uuid(x) }.
uniq.
each do |resource_class|
resource_class.filter([['uuid','in',uuids_to_add]]).each do |src|
- if resource_class == Collection
+ if resource_class == Collection and not Collection.attribute_info.include?(:name)
dst = Link.new(owner_uuid: @object.uuid,
tail_uuid: @object.uuid,
head_uuid: src.uuid,
dst.name = "Copy of unnamed #{dst.class_for_display.downcase}"
end
end
+ if resource_class == Collection
+ dst.manifest_text = Collection.select([:manifest_text]).where(uuid: src.uuid).first.manifest_text
+ end
when :move
dst = src
else
def arv_normalize mt, *opts
r = ""
- IO.popen(['arv-normalize'] + opts, 'w+b') do |io|
+ env = Hash[ENV].
+ merge({'ARVADOS_API_HOST' =>
+ arvados_api_client.arvados_v1_base.
+ sub(/\/arvados\/v1/, '').
+ sub(/^https?:\/\//, ''),
+ 'ARVADOS_API_TOKEN' => 'x',
+ 'ARVADOS_API_HOST_INSECURE' =>
+ Rails.configuration.arvados_insecure_https ? 'true' : 'false'
+ })
+ IO.popen([env, 'arv-normalize'] + opts, 'w+b') do |io|
io.write mt
io.close_write
while buf = io.read(2**16)
end
normalized = arv_normalize combined
- normalized_stripped = arv_normalize combined, '--strip'
-
- require 'digest/md5'
-
- d = Digest::MD5.new()
- d << normalized_stripped
- newuuid = "#{d.hexdigest}+#{normalized_stripped.length}"
-
- env = Hash[ENV].
- merge({
- 'ARVADOS_API_HOST' =>
- arvados_api_client.arvados_v1_base.
- sub(/\/arvados\/v1/, '').
- sub(/^https?:\/\//, ''),
- 'ARVADOS_API_TOKEN' => Thread.current[:arvados_api_token],
- 'ARVADOS_API_HOST_INSECURE' =>
- Rails.configuration.arvados_insecure_https ? 'true' : 'false'
- })
-
- IO.popen([env, 'arv-put', '--raw'], 'w+b') do |io|
- io.write normalized_stripped
- io.close_write
- while buf = io.read(2**16)
- end
- end
-
- newc = Collection.new({:uuid => newuuid, :manifest_text => normalized})
+ newc = Collection.new({:manifest_text => normalized})
newc.save!
chash.each do |k,v|
l = Link.new({
tail_uuid: k,
- head_uuid: newuuid,
+ head_uuid: newc.uuid,
link_class: "provenance",
name: "provided"
})
l.save!
end
- redirect_to controller: 'collections', action: :show, id: newc.uuid
+ if params["show_project"]
+ respond_to do |format|
+ format.js {render inline: "location.reload();" }
+ end
+ else
+ redirect_to controller: 'collections', action: :show, id: newc.uuid
+ end
+ end
+
+ def report_issue_popup
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ def report_issue
+ logger.warn "report_issue: #{params.inspect}"
+
+ respond_to do |format|
+ IssueReporter.send_report(current_user, params).deliver
+ format.js {render nothing: true}
+ end
end
end