Commit 4b0fb028 authored by Marin Jankovski's avatar Marin Jankovski

Do not load all projects all the time.

parent 70fb26a6
...@@ -24,10 +24,10 @@ class FilteringService ...@@ -24,10 +24,10 @@ class FilteringService
@current_user = current_user @current_user = current_user
@params = params @params = params
items = by_scope items = init_collection
items = by_scope(items)
items = by_state(items) items = by_state(items)
items = by_group(items) items = by_group(items)
items = by_project(items)
items = by_search(items) items = by_search(items)
items = by_milestone(items) items = by_milestone(items)
items = by_assignee(items) items = by_assignee(items)
...@@ -37,24 +37,30 @@ class FilteringService ...@@ -37,24 +37,30 @@ class FilteringService
private private
def by_scope def init_collection
table_name = klass.table_name table_name = klass.table_name
case params[:scope] return klass.of_projects(Project.public_only) unless current_user
when 'created-by-me', 'authored' then
current_user.send(table_name) if project
when 'all' then if current_user.can?(:read_project, project)
if current_user project.send(table_name)
if project && (project.public? || project.internal?)
klass.of_projects(Project.public_or_internal_only(current_user))
else else
klass.of_projects(current_user.authorized_projects.pluck(:id)) []
end end
else else
klass.of_projects(Project.public_only) klass.of_projects(current_user.authorized_projects)
end
end end
def by_scope(items)
case params[:scope]
when 'created-by-me', 'authored' then
klass.where(author_id: current_user.id)
when 'all' then
klass
when 'assigned-to-me' then when 'assigned-to-me' then
current_user.send("assigned_#{table_name}") klass.where(assignee_id: current_user.id)
else else
raise 'You must specify default scope' raise 'You must specify default scope'
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment