+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
class SearchController < ApplicationController
+ skip_before_action :ensure_arvados_api_exists
+
def find_objects_for_index
- @objects = Group.contents(limit: @limit, offset: @offset, filters: @filters)
+ search_what = Group
+ if params[:project_uuid]
+ # Special case for "search all things in project":
+ @filters = @filters.select do |attr, operator, operand|
+ not (attr == 'owner_uuid' and operator == '=')
+ end
+ # Special case for project_uuid is a user uuid:
+ if ArvadosBase::resource_class_for_uuid(params[:project_uuid]) == User
+ search_what = User.find params[:project_uuid]
+ else
+ search_what = Group.find params[:project_uuid]
+ end
+ end
+ @objects = search_what.contents(limit: @limit,
+ offset: @offset,
+ recursive: true,
+ count: 'none',
+ last_object_class: params["last_object_class"],
+ filters: @filters)
super
end
+
+ def next_page_href with_params={}
+ super with_params.merge(last_object_class: @objects.last.class.to_s,
+ project_uuid: params[:project_uuid],
+ recursive: true,
+ count: 'none',
+ filters: @filters.to_json)
+ end
end