Digest adn custom values for new revisions via WebDAV
This commit is contained in:
parent
21efaf110a
commit
aa1350ccf9
@ -128,6 +128,7 @@ class DmsfFilesController < ApplicationController
|
||||
revision.size = upload.size
|
||||
revision.disk_filename = revision.new_storage_filename
|
||||
revision.mime_type = upload.mime_type
|
||||
revision.digest = upload.digest
|
||||
end
|
||||
else
|
||||
revision.size = last_revision.size
|
||||
|
||||
@ -589,8 +589,18 @@ module RedmineDmsf
|
||||
new_revision = last_revision
|
||||
reuse_revision = true
|
||||
else
|
||||
new_revision = last_revision ? last_revision.dup : DmsfFileRevision.new
|
||||
new_revision.source_revision = last_revision
|
||||
if last_revision
|
||||
new_revision = last_revision.dup
|
||||
new_revision.source_revision = last_revision
|
||||
else
|
||||
new_revision = DmsfFileRevision.new
|
||||
end
|
||||
# Custom fields
|
||||
i = 0
|
||||
last_revision.custom_field_values.each do |custom_value|
|
||||
new_revision.custom_field_values[i].value = custom_value
|
||||
i = i + 1
|
||||
end
|
||||
end
|
||||
else
|
||||
f = DmsfFile.new
|
||||
@ -620,8 +630,11 @@ module RedmineDmsf
|
||||
else
|
||||
new_revision.size = request.content_length # Bad Guess
|
||||
end
|
||||
|
||||
raise InternalServerError unless new_revision.valid? && f.save
|
||||
|
||||
if new_revision.valid? && (!f.save)
|
||||
Rails.logger.error f.errors.full_messages.to_sentence
|
||||
raise InternalServerError
|
||||
end
|
||||
|
||||
new_revision.disk_filename = new_revision.new_storage_filename unless reuse_revision
|
||||
|
||||
@ -641,6 +654,7 @@ module RedmineDmsf
|
||||
# Notifications
|
||||
DmsfMailer.deliver_files_updated project, [f]
|
||||
else
|
||||
Rails.logger.error new_revision.errors.full_messages.to_sentence
|
||||
raise InternalServerError
|
||||
end
|
||||
|
||||
|
||||
5
test/fixtures/enabled_modules.yml
vendored
5
test/fixtures/enabled_modules.yml
vendored
@ -1,5 +0,0 @@
|
||||
---
|
||||
enabled_modules_001:
|
||||
name: dmsf
|
||||
project_id: 1
|
||||
id: 1
|
||||
@ -25,7 +25,12 @@ require 'fileutils'
|
||||
|
||||
class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
|
||||
fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions
|
||||
fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :custom_fields, :custom_values
|
||||
|
||||
def setup
|
||||
super
|
||||
@cv22 = CustomValue.find(22)
|
||||
end
|
||||
|
||||
def test_put_denied_unless_authenticated_root
|
||||
put '/dmsf/webdav'
|
||||
@ -272,7 +277,6 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
end
|
||||
|
||||
def test_put_keep_title
|
||||
assert @file1.last_revision.size != 0
|
||||
@file1.last_revision.title = 'Keep that title'
|
||||
assert @file1.last_revision.save
|
||||
assert_difference '@file1.dmsf_file_revisions.count', +1 do
|
||||
@ -283,5 +287,17 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
@file1.last_revision.reload
|
||||
assert_equal @file1.last_revision.title, 'Keep that title'
|
||||
end
|
||||
|
||||
def test_put_keep_custom_field_values
|
||||
@file1.last_revision.custom_values << @cv22
|
||||
assert @file1.last_revision.save
|
||||
assert_difference '@file1.dmsf_file_revisions.count', +1 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
@file1.last_revision.reload
|
||||
assert_equal @file1.last_revision.custom_values.first.value, @cv22.value
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user