Commit 93812f25 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Add initial notifications and hooks for issue move

parent 58df72fa
...@@ -51,9 +51,6 @@ class @ProjectSelect ...@@ -51,9 +51,6 @@ class @ProjectSelect
accessLevelCallbackDecorator: (callback) => accessLevelCallbackDecorator: (callback) =>
return callback unless @accessLevel return callback unless @accessLevel
##
# Requires ECMAScript >= 5
#
(projects) => (projects) =>
data = projects.filter (p) => data = projects.filter (p) =>
max = Math.max(p.permissions.group_access?.access_level ? 0, max = Math.max(p.permissions.group_access?.access_level ? 0,
...@@ -66,9 +63,6 @@ class @ProjectSelect ...@@ -66,9 +63,6 @@ class @ProjectSelect
withoutIdCallbackDecorator: (callback) => withoutIdCallbackDecorator: (callback) =>
return callback unless @withoutId return callback unless @withoutId
##
# Requires ECMAScript >= 5
#
(projects) => (projects) =>
data = projects.filter (p) => data = projects.filter (p) =>
p.id != @withoutId p.id != @withoutId
......
...@@ -6,7 +6,7 @@ module Issues ...@@ -6,7 +6,7 @@ module Issues
@issue_old = issue @issue_old = issue
@issue_new = issue.dup @issue_new = issue.dup
@project_old = @project @project_old = @project
@project_new = Project.find(new_project_id) if new_project_id @project_new = Project.find(new_project_id)
end end
def execute def execute
...@@ -25,9 +25,10 @@ module Issues ...@@ -25,9 +25,10 @@ module Issues
close_old_issue close_old_issue
end end
# Notifications # Notifications and hooks
# #
notify_participants # notify_participants
# trigger_hooks_and_events
@issue_new @issue_new
end end
...@@ -44,10 +45,18 @@ module Issues ...@@ -44,10 +45,18 @@ module Issues
end end
def create_new_issue def create_new_issue
@issue_new.iid = nil
@issue_new.project = @project_new @issue_new.project = @project_new
# Reset internal ID, will be regenerated before save
#
@issue_new.iid = nil
# Reset labels and milestones, as those are not valid in context
# of a new project
#
@issue_new.labels = [] @issue_new.labels = []
@issue_new.milestone = nil @issue_new.milestone = nil
@issue_new.description = rewrite_references(@issue_old) @issue_new.description = rewrite_references(@issue_old)
@issue_new.save! @issue_new.save!
end end
...@@ -66,9 +75,6 @@ module Issues ...@@ -66,9 +75,6 @@ module Issues
@issue_old.update(state: :closed) @issue_old.update(state: :closed)
end end
def notify_participants
end
def add_moved_from_note def add_moved_from_note
SystemNoteService.noteable_moved(:from, @issue_new, @project_new, SystemNoteService.noteable_moved(:from, @issue_new, @project_new,
@issue_old, @current_user) @issue_old, @current_user)
...@@ -95,5 +101,22 @@ module Issues ...@@ -95,5 +101,22 @@ module Issues
raise 'Unexpected noteable while moving an issue' raise 'Unexpected noteable while moving an issue'
end end
end end
def trigger_hooks_and_events
event_service.close_issue(@issue_old, @current_user)
event_service.open_issue(@issue_new, @current_user)
@issue_new.create_cross_references!(@current_user)
execute_hooks(@issue_old, 'close')
execute_hooks(@issue_new, 'open')
end
def notify_participants
todo_service.close_issue(@issue_old, @current_user)
todo_service.open_issue(@issue_new, @current_user)
notification_service.issue_moved(@issue_old, @issue_new, @current_user)
end
end end
end end
...@@ -236,6 +236,14 @@ class NotificationService ...@@ -236,6 +236,14 @@ class NotificationService
end end
end end
def issue_moved(issue, old_project, new_project, current_user)
recipients = build_recipients(issue, old_project, current_user)
recipients.each do |recipient|
mailer.send('issue_moved', recipient.id, issue.id, current_user.id).deliver_later
end
end
protected protected
# Get project users with WATCH notification level # Get project users with WATCH notification level
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment