Commit f0d2d281 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Merge branch 'refactoring/context_into_services' into 'master'

Refactoring context Into services

To prevent confusion where to write logic. Context or Service?
......@@ -19,7 +19,7 @@ def show
end
def transfer
result = ::Projects::TransferContext.new(@project, current_user, project: params).execute(:admin)
result = ::Projects::TransferService.new(@project, current_user, project: params).execute(:admin)
if result
redirect_to [:admin, @project]
......
......@@ -13,7 +13,7 @@ def show
end
def destroy
result = Files::DeleteContext.new(@project, current_user, params, @ref, @path).execute
result = Files::DeleteService.new(@project, current_user, params, @ref, @path).execute
if result[:status] == :success
flash[:notice] = "Your changes have been successfully committed"
......
......@@ -7,7 +7,7 @@ def show
end
def update
result = Files::UpdateContext.new(@project, current_user, params, @ref, @path).execute
result = Files::UpdateService.new(@project, current_user, params, @ref, @path).execute
if result[:status] == :success
flash[:notice] = "Your changes have been successfully committed"
......
......@@ -89,7 +89,7 @@ def update
end
def bulk_update
result = Issues::BulkUpdateContext.new(project, current_user, params).execute
result = Issues::BulkUpdateService.new(project, current_user, params).execute
redirect_to :back, notice: "#{result[:count]} issues updated"
end
......
......@@ -6,7 +6,7 @@ def show
def update
file_path = File.join(@path, File.basename(params[:file_name]))
result = Files::CreateContext.new(@project, current_user, params, @ref, file_path).execute
result = Files::CreateService.new(@project, current_user, params, @ref, file_path).execute
if result[:status] == :success
flash[:notice] = "Your changes have been successfully committed"
......
......@@ -5,7 +5,7 @@ class Projects::NotesController < Projects::ApplicationController
before_filter :authorize_admin_note!, only: [:update, :destroy]
def index
@notes = Notes::LoadContext.new(project, current_user, params).execute
@notes = Notes::LoadService.new(project, current_user, params).execute
notes_json = { notes: [] }
......@@ -20,7 +20,7 @@ def index
end
def create
@note = Notes::CreateContext.new(project, current_user, params).execute
@note = Notes::CreateService.new(project, current_user, params).execute
respond_to do |format|
format.json { render_note_json(@note) }
......
......@@ -20,7 +20,7 @@ def edit
end
def create
@project = ::Projects::CreateContext.new(current_user, params[:project]).execute
@project = ::Projects::CreateService.new(current_user, params[:project]).execute
respond_to do |format|
flash[:notice] = 'Project was successfully created.' if @project.saved?
......@@ -36,7 +36,7 @@ def create
end
def update
status = ::Projects::UpdateContext.new(@project, current_user, params).execute
status = ::Projects::UpdateService.new(@project, current_user, params).execute
respond_to do |format|
if status
......@@ -51,7 +51,7 @@ def update
end
def transfer
::Projects::TransferContext.new(project, current_user, params).execute
::Projects::TransferService.new(project, current_user, params).execute
end
def show
......@@ -89,7 +89,7 @@ def destroy
end
def fork
@forked_project = ::Projects::ForkContext.new(project, current_user).execute
@forked_project = ::Projects::ForkService.new(project, current_user).execute
respond_to do |format|
format.html do
......
......@@ -5,9 +5,9 @@ def show
if @project
return access_denied! unless can?(current_user, :download_code, @project)
@search_results = Search::ProjectContext.new(@project, current_user, params).execute
@search_results = Search::ProjectService.new(@project, current_user, params).execute
else
@search_results = Search::GlobalContext.new(current_user, params).execute
@search_results = Search::GlobalService.new(current_user, params).execute
end
end
end
class BaseContext
class BaseService
attr_accessor :project, :current_user, :params
def initialize(project, user, params)
......
module Files
class BaseContext < ::BaseContext
class BaseService < ::BaseService
attr_reader :ref, :path
def initialize(project, user, params, ref, path = nil)
......
require_relative "base_context"
require_relative "base_service"
module Files
class CreateContext < BaseContext
class CreateService < BaseService
def execute
allowed = if project.protected_branch?(ref)
can?(current_user, :push_code_to_protected_branches, project)
......
require_relative "base_context"
require_relative "base_service"
module Files
class DeleteContext < BaseContext
class DeleteService < BaseService
def execute
allowed = if project.protected_branch?(ref)
can?(current_user, :push_code_to_protected_branches, project)
......
require_relative "base_context"
require_relative "base_service"
module Files
class UpdateContext < BaseContext
class UpdateService < BaseService
def execute
allowed = if project.protected_branch?(ref)
can?(current_user, :push_code_to_protected_branches, project)
......
module Issues
class BulkUpdateContext < BaseContext
class BulkUpdateService < BaseService
def execute
update_data = params[:update]
......
module Notes
class CreateContext < BaseContext
class CreateService < BaseService
def execute
note = project.notes.new(params[:note])
note.author = current_user
......
module Notes
class LoadContext < BaseContext
class LoadService < BaseService
def execute
target_type = params[:target_type]
target_id = params[:target_id]
......
module Projects
class CreateContext < BaseContext
class CreateService < BaseService
def initialize(user, params)
@current_user, @params = user, params.dup
end
......
module Projects
class ForkContext < BaseContext
class ForkService < BaseService
include Gitlab::ShellAdapter
def initialize(project, user)
......
module Projects
class TransferContext < BaseContext
class TransferService < BaseService
def execute(role = :default)
namespace_id = params[:project].delete(:namespace_id)
allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin
......
module Projects
class UpdateContext < BaseContext
class UpdateService < BaseService
def execute(role = :default)
params[:project].delete(:namespace_id)
# check that user is allowed to set specified visibility_level
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment