diff options
author | Felipe Artur <felipefac@gmail.com> | 2017-06-22 17:39:55 -0300 |
---|---|---|
committer | Felipe Artur <felipefac@gmail.com> | 2017-07-04 17:40:06 -0300 |
commit | bb03cf35c9792c89734b0cf3544b927625bd4220 (patch) | |
tree | 7fac1243582606742d3cce56cb658d8213c33859 | |
parent | 2f77030ce8d2d70d7c44abe3ca14b047cedb3d26 (diff) | |
download | gitlab-ce-bb03cf35c9792c89734b0cf3544b927625bd4220.tar.gz |
Tweaks go group milestone
-rw-r--r-- | app/controllers/groups/milestones_controller.rb | 9 | ||||
-rw-r--r-- | app/finders/milestones_finder.rb | 11 | ||||
-rw-r--r-- | app/models/global_milestone.rb | 2 | ||||
-rw-r--r-- | app/models/group_milestone.rb | 10 |
4 files changed, 24 insertions, 8 deletions
diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb index 618c78df51e..43382886031 100644 --- a/app/controllers/groups/milestones_controller.rb +++ b/app/controllers/groups/milestones_controller.rb @@ -8,7 +8,7 @@ class Groups::MilestonesController < Groups::ApplicationController def index respond_to do |format| format.html do - @milestone_states = GlobalMilestone.states_count(@projects) + @milestone_states = GlobalMilestone.states_count(@projects, group) @milestones = Kaminari.paginate_array(milestones).page(params[:page]) end format.json do @@ -68,11 +68,14 @@ class Groups::MilestonesController < Groups::ApplicationController @project_milestones = Milestone.where(project_id: group.projects.pluck(:id)) @group_milestones + @project_milestones + #@milestones = GroupMilestone.build_collection(@group, @projects, params) end def milestone - # Use a finder here - @milestone = @group.milestones.find_by_title(params[:title]) + @milestone = + @group.milestones.find_by_title(params[:title]) || + GroupMilestone.build(@group, @projects, params[:title]) + render_404 unless @milestone end end diff --git a/app/finders/milestones_finder.rb b/app/finders/milestones_finder.rb index 630c73c2a94..259d8d40d98 100644 --- a/app/finders/milestones_finder.rb +++ b/app/finders/milestones_finder.rb @@ -1,9 +1,12 @@ class MilestonesFinder - def execute(projects, params) - milestones = Milestone.of_projects(projects) - milestones = milestones.reorder("due_date ASC") + def execute(projects, group = nil, params) + milestones = group ? group.milestones : Milestone.of_projects(projects) - case params[:state] + filter_by_state(milestones, params[:state]) + end + + def filter_by_state(milestones, state) + case state when 'closed' then milestones.closed when 'all' then milestones else milestones.active diff --git a/app/models/global_milestone.rb b/app/models/global_milestone.rb index 538615130a7..5d3209156cc 100644 --- a/app/models/global_milestone.rb +++ b/app/models/global_milestone.rb @@ -28,7 +28,7 @@ class GlobalMilestone new(title, child_milestones) end - def self.states_count(projects) + def self.states_count(projects, group = nil) relation = MilestonesFinder.new.execute(projects, state: 'all') milestones_by_state_and_title = relation.reorder(nil).group(:state, :title).count diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb index b9bd63656b3..87c422f33db 100644 --- a/app/models/group_milestone.rb +++ b/app/models/group_milestone.rb @@ -3,6 +3,16 @@ class GroupMilestone < ActiveRecord::Base include Milestoneish include CacheMarkdownField + class << self + # Build legacy group milestone which consists on all project milestones + # with the same title. + def build(group, projects, title) + GlobalMilestone.build(projects, title).tap do |milestone| + milestone&.group = group + end + end + end + def milestoneish_ids id end |