Various code cleaning, mainly on User, Permission and IssueStatus models.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@414 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -36,12 +36,19 @@ class IssueStatus < ActiveRecord::Base
|
||||
end
|
||||
|
||||
# Returns an array of all statuses the given role can switch to
|
||||
# Uses association cache when called more than one time
|
||||
def new_statuses_allowed_to(role, tracker)
|
||||
statuses = []
|
||||
for workflow in self.workflows
|
||||
statuses << workflow.new_status if workflow.role_id == role.id and workflow.tracker_id == tracker.id
|
||||
end unless role.nil? or tracker.nil?
|
||||
statuses
|
||||
new_statuses = [self] + workflows.select {|w| w.role_id == role.id && w.tracker_id == tracker.id}.collect{|w| w.new_status}
|
||||
new_statuses.sort{|x, y| x.position <=> y.position }
|
||||
end
|
||||
|
||||
# Same thing as above but uses a database query
|
||||
# More efficient than the previous method if called just once
|
||||
def find_new_statuses_allowed_to(role, tracker)
|
||||
new_statuses = [self] + workflows.find(:all,
|
||||
:include => :new_status,
|
||||
:conditions => ["role_id=? and tracker_id=?", role.id, tracker.id]).collect{ |w| w.new_status }
|
||||
new_statuses.sort{|x, y| x.position <=> y.position }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -57,7 +57,7 @@ class Permission < ActiveRecord::Base
|
||||
find(:all, :include => :roles).each {|p| perms.store "#{p.controller}/#{p.action}", p.roles.collect {|r| r.id } }
|
||||
perms
|
||||
end
|
||||
allowed_to_public(action) or (@@cached_perms_for_roles[action] and @@cached_perms_for_roles[action].include? role)
|
||||
allowed_to_public(action) or (role && @@cached_perms_for_roles[action] && @@cached_perms_for_roles[action].include?(role.id))
|
||||
end
|
||||
|
||||
def self.allowed_to_role_expired
|
||||
|
||||
+2
-8
@@ -124,14 +124,8 @@ class User < ActiveRecord::Base
|
||||
User.hash_password(clear_password) == self.hashed_password
|
||||
end
|
||||
|
||||
def role_for_project(project_id)
|
||||
@role_for_projects ||=
|
||||
begin
|
||||
roles = {}
|
||||
self.memberships.each { |m| roles.store m.project_id, m.role_id }
|
||||
roles
|
||||
end
|
||||
@role_for_projects[project_id]
|
||||
def role_for_project(project)
|
||||
memberships.detect {|m| m.project_id == project.id}
|
||||
end
|
||||
|
||||
def pref
|
||||
|
||||
Reference in New Issue
Block a user