projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix comment.
[arvados.git]
/
services
/
api
/
lib
/
whitelist_update.rb
diff --git
a/services/api/lib/whitelist_update.rb
b/services/api/lib/whitelist_update.rb
index a81f9924f01aa182bf35efc2e48dd326b3b20942..f25d4238106697002a692c552e0b300b4d90067a 100644
(file)
--- a/
services/api/lib/whitelist_update.rb
+++ b/
services/api/lib/whitelist_update.rb
@@
-1,16
+1,31
@@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
module WhitelistUpdate
def check_update_whitelist permitted_fields
attribute_names.each do |field|
module WhitelistUpdate
def check_update_whitelist permitted_fields
attribute_names.each do |field|
- if
not permitted_fields.include? field.to_sym and self.send((field.to_s + "_changed?").to_sym
)
- errors.add field, "
illegal update of field
"
+ if
!permitted_fields.include?(field.to_sym) && really_changed(field
)
+ errors.add field, "
cannot be modified in this state (#{send(field+"_was").inspect}, #{send(field).inspect})
"
end
end
end
end
end
end
+ def really_changed(attr)
+ return false if !send(attr+"_changed?")
+ old = send(attr+"_was")
+ new = send(attr)
+ if (old.nil? || old == [] || old == {}) && (new.nil? || new == [] || new == {})
+ false
+ else
+ old != new
+ end
+ end
+
def validate_state_change
if self.state_changed?
unless state_transitions[self.state_was].andand.include? self.state
def validate_state_change
if self.state_changed?
unless state_transitions[self.state_was].andand.include? self.state
- errors.add :state, "
invalid state
change from #{self.state_was} to #{self.state}"
+ errors.add :state, "
cannot
change from #{self.state_was} to #{self.state}"
return false
end
end
return false
end
end