Workflow notification missing #855
This commit is contained in:
parent
dae39dfe27
commit
44981a54d8
@ -72,7 +72,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
end
|
||||
if revision.workflow == DmsfWorkflow::STATE_APPROVED
|
||||
# Just approved
|
||||
recipients = DmsfMailer.get_notify_users(@project, [revision.dmsf_file])
|
||||
recipients = DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true)
|
||||
recipients.each do |user|
|
||||
DmsfMailer.workflow_notification(
|
||||
user,
|
||||
@ -94,7 +94,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
recipients = @dmsf_workflow.participiants
|
||||
recipients.push User.find_by_id revision.dmsf_workflow_assigned_by
|
||||
recipients.uniq!
|
||||
recipients = recipients & DmsfMailer.get_notify_users(@project, [revision.dmsf_file])
|
||||
recipients = recipients & DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true)
|
||||
recipients.each do |user|
|
||||
DmsfMailer.workflow_notification(
|
||||
user,
|
||||
@ -117,7 +117,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
if action.action == DmsfWorkflowStepAction::ACTION_DELEGATE
|
||||
# Delegation
|
||||
delegate = User.find_by_id params[:step_action].to_i / 10
|
||||
if DmsfMailer.get_notify_users(@project).include?(delegate)
|
||||
if DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true).include?(delegate)
|
||||
DmsfMailer.workflow_notification(
|
||||
delegate,
|
||||
@dmsf_workflow,
|
||||
@ -137,7 +137,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
if assignments.first.dmsf_workflow_step.step != action.dmsf_workflow_step_assignment.dmsf_workflow_step.step
|
||||
# Next step
|
||||
assignments.each do |assignment|
|
||||
if assignment.user && DmsfMailer.get_notify_users(@project).include?(assignment.user)
|
||||
if assignment.user && DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true).include?(assignment.user)
|
||||
DmsfMailer.workflow_notification(
|
||||
assignment.user,
|
||||
@dmsf_workflow,
|
||||
@ -148,7 +148,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
end
|
||||
end
|
||||
to = User.find_by_id revision.dmsf_workflow_assigned_by
|
||||
if to && DmsfMailer.get_notify_users(@project).include?(to)
|
||||
if to && DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true).include?(to)
|
||||
DmsfMailer.workflow_notification(
|
||||
to,
|
||||
@dmsf_workflow,
|
||||
@ -161,7 +161,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
recipients = assignments.collect{ |a| a.user }
|
||||
recipients << to if to
|
||||
recipients.uniq!
|
||||
recipients = recipients & DmsfMailer.get_notify_users(@project)
|
||||
recipients = recipients & DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true)
|
||||
unless recipients.empty?
|
||||
to = recipients.collect{ |r| r.name }.first(DMSF_MAX_NOTIFICATION_RECEIVERS_INFO).join(', ')
|
||||
to << ((recipients.count > DMSF_MAX_NOTIFICATION_RECEIVERS_INFO) ? ',...' : '.')
|
||||
|
||||
@ -275,12 +275,10 @@ class DmsfFile < ActiveRecord::Base
|
||||
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
|
||||
wf = last_revision.dmsf_workflow
|
||||
if wf && (wf.project.nil? || (wf.project.id == project.id))
|
||||
new_revision.set_workflow(wf.id, nil)
|
||||
new_revision.assign_workflow(wf.id)
|
||||
end
|
||||
if File.exist? self.last_revision.disk_file
|
||||
FileUtils.cp self.last_revision.disk_file, new_revision.disk_file(false)
|
||||
@ -486,16 +484,25 @@ class DmsfFile < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def owner?(user)
|
||||
self.last_revision && (self.last_revision.user == user)
|
||||
last_revision && (last_revision.user == user)
|
||||
end
|
||||
|
||||
def involved?(user)
|
||||
self.dmsf_file_revisions.each do |file_revision|
|
||||
dmsf_file_revisions.each do |file_revision|
|
||||
return true if file_revision.user == user
|
||||
end
|
||||
false
|
||||
end
|
||||
|
||||
def assigned?(user)
|
||||
if last_revision && last_revision.dmsf_workflow
|
||||
last_revision.dmsf_workflow.next_assignments(last_revision.id).each do |assignment|
|
||||
return true if assignment.user == user
|
||||
end
|
||||
end
|
||||
false
|
||||
end
|
||||
|
||||
def custom_value(custom_field)
|
||||
self.last_revision.custom_field_values.each do |cv|
|
||||
if cv.custom_field == custom_field
|
||||
@ -510,7 +517,7 @@ class DmsfFile < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def extension
|
||||
File.extname(self.last_revision.disk_filename).strip.downcase[1..-1] if self.last_revision
|
||||
File.extname(last_revision.disk_filename).strip.downcase[1..-1] if last_revision
|
||||
end
|
||||
|
||||
include ActionView::Helpers::NumberHelper
|
||||
|
||||
@ -86,9 +86,9 @@ class DmsfMailer < Mailer
|
||||
end
|
||||
end
|
||||
|
||||
def self.get_notify_users(project, files = [])
|
||||
def self.get_notify_users(project, files = [], force_notification = false)
|
||||
return [] unless project.active?
|
||||
if files.present?
|
||||
if !force_notification && files.present?
|
||||
notify_files = files.select { |file| file.notify? }
|
||||
return [] if notify_files.empty?
|
||||
end
|
||||
@ -106,21 +106,30 @@ class DmsfMailer < Mailer
|
||||
when 'only_my_events'
|
||||
author = false
|
||||
files.each do |file|
|
||||
if file.involved?(notify_user)
|
||||
if file.involved?(notify_user) || file.assignee?(notify_user)
|
||||
author = true
|
||||
break
|
||||
end
|
||||
end
|
||||
author
|
||||
when 'only_owner', 'only_assigned'
|
||||
author = false
|
||||
when 'only_owner'
|
||||
owner = false
|
||||
files.each do |file|
|
||||
if file.owner?(notify_user)
|
||||
author = true
|
||||
owner = true
|
||||
break
|
||||
end
|
||||
end
|
||||
author
|
||||
owner
|
||||
when 'only_assigned'
|
||||
assignee = false
|
||||
files.each do |file|
|
||||
if file.assigned?(notify_user)
|
||||
assignee = true
|
||||
break
|
||||
end
|
||||
end
|
||||
assignee
|
||||
else
|
||||
false
|
||||
end
|
||||
|
||||
@ -221,7 +221,7 @@ class DmsfWorkflow < ActiveRecord::Base
|
||||
assignments = self.next_assignments revision.id
|
||||
recipients = assignments.collect{ |a| a.user }
|
||||
recipients.uniq!
|
||||
recipients = recipients & DmsfMailer.get_notify_users(project)
|
||||
recipients = recipients & DmsfMailer.get_notify_users(project, [revision.dmsf_file], true)
|
||||
recipients.each do |user|
|
||||
DmsfMailer.workflow_notification(
|
||||
user,
|
||||
|
||||
@ -149,7 +149,7 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
assert_equal 0, @file4.referenced_links.count
|
||||
@file4.dmsf_folder.lock!
|
||||
end
|
||||
|
||||
|
||||
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')
|
||||
@ -202,7 +202,7 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
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
|
||||
new_file = @file1.copy_to(@file1.project, @folder1)
|
||||
@ -285,4 +285,27 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = setting
|
||||
end
|
||||
|
||||
def test_owner
|
||||
assert @file1.owner?(@file1.last_revision.user)
|
||||
assert !@file1.owner?(@jsmith)
|
||||
@file1.last_revision.user = @jsmith
|
||||
assert @file1.owner?(@jsmith)
|
||||
end
|
||||
|
||||
def test_involved
|
||||
assert @file1.involved?(@file1.last_revision.user)
|
||||
assert !@file1.involved?(@jsmith)
|
||||
@file1.dmsf_file_revisions[1].user = @jsmith
|
||||
assert @file1.involved?(@jsmith)
|
||||
end
|
||||
|
||||
def test_assigned
|
||||
assert !@file1.assigned?(@admin)
|
||||
assert !@file1.assigned?(@jsmith)
|
||||
@file1.last_revision.set_workflow(@wf1.id, nil)
|
||||
@file1.last_revision.assign_workflow(@wf1.id)
|
||||
assert @file1.assigned?(@admin)
|
||||
assert @file1.assigned?(@jsmith)
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user