diff --git a/app/jobs/archive_creation_job.rb b/app/jobs/archive_creation_job.rb index 255af07db..9a4a087f4 100644 --- a/app/jobs/archive_creation_job.rb +++ b/app/jobs/archive_creation_job.rb @@ -1,4 +1,6 @@ class ArchiveCreationJob < ApplicationJob + queue_as :exports + def perform(procedure, archive, instructeur) ProcedureArchiveService .new(procedure) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 11fdb15f7..d528155c1 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -69,7 +69,6 @@ class Dossier < ApplicationRecord has_many :attestations, dependent: :destroy has_one_attached :justificatif_motivation - has_one_attached :pdf_export_for_instructeur has_many :champs, -> { root.public_ordered }, inverse_of: false, dependent: :destroy has_many :champs_private, -> { root.private_ordered }, class_name: 'Champ', inverse_of: false, dependent: :destroy diff --git a/app/services/pieces_justificatives_service.rb b/app/services/pieces_justificatives_service.rb index 08b358d4c..63e2cb76d 100644 --- a/app/services/pieces_justificatives_service.rb +++ b/app/services/pieces_justificatives_service.rb @@ -49,6 +49,30 @@ class PiecesJustificativesService end end + class FakeAttachment < Hashie::Dash + property :filename + property :name + property :file + property :id + property :created_at + + def download + file + end + + def read(*args) + file.read(*args) + end + + def close + file.close + end + + def attached? + true + end + end + def self.generate_dossier_export(dossier) pdf = ApplicationController .render(template: 'dossiers/show', formats: [:pdf], @@ -56,10 +80,14 @@ class PiecesJustificativesService include_infos_administration: true, dossier: dossier }) - ActiveRecord::Base.no_touching do - dossier.pdf_export_for_instructeur.attach(io: StringIO.open(pdf), filename: "export-#{dossier.id}.pdf", content_type: 'application/pdf') - end - dossier.pdf_export_for_instructeur + + FakeAttachment.new( + file: StringIO.new(pdf), + filename: "export-#{dossier.id}.pdf", + name: 'pdf_export_for_instructeur', + id: dossier.id, + created_at: dossier.updated_at + ) end private diff --git a/app/services/procedure_archive_service.rb b/app/services/procedure_archive_service.rb index b26757210..065b0f431 100644 --- a/app/services/procedure_archive_service.rb +++ b/app/services/procedure_archive_service.rb @@ -26,7 +26,7 @@ class ProcedureArchiveService Zip::OutputStream.open(tmp_file) do |zipfile| files.each do |attachment, pj_filename| - zipfile.put_next_entry(pj_filename) + zipfile.put_next_entry("procedure-#{@procedure.id}/#{pj_filename}") zipfile.puts(attachment.download) end end diff --git a/spec/factories/dossier.rb b/spec/factories/dossier.rb index 50fe313bb..29d01759b 100644 --- a/spec/factories/dossier.rb +++ b/spec/factories/dossier.rb @@ -201,15 +201,6 @@ FactoryBot.define do end end - trait :with_pdf_export do - after(:create) do |dossier, _evaluator| - dossier.pdf_export_for_instructeur.attach( - io: StringIO.new('Hello World'), - filename: 'export.pdf' - ) - end - end - trait :with_justificatif do after(:create) do |dossier, _evaluator| dossier.justificatif_motivation.attach( diff --git a/spec/lib/active_storage/downloadable_file_spec.rb b/spec/lib/active_storage/downloadable_file_spec.rb index 200c519f7..835e8b731 100644 --- a/spec/lib/active_storage/downloadable_file_spec.rb +++ b/spec/lib/active_storage/downloadable_file_spec.rb @@ -1,12 +1,12 @@ describe ActiveStorage::DownloadableFile do - let(:dossier) { create(:dossier, :en_construction, :with_pdf_export) } + let(:dossier) { create(:dossier, :en_construction) } subject(:list) { ActiveStorage::DownloadableFile.create_list_from_dossier(dossier) } describe 'create_list_from_dossier' do context 'when no piece_justificative is present' do it { expect(list.length).to eq 1 } - it { expect(list.first[0].record_type).to eq "Dossier" } + it { expect(list.first[0].name).to eq "pdf_export_for_instructeur" } end context 'when there is a piece_justificative' do diff --git a/spec/services/pieces_justificatives_service_spec.rb b/spec/services/pieces_justificatives_service_spec.rb index 652ea9819..a9a78742c 100644 --- a/spec/services/pieces_justificatives_service_spec.rb +++ b/spec/services/pieces_justificatives_service_spec.rb @@ -49,7 +49,6 @@ describe PiecesJustificativesService do subject { PiecesJustificativesService.generate_dossier_export(dossier) } it "generates pdf export for instructeur" do subject - expect(dossier.pdf_export_for_instructeur).to be_attached end it "doesn't update dossier" do