Skip to content
Snippets Groups Projects
Commit cc088468 authored by Mayra Cabrera's avatar Mayra Cabrera Committed by 🤖 GitLab Bot 🤖
Browse files

Merge branch 'fix-name-vs-path-problem-for-cycle-analytics' into 'master'

Fix error on project name

See merge request gitlab-org/gitlab-ce!31471

(cherry picked from commit 881052b8)

325bcfff Fix error on project name
b97e6002 Add Changelog entry
0c077702 Fix rubocop offences
7e9b1343 Rephrase changelog entry
d36dc730 Add code review remarks
parent b99b565a
No related branches found
No related tags found
No related merge requests found
Showing
with 43 additions and 31 deletions
Loading
Loading
@@ -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
Loading
Loading
@@ -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
 
Loading
Loading
@@ -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]))
Loading
Loading
Loading
Loading
@@ -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)
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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))
Loading
Loading
Loading
Loading
@@ -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)
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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",
Loading
Loading
@@ -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
 
Loading
Loading
Loading
Loading
@@ -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",
Loading
Loading
@@ -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
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