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
path: root/app
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2016-11-21 14:07:46 +0300
committerSean McGivern <sean@mcgivern.me.uk>2016-11-21 14:07:46 +0300
commitb98193c55edc94b3ecf1ff143ac85fa9e9d8f029 (patch)
tree1318c8c4d5ce2b590de7d1c3d686787a244203ac /app
parent53714ddf2bcc56659236d87647d8b8e8412592f3 (diff)
parentd399e1ae2b92bc399962a286fddc59eaa09670a7 (diff)
Merge branch 'issue_5541' into 'master'
Allow to block JIRA events for commits and merge requests implements #5541 See merge request !7469
Diffstat (limited to 'app')
-rw-r--r--app/helpers/services_helper.rb2
-rw-r--r--app/models/project_services/jira_service.rb43
-rw-r--r--app/models/service.rb1
3 files changed, 22 insertions, 24 deletions
diff --git a/app/helpers/services_helper.rb b/app/helpers/services_helper.rb
index 3d4abf76419..9bab140e60a 100644
--- a/app/helpers/services_helper.rb
+++ b/app/helpers/services_helper.rb
@@ -17,6 +17,8 @@ module ServicesHelper
"Event will be triggered when a build status changes"
when "wiki_page"
"Event will be triggered when a wiki page is created/updated"
+ when "commit"
+ "Event will be triggered when a commit is created/updated"
end
end
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb
index 8915c06b633..2caf6179ef8 100644
--- a/app/models/project_services/jira_service.rb
+++ b/app/models/project_services/jira_service.rb
@@ -1,24 +1,3 @@
-# == Schema Information
-#
-# Table name: services
-#
-# id :integer not null, primary key
-# type :string(255)
-# title :string(255)
-# project_id :integer
-# created_at :datetime
-# updated_at :datetime
-# active :boolean default(FALSE), not null
-# properties :text
-# template :boolean default(FALSE)
-# push_events :boolean default(TRUE)
-# issues_events :boolean default(TRUE)
-# merge_requests_events :boolean default(TRUE)
-# tag_push_events :boolean default(TRUE)
-# note_events :boolean default(TRUE), not null
-# build_events :boolean default(FALSE), not null
-#
-
class JiraService < IssueTrackerService
include Gitlab::Routing.url_helpers
@@ -30,6 +9,10 @@ class JiraService < IssueTrackerService
before_update :reset_password
+ def supported_events
+ %w(commit merge_request)
+ end
+
# {PROJECT-KEY}-{NUMBER} Examples: JIRA-1, PROJECT-1
def reference_pattern
@reference_pattern ||= %r{(?<issue>\b([A-Z][A-Z0-9_]+-)\d+)}
@@ -137,12 +120,16 @@ class JiraService < IssueTrackerService
end
def create_cross_reference_note(mentioned, noteable, author)
+ unless can_cross_reference?(noteable)
+ return "Events for #{noteable.model_name.plural.humanize(capitalize: false)} are disabled."
+ end
+
jira_issue = jira_request { client.Issue.find(mentioned.id) }
- return false unless jira_issue.present?
+ return unless jira_issue.present?
project = self.project
- noteable_name = noteable.class.name.underscore.downcase
+ noteable_name = noteable.model_name.singular
noteable_id = if noteable.is_a?(Commit)
noteable.id
else
@@ -193,8 +180,16 @@ class JiraService < IssueTrackerService
private
+ def can_cross_reference?(noteable)
+ case noteable
+ when Commit then commit_events
+ when MergeRequest then merge_requests_events
+ else true
+ end
+ end
+
def close_issue(entity, issue)
- return if issue.nil? || issue.resolution.present?
+ return if issue.nil? || issue.resolution.present? || !jira_issue_transition_id.present?
commit_id = if entity.is_a?(Commit)
entity.id
diff --git a/app/models/service.rb b/app/models/service.rb
index edd6b5329f3..0c36acfc1b7 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -8,6 +8,7 @@ class Service < ActiveRecord::Base
default_value_for :push_events, true
default_value_for :issues_events, true
default_value_for :confidential_issues_events, true
+ default_value_for :commit_events, true
default_value_for :merge_requests_events, true
default_value_for :tag_push_events, true
default_value_for :note_events, true