X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fe45b1b66c730f2546d78a7899375707c0816518..7409b2f682d562cd7ef7bcf558597ae2181ea7c1:/services/api/app/models/arvados_model.rb diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb index 84897d04ef..d1a0bc5794 100644 --- a/services/api/app/models/arvados_model.rb +++ b/services/api/app/models/arvados_model.rb @@ -46,6 +46,12 @@ class ArvadosModel < ActiveRecord::Base end end + class LockFailedError < StandardError + def http_status + 422 + end + end + class InvalidStateTransitionError < StandardError def http_status 422 @@ -98,6 +104,12 @@ class ArvadosModel < ActiveRecord::Base super(self.class.permit_attribute_params(raw_params), *args) end + # Reload "old attributes" for logging, too. + def reload(*args) + super + log_start_state + end + def self.create raw_params={}, *args super(permit_attribute_params(raw_params), *args) end @@ -184,6 +196,14 @@ class ArvadosModel < ActiveRecord::Base ["id", "uuid"] end + def self.limit_index_columns_read + # This method returns a list of column names. + # If an index request reads that column from the database, + # APIs that return lists will only fetch objects until reaching + # max_index_database_read bytes of data from those columns. + [] + end + # If current user can manage the object, return an array of uuids of # users and groups that have permission to write the object. The # first two elements are always [self.owner_uuid, current user's @@ -230,7 +250,8 @@ class ArvadosModel < ActiveRecord::Base # Check if any of the users are admin. If so, we're done. if users_list.select { |u| u.is_admin }.any? - return self + # Return existing relation with no new filters. + return where({}) end # Collect the UUIDs of the authorized users.