From ecbc773a5586521165fbdd3ab2e7b0724ad012fc Mon Sep 17 00:00:00 2001 From: "vit.jonas@gmail.com" Date: Tue, 14 Jun 2011 13:25:10 +0000 Subject: [PATCH] * prevent file creating in case of error in conversion rake task git-svn-id: http://redmine-dmsf.googlecode.com/svn/trunk/redmine_dmsf@157 5e329b0b-a2ee-ea63-e329-299493fc886d --- lib/tasks/dmsf_convert_documents.rake | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/tasks/dmsf_convert_documents.rake b/lib/tasks/dmsf_convert_documents.rake index 70d9e39d..9fa04284 100644 --- a/lib/tasks/dmsf_convert_documents.rake +++ b/lib/tasks/dmsf_convert_documents.rake @@ -49,6 +49,7 @@ class DmsfConvertDocuments project.enabled_module_names = (project.enabled_module_names << "dmsf").uniq unless dry project.save! unless dry + fail = false folders = [] project.documents.each do |document| puts "Processing document: " + document.title @@ -83,6 +84,7 @@ class DmsfConvertDocuments rescue Exception => e puts "Creating folder: " + folder.title + " failed" puts e + fail = true next end end @@ -90,6 +92,7 @@ class DmsfConvertDocuments folders << folder; files = [] + failed_files = [] document.attachments.each do |attachment| begin file = DmsfFile.new @@ -108,6 +111,12 @@ class DmsfConvertDocuments # File id is needed to properly generate revision disk filename file.name = DmsfFileRevision.remove_extension(file.name) + suffix + File.extname(file.name) + unless File.exist?(attachment.diskfile) + puts "Creating file: " + attachment.filename + " failed, attachment file doesn't exist" + fail = true + next + end + if dry puts "Dry check file: " + file.name if file.invalid? @@ -162,13 +171,14 @@ class DmsfConvertDocuments rescue Exception => e puts "Creating file: " + attachment.filename + " failed" puts e + fail = true end end - document.destroy unless dry + document.destroy unless dry || fail end - project.enabled_module_names = project.enabled_module_names.reject {|mod| mod == "documents"} unless dry + project.enabled_module_names = project.enabled_module_names.reject {|mod| mod == "documents"} unless dry || fail project.save! unless dry end end