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:
Diffstat (limited to 'lib/gitlab/quick_actions/merge_request_actions.rb')
-rw-r--r--lib/gitlab/quick_actions/merge_request_actions.rb77
1 files changed, 76 insertions, 1 deletions
diff --git a/lib/gitlab/quick_actions/merge_request_actions.rb b/lib/gitlab/quick_actions/merge_request_actions.rb
index cc2021e14e3..842d4ef482b 100644
--- a/lib/gitlab/quick_actions/merge_request_actions.rb
+++ b/lib/gitlab/quick_actions/merge_request_actions.rb
@@ -57,6 +57,11 @@ module Gitlab
access_check.can_push_to_branch?(merge_request.source_branch)
end
command :rebase do
+ unless quick_action_target.permits_force_push?
+ @execution_message[:rebase] = _('This merge request branch is protected from force push.')
+ next
+ end
+
if quick_action_target.cannot_be_merged?
@execution_message[:rebase] = _('This merge request cannot be rebased while there are conflicts.')
next
@@ -184,7 +189,7 @@ module Gitlab
execution_message do |users = nil|
reviewers = reviewers_to_add(users)
if reviewers.blank?
- _("Failed to assign a reviewer because no user was found.")
+ _("Failed to assign a reviewer because no user was specified.")
else
_('Assigned %{reviewer_users_sentence} as %{reviewer_text}.') % { reviewer_users_sentence: reviewer_users_sentence(users),
reviewer_text: 'reviewer'.pluralize(reviewers.size) }
@@ -249,6 +254,76 @@ module Gitlab
@updates[:reviewer_ids] = []
end
end
+
+ desc do
+ if quick_action_target.allows_multiple_reviewers?
+ _('Request attention from assignee(s) or reviewer(s)')
+ else
+ _('Request attention from assignee or reviewer')
+ end
+ end
+ explanation do |users|
+ _('Request attention from %{users_sentence}.') % { users_sentence: reviewer_users_sentence(users) }
+ end
+ execution_message do |users = nil|
+ if users.blank?
+ _("Failed to request attention because no user was found.")
+ else
+ _('Requested attention from %{users_sentence}.') % { users_sentence: reviewer_users_sentence(users) }
+ end
+ end
+ params do
+ quick_action_target.allows_multiple_reviewers? ? '@user1 @user2' : '@user'
+ end
+ types MergeRequest
+ condition do
+ Feature.enabled?(:mr_attention_requests, project, default_enabled: :yaml) &&
+ current_user.can?(:"admin_#{quick_action_target.to_ability_name}", project)
+ end
+ parse_params do |attention_param|
+ extract_users(attention_param)
+ end
+ command :attention do |users|
+ next if users.empty?
+
+ users.each do |user|
+ ::MergeRequests::ToggleAttentionRequestedService.new(project: quick_action_target.project, merge_request: quick_action_target, current_user: current_user, user: user).execute
+ end
+ end
+
+ desc do
+ if quick_action_target.allows_multiple_reviewers?
+ _('Remove attention request(s)')
+ else
+ _('Remove attention request')
+ end
+ end
+ explanation do |users|
+ _('Removes attention from %{users_sentence}.') % { users_sentence: reviewer_users_sentence(users) }
+ end
+ execution_message do |users = nil|
+ if users.blank?
+ _("Failed to remove attention because no user was found.")
+ else
+ _('Removed attention from %{users_sentence}.') % { users_sentence: reviewer_users_sentence(users) }
+ end
+ end
+ params do
+ quick_action_target.allows_multiple_reviewers? ? '@user1 @user2' : '@user'
+ end
+ types MergeRequest
+ condition do
+ Feature.enabled?(:mr_attention_requests, project, default_enabled: :yaml) &&
+ current_user.can?(:"admin_#{quick_action_target.to_ability_name}", project)
+ end
+ parse_params do |attention_param|
+ extract_users(attention_param)
+ end
+ command :remove_attention do |users|
+ next if users.empty?
+
+ ::MergeRequests::BulkRemoveAttentionRequestedService.new(project: quick_action_target.project, merge_request: quick_action_target, current_user: current_user, users: users).execute
+ end
end
def reviewer_users_sentence(users)