##// END OF EJS Templates
Recalculate inherited attributes on parents when a child is moved under a new parent. #5524...
Eric Davis -
r3707:c6201ae15b4f
parent child
Show More
@@ -629,6 +629,7 class Issue < ActiveRecord::Base
629 629 end
630 630 reload
631 631 elsif parent_issue_id != parent_id
632 former_parent_id = parent_id
632 633 # moving an existing issue
633 634 if @parent_issue && @parent_issue.root_id == root_id
634 635 # inside the same tree
@@ -658,12 +659,18 class Issue < ActiveRecord::Base
658 659 relation.destroy unless relation.valid?
659 660 end
660 661 end
662 # update former parent
663 recalculate_attributes_for(former_parent_id) if former_parent_id
661 664 end
662 665 remove_instance_variable(:@parent_issue) if instance_variable_defined?(:@parent_issue)
663 666 end
664 667
665 668 def update_parent_attributes
666 if parent_id && p = Issue.find_by_id(parent_id)
669 recalculate_attributes_for(parent_id) if parent_id
670 end
671
672 def recalculate_attributes_for(issue_id)
673 if issue_id && p = Issue.find_by_id(issue_id)
667 674 # priority = highest priority of children
668 675 if priority_position = p.children.maximum("#{IssuePriority.table_name}.position", :include => :priority)
669 676 p.priority = IssuePriority.find_by_position(priority_position)
@@ -273,6 +273,15 class IssueNestedSetTest < ActiveSupport::TestCase
273 273 assert_equal 12, parent.reload.estimated_hours
274 274 end
275 275
276 def test_move_parent_updates_old_parent_attributes
277 first_parent = create_issue!
278 second_parent = create_issue!
279 child = create_issue!(:estimated_hours => 5, :parent_issue_id => first_parent.id)
280 assert_equal 5, first_parent.reload.estimated_hours
281 child.update_attributes(:estimated_hours => 7, :parent_issue_id => second_parent.id)
282 assert_equal 7, second_parent.reload.estimated_hours
283 assert_nil first_parent.reload.estimated_hours
284 end
276 285
277 286 def test_reschuling_a_parent_should_reschedule_subtasks
278 287 parent = create_issue!
General Comments 0
You need to be logged in to leave comments. Login now