Sha256: 826f0fb840c011a495e2846538449ee4ced8d21bf331351d149d5fe135a4a5e7

Contents?: true

Size: 992 Bytes

Versions: 29

Compression:

Stored size: 992 Bytes

Contents

# encoding: utf-8
module Spotlight
  ##
  # Process a CSV upload into new Spotlight::Resource::Upload objects
  class AddUploadsFromCSV < ActiveJob::Base
    queue_as :default

    after_perform do |job|
      csv_data, exhibit, user = job.arguments
      Spotlight::IndexingCompleteMailer.documents_indexed(csv_data, exhibit, user).deliver_now
    end

    def perform(csv_data, exhibit, _user)
      encoded_csv(csv_data).each do |row|
        url = row.delete('url')
        next unless url.present?

        resource = Spotlight::Resources::Upload.new(
          data: row,
          exhibit: exhibit
        )
        resource.build_upload(remote_image_url: url)
        resource.save_and_index
      end
    end

    private

    def encoded_csv(csv)
      csv.map do |row|
        row.map do |label, column|
          [label, column.encode('UTF-8', invalid: :replace, undef: :replace, replace: "\uFFFD")] if column.present?
        end.compact.to_h
      end.compact
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
blacklight-spotlight-2.4.1 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.4.0 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.3.3 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.3.2 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.3.1 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.3.0 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.2.1 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.2.0 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.1.0 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.2 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.1 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.0 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.0.rc6 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.0.rc5 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.0.rc4 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.0.rc3 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.0.rc2 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-2.0.0.rc1 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-1.5.1 app/jobs/spotlight/add_uploads_from_csv.rb
blacklight-spotlight-1.4.1 app/jobs/spotlight/add_uploads_from_csv.rb