Skip to content
Snippets Groups Projects
Commit b173ea2b authored by DJ Mountney's avatar DJ Mountney
Browse files

Use the project finder in the todos finder to limit todos to just ones within...

Use the project finder in the todos finder to limit todos to just ones within projects you have access to.
parent 4280575f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -23,7 +23,7 @@ class TodosFinder
end
 
def execute
items = current_user.todos.not_pending_delete
items = current_user.todos
items = by_action_id(items)
items = by_author(items)
items = by_project(items)
Loading
Loading
@@ -78,6 +78,16 @@ class TodosFinder
@project
end
 
def projects
return @projects if defined?(@projects)
if project?
@projects = project
else
@projects = ProjectsFinder.new.execute(current_user).reorder(nil)
end
end
def type?
type.present? && ['Issue', 'MergeRequest'].include?(type)
end
Loading
Loading
@@ -105,6 +115,8 @@ class TodosFinder
def by_project(items)
if project?
items = items.where(project: project)
elsif projects
items = items.merge(projects).joins(:project)
end
 
items
Loading
Loading
Loading
Loading
@@ -19,7 +19,6 @@ class Todo < ActiveRecord::Base
 
scope :pending, -> { with_state(:pending) }
scope :done, -> { with_state(:done) }
scope :not_pending_delete, -> { joins('INNER JOIN projects ON projects.id = todos.project_id AND projects.pending_delete = false') }
 
state_machine :state, initial: :pending do
event :done do
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@ require 'spec_helper'
describe 'Dashboard Todos', feature: true do
let(:user) { create(:user) }
let(:author) { create(:user) }
let(:project) { create(:project) }
let(:project) { create(:project, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
let(:issue) { create(:issue) }
 
describe 'GET /dashboard/todos' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment