98 lines
3.3 KiB
Ruby
98 lines
3.3 KiB
Ruby
|
namespace :'2019_08_22_migrate_attestation_files' do
|
||
|
task migrate_attestation_pdf: :environment do
|
||
|
attestations = Attestation.where
|
||
|
.not(pdf: nil)
|
||
|
.left_joins(:pdf_active_storage_attachment)
|
||
|
.where('active_storage_attachments.id IS NULL')
|
||
|
.order(:created_at)
|
||
|
|
||
|
limit = ENV['LIMIT']
|
||
|
if limit
|
||
|
attestations.limit!(limit.to_i)
|
||
|
end
|
||
|
|
||
|
progress = ProgressReport.new(attestations.count)
|
||
|
attestations.find_each do |attestation|
|
||
|
if attestation.pdf.present?
|
||
|
uri = URI.parse(URI.escape(attestation.pdf_url))
|
||
|
response = Typhoeus.get(uri)
|
||
|
if response.success?
|
||
|
filename = attestation.pdf.filename || attestation.pdf_identifier
|
||
|
attestation.pdf_active_storage.attach(
|
||
|
io: StringIO.new(response.body),
|
||
|
filename: filename,
|
||
|
content_type: attestation.pdf.content_type,
|
||
|
metadata: { virus_scan_result: ActiveStorage::VirusScanner::SAFE }
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
progress.inc
|
||
|
end
|
||
|
progress.finish
|
||
|
end
|
||
|
|
||
|
task migrate_attestation_template_logo: :environment do
|
||
|
attestation_templates = AttestationTemplate.where
|
||
|
.not(logo: nil)
|
||
|
.left_joins(:logo_active_storage_attachment)
|
||
|
.where('active_storage_attachments.id IS NULL')
|
||
|
.order(:created_at)
|
||
|
|
||
|
limit = ENV['LIMIT']
|
||
|
if limit
|
||
|
attestation_templates.limit!(limit.to_i)
|
||
|
end
|
||
|
|
||
|
progress = ProgressReport.new(attestation_templates.count)
|
||
|
attestation_templates.find_each do |attestation_template|
|
||
|
if attestation_template.logo.present?
|
||
|
uri = URI.parse(URI.escape(attestation_template.logo_url))
|
||
|
response = Typhoeus.get(uri)
|
||
|
if response.success?
|
||
|
filename = attestation_template.logo.filename || attestation_template.logo_identifier
|
||
|
attestation_template.logo_active_storage.attach(
|
||
|
io: StringIO.new(response.body),
|
||
|
filename: filename,
|
||
|
content_type: attestation_template.logo.content_type,
|
||
|
metadata: { virus_scan_result: ActiveStorage::VirusScanner::SAFE }
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
progress.inc
|
||
|
end
|
||
|
progress.finish
|
||
|
end
|
||
|
|
||
|
task migrate_attestation_template_signature: :environment do
|
||
|
attestation_templates = AttestationTemplate.where
|
||
|
.not(signature: nil)
|
||
|
.left_joins(:signature_active_storage_attachment)
|
||
|
.where('active_storage_attachments.id IS NULL')
|
||
|
.order(:created_at)
|
||
|
|
||
|
limit = ENV['LIMIT']
|
||
|
if limit
|
||
|
attestation_templates.limit!(limit.to_i)
|
||
|
end
|
||
|
|
||
|
progress = ProgressReport.new(attestation_templates.count)
|
||
|
attestation_templates.find_each do |attestation_template|
|
||
|
if attestation_template.signature.present?
|
||
|
uri = URI.parse(URI.escape(attestation_template.signature_url))
|
||
|
response = Typhoeus.get(uri)
|
||
|
if response.success?
|
||
|
filename = attestation_template.signature.filename || attestation_template.signature_identifier
|
||
|
attestation_template.signature_active_storage.attach(
|
||
|
io: StringIO.new(response.body),
|
||
|
filename: filename,
|
||
|
content_type: attestation_template.signature.content_type,
|
||
|
metadata: { virus_scan_result: ActiveStorage::VirusScanner::SAFE }
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
progress.inc
|
||
|
end
|
||
|
progress.finish
|
||
|
end
|
||
|
end
|