Skip to content

Commit

Permalink
Inconsistent default values in settings #1577
Browse files Browse the repository at this point in the history
  • Loading branch information
picman committed Jan 14, 2025
1 parent 638fb90 commit 8ddab40
Show file tree
Hide file tree
Showing 19 changed files with 182 additions and 104 deletions.
2 changes: 1 addition & 1 deletion app/helpers/dmsf_upload_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def self.commit_files_internal(committed_files, project, folder, controller = ni
file.project_id = project.id
file.name = name
file.dmsf_folder = folder
file.notification = Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present?
file.notification = RedmineDmsf.dmsf_default_notifications?
end
if file.locked_for_user?
failed_uploads.push file
Expand Down
5 changes: 2 additions & 3 deletions app/models/dmsf_file.rb
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,7 @@ def self.previews_storage_path
end

def default_values
return unless Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present? &&
(!dmsf_folder || !dmsf_folder.system)
return unless RedmineDmsf.dmsf_default_notifications? && (!dmsf_folder || !dmsf_folder.system)

self.notification = true
end
Expand Down Expand Up @@ -289,7 +288,7 @@ def copy_to_filename(project, folder, filename)
end
end
file.name = filename
file.notification = Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present?
file.notification = RedmineDmsf.dmsf_default_notifications?
if file.save && last_revision
new_revision = last_revision.clone
new_revision.dmsf_file = file
Expand Down
2 changes: 1 addition & 1 deletion app/models/dmsf_file_revision.rb
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ def delete_source_revision
d.source_revision = source_revision
d.save!
end
return unless Setting.plugin_redmine_dmsf['dmsf_really_delete_files']
return unless RedmineDmsf.physical_file_delete?

dependencies = DmsfFileRevision.where(disk_filename: disk_filename).all.size
FileUtils.rm_f(disk_file) if dependencies <= 1
Expand Down
2 changes: 1 addition & 1 deletion app/models/dmsf_folder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ def initialize(*args)
end

def default_values
self.notification = true if Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present? && !system
self.notification = true if RedmineDmsf.dmsf_default_notifications? && !system
end

def locked_by
Expand Down
142 changes: 74 additions & 68 deletions app/views/settings/_dmsf_settings.html.erb

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion init.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@
'dmsf_default_query' => '0',
'empty_minor_version_by_default' => '0',
'remove_original_documents_module' => '0',
'dmsf_webdav_authentication' => 'Digest'
'dmsf_webdav_authentication' => 'Digest',
'dmsf_really_delete_files' => '0'
}
end

Expand Down
27 changes: 25 additions & 2 deletions lib/redmine_dmsf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,22 @@ def dmsf_stemming_strategy
end
end

def dmsf_webdav_strategy
if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'].present?
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'].strip
else
'WEBDAV_READ_ONLY'
end
end

def dmsf_webdav?
value = Setting.plugin_redmine_dmsf['dmsf_webdav']
value.to_i.positive? || value == 'true'
webdav = value.to_i.positive? || value == 'true'
if webdav && defined?(EasyExtensions)
webdav = Redmine::Plugin.installed?('easy_hosting_services') &&
EasyHostingServices::EasyMultiTenancy.activated?
end
webdav
end

def dmsf_display_notified_recipients?
Expand Down Expand Up @@ -182,6 +195,11 @@ def empty_minor_version_by_default?
value.to_i.positive? || value == 'true'
end

def physical_file_delete?
value = Setting.plugin_redmine_dmsf['dmsf_really_delete_files']
value.to_i.positive? || value == 'true'
end

def remove_original_documents_module?
value = Setting.plugin_redmine_dmsf['remove_original_documents_module']
value.to_i.positive? || value == 'true'
Expand All @@ -191,9 +209,14 @@ def dmsf_webdav_authentication
if Setting.plugin_redmine_dmsf['dmsf_webdav_authentication'].present?
Setting.plugin_redmine_dmsf['dmsf_webdav_authentication'].strip
else
'Basic'
'Digest'
end
end

def dmsf_default_notifications?
value = Setting.plugin_redmine_dmsf['dmsf_default_notifications']
value.to_i.positive? || value == 'true'
end
end
end

Expand Down
2 changes: 1 addition & 1 deletion lib/redmine_dmsf/webdav/dmsf_resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@ def put(request)
f.project_id = project.id
f.name = basename
f.dmsf_folder = parent.folder
f.notification = Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present?
f.notification = RedmineDmsf.dmsf_default_notifications?
new_revision = DmsfFileRevision.new
new_revision.minor_version = 1
new_revision.major_version = 0
Expand Down
2 changes: 1 addition & 1 deletion lib/redmine_dmsf/webdav/resource_proxy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def initialize(path, request, response, options)
rc = get_resource_class(path)
@resource_c = rc.new(path, request, response, options)
@resource_c.accessor = self if @resource_c
@read_only = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_ONLY'
@read_only = RedmineDmsf.dmsf_webdav_strategy == 'WEBDAV_READ_ONLY'
end

def authenticate(username, password)
Expand Down
2 changes: 1 addition & 1 deletion patches/project_patch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def self.prepended(base)

def set_default_dmsf_notification
return unless new_record?
return unless !dmsf_notification && Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present?
return unless !dmsf_notification && RedmineDmsf.dmsf_default_notifications?

self.dmsf_notification = true
end
Expand Down
13 changes: 10 additions & 3 deletions test/integration/webdav/dmsf_webdav_delete_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ def test_dmsf_not_enabled
end

def test_delete_when_ro
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_strategy' => 'WEBDAV_READ_ONLY', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_strategy' => 'WEBDAV_READ_ONLY', 'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @admin
assert_response :bad_gateway # WebDAV is read only
end
Expand Down Expand Up @@ -128,7 +129,10 @@ def test_folder_delete_by_user
end

def test_folder_delete_by_user_with_project_names
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic',
'dmsf_webdav_strategy' => 'WEBDAV_READ_WRITE' } do
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @jsmith
assert_response :conflict
p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
Expand All @@ -154,7 +158,10 @@ def test_file_delete_by_user
end

def test_file_delete_by_user_with_project_names
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic',
'dmsf_webdav_strategy' => 'WEBDAV_READ_WRITE' } do
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
assert_response :conflict
p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
Expand Down
8 changes: 6 additions & 2 deletions test/integration/webdav/dmsf_webdav_get_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ def test_should_list_dmsf_enabled_project
assert_response :success
assert_not response.body.match(@project1.identifier).nil?,
"Expected to find project #{@project1.identifier} in return data"
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
project1_uri = Addressable::URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
get '/dmsf/webdav', params: nil, headers: @admin
assert_response :success
Expand Down Expand Up @@ -138,7 +140,9 @@ def test_should_not_list_folders_without_permissions
def test_download_file_from_dmsf_enabled_project
get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :success
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :conflict
Expand Down
8 changes: 6 additions & 2 deletions test/integration/webdav/dmsf_webdav_head_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ def test_head_responds_with_authentication
head "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin
assert_response :success
check_headers_exist
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
head "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin
assert_response :not_found
project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
Expand All @@ -52,7 +54,9 @@ def test_head_responds_to_file
head "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :success
check_headers_exist
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
head "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :conflict
project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
Expand Down
5 changes: 4 additions & 1 deletion test/integration/webdav/dmsf_webdav_mkcol_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ def test_should_fail_to_create_folder_that_already_exists
def test_should_create_folder_for_non_admin_user_with_rights
process :mkcol, "/dmsf/webdav/#{@project1.identifier}/test1", params: nil, headers: @jsmith
assert_response :success
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic',
'dmsf_webdav_strategy' => 'WEBDAV_READ_WRITE' } do
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
process :mkcol, "/dmsf/webdav/#{@project1.identifier}/test2", params: nil, headers: @jsmith
assert_response :conflict
Expand Down
10 changes: 8 additions & 2 deletions test/integration/webdav/dmsf_webdav_move_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,10 @@ def test_move_to_new_filename
end

def test_move_to_new_filename_with_project_names
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic',
'dmsf_webdav_strategy' => 'WEBDAV_READ_WRITE' } do
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
new_name = "#{@file1.name}.moved"
assert_difference '@file1.dmsf_file_revisions.count', +1 do
Expand Down Expand Up @@ -182,7 +185,10 @@ def test_move_to_new_folder
end

def test_move_to_new_folder_with_project_names
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic',
'dmsf_webdav_strategy' => 'WEBDAV_READ_WRITE' } do
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
assert_difference '@file1.dmsf_file_revisions.count', +1 do
process :move,
Expand Down
16 changes: 12 additions & 4 deletions test/integration/webdav/dmsf_webdav_propfind_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ def test_propfind_depth0_on_root_for_admin
end

def test_propfind_depth1_on_root_for_admin_with_project_names
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
process :propfind, '/dmsf/webdav/', params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1' })
assert_response :multi_status
assert response.body.include?('<d:href>http://www.example.com:80/dmsf/webdav/</d:href>')
Expand Down Expand Up @@ -102,7 +104,9 @@ def test_propfind_depth0_on_project1_for_admin
end

def test_propfind_depth0_on_project1_for_admin_with_project_names
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
process :propfind,
"/dmsf/webdav/#{@project1.identifier}",
params: nil,
Expand Down Expand Up @@ -151,7 +155,9 @@ def test_propfind_depth1_on_project1_for_admin
end

def test_propfind_depth1_on_project1_for_admin_with_project_names
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
process :propfind,
"/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1' })
assert_response :not_found
Expand Down Expand Up @@ -191,7 +197,9 @@ def test_propfind_depth1_on_project1_for_admin_with_project_names
end

def test_propfind_depth1_on_root_for_admin
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1' } do
with_settings plugin_redmine_dmsf: { 'dmsf_webdav_use_project_names' => '1',
'dmsf_webdav' => '1',
'dmsf_webdav_authentication' => 'Basic' } do
project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_new_uri = ERB::Util.url_encode(project1_new_name)
process :propfind, "/dmsf/webdav/#{project1_new_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1' })
Expand Down
Loading

0 comments on commit 8ddab40

Please sign in to comment.