#699 Double file copying during upload removed'
This commit is contained in:
parent
855e52708a
commit
bf282ff280
@ -129,11 +129,13 @@ class DmsfFilesController < ApplicationController
|
||||
end
|
||||
else
|
||||
upload = DmsfUpload.create_from_uploaded_attachment(@project, @folder, file_upload)
|
||||
if upload
|
||||
revision.size = upload.size
|
||||
revision.disk_filename = revision.new_storage_filename
|
||||
revision.mime_type = upload.mime_type
|
||||
revision.digest = DmsfFileRevision.create_digest upload.disk_file
|
||||
end
|
||||
end
|
||||
|
||||
# Custom fields
|
||||
if params[:dmsf_file_revision][:custom_field_values].present?
|
||||
|
||||
@ -68,31 +68,8 @@ class DmsfUploadController < ApplicationController
|
||||
return
|
||||
end
|
||||
@disk_filename = DmsfHelper.temp_filename(@tempfile.original_filename)
|
||||
target = "#{DmsfHelper.temp_dir}/#{@disk_filename}"
|
||||
begin
|
||||
FileUtils.cp @tempfile.path, target
|
||||
FileUtils.chmod 'u=wr,g=r', target
|
||||
rescue Exception => e
|
||||
Rails.logger.error e.message
|
||||
end
|
||||
if File.size(target) <= 0
|
||||
begin
|
||||
File.delete target
|
||||
rescue Exception => e
|
||||
Rails.logger.error e.message
|
||||
end
|
||||
render :layout => nil, :json => { :jsonrpc => '2.0',
|
||||
:error => {
|
||||
:code => 103,
|
||||
:message => l(:header_minimum_filesize),
|
||||
:details => l(:error_minimum_filesize,
|
||||
:file => @tempfile.original_filename.to_s)
|
||||
}
|
||||
}
|
||||
else
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
|
||||
# REST API document upload
|
||||
def upload
|
||||
@ -133,7 +110,7 @@ class DmsfUploadController < ApplicationController
|
||||
uploaded_files = attachments.select { |key, value| key == 'uploaded_file'}
|
||||
uploaded_files.each_value do |uploaded_file|
|
||||
upload = DmsfUpload.create_from_uploaded_attachment(@project, @folder, uploaded_file)
|
||||
uploaded_file[:disk_filename] = upload.disk_filename
|
||||
uploaded_file[:disk_filename] = upload.disk_filename if upload
|
||||
end
|
||||
commit_files_internal uploaded_files
|
||||
end
|
||||
|
||||
@ -60,8 +60,6 @@ module DmsfUploadHelper
|
||||
next
|
||||
end
|
||||
|
||||
commited_disk_filepath = "#{DmsfHelper.temp_dir}/#{commited_file[:disk_filename].gsub(/[\/\\]/,'')}"
|
||||
|
||||
new_revision.dmsf_file = file
|
||||
new_revision.user = User.current
|
||||
new_revision.name = name
|
||||
@ -75,9 +73,9 @@ module DmsfUploadHelper
|
||||
else
|
||||
new_revision.increase_version(version)
|
||||
end
|
||||
new_revision.mime_type = Redmine::MimeType.of(new_revision.name)
|
||||
new_revision.size = File.size(commited_disk_filepath)
|
||||
new_revision.digest = DmsfFileRevision.create_digest commited_disk_filepath
|
||||
new_revision.mime_type = commited_file[:mime_type]
|
||||
new_revision.size = commited_file[:size]
|
||||
new_revision.digest = DmsfFileRevision.create_digest commited_file[:tempfile_path]
|
||||
|
||||
if commited_file[:custom_field_values].present?
|
||||
commited_file[:custom_field_values].each_with_index do |v, i|
|
||||
@ -98,7 +96,8 @@ module DmsfUploadHelper
|
||||
if new_revision.save
|
||||
new_revision.assign_workflow(commited_file[:dmsf_workflow_id])
|
||||
begin
|
||||
FileUtils.mv(commited_disk_filepath, new_revision.disk_file)
|
||||
FileUtils.mv commited_file[:tempfile_path], new_revision.disk_file
|
||||
FileUtils.chmod 'u=wr,g=r', new_revision.disk_file
|
||||
file.set_last_revision new_revision
|
||||
files.push(file)
|
||||
if file.container.is_a?(Issue)
|
||||
|
||||
@ -85,12 +85,10 @@ class DmsfFile < ActiveRecord::Base
|
||||
:date_column => "#{table_name}.updated_at"
|
||||
|
||||
before_create :default_values
|
||||
|
||||
def default_values
|
||||
@notifications = Setting.plugin_redmine_dmsf['dmsf_default_notifications']
|
||||
if @notifications == '1'
|
||||
if (Setting.plugin_redmine_dmsf['dmsf_default_notifications'] == '1') && (!self.dmsf_folder || !self.dmsf_folder.system)
|
||||
self.notification = true
|
||||
else
|
||||
self.notification = nil
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -113,11 +113,8 @@ class DmsfFolder < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def default_values
|
||||
@notifications = Setting.plugin_redmine_dmsf['dmsf_default_notifications']
|
||||
if @notifications == '1'
|
||||
if Setting.plugin_redmine_dmsf['dmsf_default_notifications'] == '1' && !self.system
|
||||
self.notification = true
|
||||
else
|
||||
self.notification = nil
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -33,6 +33,7 @@ class DmsfUpload
|
||||
attr_accessor :locked
|
||||
attr_accessor :workflow
|
||||
attr_accessor :custom_values
|
||||
attr_accessor :tempfile_path
|
||||
|
||||
def disk_file
|
||||
"#{DmsfHelper.temp_dir}/#{self.disk_filename}"
|
||||
@ -45,15 +46,14 @@ class DmsfUpload
|
||||
:disk_filename => DmsfHelper.temp_filename(a.filename),
|
||||
:content_type => a.content_type,
|
||||
:original_filename => a.filename,
|
||||
:comment => uploaded_file[:description]
|
||||
:comment => uploaded_file[:description],
|
||||
:tempfile_path => a.diskfile
|
||||
}
|
||||
FileUtils.mv(a.diskfile, "#{DmsfHelper.temp_dir}/#{uploaded[:disk_filename]}")
|
||||
a.destroy
|
||||
upload = DmsfUpload.new(project, folder, uploaded)
|
||||
DmsfUpload.new(project, folder, uploaded)
|
||||
else
|
||||
Rails.logger.error "An attachment not found by its token: #{uploaded_file[:token]}"
|
||||
nil
|
||||
end
|
||||
upload
|
||||
end
|
||||
|
||||
def initialize(project, folder, uploaded)
|
||||
@ -67,7 +67,8 @@ class DmsfUpload
|
||||
|
||||
@disk_filename = uploaded[:disk_filename]
|
||||
@mime_type = uploaded[:content_type]
|
||||
@size = File.size(disk_file)
|
||||
@size = File.size(uploaded[:tempfile_path])
|
||||
@tempfile_path = uploaded[:tempfile_path]
|
||||
|
||||
if file.nil? || file.last_revision.nil?
|
||||
@title = DmsfFileRevision.filename_to_title(@name)
|
||||
|
||||
@ -128,6 +128,10 @@
|
||||
.attr('name', 'uploaded[' + dmsfFileFieldCount + '][original_filename]')
|
||||
.val(responseObject.original_filename);
|
||||
uploader.append(original_filename_input);
|
||||
var tempfile_path = $('<input/>').attr('type', 'hidden')
|
||||
.attr('name', 'uploaded[' + dmsfFileFieldCount + '][tempfile_path]')
|
||||
.val(responseObject.tempfile_path);
|
||||
uploader.append(tempfile_path);
|
||||
} else {
|
||||
file.status = plupload.FAILED;
|
||||
pluploader.trigger('UploadProgress', file);
|
||||
|
||||
@ -24,6 +24,9 @@
|
||||
|
||||
<div class="box tabular">
|
||||
<%= hidden_field_tag("commited_files[#{i}][disk_filename]", upload.disk_filename) %>
|
||||
<%= hidden_field_tag("commited_files[#{i}][tempfile_path]", upload.tempfile_path) %>
|
||||
<%= hidden_field_tag("commited_files[#{i}][size]", upload.size) %>
|
||||
<%= hidden_field_tag("commited_files[#{i}][mime_type]", upload.mime_type) %>
|
||||
<div class="clear">
|
||||
<div class="splitcontentleft">
|
||||
<p>
|
||||
|
||||
@ -24,6 +24,9 @@
|
||||
|
||||
<div class="box tabular">
|
||||
<%= hidden_field_tag("commited_files[#{i}][disk_filename]", upload.disk_filename) %>
|
||||
<%= hidden_field_tag("commited_files[#{i}][tempfile_path]", upload.tempfile_path) %>
|
||||
<%= hidden_field_tag("commited_files[#{i}][size]", upload.size) %>
|
||||
<%= hidden_field_tag("commited_files[#{i}][mime_type]", upload.mime_type) %>
|
||||
<%= hidden_field_tag("commited_files[#{i}][name]", upload.name) %>
|
||||
<p class="warning"><%= l(:info_file_locked) %></p>
|
||||
<div class="clear">
|
||||
|
||||
@ -19,8 +19,12 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
%>
|
||||
|
||||
{"original_filename":"<%= (@tempfile.original_filename).html_safe %>",
|
||||
"content_type":"<%= (@tempfile.content_type.gsub('"', '')).html_safe %>",
|
||||
"disk_filename":"<%= (@disk_filename).html_safe %>"}
|
||||
{
|
||||
"original_filename":"<%= @tempfile.original_filename.html_safe %>",
|
||||
"content_type": "<%= @tempfile.content_type.gsub('"', '').html_safe %>",
|
||||
"disk_filename": "<%= @disk_filename.html_safe %>",
|
||||
"tempfile_path": "<%= @tempfile.path.html_safe %>"
|
||||
}
|
||||
|
||||
@ -41,7 +41,6 @@
|
||||
<% else %>
|
||||
<%= render(:partial => 'upload_file', :locals => {:upload => upload, :i => i}) %>
|
||||
<% end %>
|
||||
<% i += 1 %>
|
||||
<% end %>
|
||||
<%= submit_tag l(:submit_commit) %>
|
||||
<% end %>
|
||||
@ -56,10 +56,15 @@ module RedmineDmsf
|
||||
system_folder = issue.system_folder(true)
|
||||
uploaded_files.each_value do |uploaded_file|
|
||||
upload = DmsfUpload.create_from_uploaded_attachment(issue.project, system_folder, uploaded_file)
|
||||
if upload
|
||||
uploaded_file[:disk_filename] = upload.disk_filename
|
||||
uploaded_file[:name] = upload.name
|
||||
uploaded_file[:title] = upload.title
|
||||
uploaded_file[:version] = 1
|
||||
uploaded_file[:size] = upload.size
|
||||
uploaded_file[:mime_type] = upload.mime_type
|
||||
uploaded_file[:tempfile_path] = upload.tempfile_path
|
||||
end
|
||||
end
|
||||
DmsfUploadHelper.commit_files_internal uploaded_files, issue.project, system_folder,
|
||||
context[:controller]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user