Sha256: 59851ad997d0784a4baf10b9e6d4249c80d6e9762fb06b9c465a2377972ab7e8
Contents?: true
Size: 1.88 KB
Versions: 3
Compression:
Stored size: 1.88 KB
Contents
# Converts UploadedFiles into FileSets and attaches them to works. class AttachFilesToWorkJob < Hyrax::ApplicationJob queue_as Hyrax.config.ingest_queue_name # @param [ActiveFedora::Base] work - the work object # @param [Array<Hyrax::UploadedFile>] uploaded_files - an array of files to attach def perform(work, uploaded_files, **work_attributes) validate_files!(uploaded_files) depositor = proxy_or_depositor(work) user = User.find_by_user_key(depositor) work_permissions = work.permissions.map(&:to_hash) metadata = visibility_attributes(work_attributes) uploaded_files.each do |uploaded_file| actor = Hyrax::Actors::FileSetActor.new(FileSet.create, user) actor.create_metadata(metadata) actor.create_content(uploaded_file) actor.attach_to_work(work) actor.file_set.permissions_attributes = work_permissions uploaded_file.update(file_set_uri: actor.file_set.uri) end end private # The attributes used for visibility - sent as initial params to created FileSets. def visibility_attributes(attributes) attributes.slice(:visibility, :visibility_during_lease, :visibility_after_lease, :lease_expiration_date, :embargo_release_date, :visibility_during_embargo, :visibility_after_embargo) end def validate_files!(uploaded_files) uploaded_files.each do |uploaded_file| next if uploaded_file.is_a? Hyrax::UploadedFile raise ArgumentError, "Hyrax::UploadedFile required, but #{uploaded_file.class} received: #{uploaded_file.inspect}" end end ## # A work with files attached by a proxy user will set the depositor as the intended user # that the proxy was depositing on behalf of. See tickets #2764, #2902. def proxy_or_depositor(work) work.on_behalf_of.blank? ? work.depositor : work.on_behalf_of end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
hyrax-2.1.0.rc3 | app/jobs/attach_files_to_work_job.rb |
hyrax-2.1.0.rc2 | app/jobs/attach_files_to_work_job.rb |
hyrax-2.1.0.rc1 | app/jobs/attach_files_to_work_job.rb |