From 25951b914619a9e056122f0c39ce64e4afe453d8 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 3 Dec 2013 11:31:56 +0200 Subject: [PATCH] Prepare ProjectHooks to work with issues and merge_requests * Add event scopes to ProjectHook * Added Issuable#to_hook_data * Project#execute_hooks now accept hook filter as argument Signed-off-by: Dmitriy Zaporozhets --- app/models/concerns/issuable.rb | 7 +++++++ app/models/project.rb | 6 ++++-- app/models/project_hook.rb | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 7f820f950b0..58bf621f91b 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -111,4 +111,11 @@ module Issuable end users.concat(mentions.reduce([], :|)).uniq end + + def to_hook_data + { + object_kind: self.class.name.underscore, + object_attributes: self.attributes + } + end end diff --git a/app/models/project.rb b/app/models/project.rb index 0edc0746fb9..ed30b5ea892 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -298,8 +298,10 @@ class Project < ActiveRecord::Base ProjectTransferService.new.transfer(self, new_namespace) end - def execute_hooks(data) - hooks.each { |hook| hook.async_execute(data) } + def execute_hooks(data, hooks_scope = :push_hooks) + hooks.send(hooks_scope).each do |hook| + hook.async_execute(data) + end end def execute_services(data) diff --git a/app/models/project_hook.rb b/app/models/project_hook.rb index 4edb38d3bf5..c5ef13a2b8d 100644 --- a/app/models/project_hook.rb +++ b/app/models/project_hook.rb @@ -15,4 +15,8 @@ class ProjectHook < WebHook belongs_to :project attr_accessible :push_events, :issues_events, :merge_requests_events + + scope :push_hooks, -> { where(push_events: true) } + scope :issue_hooks, -> { where(issues_events: true) } + scope :merge_request_hooks, -> { where(merge_requests_events: true) } end