Non-versioned files are destroyed directly when deleted via WebDav. #654

This commit is contained in:
COLA@Redmine.local 2017-02-14 18:43:11 +01:00
parent 2b866ad190
commit 5ae0a65152
2 changed files with 17 additions and 5 deletions

View File

@ -231,11 +231,10 @@ module RedmineDmsf
def delete
if file
raise Forbidden unless User.current.admin? || User.current.allowed_to?(:file_delete, project)
if file.name.match(/.\.tmp$/i)
# .tmp files should be destroyed (MsOffice file)
destroy = true
elsif file.name.match(/^\~\$/i)
# Files starting with ~$ should be destroyed (MsOffice file)
pattern = Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning']
if !pattern.blank? && basename.match(pattern)
# Files that are not versioned should be destroyed
destroy = true
elsif file.last_revision.size == 0
# Zero-sized files should be destroyed

View File

@ -212,5 +212,18 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
@file1.reload
assert !@file1.deleted?, "File #{@file1.name} is expected to exist"
end
def test_non_versioned_file
Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = '\.tmp$'
@project1.enable_module! :dmsf
@role.add_permission! :view_dmsf_folders
@role.add_permission! :file_delete
file = @file1.copy_to_filename(@project1, nil, "delete_test.tmp")
delete "/dmsf/webdav/#{@project1.identifier}/delete_test.tmp", nil, @jsmith
# The file should be destroyed
assert_nil DmsfFile.find_file_by_name(@project1, nil, "delete_test.tmp")
end
end