Sha256: b628d2cbdc71bb420726069d9ec68d5bf15bcc48634aa86a417b038a2d792846
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true # A job to apply work permissions to all contained files set # class InheritPermissionsJob < Hyrax::ApplicationJob # Perform the copy from the work to the contained filesets # # @param work containing access level and filesets # @param use_valkyrie [Boolean] whether to use valkyrie support (deprecated) def perform(work, use_valkyrie: :DEFAULT) Deprecation.warn("use_valkyrie argument is deprecated, behavior depends on deserialized resource") unless use_valkyrie == :DEFAULT case work when ActiveFedora::Base af_perform(work) else valkyrie_perform(work) end end private # Returns a list of member file_sets for a work # @param work [Resource] # @return [Array<Hyrax::File_Set>] def file_sets_for(work) Hyrax.custom_queries.find_child_filesets(resource: work) end # Perform the copy from the work to the contained filesets # # @param work containing access level and filesets def af_perform(work) attribute_map = work.permissions.map(&:to_hash) work.file_sets.each do |file| # copy and removed access to the new access with the delete flag file.permissions.map(&:to_hash).each do |perm| unless attribute_map.include?(perm) perm[:_destroy] = true attribute_map << perm end end # apply the new and deleted attributes file.permissions_attributes = attribute_map file.save! end end # Perform the copy from the work to the contained filesets # # @param work containing access level and filesets def valkyrie_perform(work) work_acl = Hyrax::AccessControlList.new(resource: work) file_sets_for(work).each do |file_set| Hyrax::AccessControlList .copy_permissions(source: work_acl, target: file_set) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
hyrax-3.3.0 | app/jobs/inherit_permissions_job.rb |
hyrax-3.2.0 | app/jobs/inherit_permissions_job.rb |
hyrax-3.1.0 | app/jobs/inherit_permissions_job.rb |