#1136 WebDAV tree structure including sub-projects
This commit is contained in:
parent
119330836e
commit
039c6982b3
@ -31,7 +31,9 @@ module RedmineDmsf
|
||||
attr_reader :public_path
|
||||
|
||||
def initialize(path, request, response, options)
|
||||
raise NotFound if Setting.plugin_redmine_dmsf['dmsf_webdav'].blank?
|
||||
if Setting.plugin_redmine_dmsf['dmsf_webdav'].blank?
|
||||
raise NotFound
|
||||
end
|
||||
@project = nil
|
||||
@public_path = "#{options[:root_uri_path]}#{path}"
|
||||
@children = nil
|
||||
@ -101,7 +103,9 @@ module RedmineDmsf
|
||||
end
|
||||
|
||||
def options(request, response)
|
||||
return NotFound if ((@path.length > 1) && ((!project) || (!project.module_enabled?('dmsf'))))
|
||||
if ((@path.length > 1) && ((!project) || (!project.module_enabled?('dmsf'))))
|
||||
return NotFound
|
||||
end
|
||||
if @__proxy.read_only
|
||||
response['Allow'] ||= 'OPTIONS,HEAD,GET,PROPFIND'
|
||||
end
|
||||
|
||||
@ -238,7 +238,7 @@ module RedmineDmsf
|
||||
destroy = false
|
||||
end
|
||||
if file.delete(destroy)
|
||||
DmsfMailer.deliver_files_deleted(project, [file])
|
||||
DmsfMailer.deliver_files_deleted project, [file]
|
||||
NoContent
|
||||
else
|
||||
Conflict
|
||||
@ -580,7 +580,7 @@ module RedmineDmsf
|
||||
end
|
||||
end
|
||||
else
|
||||
raise BadRequest unless (parent.projectless_path == '/' || (parent.exist? && parent.folder))
|
||||
#raise BadRequest unless (parent.projectless_path == '/' || (parent.exist? && parent.folder))
|
||||
f = DmsfFile.new
|
||||
f.project_id = project.id
|
||||
f.name = basename
|
||||
|
||||
@ -36,7 +36,9 @@ module RedmineDmsf
|
||||
|
||||
def initialize(*args)
|
||||
# Return 404 - NotFound if WebDAV is not enabled
|
||||
raise NotFound unless Setting.plugin_redmine_dmsf['dmsf_webdav']
|
||||
unless Setting.plugin_redmine_dmsf['dmsf_webdav']
|
||||
raise NotFound
|
||||
end
|
||||
super(*args)
|
||||
pinfo = path.split('/').drop(1)
|
||||
if pinfo.length == 0 # If this is the base_path, we're at root
|
||||
|
||||
22
test/fixtures/dmsf_file_revisions.yml
vendored
22
test/fixtures/dmsf_file_revisions.yml
vendored
@ -212,3 +212,25 @@ dmsf_file_revisions_010:
|
||||
dmsf_workflow_started_by_user_id: 1
|
||||
digest: '81dc9bdb52d04dc20036dbd8313ed055'
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_011:
|
||||
id: 11
|
||||
dmsf_file_id: 12
|
||||
source_dmsf_file_revision_id: NULL
|
||||
name: "test.txt"
|
||||
disk_filename: "test.txt"
|
||||
size: 4
|
||||
mime_type: text/plain
|
||||
title: "Test File"
|
||||
description: 'Some file :-)'
|
||||
workflow: 0
|
||||
minor_version: 0
|
||||
major_version: 1
|
||||
comment: NULL
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by_user_id: 1
|
||||
dmsf_workflow_started_by_user_id: 1
|
||||
digest: '81dc9bdb52d04dc20036dbd8313ed055'
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
9
test/fixtures/dmsf_files.yml
vendored
9
test/fixtures/dmsf_files.yml
vendored
@ -99,3 +99,12 @@ dmsf_files_011:
|
||||
notification: false
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
|
||||
dmsf_files_012:
|
||||
id: 12
|
||||
project_id: 3
|
||||
dmsf_folder_id: NULL
|
||||
name: 'test.txt'
|
||||
notification: false
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
7
test/fixtures/dmsf_folders.yml
vendored
7
test/fixtures/dmsf_folders.yml
vendored
@ -63,3 +63,10 @@ dmsf_folders_009:
|
||||
dmsf_folder_id: 8
|
||||
user_id: 1
|
||||
system: true
|
||||
|
||||
dmsf_folders_010:
|
||||
id: 10
|
||||
title: folder10
|
||||
project_id: 3
|
||||
dmsf_folder_id: NULL
|
||||
user_id: 1
|
||||
@ -34,10 +34,13 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
@jsmith = credentials 'jsmith'
|
||||
@project1 = Project.find 1
|
||||
@project2 = Project.find 2
|
||||
@project3 = Project.find 3 # Sub-project of project 1
|
||||
@role = Role.find_by(name: 'Manager')
|
||||
@folder1 = DmsfFolder.find 1
|
||||
@folder6 = DmsfFolder.find 6
|
||||
@folder10 = DmsfFolder.find 10
|
||||
@file1 = DmsfFile.find 1
|
||||
@file12 = DmsfFile.find 12
|
||||
@dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
|
||||
@dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
|
||||
@ -47,7 +50,8 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
@dmsf_storage_directory = Setting.plugin_redmine_dmsf['dmsf_storage_directory']
|
||||
Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = 'files/dmsf'
|
||||
FileUtils.cp_r File.join(File.expand_path('../../../fixtures/files', __FILE__), '.'), DmsfFile.storage_path
|
||||
@project1.enable_module! :dmsf # Flag module enabled
|
||||
@project1.enable_module! :dmsf # Enable DMSF module
|
||||
@project3.enable_module! :dmsf
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
@ -67,9 +71,12 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
def test_truth
|
||||
assert_kind_of Project, @project1
|
||||
assert_kind_of Project, @project2
|
||||
assert_kind_of Project, @project3
|
||||
assert_kind_of DmsfFolder, @folder1
|
||||
assert_kind_of DmsfFolder, @folder6
|
||||
assert_kind_of DmsfFolder, @folder10
|
||||
assert_kind_of DmsfFile, @file1
|
||||
assert_kind_of DmsfFile, @file12
|
||||
assert_kind_of Role, @role
|
||||
end
|
||||
|
||||
@ -252,4 +259,18 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
assert_nil DmsfFile.visible.find_by(id: @file1.id)
|
||||
end
|
||||
|
||||
def test_file_delete_in_subproject
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_delete
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/#{@file12.name}", params: nil, headers: @admin
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
def test_folder_delete_in_subproject
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :folder_delete
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/#{@folder10.title}", params: nil, headers: @admin
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user