Sha256: 787a5b31729a59843915d2c1f6bc7229951b0f6a5712753de7d94658ce615ec7
Contents?: true
Size: 1.2 KB
Versions: 29
Compression:
Stored size: 1.2 KB
Contents
# frozen_string_literal: true module Hyrax ## # Propagates visibility from a given Work to its FileSets class FileSetVisibilityPropagator ## # @!attribute [rw] source # @return [#visibility] attr_accessor :source ## # @param source [#visibility] the object to propagate visibility from def initialize(source:) self.source = source end ## # @return [void] # # @raise [RuntimeError] if visibility propagation fails def propagate source.file_sets.each do |file| file.visibility = source.visibility # visibility must come first, because it can clear an embargo/lease copy_visibility_modifier(source: source, file: file, modifier: :lease) copy_visibility_modifier(source: source, file: file, modifier: :embargo) file.save! end end private def copy_visibility_modifier(source:, file:, modifier:) source_modifier = source.public_send(modifier) return unless source_modifier file.public_send("build_#{modifier}") unless file.public_send(modifier) file.public_send(modifier).attributes = source_modifier.attributes.except('id') file.public_send(modifier).save end end end
Version data entries
29 entries across 29 versions & 1 rubygems