##// END OF EJS Templates
Blank content type for attachments attached via Ajax file upload (Patch by Jens Krämer)....
Blank content type for attachments attached via Ajax file upload (Patch by Jens Krämer). git-svn-id: http://svn.redmine.org/redmine/trunk@13125 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r12461:35cc911192e0
r12850:61776a8b7e60
Show More
principal.rb
116 lines | 3.9 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Adds missing native eol properties....
r2781 # Redmine - project management software
Toshi MARUYAMA
update copyright year (#15977)...
r12461 # Copyright (C) 2006-2014 Jean-Philippe Lang
Jean-Philippe Lang
Adds missing native eol properties....
r2781 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from app/models/principal.rb....
r6755 #
Jean-Philippe Lang
Adds missing native eol properties....
r2781 # 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.
Toshi MARUYAMA
remove trailing white-spaces from app/models/principal.rb....
r6755 #
Jean-Philippe Lang
Adds missing native eol properties....
r2781 # 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.
class Principal < ActiveRecord::Base
Jean-Philippe Lang
set_table_name and set_locking_column are deprecated....
r9367 self.table_name = "#{table_name_prefix}users#{table_name_suffix}"
Jean-Philippe Lang
Adds missing native eol properties....
r2781
Jean-Philippe Lang
Moved user status constants to Principal model....
r10731 # Account statuses
STATUS_ANONYMOUS = 0
STATUS_ACTIVE = 1
STATUS_REGISTERED = 2
STATUS_LOCKED = 3
Jean-Philippe Lang
Adds missing native eol properties....
r2781 has_many :members, :foreign_key => 'user_id', :dependent => :destroy
Toshi MARUYAMA
code format cleanup Principal class...
r12189 has_many :memberships, :class_name => 'Member',
:foreign_key => 'user_id',
:include => [:project, :roles],
:conditions => "#{Project.table_name}.status<>#{Project::STATUS_ARCHIVED}",
:order => "#{Project.table_name}.name"
Jean-Philippe Lang
Adds missing native eol properties....
r2781 has_many :projects, :through => :memberships
Jean-Philippe Lang
Ability to assign issues to groups (#2964)....
r6186 has_many :issue_categories, :foreign_key => 'assigned_to_id', :dependent => :nullify
Jean-Philippe Lang
Adds missing native eol properties....
r2781
# Groups and active users
Jean-Philippe Lang
Code cleanup....
r10765 scope :active, lambda { where(:status => STATUS_ACTIVE) }
Toshi MARUYAMA
remove trailing white-spaces from app/models/principal.rb....
r6755
Toshi MARUYAMA
model: replace Rails2 "named_scope" to Rails3 "scope"...
r9355 scope :like, lambda {|q|
Jean-Philippe Lang
Code cleanup....
r10578 q = q.to_s
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755 if q.blank?
Jean-Philippe Lang
Code cleanup....
r10578 where({})
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755 else
pattern = "%#{q}%"
Jean-Philippe Lang
Adds table name to the SQL clause used by Principale.like scope....
r10579 sql = %w(login firstname lastname mail).map {|column| "LOWER(#{table_name}.#{column}) LIKE LOWER(:p)"}.join(" OR ")
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755 params = {:p => pattern}
if q =~ /^(.+)\s+(.+)$/
a, b = "#{$1}%", "#{$2}%"
Jean-Philippe Lang
Adds table name to the SQL clause used by Principale.like scope....
r10579 sql << " OR (LOWER(#{table_name}.firstname) LIKE LOWER(:a) AND LOWER(#{table_name}.lastname) LIKE LOWER(:b))"
sql << " OR (LOWER(#{table_name}.firstname) LIKE LOWER(:b) AND LOWER(#{table_name}.lastname) LIKE LOWER(:a))"
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755 params.merge!(:a => a, :b => b)
end
Jean-Philippe Lang
Code cleanup....
r10578 where(sql, params)
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755 end
Jean-Philippe Lang
Adds missing native eol properties....
r2781 }
Toshi MARUYAMA
remove trailing white-spaces from app/models/principal.rb....
r6755
Jean-Philippe Lang
Adds members of subprojects in assignee and author filters (#10126)....
r8627 # Principals that are members of a collection of projects
Toshi MARUYAMA
model: replace Rails2 "named_scope" to Rails3 "scope"...
r9355 scope :member_of, lambda {|projects|
Jean-Philippe Lang
Fixed that the proposed users list may be empty when adding a project member (#10374)....
r9008 projects = [projects] unless projects.is_a?(Array)
Jean-Philippe Lang
Adds members of subprojects in assignee and author filters (#10126)....
r8627 if projects.empty?
Jean-Philippe Lang
Code cleanup....
r10580 where("1=0")
Jean-Philippe Lang
Adds members of subprojects in assignee and author filters (#10126)....
r8627 else
ids = projects.map(&:id)
Jean-Philippe Lang
Optimizes the SQL query behind Principal#member_of....
r11196 active.uniq.joins(:members).where("#{Member.table_name}.project_id IN (?)", ids)
Jean-Philippe Lang
Adds members of subprojects in assignee and author filters (#10126)....
r8627 end
}
Jean-Philippe Lang
Fixed that the proposed users list may be empty when adding a project member (#10374)....
r9008 # Principals that are not members of projects
Toshi MARUYAMA
model: replace Rails2 "named_scope" to Rails3 "scope"...
r9355 scope :not_member_of, lambda {|projects|
Jean-Philippe Lang
Fixed that the proposed users list may be empty when adding a project member (#10374)....
r9008 projects = [projects] unless projects.is_a?(Array)
if projects.empty?
Jean-Philippe Lang
Code cleanup....
r10580 where("1=0")
Jean-Philippe Lang
Fixed that the proposed users list may be empty when adding a project member (#10374)....
r9008 else
ids = projects.map(&:id)
Jean-Philippe Lang
Code cleanup....
r10580 where("#{Principal.table_name}.id NOT IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids)
Jean-Philippe Lang
Fixed that the proposed users list may be empty when adding a project member (#10374)....
r9008 end
}
Jean-Philippe Lang
Adds "sorted" scope to Principal and User and sort users/groups properly....
r11029 scope :sorted, lambda { order(*Principal.fields_for_order_statement)}
Jean-Philippe Lang
Adds members of subprojects in assignee and author filters (#10126)....
r8627
Jean-Philippe Lang
Fixed: NOT NULL constraint error when adding a group (#4632)....
r3229 before_create :set_default_empty_values
Eric Davis
Define Principal#name so all subclasses will have some sort of name when printed....
r3962
def name(formatter = nil)
to_s
end
Jean-Philippe Lang
Adds missing native eol properties....
r2781 def <=>(principal)
Jean-Philippe Lang
Fixed potential error when sorting members without role (#10053)....
r8743 if principal.nil?
-1
elsif self.class.name == principal.class.name
Jean-Philippe Lang
Display users then groups on project memberships view (#4389)....
r3047 self.to_s.downcase <=> principal.to_s.downcase
else
# groups after users
principal.class.name <=> self.class.name
end
Jean-Philippe Lang
Adds missing native eol properties....
r2781 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/principal.rb....
r6755
Jean-Philippe Lang
Adds "sorted" scope to Principal and User and sort users/groups properly....
r11029 # Returns an array of fields names than can be used to make an order statement for principals.
# Users are sorted before Groups.
# Examples:
def self.fields_for_order_statement(table=nil)
table ||= table_name
columns = ['type DESC'] + (User.name_formatter[:order] - ['id']) + ['lastname', 'id']
columns.uniq.map {|field| "#{table}.#{field}"}
end
Jean-Philippe Lang
Fixed: NOT NULL constraint error when adding a group (#4632)....
r3229 protected
Toshi MARUYAMA
remove trailing white-spaces from app/models/principal.rb....
r6755
Jean-Philippe Lang
Fixed: NOT NULL constraint error when adding a group (#4632)....
r3229 # Make sure we don't try to insert NULL values (see #4632)
def set_default_empty_values
self.login ||= ''
self.hashed_password ||= ''
self.firstname ||= ''
self.lastname ||= ''
self.mail ||= ''
true
end
Jean-Philippe Lang
Adds missing native eol properties....
r2781 end