10028: when an "is_a" filter is used while fetching contents, do not search in all...
authorradhika <radhika@curoverse.com>
Wed, 2 Nov 2016 18:42:00 +0000 (14:42 -0400)
committerradhika <radhika@curoverse.com>
Wed, 2 Nov 2016 18:42:00 +0000 (14:42 -0400)
services/api/app/controllers/arvados/v1/groups_controller.rb

index 7a5713a03c59651a3bc0050674ea38171d8f9c34..d6adbf08516a7c2c199cb240017b5e64ede195be 100644 (file)
@@ -75,7 +75,20 @@ class Arvados::V1::GroupsController < ApplicationController
       end
     end
 
+    wanted_klasses = []
+    request_filters.each do |col,op,val|
+      if op == 'is_a'
+        (val.is_a?(Array) ? val : [val]).each do |type|
+          type = type.split('#')[-1]
+          type[0] = type[0].capitalize
+          wanted_klasses << type
+        end
+      end
+    end
+
     klasses.each do |klass|
+      next if wanted_klasses.any? and !wanted_klasses.include?(klass.to_s)
+
       # If the currently requested orders specifically match the
       # table_name for the current klass, apply that order.
       # Otherwise, order by recency.