summaryrefslogtreecommitdiff
path: root/app/observers
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-07-30 13:35:33 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-07-30 13:35:33 +0300
commit0d715bcd812ca6c99884e117f28a400669aa8e57 (patch)
tree5690fa43c790af40c51441425b9d8be068d4139d /app/observers
parent4f07a6a99cab8f8ae3ad0a786a6cc9a837955c08 (diff)
parent4d373005968b8269a8d2fe56b7776820396127a4 (diff)
downloadgitlab-ce-0d715bcd812ca6c99884e117f28a400669aa8e57.tar.gz
Merge branch 'mr-on-fork' of https://github.com/karlhungus/gitlabhq into karlhungus-mr-on-fork
Conflicts: app/views/projects/commit/show.html.haml app/views/projects/compare/show.html.haml app/views/projects/merge_requests/branch_from.js.haml
Diffstat (limited to 'app/observers')
-rw-r--r--app/observers/activity_observer.rb42
-rw-r--r--app/observers/issue_observer.rb2
-rw-r--r--app/observers/merge_request_observer.rb36
3 files changed, 45 insertions, 35 deletions
diff --git a/app/observers/activity_observer.rb b/app/observers/activity_observer.rb
index 4f4eb36a188..91f097154d8 100644
--- a/app/observers/activity_observer.rb
+++ b/app/observers/activity_observer.rb
@@ -1,5 +1,5 @@
class ActivityObserver < BaseObserver
- observe :issue, :merge_request, :note, :milestone
+ observe :issue, :note, :milestone
def after_create(record)
event_author_id = record.author_id
@@ -13,47 +13,27 @@ class ActivityObserver < BaseObserver
end
if event_author_id
- Event.create(
- project: record.project,
- target_id: record.id,
- target_type: record.class.name,
- action: Event.determine_action(record),
- author_id: event_author_id
- )
+ create_event(record, Event.determine_action(record))
end
end
def after_close(record, transition)
- Event.create(
- project: record.project,
- target_id: record.id,
- target_type: record.class.name,
- action: Event::CLOSED,
- author_id: record.author_id_of_changes
- )
+ create_event(record, Event::CLOSED)
end
def after_reopen(record, transition)
- Event.create(
- project: record.project,
- target_id: record.id,
- target_type: record.class.name,
- action: Event::REOPENED,
- author_id: record.author_id_of_changes
- )
+ create_event(record, Event::REOPENED)
end
- def after_merge(record, transition)
- # Since MR can be merged via sidekiq
- # to prevent event duplication do this check
- return true if record.merge_event
+ protected
+ def create_event(record, status)
Event.create(
- project: record.project,
- target_id: record.id,
- target_type: record.class.name,
- action: Event::MERGED,
- author_id: record.author_id_of_changes
+ project: record.project,
+ target_id: record.id,
+ target_type: record.class.name,
+ action: status,
+ author_id: record.author_id
)
end
end
diff --git a/app/observers/issue_observer.rb b/app/observers/issue_observer.rb
index 888fa7f6b73..50538419776 100644
--- a/app/observers/issue_observer.rb
+++ b/app/observers/issue_observer.rb
@@ -23,6 +23,6 @@ class IssueObserver < BaseObserver
# Create issue note with service comment like 'Status changed to closed'
def create_note(issue)
- Note.create_status_change_note(issue, current_user, issue.state)
+ Note.create_status_change_note(issue, issue.project, current_user, issue.state)
end
end
diff --git a/app/observers/merge_request_observer.rb b/app/observers/merge_request_observer.rb
index 03d4a22c1e6..436645a376f 100644
--- a/app/observers/merge_request_observer.rb
+++ b/app/observers/merge_request_observer.rb
@@ -1,23 +1,53 @@
-class MergeRequestObserver < BaseObserver
+class MergeRequestObserver < ActivityObserver
+ observe :merge_request
+
def after_create(merge_request)
+ if merge_request.author_id
+ create_event(merge_request, Event.determine_action(merge_request))
+ end
+
notification.new_merge_request(merge_request, current_user)
end
def after_close(merge_request, transition)
- Note.create_status_change_note(merge_request, current_user, merge_request.state)
+ create_event(merge_request, Event::CLOSED)
+ Note.create_status_change_note(merge_request, merge_request.target_project, current_user, merge_request.state)
notification.close_mr(merge_request, current_user)
end
def after_merge(merge_request, transition)
notification.merge_mr(merge_request)
+ # Since MR can be merged via sidekiq
+ # to prevent event duplication do this check
+ return true if merge_request.merge_event
+
+ Event.create(
+ project: merge_request.target_project,
+ target_id: merge_request.id,
+ target_type: merge_request.class.name,
+ action: Event::MERGED,
+ author_id: merge_request.author_id_of_changes
+ )
end
def after_reopen(merge_request, transition)
- Note.create_status_change_note(merge_request, current_user, merge_request.state)
+ create_event(merge_request, Event::REOPENED)
+ Note.create_status_change_note(merge_request, merge_request.target_project, current_user, merge_request.state)
end
def after_update(merge_request)
notification.reassigned_merge_request(merge_request, current_user) if merge_request.is_being_reassigned?
end
+
+ def create_event(record, status)
+ Event.create(
+ project: record.target_project,
+ target_id: record.id,
+ target_type: record.class.name,
+ action: status,
+ author_id: record.author_id
+ )
+ end
+
end