X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1923ceda3c8845526f1ddcdd6275513760e0cd84..60542dcecbffe14a43098d9e68ee6ae05868df1e:/services/api/app/controllers/arvados/v1/groups_controller.rb?ds=inline diff --git a/services/api/app/controllers/arvados/v1/groups_controller.rb b/services/api/app/controllers/arvados/v1/groups_controller.rb index e9bc006a36..c362cf32d7 100644 --- a/services/api/app/controllers/arvados/v1/groups_controller.rb +++ b/services/api/app/controllers/arvados/v1/groups_controller.rb @@ -46,7 +46,6 @@ class Arvados::V1::GroupsController < ApplicationController type: 'boolean', required: false, default: false, description: 'Include past collection versions.', } }) - params.delete(:select) params end @@ -93,7 +92,7 @@ class Arvados::V1::GroupsController < ApplicationController attrs_to_update = resource_attrs.reject { |k, v| [:kind, :etag, :href].index k }.merge({async_permissions_update: true}) - @object.update_attributes!(attrs_to_update) + @object.update!(attrs_to_update) @object.save! render_accepted else @@ -260,6 +259,20 @@ class Arvados::V1::GroupsController < ApplicationController end end + # Check that any fields in @select are valid for at least one class + if @select + all_attributes = [] + klasses.each do |klass| + all_attributes.concat klass.selectable_attributes + end + @select.each do |check| + if !all_attributes.include? check + raise ArgumentError.new "Invalid attribute '#{check}' in select" + end + end + end + any_selections = @select + included_by_uuid = {} seen_last_class = false @@ -291,14 +304,21 @@ class Arvados::V1::GroupsController < ApplicationController request_orders.andand.find { |r| r =~ /^#{klass.table_name}\./i || r !~ /\./ } || klass.default_orders.join(", ") - @select = nil + @select = select_for_klass any_selections, klass, false + where_conds = filter_by_owner - if klass == Collection + if klass == Collection && @select.nil? @select = klass.selectable_attributes - ["manifest_text", "unsigned_manifest_text"] elsif klass == Group where_conds = where_conds.merge(group_class: ["project","filter"]) end + # Make signed manifest_text not selectable because controller + # currently doesn't know to sign it. + if @select + @select = @select - ["manifest_text"] + end + @filters = request_filters.map do |col, op, val| if !col.index('.') [col, op, val]