##// END OF EJS Templates
added a condition on project -> members association so that only active users are considered as members...
Jean-Philippe Lang -
r113:718de6c7fd2c
parent child
Show More
@@ -1,61 +1,61
1 1 # redMine - project management software
2 2 # Copyright (C) 2006 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 class Project < ActiveRecord::Base
19 19 has_many :versions, :dependent => true, :order => "versions.effective_date DESC, versions.name DESC"
20 has_many :members, :dependent => true
20 has_many :members, :dependent => true, :include => :user, :conditions => "users.status=#{User::STATUS_ACTIVE}"
21 21 has_many :users, :through => :members
22 22 has_many :custom_values, :dependent => true, :as => :customized
23 23 has_many :issues, :dependent => true, :order => "issues.created_on DESC", :include => [:status, :tracker]
24 24 has_many :queries, :dependent => true
25 25 has_many :documents, :dependent => true
26 26 has_many :news, :dependent => true, :include => :author
27 27 has_many :issue_categories, :dependent => true, :order => "issue_categories.name"
28 28 has_one :repository, :dependent => true
29 29 has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => 'custom_fields_projects', :association_foreign_key => 'custom_field_id'
30 30 acts_as_tree :order => "name", :counter_cache => true
31 31
32 32 validates_presence_of :name, :description
33 33 validates_uniqueness_of :name
34 34 validates_associated :custom_values, :on => :update
35 35 validates_associated :repository
36 36 validates_format_of :name, :with => /^[\w\s\'\-]*$/i
37 37
38 38 # returns 5 last created projects
39 39 def self.latest
40 40 find(:all, :limit => 5, :order => "created_on DESC")
41 41 end
42 42
43 43 # Returns an array of all custom fields enabled for project issues
44 44 # (explictly associated custom fields and custom fields enabled for all projects)
45 45 def custom_fields_for_issues(tracker)
46 46 tracker.custom_fields.find(:all, :include => :projects,
47 47 :conditions => ["is_for_all=? or project_id=?", true, self.id])
48 48 #(CustomField.for_all + custom_fields).uniq
49 49 end
50 50
51 51 def all_custom_fields
52 52 @all_custom_fields ||= IssueCustomField.find(:all, :include => :projects,
53 53 :conditions => ["is_for_all=? or project_id=?", true, self.id])
54 54 end
55 55
56 56 protected
57 57 def validate
58 58 errors.add(parent_id, " must be a root project") if parent and parent.parent
59 59 errors.add_to_base("A project with subprojects can't be a subproject") if parent and projects_count > 0
60 60 end
61 61 end
General Comments 0
You need to be logged in to leave comments. Login now