diff options
Diffstat (limited to 'app/services/issues/close_service.rb')
-rw-r--r-- | app/services/issues/close_service.rb | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb index ea64239dd99..ac846c769a3 100644 --- a/app/services/issues/close_service.rb +++ b/app/services/issues/close_service.rb @@ -3,8 +3,8 @@ module Issues class CloseService < Issues::BaseService # Closes the supplied issue if the current user is able to do so. - def execute(issue, commit: nil, notifications: true, system_note: true) - return issue unless can?(current_user, :update_issue, issue) || issue.is_a?(ExternalIssue) + def execute(issue, commit: nil, notifications: true, system_note: true, skip_authorization: false) + return issue unless can_close?(issue, skip_authorization: skip_authorization) close_issue(issue, closed_via: commit, @@ -24,7 +24,7 @@ module Issues return issue end - if project.issues_enabled? && issue.close(current_user) + if perform_close(issue) event_service.close_issue(issue, current_user) create_note(issue, closed_via) if system_note @@ -51,6 +51,15 @@ module Issues private + # Overridden on EE + def perform_close(issue) + issue.close(current_user) + end + + def can_close?(issue, skip_authorization: false) + skip_authorization || can?(current_user, :update_issue, issue) || issue.is_a?(ExternalIssue) + end + def perform_incident_management_actions(issue) resolve_alert(issue) end @@ -82,11 +91,11 @@ module Issues end end - def store_first_mentioned_in_commit_at(issue, merge_request) + def store_first_mentioned_in_commit_at(issue, merge_request, max_commit_lookup: 100) metrics = issue.metrics return if metrics.nil? || metrics.first_mentioned_in_commit_at - first_commit_timestamp = merge_request.commits(limit: 1).first.try(:authored_date) + first_commit_timestamp = merge_request.commits(limit: max_commit_lookup).last.try(:authored_date) return unless first_commit_timestamp metrics.update!(first_mentioned_in_commit_at: first_commit_timestamp) |