summaryrefslogtreecommitdiff
path: root/app/observers
diff options
context:
space:
mode:
Diffstat (limited to 'app/observers')
-rw-r--r--app/observers/activity_observer.rb27
-rw-r--r--app/observers/issue_observer.rb2
-rw-r--r--app/observers/note_observer.rb2
-rw-r--r--app/observers/project_observer.rb3
4 files changed, 22 insertions, 12 deletions
diff --git a/app/observers/activity_observer.rb b/app/observers/activity_observer.rb
index 48351bac667..c188e5720ac 100644
--- a/app/observers/activity_observer.rb
+++ b/app/observers/activity_observer.rb
@@ -1,18 +1,27 @@
class ActivityObserver < ActiveRecord::Observer
- observe :issue, :merge_request
+ observe :issue, :merge_request, :note, :milestone
def after_create(record)
- Event.create(
- project: record.project,
- target_id: record.id,
- target_type: record.class.name,
- action: Event.determine_action(record),
- author_id: record.author_id
- )
+ event_author_id = record.author_id
+
+ # Skip status notes
+ if record.kind_of?(Note) && record.note.include?("_Status changed to ")
+ return true
+ 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
+ )
+ end
end
def after_save(record)
- if record.changed.include?("closed")
+ if record.changed.include?("closed") && record.author_id_of_changes
Event.create(
project: record.project,
target_id: record.id,
diff --git a/app/observers/issue_observer.rb b/app/observers/issue_observer.rb
index 9f9762aea07..131336be8b6 100644
--- a/app/observers/issue_observer.rb
+++ b/app/observers/issue_observer.rb
@@ -16,7 +16,7 @@ class IssueObserver < ActiveRecord::Observer
if status
Note.create_status_change_note(issue, current_user, status)
[issue.author, issue.assignee].compact.each do |recipient|
- Notify.issue_status_changed_email(recipient.id, issue.id, status, current_user)
+ Notify.issue_status_changed_email(recipient.id, issue.id, status, current_user.id).deliver
end
end
end
diff --git a/app/observers/note_observer.rb b/app/observers/note_observer.rb
index 083aa7058d5..fe01efcaac2 100644
--- a/app/observers/note_observer.rb
+++ b/app/observers/note_observer.rb
@@ -21,7 +21,7 @@ class NoteObserver < ActiveRecord::Observer
# Notifies the whole team except the author of note
def notify_team(note)
# Note: wall posts are not "attached" to anything, so fall back to "Wall"
- noteable_type = note.noteable_type || "Wall"
+ noteable_type = note.noteable_type.presence || "Wall"
notify_method = "note_#{noteable_type.underscore}_email".to_sym
if Notify.respond_to? notify_method
diff --git a/app/observers/project_observer.rb b/app/observers/project_observer.rb
index bd41e51e8e4..b1c694569d7 100644
--- a/app/observers/project_observer.rb
+++ b/app/observers/project_observer.rb
@@ -3,7 +3,8 @@ class ProjectObserver < ActiveRecord::Observer
project.update_repository
end
- def after_save(project)
+ def after_update(project)
+ project.send_move_instructions if project.namespace_id_changed?
end
def after_destroy(project)