summaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2011-01-02 11:44:19 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2011-01-02 11:44:19 +0000
commitded234794e8576e9cfd3bb8b0288f0e6fbe3ca5d (patch)
treedb1022ad96ec7bf4676d7487d433e7731eaeb216 /app/models
parent119732c3eeabaf30168f7486d366f2efdd4d84af (diff)
downloadredmine-ded234794e8576e9cfd3bb8b0288f0e6fbe3ca5d.tar.gz
redmine-ded234794e8576e9cfd3bb8b0288f0e6fbe3ca5d.zip
Merged r4615 and r4616 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.1-stable@4617 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models')
-rw-r--r--app/models/project.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 4af77d1d9..891db8b8c 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -740,7 +740,12 @@ class Project < ActiveRecord::Base
# Copies members from +project+
def copy_members(project)
- project.memberships.each do |member|
+ # Copy users first, then groups to handle members with inherited and given roles
+ members_to_copy = []
+ members_to_copy += project.memberships.select {|m| m.principal.is_a?(User)}
+ members_to_copy += project.memberships.select {|m| !m.principal.is_a?(User)}
+
+ members_to_copy.each do |member|
new_member = Member.new
new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on")
# only copy non inherited roles