summaryrefslogtreecommitdiff
path: root/app/models/service.rb
diff options
context:
space:
mode:
authorMarin Jankovski <maxlazio@gmail.com>2015-02-11 17:34:41 -0800
committerMarin Jankovski <maxlazio@gmail.com>2015-02-11 17:55:33 -0800
commit6b4ddf2cc13eda5dd6df64bab6f95f88d64cd2fa (patch)
tree3b9b008d4528ce1dcd2b15ac144548a3f9f26ecd /app/models/service.rb
parent09d3d351a1a80032c4e9bf185a15ff95819a4da0 (diff)
downloadgitlab-ce-6b4ddf2cc13eda5dd6df64bab6f95f88d64cd2fa.tar.gz
Add admin services templates.
Diffstat (limited to 'app/models/service.rb')
-rw-r--r--app/models/service.rb13
1 files changed, 10 insertions, 3 deletions
diff --git a/app/models/service.rb b/app/models/service.rb
index 4c4fe085c22..0099dbe65c0 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -25,7 +25,7 @@ class Service < ActiveRecord::Base
belongs_to :project
has_one :service_hook
- validates :project_id, presence: true
+ validates :project_id, presence: true, unless: Proc.new { |service| service.template? }
scope :visible, -> { where.not(type: 'GitlabIssueTrackerService') }
@@ -33,6 +33,10 @@ class Service < ActiveRecord::Base
active
end
+ def template?
+ template
+ end
+
def category
:common
end
@@ -94,7 +98,10 @@ class Service < ActiveRecord::Base
self.category == :issue_tracker
end
- def self.issue_tracker_service_list
- Service.select(&:issue_tracker?).map{ |s| s.to_param }
+ def self.create_from_template(project_id, template)
+ service = template.dup
+ service.template = false
+ service.project_id = project_id
+ service if service.save
end
end