Merge branch 'master' into 3193-manage-account
[arvados.git] / apps / workbench / app / controllers / projects_controller.rb
index 118a46755b5a89eb43dd7842978c5ff8b7d73b2e..f32f356d0ca88257adaa4ff5969cadcaef326659 100644 (file)
@@ -161,18 +161,29 @@ class ProjectsController < ApplicationController
       @errors = ["No user/group UUIDs specified to share with."]
       return render_error(status: 422)
     end
-    results = {"success" => [], "failure" => {}}
+    results = {"success" => [], "errors" => []}
     params[:uuids].each do |shared_uuid|
       begin
         Link.create(tail_uuid: shared_uuid, link_class: "permission",
                     name: "can_read", head_uuid: @object.uuid)
       rescue ArvadosApiClient::ApiError => error
-        results["failure"][shared_uuid] = error.api_response.andand[:errors]
+        error_list = error.api_response.andand[:errors]
+        if error_list.andand.any?
+          results["errors"] += error_list.map { |e| "#{shared_uuid}: #{e}" }
+        else
+          error_code = error.api_status || "Bad status"
+          results["errors"] << "#{shared_uuid}: #{error_code} response"
+        end
       else
         results["success"] << shared_uuid
       end
     end
-    status = (results["failure"].empty?) ? 200 : 422
+    if results["errors"].empty?
+      results.delete("errors")
+      status = 200
+    else
+      status = 422
+    end
     respond_to do |f|
       f.json { render(json: results, status: status) }
     end