X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8d73164d5ca50e7af1b3752b4251eaf9f11a9fc8..fb72a4315bfcf64621d023a38d1544319aa3666c:/services/api/app/controllers/arvados/v1/groups_controller.rb?ds=sidebyside diff --git a/services/api/app/controllers/arvados/v1/groups_controller.rb b/services/api/app/controllers/arvados/v1/groups_controller.rb index 98989db079..46d3a75a3a 100644 --- a/services/api/app/controllers/arvados/v1/groups_controller.rb +++ b/services/api/app/controllers/arvados/v1/groups_controller.rb @@ -7,8 +7,8 @@ require "trashable" class Arvados::V1::GroupsController < ApplicationController include TrashableController - skip_before_filter :find_object_by_uuid, only: :shared - skip_before_filter :render_404_if_no_object, only: :shared + skip_before_action :find_object_by_uuid, only: :shared + skip_before_action :render_404_if_no_object, only: :shared def self._index_requires_parameters (super rescue {}). @@ -19,6 +19,15 @@ class Arvados::V1::GroupsController < ApplicationController }) end + def self._show_requires_parameters + (super rescue {}). + merge({ + include_trash: { + type: 'boolean', required: false, description: "Show group/project even if its is_trashed attribute is true." + }, + }) + end + def self._contents_requires_parameters params = _index_requires_parameters. merge({ @@ -28,11 +37,65 @@ class Arvados::V1::GroupsController < ApplicationController recursive: { type: 'boolean', required: false, description: 'Include contents from child groups recursively.' }, + include: { + type: 'string', required: false, description: 'Include objects referred to by listed field in "included" (only owner_uuid)' + } }) params.delete(:select) params end + def self._create_requires_parameters + super.merge( + { + async: { + required: false, + type: 'boolean', + location: 'query', + default: false, + description: 'defer permissions update' + } + } + ) + end + + def self._update_requires_parameters + super.merge( + { + async: { + required: false, + type: 'boolean', + location: 'query', + default: false, + description: 'defer permissions update' + } + } + ) + end + + def create + if params[:async] + @object = model_class.new(resource_attrs.merge({async_permissions_update: true})) + @object.save! + render_accepted + else + super + end + end + + def update + if params[:async] + 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.save! + render_accepted + else + super + end + end + def render_404_if_no_object if params[:action] == 'contents' if !params[:uuid] @@ -140,8 +203,8 @@ class Arvados::V1::GroupsController < ApplicationController table_names = Hash[klasses.collect { |k| [k, k.table_name] }] - disabled_methods = Rails.configuration.disable_api_methods - avail_klasses = table_names.select{|k, t| !disabled_methods.include?(t+'.index')} + disabled_methods = Rails.configuration.API.DisabledAPIs + avail_klasses = table_names.select{|k, t| !disabled_methods[t+'.index']} klasses = avail_klasses.keys request_filters.each do |col, op, val|