Send author to post hook. Display push activity to dashboard
This commit is contained in:
parent
796784c7c8
commit
bb164ebf1b
15 changed files with 107 additions and 11 deletions
|
@ -11,6 +11,8 @@ class Event < ActiveRecord::Base
|
|||
|
||||
serialize :data
|
||||
|
||||
scope :recent, order("created_at DESC")
|
||||
|
||||
def self.determine_action(record)
|
||||
if [Issue, MergeRequest].include? record.class
|
||||
Event::Created
|
||||
|
@ -18,6 +20,38 @@ class Event < ActiveRecord::Base
|
|||
Event::Commented
|
||||
end
|
||||
end
|
||||
|
||||
def push?
|
||||
action == self.class::Pushed
|
||||
end
|
||||
|
||||
def new_branch?
|
||||
data[:before] =~ /^00000/
|
||||
end
|
||||
|
||||
def commit_from
|
||||
data[:before]
|
||||
end
|
||||
|
||||
def commit_to
|
||||
data[:after]
|
||||
end
|
||||
|
||||
def branch_name
|
||||
@branch_name ||= data[:ref].gsub("refs/heads/", "")
|
||||
end
|
||||
|
||||
def pusher
|
||||
User.find_by_id(data[:user_id])
|
||||
end
|
||||
|
||||
def commits
|
||||
@commits ||= data[:commits].map do |commit|
|
||||
project.commit(commit[:id])
|
||||
end
|
||||
end
|
||||
|
||||
delegate :id, :name, :email, :to => :pusher, :prefix => true, :allow_nil => true
|
||||
end
|
||||
# == Schema Information
|
||||
#
|
||||
|
|
|
@ -14,6 +14,7 @@ class Key < ActiveRecord::Base
|
|||
before_save :set_identifier
|
||||
after_save :update_repository
|
||||
after_destroy :repository_delete_key
|
||||
delegate :id, :name, :email, :to => :user, :prefix => true
|
||||
|
||||
def set_identifier
|
||||
if is_deploy_key
|
||||
|
|
|
@ -90,8 +90,8 @@ class Project < ActiveRecord::Base
|
|||
[GIT_HOST['host'], code].join("/")
|
||||
end
|
||||
|
||||
def observe_push(oldrev, newrev, ref)
|
||||
data = web_hook_data(oldrev, newrev, ref)
|
||||
def observe_push(oldrev, newrev, ref, author_key_id)
|
||||
data = web_hook_data(oldrev, newrev, ref, author_key_id)
|
||||
|
||||
Event.create(
|
||||
:project => self,
|
||||
|
@ -100,22 +100,25 @@ class Project < ActiveRecord::Base
|
|||
)
|
||||
end
|
||||
|
||||
def execute_web_hooks(oldrev, newrev, ref)
|
||||
def execute_web_hooks(oldrev, newrev, ref, author_key_id)
|
||||
ref_parts = ref.split('/')
|
||||
|
||||
# Return if this is not a push to a branch (e.g. new commits)
|
||||
return if ref_parts[1] !~ /heads/ || oldrev == "00000000000000000000000000000000"
|
||||
|
||||
data = web_hook_data(oldrev, newrev, ref)
|
||||
data = web_hook_data(oldrev, newrev, ref, author_key_id)
|
||||
|
||||
web_hooks.each { |web_hook| web_hook.execute(data) }
|
||||
end
|
||||
|
||||
def web_hook_data(oldrev, newrev, ref)
|
||||
def web_hook_data(oldrev, newrev, ref, author_key_id)
|
||||
key = Key.find_by_identifier(author_key_id)
|
||||
data = {
|
||||
before: oldrev,
|
||||
after: newrev,
|
||||
ref: ref,
|
||||
user_id: key.user_id,
|
||||
user_name: key.user_name,
|
||||
repository: {
|
||||
name: name,
|
||||
url: web_url,
|
||||
|
|
|
@ -16,7 +16,7 @@ class UsersProject < ActiveRecord::Base
|
|||
validates_presence_of :user_id
|
||||
validates_presence_of :project_id
|
||||
|
||||
delegate :name, :email, :to => :user, :prefix => true
|
||||
delegate :id, :name, :email, :to => :user, :prefix => true
|
||||
|
||||
def self.bulk_import(project, user_ids, project_access, repo_access)
|
||||
UsersProject.transaction do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue