Name convention of foreign keys columns
This commit is contained in:
parent
b3ea5f49fb
commit
306ad159a7
@ -90,7 +90,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
else
|
||||
# Just rejected
|
||||
recipients = @dmsf_workflow.participiants
|
||||
recipients.push User.find_by(id: revision.dmsf_workflow_assigned_by)
|
||||
recipients.push revision.dmsf_workflow_assigned_by_user
|
||||
recipients.uniq!
|
||||
recipients = recipients & DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true)
|
||||
DmsfMailer.deliver_workflow_notification(
|
||||
@ -143,7 +143,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
:text_email_to_proceed)
|
||||
end
|
||||
end
|
||||
to = User.find_by(id: revision.dmsf_workflow_assigned_by)
|
||||
to = revision.dmsf_workflow_assigned_by_user
|
||||
if to && DmsfMailer.get_notify_users(@project, [revision.dmsf_file], true).include?(to)
|
||||
DmsfMailer.deliver_workflow_notification(
|
||||
[to],
|
||||
|
||||
@ -265,9 +265,9 @@ class DmsfFile < ActiveRecord::Base
|
||||
# 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_by_user_id = nil
|
||||
new_revision.dmsf_workflow_assigned_at = nil
|
||||
new_revision.dmsf_workflow_started_by = nil
|
||||
new_revision.dmsf_workflow_started_by_user_id = nil
|
||||
new_revision.dmsf_workflow_started_at = nil
|
||||
wf = last_revision.dmsf_workflow
|
||||
if wf && (wf.project.nil? || (wf.project.id == project.id))
|
||||
|
||||
@ -24,12 +24,14 @@ require 'digest'
|
||||
class DmsfFileRevision < ActiveRecord::Base
|
||||
|
||||
belongs_to :dmsf_file
|
||||
belongs_to :source_revision, :class_name => 'DmsfFileRevision', :foreign_key => 'source_dmsf_file_revision_id'
|
||||
belongs_to :source_revision, class_name: 'DmsfFileRevision', foreign_key: 'source_dmsf_file_revision_id'
|
||||
belongs_to :user
|
||||
belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id'
|
||||
belongs_to :deleted_by_user, class_name: 'User', foreign_key: 'deleted_by_user_id'
|
||||
belongs_to :dmsf_workflow_started_by_user, class_name: 'User', foreign_key: 'dmsf_workflow_started_by_user_id'
|
||||
belongs_to :dmsf_workflow_assigned_by_user, class_name: 'User', foreign_key: 'dmsf_workflow_assigned_by_user_id'
|
||||
belongs_to :dmsf_workflow
|
||||
has_many :dmsf_file_revision_access, :dependent => :destroy
|
||||
has_many :dmsf_workflow_step_assignment, :dependent => :destroy
|
||||
has_many :dmsf_file_revision_access, dependent: :destroy
|
||||
has_many :dmsf_workflow_step_assignment, dependent: :destroy
|
||||
|
||||
STATUS_DELETED = 1
|
||||
STATUS_ACTIVE = 0
|
||||
@ -248,11 +250,11 @@ class DmsfFileRevision < ActiveRecord::Base
|
||||
self.dmsf_workflow_id = dmsf_workflow_id
|
||||
if commit == 'start'
|
||||
self.workflow = DmsfWorkflow::STATE_WAITING_FOR_APPROVAL
|
||||
self.dmsf_workflow_started_by = User.current.id if User.current
|
||||
self.dmsf_workflow_started_by_user = User.current
|
||||
self.dmsf_workflow_started_at = DateTime.current
|
||||
else
|
||||
self.workflow = DmsfWorkflow::STATE_ASSIGNED
|
||||
self.dmsf_workflow_assigned_by = User.current.id if User.current
|
||||
self.dmsf_workflow_assigned_by_user = User.current
|
||||
self.dmsf_workflow_assigned_at = DateTime.current
|
||||
end
|
||||
end
|
||||
|
||||
@ -110,7 +110,7 @@ class DmsfMailer < Mailer
|
||||
@text1 = l(text1_id, :name => workflow.name, :filename => revision.dmsf_file.name, :notice => notice)
|
||||
@text2 = l(text2_id)
|
||||
@notice = notice
|
||||
@author = User.find_by(id: revision.dmsf_workflow_assigned_by)
|
||||
@author = revision.dmsf_workflow_assigned_by_user
|
||||
@author = User.anonymous unless @author
|
||||
mail :to => user.mail,
|
||||
:subject => "[#{@project.name} - #{l(:field_label_dmsf_workflow)}] #{@workflow.name} #{l(subject_id)}"
|
||||
|
||||
@ -24,9 +24,9 @@ api.dmsf_file do
|
||||
api.created_at r.created_at
|
||||
api.updated_at r.updated_at
|
||||
api.dmsf_workflow_id r.dmsf_workflow_id
|
||||
api.dmsf_workflow_assigned_by r.dmsf_workflow_assigned_by
|
||||
api.dmsf_workflow_assigned_by_user_id r.dmsf_workflow_assigned_by_user_id
|
||||
api.dmsf_workflow_assigned_at r.dmsf_workflow_assigned_at
|
||||
api.dmsf_workflow_started_by r.dmsf_workflow_started_by
|
||||
api.dmsf_workflow_started_by_user_id r.dmsf_workflow_started_by_user_id
|
||||
api.dmsf_workflow_started_at r.dmsf_workflow_started_at
|
||||
api.digest r.digest
|
||||
end
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
<span class="icon-only"></span>
|
||||
<% end %>
|
||||
<% when DmsfWorkflow::STATE_ASSIGNED %>
|
||||
<% if User.current && (file.last_revision.dmsf_workflow_assigned_by == User.current.id) && wf %>
|
||||
<% if User.current && (file.last_revision.dmsf_workflow_assigned_by_user == User.current) && wf %>
|
||||
<%= link_to('',
|
||||
start_dmsf_workflow_path(
|
||||
:id => file.last_revision.dmsf_workflow_id,
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
<tr id="step-1" class="odd">
|
||||
<td class="id"></td>
|
||||
<td></td>
|
||||
<td><%= link_to_user User.find_by(id: revision.dmsf_workflow_assigned_by) if revision.dmsf_workflow_assigned_by %></td>
|
||||
<td><%= link_to_user revision.dmsf_workflow_assigned_by_user if revision.dmsf_workflow_assigned_by_user %></td>
|
||||
<td><%= DmsfWorkflowStepAction.action_str(DmsfWorkflowStepAction::ACTION_ASSIGN) %></td>
|
||||
<td><%= DmsfWorkflowStepAction.workflow_str(DmsfWorkflowStepAction::ACTION_ASSIGN) %></td>
|
||||
<td class="dmsf_note"></td>
|
||||
@ -72,9 +72,9 @@
|
||||
<tr id="step-2" class="even">
|
||||
<td class="id"></td>
|
||||
<td></td>
|
||||
<td><%= link_to_user User.find_by(id: revision.dmsf_workflow_started_by) if revision.dmsf_workflow_started_by %></td>
|
||||
<td><%= link_to_user revision.dmsf_workflow_started_by_user if revision.dmsf_workflow_started_by_user %></td>
|
||||
<td><%= DmsfWorkflowStepAction.action_str(DmsfWorkflowStepAction::ACTION_START) %></td>
|
||||
<td><%= DmsfWorkflowStepAction.workflow_str(DmsfWorkflowStepAction::ACTION_START) if revision.dmsf_workflow_started_by %></td>
|
||||
<td><%= DmsfWorkflowStepAction.workflow_str(DmsfWorkflowStepAction::ACTION_START) if revision.dmsf_workflow_started_by_user %></td>
|
||||
<td class="dmsf_note"></td>
|
||||
<td><%= format_time(revision.dmsf_workflow_started_at) if revision.dmsf_workflow_started_at %></td>
|
||||
</tr>
|
||||
|
||||
30
db/migrate/20192703123101_workflow_started_by.rb
Normal file
30
db/migrate/20192703123101_workflow_started_by.rb
Normal file
@ -0,0 +1,30 @@
|
||||
# encoding: utf-8
|
||||
#
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright © 2011-19 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
class WorkflowStartedBy < ActiveRecord::Migration[5.2]
|
||||
|
||||
def change
|
||||
rename_column :dmsf_file_revisions, :dmsf_workflow_assigned_by,
|
||||
:dmsf_workflow_assigned_by_user_id
|
||||
rename_column :dmsf_file_revisions, :dmsf_workflow_started_by,
|
||||
:dmsf_workflow_started_by_user_id
|
||||
end
|
||||
|
||||
end
|
||||
@ -34,19 +34,24 @@ module RedmineDmsf
|
||||
def remove_dmsf_references
|
||||
return if self.id.nil?
|
||||
substitute = User.anonymous
|
||||
DmsfFileRevisionAccess.where(:user_id => id).update_all(:user_id => substitute.id)
|
||||
DmsfFileRevision.where(:user_id => id).update_all(:user_id => substitute.id)
|
||||
DmsfFile.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
|
||||
DmsfFolder.where(:user_id => id).update_all(:user_id => substitute.id)
|
||||
DmsfFolder.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
|
||||
DmsfLink.where(:user_id => id).update_all(:user_id => substitute.id)
|
||||
DmsfLink.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
|
||||
DmsfLock.where(:user_id => id).delete_all
|
||||
DmsfWorkflowStepAction.where(:author_id => id).update_all(:author_id => substitute.id)
|
||||
DmsfWorkflowStepAssignment.where(:user_id => id).update_all(:user_id => substitute.id)
|
||||
DmsfWorkflowStep.where(:user_id => id).update_all(:user_id => substitute.id)
|
||||
DmsfWorkflow.where(:author_id => id).update_all(:author_id => substitute.id)
|
||||
DmsfFolderPermission.where(:object_id => id, :object_type => 'User').update_all(:object_id => substitute.id)
|
||||
DmsfFileRevisionAccess.where(user_id: id).update_all(user_id: substitute.id)
|
||||
DmsfFileRevision.where(user_id: id).update_all(user_id: substitute.id)
|
||||
DmsfFileRevision.where(dmsf_workflow_assigned_by_user_id: id).update_all(
|
||||
dmsf_workflow_assigned_by_user_id: substitute.id)
|
||||
DmsfFileRevision.where(dmsf_workflow_started_by_user_id: id).update_all(
|
||||
dmsf_workflow_started_by_user_id: substitute.id)
|
||||
DmsfFileRevision.where(user_id: id).update_all(user_id: substitute.id)
|
||||
DmsfFile.where(deleted_by_user_id: id).update_all(deleted_by_user_id: substitute.id)
|
||||
DmsfFolder.where(user_id: id).update_all(user_id: substitute.id)
|
||||
DmsfFolder.where(deleted_by_user_id: id).update_all(deleted_by_user_id: substitute.id)
|
||||
DmsfLink.where(user_id: id).update_all(user_id: substitute.id)
|
||||
DmsfLink.where(deleted_by_user_id: id).update_all(deleted_by_user_id: substitute.id)
|
||||
DmsfLock.where(user_id: id).delete_all
|
||||
DmsfWorkflowStepAction.where(author_id: id).update_all(author_id: substitute.id)
|
||||
DmsfWorkflowStepAssignment.where(user_id: id).update_all(user_id: substitute.id)
|
||||
DmsfWorkflowStep.where(user_id: id).update_all(user_id: substitute.id)
|
||||
DmsfWorkflow.where(author_id: id).update_all(author_id: substitute.id)
|
||||
DmsfFolderPermission.where(object_id: id, object_type: 'User').update_all(object_id: substitute.id)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
38
test/fixtures/dmsf_file_revisions.yml
vendored
38
test/fixtures/dmsf_file_revisions.yml
vendored
@ -16,8 +16,8 @@ dmsf_file_revisions_001:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: 1
|
||||
dmsf_workflow_started_by: 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
|
||||
|
||||
@ -39,8 +39,8 @@ dmsf_file_revisions_002:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: 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: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_004:
|
||||
@ -82,8 +82,8 @@ dmsf_file_revisions_004:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_005:
|
||||
@ -103,8 +103,8 @@ dmsf_file_revisions_005:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
created_at: 2017-04-18 14:52:28 +02:00
|
||||
|
||||
dmsf_file_revisions_006:
|
||||
@ -124,8 +124,8 @@ dmsf_file_revisions_006:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_007:
|
||||
@ -145,8 +145,8 @@ dmsf_file_revisions_007:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_008:
|
||||
@ -166,8 +166,8 @@ dmsf_file_revisions_008:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_009:
|
||||
@ -187,8 +187,6 @@ dmsf_file_revisions_009:
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by: NULL
|
||||
dmsf_workflow_started_by: NULL
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
|
||||
|
||||
@ -87,9 +87,9 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
|
||||
# <created_at>2017-04-18T12:52:28Z</created_at>
|
||||
# <updated_at>2019-01-15T15:56:15Z</updated_at>
|
||||
# <dmsf_workflow_id/>
|
||||
# <dmsf_workflow_assigned_by/>
|
||||
# <dmsf_workflow_assigned_by_user_id/>
|
||||
# <dmsf_workflow_assigned_at/>
|
||||
# <dmsf_workflow_started_by/>
|
||||
# <dmsf_workflow_started_by_user_id/>
|
||||
# <dmsf_workflow_started_at/>
|
||||
# <digest></digest>
|
||||
# </dmsf_file_revision>
|
||||
@ -109,9 +109,9 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
|
||||
# <created_at>2017-04-18T12:52:27Z</created_at>
|
||||
# <updated_at>2019-01-15T15:56:15Z</updated_at>
|
||||
# <dmsf_workflow_id/>
|
||||
# <dmsf_workflow_assigned_by>1</dmsf_workflow_assigned_by>
|
||||
# <dmsf_workflow_assigned_by_user_id>1</dmsf_workflow_assigned_by_user_id>
|
||||
# <dmsf_workflow_assigned_at/>
|
||||
# <dmsf_workflow_started_by>1</dmsf_workflow_started_by>
|
||||
# <dmsf_workflow_started_by_user_id>1</dmsf_workflow_started_by_user_id>
|
||||
# <dmsf_workflow_started_at/>
|
||||
# <digest>81dc9bdb52d04dc20036dbd8313ed055</digest>
|
||||
# </dmsf_file_revision>
|
||||
|
||||
@ -161,9 +161,9 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
assert_equal new_file.dmsf_file_revisions.all.size, 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_by_user_id
|
||||
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_by_user_id
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
end
|
||||
@ -174,9 +174,9 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
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_equal User.current, new_file.last_revision.dmsf_workflow_assigned_by_user
|
||||
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_by_user_id
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
|
||||
@ -186,9 +186,9 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
new_file = @file7.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_equal User.current, new_file.last_revision.dmsf_workflow_assigned_by_user
|
||||
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_by_user_id
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
|
||||
@ -198,9 +198,9 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
new_file = @file7.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_by_user_id
|
||||
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_by_user_id
|
||||
assert_nil new_file.last_revision.dmsf_workflow_started_at
|
||||
end
|
||||
|
||||
|
||||
@ -36,6 +36,8 @@ class UserPatchTest < RedmineDmsf::Test::UnitTest
|
||||
@user2.destroy
|
||||
assert_equal 0, DmsfFileRevisionAccess.where(user_id: id).all.size
|
||||
assert_equal 0, DmsfFileRevision.where(user_id: id).all.size
|
||||
assert_equal 0, DmsfFileRevision.where(dmsf_workflow_assigned_by_user_id: id).all.size
|
||||
assert_equal 0, DmsfFileRevision.where(dmsf_workflow_started_by_user_id: id).all.size
|
||||
assert_equal 0, DmsfFile.where(deleted_by_user_id: id).all.size
|
||||
assert_equal 0, DmsfFolder.where(user_id: id).all.size
|
||||
assert_equal 0, DmsfFolder.where(deleted_by_user_id: id).all.size
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user