Sha256: 2f28f800106486d5f59e85a2c4b89032c785dc2822463b63f805e71274e67620

Contents?: true

Size: 936 Bytes

Versions: 22

Compression:

Stored size: 936 Bytes

Contents

# subclass built-in Hydra RightsDatastream and build in extra model-level validation
class ParanoidRightsDatastream < Hydra::Datastream::RightsMetadata
  use_terminology Hydra::Datastream::RightsMetadata

  VALIDATIONS = [
    {key: :edit_users, message: 'Depositor must have edit access', condition: lambda { |obj| !obj.edit_users.include?(obj.depositor) }},
    {key: :edit_groups, message: 'Public cannot have edit access', condition: lambda { |obj| obj.edit_groups.include?('public') }},
    {key: :edit_groups, message: 'Registered cannot have edit access', condition: lambda { |obj| obj.edit_groups.include?('registered') }}
  ]

  def validate(object)
    valid = true
    VALIDATIONS.each do |validation|
      if validation[:condition].call(object)
        object.errors[validation[:key]] ||= []
        object.errors[validation[:key]] << validation[:message]
        valid = false
      end
    end
    return valid
  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
sufia-5.0.0 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-5.0.0 app/models/datastreams/paranoid_rights_datastream.rb
sufia-5.0.0.rc1 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-5.0.0.rc1 app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.3.1 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.3.1 app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.2.0 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.2.0 app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.1.0 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.1.0 app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.0.1 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.0.1 app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.0.0 app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.0.0 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.0.0.rc2 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.0.0.rc2 app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.0.0.rc1 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.0.0.rc1 app/models/datastreams/paranoid_rights_datastream.rb
sufia-4.0.0.beta4 sufia-models/app/models/datastreams/paranoid_rights_datastream.rb
sufia-models-4.0.0.beta4 app/models/datastreams/paranoid_rights_datastream.rb