From 345fe674d43ecea61afd7539f42fa0d56952c12b Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 25 Feb 2024 16:25:04 +0200 Subject: [PATCH] store original doc uuid in metadata --- .../generate_result_attachments.rb | 20 +++++++++++-------- lib/submitters.rb | 3 ++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb index 80d88031..c15c1032 100644 --- a/lib/submissions/generate_result_attachments.rb +++ b/lib/submissions/generate_result_attachments.rb @@ -271,9 +271,10 @@ module Submissions end ActiveStorage::Attachment.create!( - uuid:, blob: ActiveStorage::Blob.create_and_upload!(io: StringIO.new(io.string), filename: "#{name}.pdf"), - metadata: { sha256: Base64.urlsafe_encode64(Digest::SHA256.digest(io.string)) }, + metadata: { original_uuid: uuid, + analyzed: true, + sha256: Base64.urlsafe_encode64(Digest::SHA256.digest(io.string)) }, name: 'documents', record: submitter ) @@ -284,11 +285,7 @@ module Submissions end def build_pdfs_index(submitter) - latest_submitter = - submitter.submission.submitters - .select(&:completed_at?) - .select { |e| e.id != submitter.id && e.completed_at <= submitter.completed_at } - .max_by(&:completed_at) + latest_submitter = find_last_submitter(submitter) Submissions::EnsureResultGenerated.call(latest_submitter) if latest_submitter @@ -309,10 +306,17 @@ module Submissions Rollbar.error(e) if defined?(Rollbar) end - [attachment.uuid, pdf] + [attachment.metadata['original_uuid'] || attachment.uuid, pdf] end end + def find_last_submitter(submitter) + submitter.submission.submitters + .select(&:completed_at?) + .select { |e| e.id != submitter.id && e.completed_at <= submitter.completed_at } + .max_by(&:completed_at) + end + def build_pdf_from_image(attachment) pdf = HexaPDF::Document.new page = pdf.pages.add diff --git a/lib/submitters.rb b/lib/submitters.rb index 6f9ddb97..89a4329e 100644 --- a/lib/submitters.rb +++ b/lib/submitters.rb @@ -24,7 +24,8 @@ module Submitters is_more_than_two_images = original_documents.count(&:image?) > 1 submitter.documents.preload(:blob).reject do |attachment| - is_more_than_two_images && original_documents.find { |a| a.uuid == attachment.uuid }&.image? + is_more_than_two_images && + original_documents.find { |a| a.uuid == (attachment.metadata['original_uuid'] || attachment.uuid) }&.image? end end