projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '2411-check-copyright'
[arvados.git]
/
services
/
api
/
app
/
controllers
/
arvados
/
v1
/
groups_controller.rb
diff --git
a/services/api/app/controllers/arvados/v1/groups_controller.rb
b/services/api/app/controllers/arvados/v1/groups_controller.rb
index 3bf91c38e4d6533e6d30889a1c1ea7c829c8c492..75ef095b71ce249d18fb23075782bd32deaf6663 100644
(file)
--- a/
services/api/app/controllers/arvados/v1/groups_controller.rb
+++ b/
services/api/app/controllers/arvados/v1/groups_controller.rb
@@
-1,3
+1,7
@@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
class Arvados::V1::GroupsController < ApplicationController
def self._contents_requires_parameters
class Arvados::V1::GroupsController < ApplicationController
def self._contents_requires_parameters
@@
-6,6
+10,9
@@
class Arvados::V1::GroupsController < ApplicationController
uuid: {
type: 'string', required: false, default: nil
},
uuid: {
type: 'string', required: false, default: nil
},
+ recursive: {
+ type: 'boolean', required: false, description: 'Include contents from child groups recursively.'
+ },
})
params.delete(:select)
params
})
params.delete(:select)
params
@@
-91,6
+98,15
@@
class Arvados::V1::GroupsController < ApplicationController
end
end
end
end
+ filter_by_owner = {}
+ if @object
+ if params['recursive']
+ filter_by_owner[:owner_uuid] = [@object.uuid] + @object.descendant_project_uuids
+ else
+ filter_by_owner[:owner_uuid] = @object.uuid
+ end
+ end
+
seen_last_class = false
klasses.each do |klass|
@offset = 0 if seen_last_class # reset offset for the new next type being processed
seen_last_class = false
klasses.each do |klass|
@offset = 0 if seen_last_class # reset offset for the new next type being processed
@@
-118,12
+134,11
@@
class Arvados::V1::GroupsController < ApplicationController
klass.default_orders.join(", ")
@select = nil
klass.default_orders.join(", ")
@select = nil
- where_conds = {}
- where_conds[:owner_uuid] = @object.uuid if @object
+ where_conds = filter_by_owner
if klass == Collection
@select = klass.selectable_attributes - ["manifest_text"]
elsif klass == Group
if klass == Collection
@select = klass.selectable_attributes - ["manifest_text"]
elsif klass == Group
- where_conds
[:group_class] = "project"
+ where_conds
= where_conds.merge(group_class: "project")
end
@filters = request_filters.map do |col, op, val|
end
@filters = request_filters.map do |col, op, val|
@@
-136,8
+151,13
@@
class Arvados::V1::GroupsController < ApplicationController
end
end.compact
end
end.compact
- @objects = klass.readable_by(*@read_users).
- order(request_order).where(where_conds)
+ if klass == Collection and params[:include_trash]
+ @objects = klass.unscoped.readable_by(*@read_users).
+ order(request_order).where(where_conds)
+ else
+ @objects = klass.readable_by(*@read_users).
+ order(request_order).where(where_conds)
+ end
klass_limit = limit_all - all_objects.count
@limit = klass_limit
apply_where_limit_order_params klass
klass_limit = limit_all - all_objects.count
@limit = klass_limit
apply_where_limit_order_params klass