Commit c4b02642d2ca74f463e64dd591796aabe5c54af9
1 parent
f8ea52c3
Exists in
spb-stable
and in
2 other branches
Replace milestone observer with services
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
9 changed files
with
78 additions
and
36 deletions
Show diff stats
app/controllers/projects/milestones_controller.rb
| ... | ... | @@ -37,7 +37,7 @@ class Projects::MilestonesController < Projects::ApplicationController |
| 37 | 37 | end |
| 38 | 38 | |
| 39 | 39 | def create |
| 40 | - @milestone = @project.milestones.new(params[:milestone]) | |
| 40 | + @milestone = Milestones::CreateService.new(project, current_user, params[:milestone]).execute | |
| 41 | 41 | |
| 42 | 42 | if @milestone.save |
| 43 | 43 | redirect_to project_milestone_path(@project, @milestone) |
| ... | ... | @@ -47,7 +47,7 @@ class Projects::MilestonesController < Projects::ApplicationController |
| 47 | 47 | end |
| 48 | 48 | |
| 49 | 49 | def update |
| 50 | - @milestone.update_attributes(params[:milestone]) | |
| 50 | + @milestone = Milestones::UpdateService.new(project, current_user, params[:milestone]).execute(milestone) | |
| 51 | 51 | |
| 52 | 52 | respond_to do |format| |
| 53 | 53 | format.js | ... | ... |
app/observers/milestone_observer.rb
| ... | ... | @@ -1,13 +0,0 @@ |
| 1 | -class MilestoneObserver < BaseObserver | |
| 2 | - def after_create(milestone) | |
| 3 | - event_service.open_milestone(milestone, current_user) | |
| 4 | - end | |
| 5 | - | |
| 6 | - def after_close(milestone, transition) | |
| 7 | - event_service.close_milestone(milestone, current_user) | |
| 8 | - end | |
| 9 | - | |
| 10 | - def after_reopen(milestone, transition) | |
| 11 | - event_service.reopen_milestone(milestone, current_user) | |
| 12 | - end | |
| 13 | -end |
| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | +module Milestones | |
| 2 | + class CreateService < Milestones::BaseService | |
| 3 | + def execute | |
| 4 | + milestone = project.milestones.new(params) | |
| 5 | + | |
| 6 | + if milestone.save | |
| 7 | + event_service.open_milestone(milestone, current_user) | |
| 8 | + end | |
| 9 | + | |
| 10 | + milestone | |
| 11 | + end | |
| 12 | + end | |
| 13 | +end | ... | ... |
| ... | ... | @@ -0,0 +1,20 @@ |
| 1 | +module Milestones | |
| 2 | + class UpdateService < Milestones::BaseService | |
| 3 | + def execute(milestone) | |
| 4 | + state = params.delete('state_event') | |
| 5 | + | |
| 6 | + case state | |
| 7 | + when 'reopen' | |
| 8 | + Milestones::ReopenService.new(project, current_user, {}).execute(milestone) | |
| 9 | + when 'close' | |
| 10 | + Milestones::CloseService.new(project, current_user, {}).execute(milestone) | |
| 11 | + end | |
| 12 | + | |
| 13 | + if params.present? | |
| 14 | + milestone.update_attributes(params) | |
| 15 | + end | |
| 16 | + | |
| 17 | + milestone | |
| 18 | + end | |
| 19 | + end | |
| 20 | +end | ... | ... |
config/application.rb
| ... | ... | @@ -19,8 +19,7 @@ module Gitlab |
| 19 | 19 | # config.plugins = [ :exception_notification, :ssl_requirement, :all ] |
| 20 | 20 | |
| 21 | 21 | # Activate observers that should always be running. |
| 22 | - config.active_record.observers = :milestone_observer, | |
| 23 | - :project_activity_cache_observer, | |
| 22 | + config.active_record.observers = :project_activity_cache_observer, | |
| 24 | 23 | :note_observer, |
| 25 | 24 | :project_observer, |
| 26 | 25 | :system_hook_observer, | ... | ... |
lib/api/milestones.rb
| ... | ... | @@ -40,17 +40,15 @@ module API |
| 40 | 40 | # Example Request: |
| 41 | 41 | # POST /projects/:id/milestones |
| 42 | 42 | post ":id/milestones" do |
| 43 | - set_current_user_for_thread do | |
| 44 | - authorize! :admin_milestone, user_project | |
| 45 | - required_attributes! [:title] | |
| 43 | + authorize! :admin_milestone, user_project | |
| 44 | + required_attributes! [:title] | |
| 45 | + attrs = attributes_for_keys [:title, :description, :due_date] | |
| 46 | + milestone = ::Milestones::CreateService.new(user_project, current_user, attrs).execute | |
| 46 | 47 | |
| 47 | - attrs = attributes_for_keys [:title, :description, :due_date] | |
| 48 | - @milestone = user_project.milestones.new attrs | |
| 49 | - if @milestone.save | |
| 50 | - present @milestone, with: Entities::Milestone | |
| 51 | - else | |
| 52 | - not_found! | |
| 53 | - end | |
| 48 | + if milestone.valid? | |
| 49 | + present milestone, with: Entities::Milestone | |
| 50 | + else | |
| 51 | + not_found! | |
| 54 | 52 | end |
| 55 | 53 | end |
| 56 | 54 | |
| ... | ... | @@ -66,16 +64,15 @@ module API |
| 66 | 64 | # Example Request: |
| 67 | 65 | # PUT /projects/:id/milestones/:milestone_id |
| 68 | 66 | put ":id/milestones/:milestone_id" do |
| 69 | - set_current_user_for_thread do | |
| 70 | - authorize! :admin_milestone, user_project | |
| 67 | + authorize! :admin_milestone, user_project | |
| 68 | + attrs = attributes_for_keys [:title, :description, :due_date, :state_event] | |
| 69 | + milestone = user_project.milestones.find(params[:milestone_id]) | |
| 70 | + milestone = ::Milestones::UpdateService.new(user_project, current_user, attrs).execute(milestone) | |
| 71 | 71 | |
| 72 | - @milestone = user_project.milestones.find(params[:milestone_id]) | |
| 73 | - attrs = attributes_for_keys [:title, :description, :due_date, :state_event] | |
| 74 | - if @milestone.update_attributes attrs | |
| 75 | - present @milestone, with: Entities::Milestone | |
| 76 | - else | |
| 77 | - not_found! | |
| 78 | - end | |
| 72 | + if milestone.valid? | |
| 73 | + present milestone, with: Entities::Milestone | |
| 74 | + else | |
| 75 | + not_found! | |
| 79 | 76 | end |
| 80 | 77 | end |
| 81 | 78 | end | ... | ... |