Merge branch 'revert-37328406' into 'master'
Revert "Merge branch '29534-todos-performance' into 'master'" Closes #29758 See merge request !10116
This commit is contained in:
commit
45a2f9009b
6 changed files with 8 additions and 56 deletions
|
@ -51,7 +51,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController
|
||||||
private
|
private
|
||||||
|
|
||||||
def find_todos
|
def find_todos
|
||||||
@todos ||= TodosFinder.new(current_user, params.merge(include_associations: true)).execute
|
@todos ||= TodosFinder.new(current_user, params).execute
|
||||||
end
|
end
|
||||||
|
|
||||||
def todos_counts
|
def todos_counts
|
||||||
|
|
|
@ -24,7 +24,6 @@ class TodosFinder
|
||||||
|
|
||||||
def execute
|
def execute
|
||||||
items = current_user.todos
|
items = current_user.todos
|
||||||
items = include_associations(items)
|
|
||||||
items = by_action_id(items)
|
items = by_action_id(items)
|
||||||
items = by_action(items)
|
items = by_action(items)
|
||||||
items = by_author(items)
|
items = by_author(items)
|
||||||
|
@ -39,17 +38,6 @@ class TodosFinder
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def include_associations(items)
|
|
||||||
return items unless params[:include_associations]
|
|
||||||
|
|
||||||
items.includes(
|
|
||||||
[
|
|
||||||
target: { project: [:route, namespace: :route] },
|
|
||||||
author: { namespace: :route },
|
|
||||||
]
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
def action_id?
|
def action_id?
|
||||||
action_id.present? && Todo::ACTION_NAMES.has_key?(action_id.to_i)
|
action_id.present? && Todo::ACTION_NAMES.has_key?(action_id.to_i)
|
||||||
end
|
end
|
||||||
|
|
|
@ -39,13 +39,9 @@ module TodosHelper
|
||||||
namespace_project_commit_path(todo.project.namespace.becomes(Namespace), todo.project,
|
namespace_project_commit_path(todo.project.namespace.becomes(Namespace), todo.project,
|
||||||
todo.target, anchor: anchor)
|
todo.target, anchor: anchor)
|
||||||
else
|
else
|
||||||
if todo.build_failed?
|
path = [todo.project.namespace.becomes(Namespace), todo.project, todo.target]
|
||||||
# associated namespace and route would be loaded from the db again if todo.project was used
|
|
||||||
project = todo.target.project
|
path.unshift(:pipelines) if todo.build_failed?
|
||||||
path = [:pipelines, project.namespace.becomes(Namespace), project, todo.target]
|
|
||||||
else
|
|
||||||
path = [todo.target]
|
|
||||||
end
|
|
||||||
|
|
||||||
polymorphic_path(path, anchor: anchor)
|
polymorphic_path(path, anchor: anchor)
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,7 +7,6 @@ class MergeRequest < ActiveRecord::Base
|
||||||
|
|
||||||
belongs_to :target_project, class_name: "Project"
|
belongs_to :target_project, class_name: "Project"
|
||||||
belongs_to :source_project, class_name: "Project"
|
belongs_to :source_project, class_name: "Project"
|
||||||
belongs_to :project, foreign_key: :target_project_id
|
|
||||||
belongs_to :merge_user, class_name: "User"
|
belongs_to :merge_user, class_name: "User"
|
||||||
|
|
||||||
has_many :merge_request_diffs, dependent: :destroy
|
has_many :merge_request_diffs, dependent: :destroy
|
||||||
|
@ -541,6 +540,10 @@ class MergeRequest < ActiveRecord::Base
|
||||||
target_project != source_project
|
target_project != source_project
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def project
|
||||||
|
target_project
|
||||||
|
end
|
||||||
|
|
||||||
# If the merge request closes any issues, save this information in the
|
# If the merge request closes any issues, save this information in the
|
||||||
# `MergeRequestsClosingIssues` model. This is a performance optimization.
|
# `MergeRequestsClosingIssues` model. This is a performance optimization.
|
||||||
# Calculating this information for a number of merge requests requires
|
# Calculating this information for a number of merge requests requires
|
||||||
|
|
|
@ -4,7 +4,6 @@ FactoryGirl.define do
|
||||||
author
|
author
|
||||||
association :source_project, :repository, factory: :project
|
association :source_project, :repository, factory: :project
|
||||||
target_project { source_project }
|
target_project { source_project }
|
||||||
project { target_project }
|
|
||||||
|
|
||||||
# $ git log --pretty=oneline feature..master
|
# $ git log --pretty=oneline feature..master
|
||||||
# 5937ac0a7beb003549fc5fd26fc247adbce4a52e Add submodule from gitlab.com
|
# 5937ac0a7beb003549fc5fd26fc247adbce4a52e Add submodule from gitlab.com
|
||||||
|
|
|
@ -1,40 +1,6 @@
|
||||||
require "spec_helper"
|
require "spec_helper"
|
||||||
|
|
||||||
describe TodosHelper do
|
describe TodosHelper do
|
||||||
include GitlabRoutingHelper
|
|
||||||
|
|
||||||
describe '#todo_target_path' do
|
|
||||||
let(:project) { create(:project) }
|
|
||||||
let(:merge_request) { create(:merge_request, target_project: project, source_project: project) }
|
|
||||||
let(:issue) { create(:issue, project: project) }
|
|
||||||
let(:note) { create(:note_on_issue, noteable: issue, project: project) }
|
|
||||||
|
|
||||||
let(:mr_todo) { build(:todo, project: project, target: merge_request) }
|
|
||||||
let(:issue_todo) { build(:todo, project: project, target: issue) }
|
|
||||||
let(:note_todo) { build(:todo, project: project, target: issue, note: note) }
|
|
||||||
let(:build_failed_todo) { build(:todo, :build_failed, project: project, target: merge_request) }
|
|
||||||
|
|
||||||
it 'returns correct path to the todo MR' do
|
|
||||||
expect(todo_target_path(mr_todo)).
|
|
||||||
to eq("/#{project.full_path}/merge_requests/#{merge_request.iid}")
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns correct path to the todo issue' do
|
|
||||||
expect(todo_target_path(issue_todo)).
|
|
||||||
to eq("/#{project.full_path}/issues/#{issue.iid}")
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns correct path to the todo note' do
|
|
||||||
expect(todo_target_path(note_todo)).
|
|
||||||
to eq("/#{project.full_path}/issues/#{issue.iid}#note_#{note.id}")
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns correct path to build_todo MR when pipeline failed' do
|
|
||||||
expect(todo_target_path(build_failed_todo)).
|
|
||||||
to eq("/#{project.full_path}/merge_requests/#{merge_request.iid}/pipelines")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '#todo_projects_options' do
|
describe '#todo_projects_options' do
|
||||||
let(:projects) { create_list(:empty_project, 3) }
|
let(:projects) { create_list(:empty_project, 3) }
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
|
|
Loading…
Reference in a new issue