summaryrefslogtreecommitdiff
path: root/app/services/protected_branches
diff options
context:
space:
mode:
authorTimothy Andrew <mail@timothyandrew.net>2016-07-25 20:14:53 +0530
committerTimothy Andrew <mail@timothyandrew.net>2016-07-29 15:20:39 +0530
commit01d190a84ad9b8e4a40cbdec8a55946bac38ab76 (patch)
tree74b06499ba066a8e6d4b9c0bf13b6a5166501980 /app/services/protected_branches
parent88fd401d599f94bc4ea572cd47afa7d12c484db2 (diff)
downloadgitlab-ce-01d190a84ad9b8e4a40cbdec8a55946bac38ab76.tar.gz
Have the `branches` API work with the new protected branches data model.
1. The new data model moves from `developers_can_{push,merge}` to `allowed_to_{push,merge}`. 2. The API interface has not been changed. It still accepts `developers_can_push` and `developers_can_merge` as options. These attributes are inferred from the new data model. 3. Modify the protected branch create/update services to translate from the API interface to our current data model.
Diffstat (limited to 'app/services/protected_branches')
-rw-r--r--app/services/protected_branches/base_service.rb34
1 files changed, 32 insertions, 2 deletions
diff --git a/app/services/protected_branches/base_service.rb b/app/services/protected_branches/base_service.rb
index f8741fcb3d5..a5896587ded 100644
--- a/app/services/protected_branches/base_service.rb
+++ b/app/services/protected_branches/base_service.rb
@@ -1,6 +1,15 @@
module ProtectedBranches
class BaseService < ::BaseService
+ include API::Helpers
+
+ def initialize(project, current_user, params = {})
+ super(project, current_user, params)
+ @allowed_to_push = params[:allowed_to_push]
+ @allowed_to_merge = params[:allowed_to_merge]
+ end
+
def set_access_levels!
+ translate_api_params!
set_merge_access_levels!
set_push_access_levels!
end
@@ -8,7 +17,7 @@ module ProtectedBranches
protected
def set_merge_access_levels!
- case params[:allowed_to_merge]
+ case @allowed_to_merge
when 'masters'
@protected_branch.merge_access_level.masters!
when 'developers'
@@ -17,7 +26,7 @@ module ProtectedBranches
end
def set_push_access_levels!
- case params[:allowed_to_push]
+ case @allowed_to_push
when 'masters'
@protected_branch.push_access_level.masters!
when 'developers'
@@ -26,5 +35,26 @@ module ProtectedBranches
@protected_branch.push_access_level.no_one!
end
end
+
+ # The `branches` API still uses `developers_can_push` and `developers_can_merge`,
+ # which need to be translated to `allowed_to_push` and `allowed_to_merge`,
+ # respectively.
+ def translate_api_params!
+ @allowed_to_push ||=
+ case to_boolean(params[:developers_can_push])
+ when true
+ 'developers'
+ when false
+ 'masters'
+ end
+
+ @allowed_to_merge ||=
+ case to_boolean(params[:developers_can_merge])
+ when true
+ 'developers'
+ when false
+ 'masters'
+ end
+ end
end
end