summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2017-06-03 08:04:13 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2017-06-03 08:04:13 +0000
commit44c748f968f6a82e6dab444e6b9127f5a342f0e2 (patch)
tree1b10207d8d1198cf6cb2d6f731d14ca5a824e02d /app
parentf6defca16de748d8481dd857b31322eec0162b20 (diff)
downloadredmine-44c748f968f6a82e6dab444e6b9127f5a342f0e2.tar.gz
redmine-44c748f968f6a82e6dab444e6b9127f5a342f0e2.zip
Use regular instance methods instead of association extensions.
Rails 5.1 seems to mess things up in this particular case (role.workflow_rules.copy calls the extension declare in Tracker model). git-svn-id: http://svn.redmine.org/redmine/trunk@16597 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/roles_controller.rb2
-rw-r--r--app/controllers/trackers_controller.rb2
-rw-r--r--app/models/role.rb7
-rw-r--r--app/models/tracker.rb8
-rw-r--r--app/models/workflow_rule.rb2
5 files changed, 15 insertions, 6 deletions
diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb
index d134e1f67..6071e767b 100644
--- a/app/controllers/roles_controller.rb
+++ b/app/controllers/roles_controller.rb
@@ -60,7 +60,7 @@ class RolesController < ApplicationController
if request.post? && @role.save
# workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Role.find_by_id(params[:copy_workflow_from]))
- @role.workflow_rules.copy(copy_from)
+ @role.copy_workflow_rules(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to roles_path
diff --git a/app/controllers/trackers_controller.rb b/app/controllers/trackers_controller.rb
index 5bae880d1..c624133a7 100644
--- a/app/controllers/trackers_controller.rb
+++ b/app/controllers/trackers_controller.rb
@@ -44,7 +44,7 @@ class TrackersController < ApplicationController
if @tracker.save
# workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Tracker.find_by_id(params[:copy_workflow_from]))
- @tracker.workflow_rules.copy(copy_from)
+ @tracker.copy_workflow_rules(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to trackers_path
diff --git a/app/models/role.rb b/app/models/role.rb
index 8f72b6c52..b5be74179 100644
--- a/app/models/role.rb
+++ b/app/models/role.rb
@@ -61,7 +61,8 @@ class Role < ActiveRecord::Base
before_destroy :check_deletable
has_many :workflow_rules, :dependent => :delete_all do
def copy(source_role)
- WorkflowRule.copy(nil, source_role, nil, proxy_association.owner)
+ ActiveSupport::Deprecation.warn "role.workflow_rules.copy is deprecated and will be removed in Redmine 4.0, use role.copy_worflow_rules instead"
+ proxy_association.owner.copy_workflow_rules(source_role)
end
end
has_and_belongs_to_many :custom_fields, :join_table => "#{table_name_prefix}custom_fields_roles#{table_name_suffix}", :foreign_key => "role_id"
@@ -261,6 +262,10 @@ class Role < ActiveRecord::Base
self
end
+ def copy_workflow_rules(source_role)
+ WorkflowRule.copy(nil, source_role, nil, self)
+ end
+
# Find all the roles that can be given to a project member
def self.find_all_givable
Role.givable.to_a
diff --git a/app/models/tracker.rb b/app/models/tracker.rb
index 9c19111b1..4004e80d2 100644
--- a/app/models/tracker.rb
+++ b/app/models/tracker.rb
@@ -29,10 +29,10 @@ class Tracker < ActiveRecord::Base
has_many :issues
has_many :workflow_rules, :dependent => :delete_all do
def copy(source_tracker)
- WorkflowRule.copy(source_tracker, nil, proxy_association.owner, nil)
+ ActiveSupport::Deprecation.warn "tracker.workflow_rules.copy is deprecated and will be removed in Redmine 4.0, use tracker.copy_worflow_rules instead"
+ proxy_association.owner.copy_workflow_rules(source_tracker)
end
end
-
has_and_belongs_to_many :projects
has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_trackers#{table_name_suffix}", :association_foreign_key => 'custom_field_id'
acts_as_positioned
@@ -121,6 +121,10 @@ class Tracker < ActiveRecord::Base
core_fields
end
+ def copy_workflow_rules(source_tracker)
+ WorkflowRule.copy(source_tracker, nil, self, nil)
+ end
+
# Returns the fields that are disabled for all the given trackers
def self.disabled_core_fields(trackers)
if trackers.present?
diff --git a/app/models/workflow_rule.rb b/app/models/workflow_rule.rb
index da7a91f43..d6df726f7 100644
--- a/app/models/workflow_rule.rb
+++ b/app/models/workflow_rule.rb
@@ -29,7 +29,7 @@ class WorkflowRule < ActiveRecord::Base
# Copies workflows from source to targets
def self.copy(source_tracker, source_role, target_trackers, target_roles)
unless source_tracker.is_a?(Tracker) || source_role.is_a?(Role)
- raise ArgumentError.new("source_tracker or source_role must be specified")
+ raise ArgumentError.new("source_tracker or source_role must be specified, given: #{source_tracker.class.name} and #{source_role.class.name}")
end
target_trackers = [target_trackers].flatten.compact