Merge pull request #6304 from betagouv/revert-6302-dossier-pdf-export

Revert "Expose dossier PDF export as IO"
This commit is contained in:
krichtof 2021-06-24 19:36:44 +02:00 committed by GitHub
commit aa13bf1c23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 18 additions and 37 deletions

View file

@ -1,6 +1,4 @@
class ArchiveCreationJob < ApplicationJob class ArchiveCreationJob < ApplicationJob
queue_as :exports
def perform(procedure, archive, instructeur) def perform(procedure, archive, instructeur)
ProcedureArchiveService ProcedureArchiveService
.new(procedure) .new(procedure)

View file

@ -69,6 +69,7 @@ class Dossier < ApplicationRecord
has_many :attestations, dependent: :destroy has_many :attestations, dependent: :destroy
has_one_attached :justificatif_motivation 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, -> { root.public_ordered }, inverse_of: false, dependent: :destroy
has_many :champs_private, -> { root.private_ordered }, class_name: 'Champ', inverse_of: false, dependent: :destroy has_many :champs_private, -> { root.private_ordered }, class_name: 'Champ', inverse_of: false, dependent: :destroy

View file

@ -49,30 +49,6 @@ class PiecesJustificativesService
end end
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) def self.generate_dossier_export(dossier)
pdf = ApplicationController pdf = ApplicationController
.render(template: 'dossiers/show', formats: [:pdf], .render(template: 'dossiers/show', formats: [:pdf],
@ -80,14 +56,10 @@ class PiecesJustificativesService
include_infos_administration: true, include_infos_administration: true,
dossier: dossier dossier: dossier
}) })
ActiveRecord::Base.no_touching do
FakeAttachment.new( dossier.pdf_export_for_instructeur.attach(io: StringIO.open(pdf), filename: "export-#{dossier.id}.pdf", content_type: 'application/pdf')
file: StringIO.new(pdf), end
filename: "export-#{dossier.id}.pdf", dossier.pdf_export_for_instructeur
name: 'pdf_export_for_instructeur',
id: dossier.id,
created_at: dossier.updated_at
)
end end
private private

View file

@ -26,7 +26,7 @@ class ProcedureArchiveService
Zip::OutputStream.open(tmp_file) do |zipfile| Zip::OutputStream.open(tmp_file) do |zipfile|
files.each do |attachment, pj_filename| files.each do |attachment, pj_filename|
zipfile.put_next_entry("procedure-#{@procedure.id}/#{pj_filename}") zipfile.put_next_entry(pj_filename)
zipfile.puts(attachment.download) zipfile.puts(attachment.download)
end end
end end

View file

@ -201,6 +201,15 @@ FactoryBot.define do
end end
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 trait :with_justificatif do
after(:create) do |dossier, _evaluator| after(:create) do |dossier, _evaluator|
dossier.justificatif_motivation.attach( dossier.justificatif_motivation.attach(

View file

@ -1,12 +1,12 @@
describe ActiveStorage::DownloadableFile do describe ActiveStorage::DownloadableFile do
let(:dossier) { create(:dossier, :en_construction) } let(:dossier) { create(:dossier, :en_construction, :with_pdf_export) }
subject(:list) { ActiveStorage::DownloadableFile.create_list_from_dossier(dossier) } subject(:list) { ActiveStorage::DownloadableFile.create_list_from_dossier(dossier) }
describe 'create_list_from_dossier' do describe 'create_list_from_dossier' do
context 'when no piece_justificative is present' do context 'when no piece_justificative is present' do
it { expect(list.length).to eq 1 } it { expect(list.length).to eq 1 }
it { expect(list.first[0].name).to eq "pdf_export_for_instructeur" } it { expect(list.first[0].record_type).to eq "Dossier" }
end end
context 'when there is a piece_justificative' do context 'when there is a piece_justificative' do

View file

@ -49,6 +49,7 @@ describe PiecesJustificativesService do
subject { PiecesJustificativesService.generate_dossier_export(dossier) } subject { PiecesJustificativesService.generate_dossier_export(dossier) }
it "generates pdf export for instructeur" do it "generates pdf export for instructeur" do
subject subject
expect(dossier.pdf_export_for_instructeur).to be_attached
end end
it "doesn't update dossier" do it "doesn't update dossier" do