Merge branch '9277-trash-container-outputs' closes #9277
[arvados.git] / apps / workbench / app / controllers / container_requests_controller.rb
index 14685d6e3fd5edcad1da8c3d0cae86df105c42fe..b286a9456e14e3a2538df122c31e6071fab33558 100644 (file)
@@ -26,8 +26,8 @@ class ContainerRequestsController < ApplicationController
     input_obj = @updates[:mounts].andand[:"/var/lib/cwl/cwl.input.json"].andand[:content]
     if input_obj
       workflow = @object.mounts[:"/var/lib/cwl/workflow.json"][:content]
-      workflow[:inputs].each do |input_schema|
-        if not input_obj.include? input_schema[:id]
+      get_cwl_inputs(workflow).each do |input_schema|
+        if not input_obj.include? cwl_shortname(input_schema[:id])
           next
         end
         required, primary_type, param_id = cwl_input_info(input_schema)
@@ -59,4 +59,32 @@ class ContainerRequestsController < ApplicationController
     end
   end
 
+  def copy
+    src = @object
+
+    @object = ContainerRequest.new
+
+    @object.command = src.command
+    @object.container_image = src.container_image
+    @object.cwd = src.cwd
+    @object.description = src.description
+    @object.environment = src.environment
+    @object.mounts = src.mounts
+    @object.name = src.name
+    @object.output_path = src.output_path
+    @object.priority = 1
+    @object.properties[:template_uuid] = src.properties[:template_uuid]
+    @object.runtime_constraints = src.runtime_constraints
+    @object.scheduling_parameters = src.scheduling_parameters
+    @object.state = 'Uncommitted'
+    @object.use_existing = false
+
+    # set owner_uuid to that of source, provided it is a project and writable by current user
+    current_project = Group.find(src.owner_uuid) rescue nil
+    if (current_project && current_project.writable_by.andand.include?(current_user.uuid))
+      @object.owner_uuid = src.owner_uuid
+    end
+
+    super
+  end
 end