Wrong version when uploading a document via WebDAV #1385

This commit is contained in:
Karel Pičman 2022-07-27 12:15:19 +02:00
parent 59e8dee78b
commit e9a2bb000b
2 changed files with 19 additions and 3 deletions

View File

@ -554,6 +554,15 @@ module RedmineDmsf
new_revision.custom_field_values[i].value = custom_value new_revision.custom_field_values[i].value = custom_value
end end
end end
unless reuse_revision
if new_revision.patch_version && (new_revision.patch_version != -32)
new_revision.increase_version(DmsfFileRevision::PATCH_VERSION)
elsif new_revision.minor_version && (new_revision.minor_version != -32)
new_revision.increase_version(DmsfFileRevision::MINOR_VERSION)
else
new_revision.increase_version(DmsfFileRevision::MAJOR_VERSION)
end
end
else else
f = DmsfFile.new f = DmsfFile.new
f.project_id = project.id f.project_id = project.id
@ -561,7 +570,7 @@ module RedmineDmsf
f.dmsf_folder = parent.folder f.dmsf_folder = parent.folder
f.notification = !Setting.plugin_redmine_dmsf['dmsf_default_notifications'].blank? f.notification = !Setting.plugin_redmine_dmsf['dmsf_default_notifications'].blank?
new_revision = DmsfFileRevision.new new_revision = DmsfFileRevision.new
new_revision.minor_version = 0 new_revision.minor_version = 1
new_revision.major_version = 0 new_revision.major_version = 0
new_revision.title = DmsfFileRevision.filename_to_title(basename) new_revision.title = DmsfFileRevision.filename_to_title(basename)
end end
@ -569,7 +578,6 @@ module RedmineDmsf
new_revision.dmsf_file = f new_revision.dmsf_file = f
new_revision.user = User.current new_revision.user = User.current
new_revision.name = basename new_revision.name = basename
new_revision.increase_version(DmsfFileRevision::PATCH_VERSION) unless reuse_revision
new_revision.mime_type = Redmine::MimeType.of(new_revision.name) new_revision.mime_type = Redmine::MimeType.of(new_revision.name)
# Phusion passenger does not have a method "length" in its model # Phusion passenger does not have a method "length" in its model

View File

@ -345,9 +345,17 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
headers: @jsmith.merge!({ content_type: :text }) headers: @jsmith.merge!({ content_type: :text })
assert_response :created assert_response :created
end end
@file1.last_revision.reload
sha = Digest::SHA256.file(@file1.last_revision.disk_file) sha = Digest::SHA256.file(@file1.last_revision.disk_file)
assert_equal sha, @file1.last_revision.digest assert_equal sha, @file1.last_revision.digest
end end
def test_put_version
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
assert_equal '1.1', @file1.last_revision.version
end
end end