Assign workflows by files copying
This commit is contained in:
parent
7b9475cf50
commit
8ea0bc559b
@ -268,13 +268,30 @@ class DmsfFile < ActiveRecord::Base
|
||||
new_revision = self.last_revision.clone
|
||||
new_revision.dmsf_file = file
|
||||
new_revision.disk_filename = new_revision.new_storage_filename
|
||||
# Assign the same workflow if it's a global one or we are in the same project
|
||||
new_revision.workflow = nil
|
||||
new_revision.dmsf_workflow_id = nil
|
||||
new_revision.dmsf_workflow_assigned_by = nil
|
||||
new_revision.dmsf_workflow_assigned_at = nil
|
||||
new_revision.dmsf_workflow_started_by = nil
|
||||
new_revision.dmsf_workflow_started_at = nil
|
||||
if self.last_revision.dmsf_workflow_id
|
||||
wf = DmsfWorkflow.where(:id => self.last_revision.dmsf_workflow_id).first
|
||||
if wf && (wf.project.nil? || (wf.project.id == project.id))
|
||||
new_revision.set_workflow(wf.id, nil)
|
||||
new_revision.assign_workflow(wf.id)
|
||||
end
|
||||
end
|
||||
if File.exist? self.last_revision.disk_file
|
||||
FileUtils.cp self.last_revision.disk_file, new_revision.disk_file(false)
|
||||
end
|
||||
new_revision.comment = l(:comment_copied_from, :source => source)
|
||||
new_revision.custom_values = []
|
||||
self.last_revision.custom_values.each do |cv|
|
||||
new_revision.custom_values << CustomValue.new({:custom_field => cv.custom_field, :value => cv.value})
|
||||
v = CustomValue.new
|
||||
v.custom_field = cv.custom_field
|
||||
v.value = cv.value
|
||||
new_revision.custom_values << v
|
||||
end
|
||||
file.delete(true) unless new_revision.save
|
||||
end
|
||||
|
||||
@ -175,6 +175,5 @@ module RedmineDmsf
|
||||
end
|
||||
end
|
||||
|
||||
RedmineExtensions::PatchManager.register_model_patch 'EasyCrmCasePatch',
|
||||
'RedmineDmsf::Patches::RedmineDmsf::Patches::EasyCrmCasePatch',
|
||||
if: proc { Redmine::Plugin.installed?(:easy_crm) }
|
||||
RedmineExtensions::PatchManager.register_model_patch 'EasyCrmCase',
|
||||
'RedmineDmsf::Patches::EasyCrmCasePatch', if: proc { Redmine::Plugin.installed?(:easy_crm) }
|
||||
8
test/fixtures/dmsf_file_revisions.yml
vendored
8
test/fixtures/dmsf_file_revisions.yml
vendored
@ -39,8 +39,8 @@ dmsf_file_revisions_002:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: 1
|
||||
dmsf_workflow_started_by: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
#revision for deleted file on dmsf-enabled project
|
||||
@ -61,8 +61,8 @@ dmsf_file_revisions_003:
|
||||
deleted: 1
|
||||
deleted_by_user_id: 1
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: 1
|
||||
dmsf_workflow_started_by: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_004:
|
||||
|
||||
@ -22,13 +22,14 @@
|
||||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :roles, :members,
|
||||
:member_roles, :dmsf_locks, :issues, :dmsf_links
|
||||
fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :roles,
|
||||
:members, :member_roles, :dmsf_locks, :issues, :dmsf_links, :dmsf_workflows, :dmsf_workflow_steps
|
||||
|
||||
def setup
|
||||
@admin = User.find_by_id 1
|
||||
@jsmith = User.find_by_id 2
|
||||
@project1 = Project.find_by_id 1
|
||||
@project2 = Project.find_by_id 2
|
||||
@file1 = DmsfFile.find_by_id 1
|
||||
@file2 = DmsfFile.find_by_id 2
|
||||
@file3 = DmsfFile.find_by_id 3
|
||||
@ -39,6 +40,8 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
@file8 = DmsfFile.find_by_id 8
|
||||
@folder1 = DmsfFolder.find_by_id 1
|
||||
@issue1 = Issue.find_by_id 1
|
||||
@wf1 = DmsfWorkflow.find_by_id 1
|
||||
@wf2 = DmsfWorkflow.find_by_id 2
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
@ -46,6 +49,7 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
assert_kind_of User, @admin
|
||||
assert_kind_of User, @jsmith
|
||||
assert_kind_of Project, @project1
|
||||
assert_kind_of Project, @project2
|
||||
assert_kind_of DmsfFile, @file1
|
||||
assert_kind_of DmsfFile, @file2
|
||||
assert_kind_of DmsfFile, @file3
|
||||
@ -56,6 +60,8 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
assert_kind_of DmsfFile, @file8
|
||||
assert_kind_of DmsfFolder, @folder1
|
||||
assert_kind_of Issue, @issue1
|
||||
assert_kind_of DmsfWorkflow, @wf1
|
||||
assert_kind_of DmsfWorkflow, @wf2
|
||||
end
|
||||
|
||||
def test_project_file_count_differs_from_project_visibility_count
|
||||
@ -146,14 +152,56 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
|
||||
def test_copy_to_filename
|
||||
assert_no_difference '@file1.dmsf_file_revisions.count' do
|
||||
new_file = @file1.copy_to_filename(@file1.project, nil, "new_file.txt")
|
||||
new_file = @file1.copy_to_filename(@file1.project, nil, 'new_file.txt')
|
||||
assert_not_equal new_file.id, @file1.id
|
||||
assert_nil new_file.dmsf_folder_id
|
||||
assert_nil @file1.dmsf_folder_id
|
||||
assert_not_equal new_file.name, @file1.name
|
||||
assert_equal new_file.dmsf_file_revisions.count, 1
|
||||
assert_nil new_file.last_revision.workflow
|
||||
assert_nil new_file.last_revision.dmsf_workflow_id
|
||||
assert_nil new_file.last_revision.dmsf_workflow_assigned_by
|
||||
assert_nil new_file.last_revision.dmsf_workflow_assigned_at
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_by
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
end
|
||||
|
||||
def test_copy_to_filename_with_global_workflow
|
||||
@file1.last_revision.set_workflow(@wf2.id, nil)
|
||||
@file1.last_revision.assign_workflow(@wf2.id)
|
||||
new_file = @file1.copy_to_filename(@project2, nil, 'new_file.txt')
|
||||
assert_equal DmsfWorkflow::STATE_ASSIGNED, new_file.last_revision.workflow
|
||||
assert_equal @wf2.id, new_file.last_revision.dmsf_workflow_id
|
||||
assert_equal User.current.id, new_file.last_revision.dmsf_workflow_assigned_by
|
||||
assert new_file.last_revision.dmsf_workflow_assigned_at
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_by
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
|
||||
def test_copy_to_filename_with_workflow_to_the_same_project
|
||||
@file1.last_revision.set_workflow(@wf1.id, nil)
|
||||
@file1.last_revision.assign_workflow(@wf1.id)
|
||||
new_file = @file1.copy_to_filename(@project1, nil, 'new_file.txt')
|
||||
assert_equal DmsfWorkflow::STATE_ASSIGNED, new_file.last_revision.workflow
|
||||
assert_equal @wf1.id, new_file.last_revision.dmsf_workflow_id
|
||||
assert_equal User.current.id, new_file.last_revision.dmsf_workflow_assigned_by
|
||||
assert new_file.last_revision.dmsf_workflow_assigned_at
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_by
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
|
||||
def test_copy_to_filename_with_workflow_to_other_project
|
||||
@file1.last_revision.set_workflow(@wf1.id, nil)
|
||||
@file1.last_revision.assign_workflow(@wf1.id)
|
||||
new_file = @file1.copy_to_filename(@project2, nil, 'new_file.txt')
|
||||
assert_nil new_file.last_revision.workflow
|
||||
assert_nil new_file.last_revision.dmsf_workflow_id
|
||||
assert_nil new_file.last_revision.dmsf_workflow_assigned_by
|
||||
assert_nil new_file.last_revision.dmsf_workflow_assigned_at
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_by
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
|
||||
def test_copy_to
|
||||
assert_no_difference '@file1.dmsf_file_revisions.count' do
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user