Fix error on project name
Add project path to sql query to build proper path
This commit is contained in:
parent
1dfbb27f6e
commit
6c5e948013
13 changed files with 43 additions and 31 deletions
|
@ -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
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue