#48 revisions without a physical file
This commit is contained in:
parent
956767799c
commit
95a30d4d0b
@ -151,7 +151,7 @@ class DmsfFilesController < ApplicationController
|
||||
if revision.save
|
||||
revision.assign_workflow(params[:dmsf_workflow_id])
|
||||
if upload
|
||||
FileUtils.mv(upload.tempfile_path, revision.disk_file)
|
||||
FileUtils.mv(upload.tempfile_path, revision.disk_file(false))
|
||||
end
|
||||
if @file.locked? && !@file.locks.empty?
|
||||
begin
|
||||
|
||||
@ -96,8 +96,8 @@ module DmsfUploadHelper
|
||||
if new_revision.save
|
||||
new_revision.assign_workflow(commited_file[:dmsf_workflow_id])
|
||||
begin
|
||||
FileUtils.mv commited_file[:tempfile_path], new_revision.disk_file
|
||||
FileUtils.chmod 'u=wr,g=r', new_revision.disk_file
|
||||
FileUtils.mv commited_file[:tempfile_path], new_revision.disk_file(false)
|
||||
FileUtils.chmod 'u=wr,g=r', new_revision.disk_file(false)
|
||||
file.set_last_revision new_revision
|
||||
files.push(file)
|
||||
if file.container.is_a?(Issue)
|
||||
|
||||
@ -271,7 +271,7 @@ class DmsfFile < ActiveRecord::Base
|
||||
new_revision.dmsf_file = file
|
||||
new_revision.disk_filename = new_revision.new_storage_filename
|
||||
if File.exist? self.last_revision.disk_file
|
||||
FileUtils.cp self.last_revision.disk_file, new_revision.disk_file
|
||||
FileUtils.cp self.last_revision.disk_file, new_revision.disk_file(false)
|
||||
end
|
||||
new_revision.comment = l(:comment_copied_from, :source => "#{project.identifier}: #{self.dmsf_path_str}")
|
||||
new_revision.custom_values = []
|
||||
|
||||
@ -140,10 +140,21 @@ class DmsfFileRevision < ActiveRecord::Base
|
||||
DmsfFile.storage_path.join path
|
||||
end
|
||||
|
||||
def disk_file
|
||||
def disk_file(search_if_not_exists = true)
|
||||
path = self.storage_base_path
|
||||
FileUtils.mkdir_p(path) unless File.exist?(path)
|
||||
path.join self.disk_filename
|
||||
filename = path.join(self.disk_filename)
|
||||
if search_if_not_exists
|
||||
unless File.exist?(filename)
|
||||
# Let's search for the physical file in source revisions
|
||||
revisions = self.dmsf_file.dmsf_file_revisions.where(['id < ?', self.id]).order(:id => :desc)
|
||||
revisions.each do |rev|
|
||||
filename = rev.disk_file
|
||||
break if File.exist?(filename)
|
||||
end
|
||||
end
|
||||
end
|
||||
filename
|
||||
end
|
||||
|
||||
def new_storage_filename
|
||||
|
||||
@ -89,12 +89,12 @@ class Dmsf144 < ActiveRecord::Migration
|
||||
DmsfFileRevision.visible.each {|rev|
|
||||
next if rev.project.nil?
|
||||
existing = DmsfFile.storage_path.join rev.disk_filename
|
||||
new_path = rev.disk_file
|
||||
new_path = rev.disk_file(false)
|
||||
begin
|
||||
if File.exist?(existing)
|
||||
if File.exist?(new_path)
|
||||
rev.disk_filename = rev.new_storage_filename
|
||||
new_path = rev.disk_file
|
||||
new_path = rev.disk_file(false)
|
||||
rev.save!
|
||||
end
|
||||
#Ensure the project path exists
|
||||
|
||||
@ -28,7 +28,7 @@ class MigrateDocuments < ActiveRecord::Migration
|
||||
origin = self.disk_file(dmsf_file_revision)
|
||||
if origin
|
||||
if File.exist?(origin)
|
||||
target = dmsf_file_revision.disk_file
|
||||
target = dmsf_file_revision.disk_file(false)
|
||||
if target
|
||||
unless File.exist?(target)
|
||||
begin
|
||||
@ -64,7 +64,7 @@ class MigrateDocuments < ActiveRecord::Migration
|
||||
DmsfFileRevision.find_each do |dmsf_file_revision|
|
||||
if dmsf_file_revision.dmsf_file
|
||||
if dmsf_file_revision.dmsf_file.project
|
||||
origin = dmsf_file_revision.disk_file
|
||||
origin = dmsf_file_revision.disk_file(false)
|
||||
if origin
|
||||
if File.exist?(origin)
|
||||
target = self.disk_file(dmsf_file_revision)
|
||||
|
||||
@ -652,7 +652,7 @@ module RedmineDmsf
|
||||
# implementation of service for request, which allows for us to pipe a single file through
|
||||
# also best-utilising DAV4Rack's implementation.
|
||||
def download
|
||||
raise NotFound unless (file && file.last_revision && file.last_revision.disk_file)
|
||||
raise NotFound unless (file && file.last_revision && file.last_revision.disk_file(false))
|
||||
raise Forbidden unless (!parent.exist? || !parent.folder || DmsfFolder.permissions?(parent.folder))
|
||||
|
||||
# If there is no range (start of ranged download, or direct download) then we log the
|
||||
|
||||
@ -159,7 +159,7 @@ class DmsfConvertDocuments
|
||||
|
||||
unless dry
|
||||
FileUtils.cp(attachment.diskfile, revision.disk_file)
|
||||
revision.size = File.size(revision.disk_file)
|
||||
revision.size = File.size(revision.disk_file(false))
|
||||
end
|
||||
|
||||
if dry
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user