diff app/models/group.rb @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents 8661b858af72
children 433d4f72a19b
line wrap: on
line diff
--- a/app/models/group.rb	Fri Feb 24 18:36:29 2012 +0000
+++ b/app/models/group.rb	Fri Feb 24 19:09:32 2012 +0000
@@ -1,16 +1,16 @@
 # Redmine - project management software
-# Copyright (C) 2006-2009  Jean-Philippe Lang
+# Copyright (C) 2006-2011  Jean-Philippe Lang
 #
 # 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.
@@ -18,17 +18,21 @@
 class Group < Principal
   has_and_belongs_to_many :users, :after_add => :user_added,
                                   :after_remove => :user_removed
-  
+
   acts_as_customizable
-  
+
   validates_presence_of :lastname
   validates_uniqueness_of :lastname, :case_sensitive => false
   validates_length_of :lastname, :maximum => 30
-    
+
+  before_destroy :remove_references_before_destroy
+
   def to_s
     lastname.to_s
   end
-  
+
+  alias :name :to_s
+
   def user_added(user)
     members.each do |member|
       next if member.project.nil?
@@ -39,11 +43,28 @@
       user_member.save!
     end
   end
-  
+
   def user_removed(user)
     members.each do |member|
       MemberRole.find(:all, :include => :member,
                             :conditions => ["#{Member.table_name}.user_id = ? AND #{MemberRole.table_name}.inherited_from IN (?)", user.id, member.member_role_ids]).each(&:destroy)
     end
   end
+
+  def self.human_attribute_name(attribute_key_name)
+    attr_name = attribute_key_name
+    if attr_name == 'lastname'
+      attr_name = "name"
+    end
+    super(attr_name)
+  end
+
+  private
+
+  # Removes references that are not handled by associations
+  def remove_references_before_destroy
+    return if self.id.nil?
+
+    Issue.update_all 'assigned_to_id = NULL', ['assigned_to_id = ?', id]
+  end
 end