3637: refactor code for better maintenance.
[arvados.git] / apps / workbench / app / controllers / projects_controller.rb
index 43440fe2aa96506e35f305821007f71526fbc8dc..7b02206d22a8277408d52b1441c8949a9d4325a6 100644 (file)
@@ -77,29 +77,18 @@ class ProjectsController < ApplicationController
     end
   end
 
+  def copy_items
+    move_or_copy_project_items :copy
+  end
+
   def move_items
-    target_uuid = params['target']
-    uuids_to_add = session[:selected_move_items]
+    move_or_copy_project_items :move
+  end
 
-    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 |dst|
-        if resource_class == Collection and not Collection.attribute_info.include?(:name)
-          dst = Link.new(owner_uuid: target_uuid,
-                         tail_uuid: target_uuid,
-                         head_uuid: dst.uuid,
-                         link_class: 'name',
-                         name: target_uuid)
-        else
-          dst.owner_uuid = target_uuid
-          dst.tail_uuid = target_uuid if dst.class == Link
-        end
-        dst.save!
-      end
-    end
-    session[:selected_move_items] = nil
+  def move_or_copy_project_items action
+    uuids_to_add = session[:selected_move_or_copy_items]
+    move_or_copy_items action, uuids_to_add, params['target']
+    session[:selected_move_or_copy_items] = nil
     redirect_to @object
   end
 
@@ -239,7 +228,7 @@ class ProjectsController < ApplicationController
         objects_and_names << [object, @name_link_for[object.uuid]]
       elsif object.respond_to? :name
         objects_and_names << [object, object]
-      else
+      elsif not Collection.attribute_info.include?(:name)
         objects_and_names << [object,
                                Link.new(owner_uuid: @object.uuid,
                                         tail_uuid: @object.uuid,