提交 6c5e9480 编写于 作者: G Gosia Ksionek 提交者: Mayra Cabrera

Fix error on project name

Add project path to sql query to build proper path
上级 1dfbb27f
......@@ -26,6 +26,6 @@ class AnalyticsIssueEntity < Grape::Entity
private
def url_to(route, object)
public_send("#{route}_url", object[:path], object[:name], object[:iid].to_s) # rubocop:disable GitlabSecurity/PublicSend
public_send("#{route}_url", object[:namespace_path], object[:project_path], object[:iid].to_s) # rubocop:disable GitlabSecurity/PublicSend
end
end
---
title: Fix broken issue links and possible 500 error on cycle analytics page when project name and path are different
merge_request: 31471
author:
type: fixed
......@@ -19,9 +19,10 @@ module Gitlab
.join(projects_table).on(issue_table[:project_id].eq(projects_table[:id]))
.join(routes_table).on(projects_table[:namespace_id].eq(routes_table[:source_id]))
.project(issue_table[:project_id].as("project_id"))
.where(issue_table[:project_id].in(project_ids))
.where(routes_table[:source_type].eq('Namespace'))
.where(issue_table[:created_at].gteq(options[:from]))
.project(projects_table[:path].as("project_path"))
.project(routes_table[:path].as("namespace_path"))
query = limit_query(query, project_ids)
# Load merge_requests
......@@ -30,6 +31,12 @@ module Gitlab
query
end
def limit_query(query, project_ids)
query.where(issue_table[:project_id].in(project_ids))
.where(routes_table[:source_type].eq('Namespace'))
.where(issue_table[:created_at].gteq(options[:from]))
end
def load_merge_requests(query)
query.join(mr_table, Arel::Nodes::OuterJoin)
.on(mr_table[:id].eq(mr_closing_issues_table[:merge_request_id]))
......
......@@ -11,9 +11,7 @@ module Gitlab
mr_table[:id],
mr_table[:created_at],
mr_table[:state],
mr_table[:author_id],
projects_table[:name],
routes_table[:path]]
mr_table[:author_id]]
@order = mr_table[:created_at]
super(*args)
......
......@@ -10,9 +10,7 @@ module Gitlab
issue_table[:iid],
issue_table[:id],
issue_table[:created_at],
issue_table[:author_id],
projects_table[:name],
routes_table[:path]]
issue_table[:author_id]]
super(*args)
end
......
......@@ -8,12 +8,19 @@ module Gitlab
.join(projects_table).on(issue_table[:project_id].eq(projects_table[:id]))
.join(routes_table).on(projects_table[:namespace_id].eq(routes_table[:source_id]))
.project(issue_table[:project_id].as("project_id"))
.where(issue_table[:project_id].in(project_ids))
.project(projects_table[:path].as("project_path"))
.project(routes_table[:path].as("namespace_path"))
query = limit_query(query, project_ids)
query
end
def limit_query(query, project_ids)
query.where(issue_table[:project_id].in(project_ids))
.where(routes_table[:source_type].eq('Namespace'))
.where(issue_table[:created_at].gteq(options[:from]))
.where(issue_metrics_table[:first_added_to_board_at].not_eq(nil).or(issue_metrics_table[:first_associated_with_milestone_at].not_eq(nil)))
query
end
end
end
......
......@@ -10,9 +10,7 @@ module Gitlab
issue_table[:iid],
issue_table[:id],
issue_table[:created_at],
issue_table[:author_id],
projects_table[:name],
routes_table[:path]]
issue_table[:author_id]]
super(*args)
end
......
......@@ -8,14 +8,16 @@ module Gitlab
.join(projects_table).on(issue_table[:project_id].eq(projects_table[:id]))
.join(routes_table).on(projects_table[:namespace_id].eq(routes_table[:source_id]))
.project(issue_table[:project_id].as("project_id"))
.project(projects_table[:path].as("project_path"))
.project(routes_table[:path].as("namespace_path"))
.where(issue_table[:project_id].in(project_ids))
.where(routes_table[:source_type].eq('Namespace'))
query = add_conditions_to_query(query)
query = limit_query(query)
query
end
def add_conditions_to_query(query)
def limit_query(query)
query.where(issue_table[:created_at].gteq(options[:from]))
.where(issue_metrics_table[:first_added_to_board_at].not_eq(nil).or(issue_metrics_table[:first_associated_with_milestone_at].not_eq(nil)))
.where(issue_metrics_table[:first_mentioned_in_commit_at].not_eq(nil))
......
......@@ -11,7 +11,6 @@ module Gitlab
issue_table[:id],
issue_table[:created_at],
issue_table[:author_id],
projects_table[:name],
routes_table[:path]]
super(*args)
......
......@@ -11,9 +11,7 @@ module Gitlab
mr_table[:id],
mr_table[:created_at],
mr_table[:state],
mr_table[:author_id],
projects_table[:name],
routes_table[:path]]
mr_table[:author_id]]
super(*args)
end
......
......@@ -10,12 +10,12 @@ describe AnalyticsIssueEntity do
id: "1",
created_at: "2016-11-12 15:04:02.948604",
author: user,
name: project.name,
path: project.namespace
project_path: project.path,
namespace_path: project.namespace.route.path
}
end
let(:project) { create(:project) }
let(:project) { create(:project, name: 'my project') }
let(:request) { EntityRequest.new(entity: :merge_request) }
let(:entity) do
......
......@@ -8,7 +8,7 @@ describe AnalyticsIssueSerializer do
end
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:project) { create(:project, name: 'my project') }
let(:resource) do
{
total_time: "172802.724419",
......@@ -17,8 +17,8 @@ describe AnalyticsIssueSerializer do
id: "1",
created_at: "2016-11-12 15:04:02.948604",
author: user,
name: project.name,
path: project.namespace
project_path: project.path,
namespace_path: project.namespace.route.path
}
end
......
......@@ -8,7 +8,7 @@ describe AnalyticsMergeRequestSerializer do
end
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:project) { create(:project, name: 'my project') }
let(:resource) do
{
total_time: "172802.724419",
......@@ -18,8 +18,8 @@ describe AnalyticsMergeRequestSerializer do
state: 'open',
created_at: "2016-11-12 15:04:02.948604",
author: user,
name: project.name,
path: project.namespace
project_path: project.path,
namespace_path: project.namespace.route.path
}
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册