'Copy folders only' doesn't work properly #1296

This commit is contained in:
karel.picman@lbcfree.net 2021-10-12 14:03:05 +02:00
parent 6c5c824435
commit 09a727a99d
3 changed files with 17 additions and 16 deletions

View File

@ -273,7 +273,7 @@ class DmsfFolder < ActiveRecord::Base
save
end
def copy_to(project, folder)
def copy_to(project, folder, copy_files = true)
new_folder = DmsfFolder.new
new_folder.dmsf_folder = folder ? folder : nil
new_folder.project = folder ? folder.project : project
@ -291,14 +291,16 @@ class DmsfFolder < ActiveRecord::Base
Rails.logger.error new_folder.errors.full_messages.to_sentence
return new_folder
end
dmsf_files.visible.find_each do |f|
f.copy_to project, new_folder
if copy_files
dmsf_files.visible.find_each do |f|
f.copy_to project, new_folder
end
dmsf_links.visible.find_each do |l|
l.copy_to project, new_folder
end
end
dmsf_folders.visible.find_each do |s|
s.copy_to project, new_folder
end
dmsf_links.visible.find_each do |l|
l.copy_to project, new_folder
s.copy_to project, new_folder, copy_files
end
dmsf_folder_permissions.find_each do |p|
p.copy_to new_folder

View File

@ -80,16 +80,14 @@ module RedmineDmsf
end
def dmsf_count
file_count = DmsfFile.where(project_id: id).all.size +
DmsfLink.where(project_id: id, target_type: %(DmsfFile DmsfUrl)).all.size
folder_count = DmsfFolder.where(project_id: id).all.size +
DmsfLink.where(project_id: id, target_type: 'DmsfFolder').all.size
file_count = DmsfFile.visible.where(project_id: id).all.size
folder_count = DmsfFolder.visible.where(project_id: id).all.size
{ files: file_count, folders: folder_count }
end
# Simple yet effective approach to copying things
def copy_dmsf(project)
copy_dmsf_folders project
copy_dmsf_folders project, true
project.dmsf_files.visible.each do |f|
f.copy_to self, nil
end
@ -101,9 +99,9 @@ module RedmineDmsf
end
end
def copy_dmsf_folders(project)
def copy_dmsf_folders(project, copy_files = false)
project.dmsf_folders.visible.each do |f|
f.copy_to self, nil
f.copy_to self, nil, copy_files
end
project.folder_links.visible.each do |l|
l.copy_to self, nil

View File

@ -54,9 +54,10 @@ class ProjectPatchTest < RedmineDmsf::Test::UnitTest
end
def test_dmsf_count
User.current = @jsmith
hash = @project1.dmsf_count
assert_equal 10, hash[:files]
assert_equal 8, hash[:folders]
assert_equal 9, hash[:files]
assert_equal 5, hash[:folders]
end
def test_copy_approval_workflows