owners = @objects.map(&:owner_uuid).to_a
- @extra_include = []
- @extra_include += Group.readable_by(*@read_users).where(uuid: owners).to_a
- @extra_include += User.readable_by(*@read_users).where(uuid: owners).to_a
+ if params["include"] == "owner_uuid"
+ @extra_included = []
+ @extra_included += Group.readable_by(*@read_users).where(uuid: owners).to_a
+ @extra_included += User.readable_by(*@read_users).where(uuid: owners).to_a
+ end
index
end
def self._shared_requires_parameters
- self._index_requires_parameters
+ rp = self._index_requires_parameters
+ rp[:include] = { type: 'string', required: false }
+ rp
end
protected
head_uuid: groups(:project_owned_by_foo).uuid)
end
- get :shared, {filters: [["group_class", "=", "project"]]}
+ get :shared, {:filters => [["group_class", "=", "project"]], :include => "owner_uuid"}
assert_equal 1, json_response['items'].length
assert_equal json_response['items'][0]["uuid"], groups(:project_owned_by_foo).uuid
- assert_equal 1, json_response['include'].length
- assert_equal json_response['include'][0]["uuid"], users(:user_foo_in_sharing_group).uuid
+ assert_equal 1, json_response['included'].length
+ assert_equal json_response['included'][0]["uuid"], users(:user_foo_in_sharing_group).uuid
end
test 'get shared, owned by unreadable project' do
head_uuid: groups(:project_owned_by_foo).uuid)
end
- get :shared, {filters: [["group_class", "=", "project"]]}
+ get :shared, {:filters => [["group_class", "=", "project"]], :include => "owner_uuid"}
assert_equal 1, json_response['items'].length
assert_equal json_response['items'][0]["uuid"], groups(:project_owned_by_foo).uuid
- assert_equal 0, json_response['include'].length
+ assert_equal 0, json_response['included'].length
end
test 'get shared, owned by non-project' do
Group.find_by_uuid(groups(:project_owned_by_foo).uuid).update!(owner_uuid: groups(:group_for_sharing_tests).uuid)
end
- get :shared, {filters: [["group_class", "=", "project"]]}
+ get :shared, {:filters => [["group_class", "=", "project"]], :include => "owner_uuid"}
assert_equal 1, json_response['items'].length
assert_equal json_response['items'][0]["uuid"], groups(:project_owned_by_foo).uuid
- assert_equal 1, json_response['include'].length
- assert_equal json_response['include'][0]["uuid"], groups(:group_for_sharing_tests).uuid
+ assert_equal 1, json_response['included'].length
+ assert_equal json_response['included'][0]["uuid"], groups(:group_for_sharing_tests).uuid
end
end
page = []
while True:
resp = self.api.groups().shared(filters=[['group_class', '=', 'project']]+page,
- order="uuid",
- limit=10000,
- count="none").execute()
+ order="uuid",
+ limit=10000,
+ count="none",
+ include="owner_uuid").execute()
if not resp["items"]:
break
page = [["uuid", ">", resp["items"][len(resp["items"])-1]["uuid"]]]
for r in resp["items"]:
objects[r["uuid"]] = r
roots.append(r["uuid"])
- for r in resp["include"]:
+ for r in resp["included"]:
objects[r["uuid"]] = r
root_owners.add(r["uuid"])
else: