mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-22 19:42:29 +00:00
Use scope assignable_watchers (#4511).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@19726 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
b270a38928
commit
ee46c3570e
@ -43,7 +43,7 @@ class WatchersController < ApplicationController
|
||||
user_ids << params[:user_id]
|
||||
end
|
||||
user_ids = user_ids.flatten.compact.uniq
|
||||
users = Principal.active.visible.where(:id => user_ids).where(:users => {:type => ['User', 'Group']}).to_a
|
||||
users = Principal.assignable_watchers.where(:id => user_ids).to_a
|
||||
users.each do |user|
|
||||
@watchables.each do |watchable|
|
||||
Watcher.create(:watchable => watchable, :user => user)
|
||||
@ -59,7 +59,7 @@ class WatchersController < ApplicationController
|
||||
def append
|
||||
if params[:watcher]
|
||||
user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]]
|
||||
@users = Principal.active.visible.where(:id => user_ids).where(:users => {:type => ['User', 'Group']}).to_a
|
||||
@users = Principal.assignable_watchers.where(:id => user_ids).to_a
|
||||
end
|
||||
if @users.blank?
|
||||
head 200
|
||||
@ -122,11 +122,11 @@ class WatchersController < ApplicationController
|
||||
def users_for_new_watcher
|
||||
scope = nil
|
||||
if params[:q].blank? && @project.present?
|
||||
scope = @project.principals.where(:users => {:type => ['User', 'Group']})
|
||||
scope = @project.principals.assignable_watchers
|
||||
else
|
||||
scope = Principal.where(:users => {:type => ['User', 'Group']}).limit(100)
|
||||
scope = Principal.assignable_watchers.limit(100)
|
||||
end
|
||||
users = scope.active.visible.sorted.like(params[:q]).to_a
|
||||
users = scope.sorted.like(params[:q]).to_a
|
||||
if @watchables && @watchables.size == 1
|
||||
users -= @watchables.first.watcher_users
|
||||
end
|
||||
|
||||
@ -365,9 +365,9 @@ module IssuesHelper
|
||||
# on the new issue form
|
||||
def users_for_new_issue_watchers(issue)
|
||||
users = issue.watcher_users.select{|u| u.status == User::STATUS_ACTIVE}
|
||||
project_principals = issue.project.principals.where(:users => {:type => ['User', 'Group']}).limit(21)
|
||||
if project_principals.size <= 20
|
||||
users += project_principals.sort
|
||||
assignable_watchers = issue.project.principals.assignable_watchers.limit(21)
|
||||
if assignable_watchers.size <= 20
|
||||
users += assignable_watchers.sort
|
||||
end
|
||||
users.uniq
|
||||
end
|
||||
|
||||
@ -114,6 +114,9 @@ class Principal < ActiveRecord::Base
|
||||
}
|
||||
scope :sorted, lambda { order(*Principal.fields_for_order_statement)}
|
||||
|
||||
# Principals that can be added as watchers
|
||||
scope :assignable_watchers, lambda { active.visible.where(:type => ['User', 'Group']) }
|
||||
|
||||
before_create :set_default_empty_values
|
||||
before_destroy :nullify_projects_default_assigned_to
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ module Redmine
|
||||
|
||||
# Returns an array of users that are proposed as watchers
|
||||
def addable_watcher_users
|
||||
users = self.project.principals.where(:users => {:type => ['User', 'Group']}).sort - self.watcher_users
|
||||
users = self.project.principals.assignable_watchers.sort - self.watcher_users
|
||||
if respond_to?(:visible?)
|
||||
users.reject! {|user| user.is_a?(User) && !visible?(user)}
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user