include CommonApiTemplate
include WhitelistUpdate
- belongs_to :container, foreign_key: :container_uuid, primary_key: :uuid
- belongs_to :requesting_container, {
- class_name: 'Container',
- foreign_key: :requesting_container_uuid,
- primary_key: :uuid,
- }
+ belongs_to :container,
+ foreign_key: 'container_uuid',
+ primary_key: 'uuid',
+ optional: true
+ belongs_to :requesting_container,
+ class_name: 'Container',
+ foreign_key: 'requesting_container_uuid',
+ primary_key: 'uuid',
+ optional: true
# Posgresql JSONB columns should NOT be declared as serialized, Rails 5
# already know how to properly treat them.
end
elsif state == Committed
# Behave as if the container is cancelled
- update_attributes!(state: Final)
+ update!(state: Final)
end
return true
end
end
end
end
- update_attributes!(state: Final)
+ update!(state: Final)
end
def update_collections(container:, collections: ['log', 'output'])
+
+ # Check if parent is frozen or trashed, in which case it isn't
+ # valid to create new collections in the project, so return
+ # without creating anything.
+ owner = Group.find_by_uuid(self.owner_uuid)
+ return if owner && !owner.admin_change_permitted
+
collections.each do |out_type|
pdh = container.send(out_type)
next if pdh.nil?
end
def set_priority_zero
- self.update_attributes!(priority: 0) if self.priority > 0 && self.state != Final
+ self.update!(priority: 0) if self.priority > 0 && self.state != Final
end
protected
def validate_scheduling_parameters
if self.state == Committed
- if scheduling_parameters.include? 'partitions' and
- (!scheduling_parameters['partitions'].is_a?(Array) ||
+ if scheduling_parameters.include?('partitions') and
+ !scheduling_parameters['partitions'].nil? and
+ (!scheduling_parameters['partitions'].is_a?(Array) ||
scheduling_parameters['partitions'].reject{|x| !x.is_a?(String)}.size !=
scheduling_parameters['partitions'].size)
errors.add :scheduling_parameters, "partitions must be an array of strings"