X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a3787ef83a0538097fb6f802f675be740a241ebc..4edb153ec9217aff3f833e9d8c645f9b525f41c6:/services/api/app/models/arvados_model.rb?ds=sidebyside diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb index 376df0cef3..fc463378f6 100644 --- a/services/api/app/models/arvados_model.rb +++ b/services/api/app/models/arvados_model.rb @@ -36,6 +36,12 @@ class ArvadosModel < ActiveRecord::Base end end + class AlreadyLockedError < StandardError + def http_status + 403 + end + end + class UnauthorizedError < StandardError def http_status 401 @@ -54,8 +60,14 @@ class ArvadosModel < ActiveRecord::Base textonly_operator = !operator.match(/[<=>]/) self.columns.select do |col| case col.type - when :string, :text + when :string true + when :text + if operator == 'ilike' + false + else + true + end when :datetime, :integer, :boolean !textonly_operator else @@ -104,7 +116,8 @@ class ArvadosModel < ActiveRecord::Base unless (owner_uuid == current_user.uuid or current_user.is_admin or (current_user.groups_i_can(:manage) & [uuid, owner_uuid]).any?) - if current_user.groups_i_can(:write).index(uuid) + if ((current_user.groups_i_can(:write) + [current_user.uuid]) & + [uuid, owner_uuid]).any? return [owner_uuid, current_user.uuid] else return [owner_uuid] @@ -438,6 +451,10 @@ class ArvadosModel < ActiveRecord::Base "_____-#{uuid_prefix}-_______________" end + def self.uuid_regex + %r/[a-z0-9]{5}-#{uuid_prefix}-[a-z0-9]{15}/ + end + def ensure_valid_uuids specials = [system_user_uuid] @@ -520,7 +537,6 @@ class ArvadosModel < ActiveRecord::Base log = Log.new(event_type: event_type).fill_object(self) yield log log.save! - connection.execute "NOTIFY logs, '#{log.id}'" log_start_state end