summaryrefslogtreecommitdiffstats
path: root/app/models/query.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2011-07-06 16:57:04 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2011-07-06 16:57:04 +0000
commitd48ea908761d6489640e39667034d6e43524aaa7 (patch)
tree953e0de7e90342502f236fb701d27eb9d8edd353 /app/models/query.rb
parentda69f086e7e0f1cfafc808d0d1174160dc1aa4a9 (diff)
downloadredmine-d48ea908761d6489640e39667034d6e43524aaa7.tar.gz
redmine-d48ea908761d6489640e39667034d6e43524aaa7.zip
Makes custom queries available through the REST API (#5737).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6186 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/query.rb')
-rw-r--r--app/models/query.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/app/models/query.rb b/app/models/query.rb
index 786751c8c..a6fbe9b94 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -146,6 +146,16 @@ class Query < ActiveRecord::Base
]
cattr_reader :available_columns
+ named_scope :visible, lambda {|*args|
+ user = args.shift || User.current
+ base = Project.allowed_to_condition(user, :view_issues, *args)
+ user_id = user.logged? ? user.id : 0
+ {
+ :conditions => ["(#{table_name}.project_id IS NULL OR (#{base})) AND (#{table_name}.is_public = ? OR #{table_name}.user_id = ?)", true, user_id],
+ :include => :project
+ }
+ }
+
def initialize(attributes = nil)
super attributes
self.filters ||= { 'status_id' => {:operator => "o", :values => [""]} }
@@ -168,7 +178,7 @@ class Query < ActiveRecord::Base
# Returns true if the query is visible to +user+ or the current user.
def visible?(user=User.current)
- self.is_public? || self.user_id == user.id
+ (project.nil? || user.allowed_to?(:view_issues, project)) && (self.is_public? || self.user_id == user.id)
end
def editable_by?(user)