Multiple zip files are filling the tmp folder #1017
This commit is contained in:
parent
d854af8090
commit
d6cdf8c25a
@ -366,16 +366,7 @@ class DmsfController < ApplicationController
|
|||||||
raise DmsfAccessError unless User.current.allowed_to?(:email_documents, @project)
|
raise DmsfAccessError unless User.current.allowed_to?(:email_documents, @project)
|
||||||
zip = Zip.new
|
zip = Zip.new
|
||||||
zip_entries(zip, selected_folders, selected_files)
|
zip_entries(zip, selected_folders, selected_files)
|
||||||
|
zipped_content = zip.finish
|
||||||
zipped_content = DmsfHelper.temp_dir.join(DmsfHelper.temp_filename('dmsf_email_sent_documents.zip'))
|
|
||||||
|
|
||||||
File.open(zipped_content, 'wb') do |f|
|
|
||||||
File.open(zip.finish, 'rb') do |zip_file|
|
|
||||||
while (buffer = zip_file.read(8192))
|
|
||||||
f.write(buffer)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
max_filesize = Setting.plugin_redmine_dmsf['dmsf_max_email_filesize'].to_f
|
max_filesize = Setting.plugin_redmine_dmsf['dmsf_max_email_filesize'].to_f
|
||||||
if max_filesize > 0 && File.size(zipped_content) > max_filesize * 1048576
|
if max_filesize > 0 && File.size(zipped_content) > max_filesize * 1048576
|
||||||
|
|||||||
@ -29,15 +29,15 @@ module RedmineDmsf
|
|||||||
attr_reader :files
|
attr_reader :files
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@zip_path = DmsfHelper.temp_dir.join(DmsfHelper.temp_filename('dmsf_zip.zip'))
|
@temp_file = Tempfile.new(%w(dmsf_zip_ .zip), DmsfHelper.temp_dir)
|
||||||
@zip_file = ::Zip::OutputStream.new(@zip_path)
|
@zip_file = ::Zip::OutputStream.open(@temp_file)
|
||||||
@files = []
|
@files = []
|
||||||
@folders = []
|
@folders = []
|
||||||
end
|
end
|
||||||
|
|
||||||
def finish
|
def finish
|
||||||
@zip_file.close
|
@zip_file.close
|
||||||
@zip_path
|
@temp_file.path
|
||||||
end
|
end
|
||||||
|
|
||||||
def close
|
def close
|
||||||
|
|||||||
@ -286,19 +286,16 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
|
|
||||||
def test_entries_email
|
def test_entries_email
|
||||||
@role.add_permission! :view_dmsf_files
|
@role.add_permission! :view_dmsf_files
|
||||||
zip_file_path = DmsfHelper.temp_dir.join(DmsfHelper.temp_filename('dmsf_email_sent_documents.zip'))
|
zip_file = Tempfile.new('test', DmsfHelper::temp_dir)
|
||||||
FileUtils.touch(zip_file_path)
|
get :entries_email, params: { id: @project, email:
|
||||||
assert File.exist?(zip_file_path)
|
|
||||||
get :entries_email, :params => {:id => @project, :email =>
|
|
||||||
{
|
{
|
||||||
:to => 'to@test.com', :from => 'from@test.com', :subject => 'subject', :body => 'body', :expired_at => '2015-01-01',
|
to: 'to@test.com', from: 'from@test.com', subject: 'subject', body: 'body', expired_at: '2015-01-01',
|
||||||
:folders => [], :files => [@file1.id], :zipped_content => zip_file_path
|
folders: [], files: [@file1.id], zipped_content: zip_file.path
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert_redirected_to dmsf_folder_path(id: @project)
|
assert_redirected_to dmsf_folder_path(id: @project)
|
||||||
assert !File.exist?(zip_file_path)
|
|
||||||
ensure
|
ensure
|
||||||
FileUtils.rm_rf(zip_file_path)
|
zip_file.unlink
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_add_email_forbidden
|
def test_add_email_forbidden
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user