Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2017-06-20 00:02:02 +0300
committerFelipe Artur <felipefac@gmail.com>2017-06-21 22:10:28 +0300
commit9e02a8f719ba056ee1ef94226a0627783fcc649a (patch)
tree038cd6ba4d4e1085c89272d055e22540117295f3
parent8a0942f0c41f558301ab8ecbc292d3a8a4f1b168 (diff)
Create group milestone model
-rw-r--r--app/controllers/groups/milestones_controller.rb38
-rw-r--r--app/models/group_milestone.rb30
2 files changed, 36 insertions, 32 deletions
diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb
index e52fa766044..53c03a005a2 100644
--- a/app/controllers/groups/milestones_controller.rb
+++ b/app/controllers/groups/milestones_controller.rb
@@ -15,14 +15,15 @@ class Groups::MilestonesController < Groups::ApplicationController
end
def new
- @milestone = Milestone.new
+ @milestone = GroupMilestone.new
end
def create
- project_ids = params[:milestone][:project_ids].reject(&:blank?)
+ # Use a service to create the milestone here
title = milestone_params[:title]
+ @milestone = GroupMilestone.new(milestone_params)
- if create_milestones(project_ids)
+ if @milestone.save
redirect_to milestone_path(title)
else
render_new_with_error(project_ids.empty?)
@@ -42,20 +43,20 @@ class Groups::MilestonesController < Groups::ApplicationController
private
- def create_milestones(project_ids)
- return false unless project_ids.present?
+ # def create_milestones(project_ids)
+ # return false unless project_ids.present?
- ActiveRecord::Base.transaction do
- @projects.where(id: project_ids).each do |project|
- Milestones::CreateService.new(project, current_user, milestone_params).execute
- end
- end
+ # ActiveRecord::Base.transaction do
+ # @projects.where(id: project_ids).each do |project|
+ # Milestones::CreateService.new(project, current_user, milestone_params).execute
+ # end
+ # end
- true
- rescue ActiveRecord::ActiveRecordError => e
- flash.now[:alert] = "An error occurred while creating the milestone: #{e.message}"
- false
- end
+ # true
+ # rescue ActiveRecord::ActiveRecordError => e
+ # flash.now[:alert] = "An error occurred while creating the milestone: #{e.message}"
+ # false
+ # end
def render_new_with_error(empty_project_ids)
@milestone = Milestone.new(milestone_params)
@@ -68,7 +69,7 @@ class Groups::MilestonesController < Groups::ApplicationController
end
def milestone_params
- params.require(:milestone).permit(:title, :description, :start_date, :due_date, :state_event)
+ params.require(:group_milestone).permit(:title, :description, :start_date, :due_date, :state_event)
end
def milestone_path(title)
@@ -76,11 +77,12 @@ class Groups::MilestonesController < Groups::ApplicationController
end
def milestones
- @milestones = GroupMilestone.build_collection(@group, @projects, params)
+ @milestones = GroupMilestone.all
end
def milestone
- @milestone = GroupMilestone.build(@group, @projects, params[:title])
+ # Use a finder here
+ @milestone = GroupMilestone.find(params[:id])
render_404 unless @milestone
end
end
diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb
index 86d38e5468b..033e06ab1d7 100644
--- a/app/models/group_milestone.rb
+++ b/app/models/group_milestone.rb
@@ -1,19 +1,21 @@
-class GroupMilestone < GlobalMilestone
- attr_accessor :group
+class GroupMilestone < ActiveRecord::Base
+ include StripAttribute
- def self.build_collection(group, projects, params)
- super(projects, params).each do |milestone|
- milestone.group = group
- end
- end
+ has_many :issues
+ has_many :merge_requests
- def self.build(group, projects, title)
- super(projects, title).tap do |milestone|
- milestone&.group = group
- end
- end
+ # Use a uniqueness scope here to check name with project milestones
+ validates :title, presence: true
- def issues_finder_params
- { group_id: group.id }
+ # Move this validation to a concern and share with project milestone
+ validate :start_date_should_be_less_than_due_date, if: proc { |m| m.start_date.present? && m.due_date.present? }
+ strip_attributes :title
+ alias_attribute :name, :title
+
+
+ def start_date_should_be_less_than_due_date
+ if due_date <= start_date
+ errors.add(:start_date, "Can't be greater than due date")
+ end
end
end