Merge pull request #7059 from betagouv/main

2022-03-18-01
This commit is contained in:
mfo 2022-03-18 08:54:07 +01:00 committed by GitHub
commit 6c18666b7e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 7 deletions

View file

@ -26,7 +26,6 @@ module DownloadManager
hydra.run hydra.run
end end
# rubocop:disable Style/AutoResourceCleanup
# can't be used with typhoeus, otherwise block is closed before the request is run by hydra # can't be used with typhoeus, otherwise block is closed before the request is run by hydra
def download_one(attachment:, path_in_download_dir:, http_client:) def download_one(attachment:, path_in_download_dir:, http_client:)
attachment_path = File.join(destination, path_in_download_dir) attachment_path = File.join(destination, path_in_download_dir)
@ -37,12 +36,10 @@ module DownloadManager
File.write(attachment_path, attachment.file.read, mode: 'wb') File.write(attachment_path, attachment.file.read, mode: 'wb')
else else
request = Typhoeus::Request.new(attachment.url) request = Typhoeus::Request.new(attachment.url)
fd = File.open(attachment_path, mode: 'wb')
request.on_body do |chunk| request.on_body do |chunk|
fd.write(chunk) File.write(attachment_path, chunk, mode: 'a+b')
end end
request.on_complete do |response| request.on_complete do |response|
fd.close
unless response.success? unless response.success?
File.delete(attachment_path) if File.exist?(attachment_path) # -> case of retries failed, must cleanup partialy downloaded file File.delete(attachment_path) if File.exist?(attachment_path) # -> case of retries failed, must cleanup partialy downloaded file
on_error.call(attachment, path_in_download_dir, response.code) on_error.call(attachment, path_in_download_dir, response.code)
@ -51,6 +48,5 @@ module DownloadManager
http_client.queue(request) http_client.queue(request)
end end
end end
# rubocop:enable Style/AutoResourceCleanup
end end
end end

View file

@ -111,7 +111,7 @@ class Commentaire < ApplicationRecord
def messagerie_available? def messagerie_available?
return if sent_by_system? return if sent_by_system?
if dossier.present? && !dossier.messagerie_available? if dossier.present? && !dossier.messagerie_available?
errors.add(:dossier, "Il nest pas possible denvoyer un message sur un dossier archivé ou en brouillon") errors.add(:dossier, "Il nest pas possible denvoyer un message sur un dossier supprimé, archivé ou en brouillon")
end end
end end
end end

View file

@ -528,7 +528,7 @@ class Dossier < ApplicationRecord
end end
def messagerie_available? def messagerie_available?
!brouillon? && !user_deleted? && !archived visible_by_administration? && !hidden_by_user? && !user_deleted? && !archived
end end
def expirable? def expirable?

View file

@ -457,6 +457,20 @@ describe Instructeurs::DossiersController, type: :controller do
expect(flash.notice).to be_present expect(flash.notice).to be_present
end end
end end
context "when the dossier is deleted by user" do
let(:dossier) { create(:dossier, :accepte, procedure: procedure) }
before do
dossier.update!(hidden_by_user_at: 1.hour.ago)
subject
end
it "does not create a commentaire" do
expect { subject }.to change(Commentaire, :count).by(0)
expect(flash.alert).to be_present
end
end
end end
describe "#create_avis" do describe "#create_avis" do