Skip to content
Snippets Groups Projects
Commit 7bb981a1 authored by Enrico Scholz's avatar Enrico Scholz
Browse files

allow to associate group milestones with releases

parent 0eb49bc0
No related branches found
No related tags found
No related merge requests found
......@@ -109,7 +109,7 @@ export default {
fetchMilestones() {
this.requestCount += 1;
Api.projectMilestones(this.projectId)
Api.projectMilestones(this.projectId, { 'include_parent_milestones': true })
.then(({ data }) => {
this.projectMilestones = this.getTitles(data);
this.selectedMilestones = intersection(this.projectMilestones, this.milestoneTitles);
......
......@@ -5,6 +5,7 @@ class MilestoneRelease < ApplicationRecord
belongs_to :release
validate :same_project_between_milestone_and_release
validate :same_group_between_milestone_and_release
private
......@@ -15,6 +16,19 @@ def same_project_between_milestone_and_release
errors.add(:base, _('Release does not have the same project as the milestone'))
end
def same_group_between_milestone_and_release
return unless release_id_changed? || milestone_id_changed?
return unless milestone&.group_id && release&.project_id
g = release.project.group
while g do
return if g.id == milestone.group_id
g = g.parent
end
errors.add(:base, _('Associated project not member of the milestone\'s group'))
end
end
MilestoneRelease.prepend_if_ee('EE::MilestoneRelease')
......@@ -63,7 +63,7 @@ def milestones
project: project,
current_user: current_user,
project_ids: Array(project.id),
group_ids: Array(project_group_id),
group_ids: project_group_ids,
state: 'all',
title: params[:milestones]
).execute
......@@ -83,6 +83,18 @@ def param_for_milestone_titles_provided?
# overridden in EE
def project_group_id; end
def project_group_ids
res = []
group = project.group
while group do
res.append(group.id)
group = group.parent
end
res
end
end
end
......
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