diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-06 21:09:41 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-06 21:09:41 +0300 |
commit | 37419c44f04cd802ac89fe2d54b8501a0718a5e3 (patch) | |
tree | 7ff8770bf860a7aed343aa08fae8caa11c65e10d /app/services/boards/lists | |
parent | 5f4dec4ac396f844fa55ecd9a8563a0348872ef6 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/boards/lists')
-rw-r--r-- | app/services/boards/lists/create_service.rb | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/app/services/boards/lists/create_service.rb b/app/services/boards/lists/create_service.rb index 6f9a063cb16..9c7a165776e 100644 --- a/app/services/boards/lists/create_service.rb +++ b/app/services/boards/lists/create_service.rb @@ -7,34 +7,39 @@ module Boards def execute(board) List.transaction do - target = target(board) - position = next_position(board) - create_list(board, type, target, position) + case type + when :backlog + create_backlog(board) + else + target = target(board) + position = next_position(board) + + create_list(board, type, target, position) + end end end private def type - :label + # We don't ever expect to have more than one list + # type param at once. + if params.key?('backlog') + :backlog + else + :label + end end def target(board) strong_memoize(:target) do - available_labels_for(board).find(params[:label_id]) + available_labels.find(params[:label_id]) end end - def available_labels_for(board) - options = { include_ancestor_groups: true } - - if board.group_board? - options.merge!(group_id: parent.id, only_group_labels: true) - else - options[:project_id] = parent.id - end - - LabelsFinder.new(current_user, options).execute + def available_labels + ::Labels::AvailableLabelsService.new(current_user, parent, {}) + .available_labels end def next_position(board) @@ -49,6 +54,12 @@ module Boards def create_list_attributes(type, target, position) { type => target, list_type: type, position: position } end + + def create_backlog(board) + return board.lists.backlog.first if board.lists.backlog.exists? + + board.lists.create(list_type: :backlog, position: nil) + end end end end |