Digest adn custom values for new revisions via WebDAV

This commit is contained in:
karel.picman@lbcfree.net 2020-08-20 10:14:22 +02:00
parent 21efaf110a
commit aa1350ccf9
4 changed files with 37 additions and 11 deletions

View File

@ -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

View File

@ -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

View File

@ -1,5 +0,0 @@
---
enabled_modules_001:
name: dmsf
project_id: 1
id: 1

View File

@ -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