DELETE THIS MERGE REQUEST
Created by: devblueray
Delete this. I screwed up and put in a merge request for the wrong repo.
Merge request reports
Activity
2 2 3 3 class Projects::MergeRequestsController < Projects::ApplicationController 4 4 before_filter :module_enabled 5 before_filter :merge_request, only: [:edit, :update, :show, :diffs, :automerge, :automerge_check, :ci_status] 5 before_filter :merge_request, only: [:edit, :update, :show, :diffs, :automerge, :automerge_check, :ci_status, :accept_without_merge, :reject, :mark_fixed] 26 26 27 27 @sort = params[:sort].humanize 28 28 assignee_id, milestone_id = params[:assignee_id], params[:milestone_id] 29 assigned_group_id, created_group_id = params[:assigned_group_id], params[:created_group_id] 29 30 @assignee = @project.team.find(assignee_id) if assignee_id.present? && !assignee_id.to_i.zero? 30 31 @milestone = @project.milestones.find(milestone_id) if milestone_id.present? && !milestone_id.to_i.zero? 32 @user_groups = current_user.users_groups 33 @assigned_group = @user_groups.where(group_id: assigned_group_id).first.group if assigned_group_id.present? 34 @created_group = @user_groups.where(group_id: created_group_id).first.group if created_group_id.present? 137 145 end 138 146 end 139 147 148 def change_review_status(appropriate_current_statuses, change_status_method, review_action) 26 26 27 27 @sort = params[:sort].humanize 28 28 assignee_id, milestone_id = params[:assignee_id], params[:milestone_id] 29 assigned_group_id, created_group_id = params[:assigned_group_id], params[:created_group_id] 29 30 @assignee = @project.team.find(assignee_id) if assignee_id.present? && !assignee_id.to_i.zero? 30 31 @milestone = @project.milestones.find(milestone_id) if milestone_id.present? && !milestone_id.to_i.zero? 32 @user_groups = current_user.users_groups 33 @assigned_group = @user_groups.where(group_id: assigned_group_id).first.group if assigned_group_id.present? 34 @created_group = @user_groups.where(group_id: created_group_id).first.group if created_group_id.present? 35 # Merge request states, which will be available in the corresponding filter. 36 # We want to display all states, which displayed in the list MRs can have (i.e. everything what can be merged). 26 26 27 27 @sort = params[:sort].humanize 28 28 assignee_id, milestone_id = params[:assignee_id], params[:milestone_id] 29 assigned_group_id, created_group_id = params[:assigned_group_id], params[:created_group_id] 29 30 @assignee = @project.team.find(assignee_id) if assignee_id.present? && !assignee_id.to_i.zero? 30 31 @milestone = @project.milestones.find(milestone_id) if milestone_id.present? && !milestone_id.to_i.zero? 32 @user_groups = current_user.users_groups 33 @assigned_group = @user_groups.where(group_id: assigned_group_id).first.group if assigned_group_id.present? 26 26 27 27 @sort = params[:sort].humanize 28 28 assignee_id, milestone_id = params[:assignee_id], params[:milestone_id] 29 assigned_group_id, created_group_id = params[:assigned_group_id], params[:created_group_id] 139 147 148 def change_review_status(appropriate_current_statuses, change_status_method, review_action) 149 return access_denied! unless allowed_to_review? 150 151 if appropriate_current_statuses.include?(@merge_request.state) 152 @merge_request.send(change_status_method) 153 @status = true 154 else 155 @status = false 156 end 157 @review_action = review_action 158 render "_review" 159 end 160 161 def accept_without_merge 162 change_review_status(MergeRequest::VALID_STATES_FOR_ACCEPT, :accept, 'accept (without merge)') 214 251 @commits = @merge_request.commits 215 252 216 253 @allowed_to_merge = allowed_to_merge? 217 @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge 254 @show_merge_controls = MergeRequest::VALID_STATES_FOR_MERGE.include?(@merge_request.state) && @merge_request.opened? && @commits.any? && @allowed_to_merge 255 256 @allowed_to_review = allowed_to_review? 257 @show_accept_button = MergeRequest::VALID_STATES_FOR_ACCEPT.include?(@merge_request.state) && @allowed_to_review 214 251 @commits = @merge_request.commits 215 252 216 253 @allowed_to_merge = allowed_to_merge? 217 @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge 254 @show_merge_controls = MergeRequest::VALID_STATES_FOR_MERGE.include?(@merge_request.state) && @merge_request.opened? && @commits.any? && @allowed_to_merge 155 @status = false 156 end 157 @review_action = review_action 158 render "_review" 159 end 160 161 def accept_without_merge 162 change_review_status(MergeRequest::VALID_STATES_FOR_ACCEPT, :accept, 'accept (without merge)') 163 end 164 165 def reject 166 change_review_status(MergeRequest::VALID_STATES_FOR_REJECT, :reject, 'reject') 167 end 168 169 def mark_fixed 170 change_review_status(MergeRequest::VALID_STATES_FOR_MARK_FIXED, :mark_fixed, 'mark as fixed') 151 if appropriate_current_statuses.include?(@merge_request.state) 152 @merge_request.send(change_status_method) 153 @status = true 154 else 155 @status = false 156 end 157 @review_action = review_action 158 render "_review" 159 end 160 161 def accept_without_merge 162 change_review_status(MergeRequest::VALID_STATES_FOR_ACCEPT, :accept, 'accept (without merge)') 163 end 164 165 def reject 166 change_review_status(MergeRequest::VALID_STATES_FOR_REJECT, :reject, 'reject') 137 145 end 138 146 end 139 147 148 def change_review_status(appropriate_current_statuses, change_status_method, review_action) 149 return access_denied! unless allowed_to_review? 150 151 if appropriate_current_statuses.include?(@merge_request.state) 152 @merge_request.send(change_status_method) 153 @status = true 154 else 155 @status = false 156 end 157 @review_action = review_action 158 render "_review" 218 265 end 219 266 220 267 def allowed_to_merge? 221 action = if project.protected_branch?(@merge_request.target_branch) 268 action = if @merge_request.assignee == current_user 269 :push_code 270 elsif project.protected_branch?(@merge_request.target_branch) 222 271 :push_code_to_protected_branches 223 272 else 224 273 :push_code 225 274 end 226 275 227 can?(current_user, action, @project) 276 can_push_code = can?(current_user, action, @project) 277 can_merge = can?(current_user, :merge_merge_request, @project) 278 return can_push_code && can_merge 214 251 @commits = @merge_request.commits 215 252 216 253 @allowed_to_merge = allowed_to_merge? 217 @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge 254 @show_merge_controls = MergeRequest::VALID_STATES_FOR_MERGE.include?(@merge_request.state) && @merge_request.opened? && @commits.any? && @allowed_to_merge 255 256 @allowed_to_review = allowed_to_review? 257 @show_accept_button = MergeRequest::VALID_STATES_FOR_ACCEPT.include?(@merge_request.state) && @allowed_to_review 258 @show_reject_button = MergeRequest::VALID_STATES_FOR_REJECT.include?(@merge_request.state) && @allowed_to_review 259 @show_mark_fixed_button = MergeRequest::VALID_STATES_FOR_MARK_FIXED.include?(@merge_request.state) && @allowed_to_review 260 261 @target_type = :merge_request 262 @target_id = @merge_request.id 263 264 @protected_source_branch = project.protected_branch?(@merge_request.source_branch) 214 251 @commits = @merge_request.commits 215 252 216 253 @allowed_to_merge = allowed_to_merge? 217 @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge 254 @show_merge_controls = MergeRequest::VALID_STATES_FOR_MERGE.include?(@merge_request.state) && @merge_request.opened? && @commits.any? && @allowed_to_merge 255 256 @allowed_to_review = allowed_to_review? 257 @show_accept_button = MergeRequest::VALID_STATES_FOR_ACCEPT.include?(@merge_request.state) && @allowed_to_review 258 @show_reject_button = MergeRequest::VALID_STATES_FOR_REJECT.include?(@merge_request.state) && @allowed_to_review 259 @show_mark_fixed_button = MergeRequest::VALID_STATES_FOR_MARK_FIXED.include?(@merge_request.state) && @allowed_to_review 214 251 @commits = @merge_request.commits 215 252 216 253 @allowed_to_merge = allowed_to_merge? 217 @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge 254 @show_merge_controls = MergeRequest::VALID_STATES_FOR_MERGE.include?(@merge_request.state) && @merge_request.opened? && @commits.any? && @allowed_to_merge 255 256 @allowed_to_review = allowed_to_review? 257 @show_accept_button = MergeRequest::VALID_STATES_FOR_ACCEPT.include?(@merge_request.state) && @allowed_to_review 258 @show_reject_button = MergeRequest::VALID_STATES_FOR_REJECT.include?(@merge_request.state) && @allowed_to_review 105 105 branches.sort.map { |branch| link_to(branch, project_tree_path(project, branch)) }.join(", ").html_safe 106 106 end 107 107 108 def get_old_file(project, commit, diff) 109 project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 108 def parallel_diff_lines(project, commit, diff, file) 109 old_file = project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 105 105 branches.sort.map { |branch| link_to(branch, project_tree_path(project, branch)) }.join(", ").html_safe 106 106 end 107 107 108 def get_old_file(project, commit, diff) 109 project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 108 def parallel_diff_lines(project, commit, diff, file) 109 old_file = project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 110 deleted_lines = {} 111 added_lines = {} 112 each_diff_line(diff, 0) do |line, type, line_code, line_new, line_old| 113 if type == "old" 114 deleted_lines[line_old] = { line_code: line_code, type: type, line: line } 105 105 branches.sort.map { |branch| link_to(branch, project_tree_path(project, branch)) }.join(", ").html_safe 106 106 end 107 107 108 def get_old_file(project, commit, diff) 109 project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 108 def parallel_diff_lines(project, commit, diff, file) 109 old_file = project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 110 deleted_lines = {} 111 added_lines = {} 112 each_diff_line(diff, 0) do |line, type, line_code, line_new, line_old| 113 if type == "old" 114 deleted_lines[line_old] = { line_code: line_code, type: type, line: line } 115 elsif type == "new" 116 added_lines[line_new] = { line_code: line_code, type: type, line: line } 166 new_lines[line_index].content = "File was deleted" 167 elsif added_line 168 new_lines[line_index].type = :added 169 new_lines[line_index].num = line_index2 + 1 170 new_lines[line_index].content = new_line 171 new_lines[line_index].code = added_line[:line_code] 172 elsif new_line 173 new_lines[line_index].type = :no_change 174 new_lines[line_index].num = line_index2 + 1 175 new_lines[line_index].content = new_line 176 else 177 new_lines[line_index].type = :deleted 178 end 179 end 180 181 return old_lines, new_lines 2 2 module MergeRequests 3 3 def new_merge_request_email(recipient_id, merge_request_id) 4 4 @merge_request = MergeRequest.find(merge_request_id) 5 @author = User.find(@merge_request.author_id) 5 6 @project = @merge_request.project 6 mail(to: recipient(recipient_id), subject: subject("New merge request ##{@merge_request.iid}", @merge_request.title)) 7 mail(to: recipient(recipient_id), subject: subject("#{@author.name} created merge request !#{@merge_request.iid}", @merge_request.title)) 7 8 end 8 9 9 def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id) 10 def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id, assigned_by) 2 2 module MergeRequests 3 3 def new_merge_request_email(recipient_id, merge_request_id) 4 4 @merge_request = MergeRequest.find(merge_request_id) 5 @author = User.find(@merge_request.author_id) 5 6 @project = @merge_request.project 6 mail(to: recipient(recipient_id), subject: subject("New merge request ##{@merge_request.iid}", @merge_request.title)) 7 mail(to: recipient(recipient_id), subject: subject("#{@author.name} created merge request !#{@merge_request.iid}", @merge_request.title)) 7 8 end 8 9 9 def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id) 10 def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id, assigned_by) 10 11 @merge_request = MergeRequest.find(merge_request_id) 11 12 @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id 12 13 @project = @merge_request.project 13 mail(to: recipient(recipient_id), subject: subject("Changed merge request ##{@merge_request.iid}", @merge_request.title)) 14 mail(to: recipient(recipient_id), subject: subject("#{assigned_by.name} reassigned !#{@merge_request.iid} | #{@merge_request.title} to #{@merge_request.assignee.name}")) 151 old_lines[line_index].type = :deleted 152 old_lines[line_index].content = old_line 153 old_lines[line_index].num = line_index1 + 1 154 old_lines[line_index].code = deleted_line[:line_code] 155 elsif old_line 156 old_lines[line_index].type = :no_change 157 old_lines[line_index].content = old_line 158 old_lines[line_index].num = line_index1 + 1 159 else 160 old_lines[line_index].type = :added 161 end 162 163 # new 164 if line_index == 0 && diff.deleted_file 165 new_lines[line_index].type = :file_deleted 166 new_lines[line_index].content = "File was deleted" 2 2 module MergeRequests 3 3 def new_merge_request_email(recipient_id, merge_request_id) 4 4 @merge_request = MergeRequest.find(merge_request_id) 5 @author = User.find(@merge_request.author_id) 5 6 @project = @merge_request.project 6 mail(to: recipient(recipient_id), subject: subject("New merge request ##{@merge_request.iid}", @merge_request.title)) 7 mail(to: recipient(recipient_id), subject: subject("#{@author.name} created merge request !#{@merge_request.iid}", @merge_request.title)) 105 105 branches.sort.map { |branch| link_to(branch, project_tree_path(project, branch)) }.join(", ").html_safe 106 106 end 107 107 108 def get_old_file(project, commit, diff) 109 project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 108 def parallel_diff_lines(project, commit, diff, file) 109 old_file = project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 110 deleted_lines = {} 111 added_lines = {} 112 each_diff_line(diff, 0) do |line, type, line_code, line_new, line_old| 113 if type == "old" 114 deleted_lines[line_old] = { line_code: line_code, type: type, line: line } 115 elsif type == "new" 105 105 branches.sort.map { |branch| link_to(branch, project_tree_path(project, branch)) }.join(", ").html_safe 106 106 end 107 107 108 def get_old_file(project, commit, diff) 109 project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 108 def parallel_diff_lines(project, commit, diff, file) 109 old_file = project.repository.blob_at(commit.parent_id, diff.old_path) if commit.parent_id 110 deleted_lines = {} 111 added_lines = {} 112 each_diff_line(diff, 0) do |line, type, line_code, line_new, line_old| 113 if type == "old" 18 18 @note = Note.find(note_id) 19 19 @merge_request = @note.noteable 20 20 @project = @note.project 21 mail(to: recipient(recipient_id), subject: subject("Note for merge request ##{@merge_request.iid}")) 21 mail(to: recipient(recipient_id), subject: subject("#{@note.author_name} commented on ##{@merge_request.iid}", @merge_request.title)) 11 12 @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id 12 13 @project = @merge_request.project 13 mail(to: recipient(recipient_id), subject: subject("Changed merge request ##{@merge_request.iid}", @merge_request.title)) 14 mail(to: recipient(recipient_id), subject: subject("#{assigned_by.name} reassigned !#{@merge_request.iid} | #{@merge_request.title} to #{@merge_request.assignee.name}")) 14 15 end 15 16 16 17 def closed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id) 17 18 @merge_request = MergeRequest.find(merge_request_id) 18 19 @updated_by = User.find updated_by_user_id 19 20 @project = @merge_request.project 20 mail(to: recipient(recipient_id), subject: subject("Closed merge request ##{@merge_request.iid}", @merge_request.title)) 21 mail(to: recipient(recipient_id), subject: subject("#{@updated_by.name} closed merge request !#{@merge_request.iid}", @merge_request.title)) 21 22 end 22 23 23 def merged_merge_request_email(recipient_id, merge_request_id) 24 def reviewed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id, action) 21 mail(to: recipient(recipient_id), subject: subject("#{@updated_by.name} closed merge request !#{@merge_request.iid}", @merge_request.title)) 21 22 end 22 23 23 def merged_merge_request_email(recipient_id, merge_request_id) 24 def reviewed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id, action) 25 @merge_request = MergeRequest.find(merge_request_id) 26 @updated_by = User.find updated_by_user_id 27 @action = action 28 mail(to: recipient(recipient_id), subject: subject("#{@updated_by.name} #{action} !#{@merge_request.iid}", @merge_request.title)) 29 end 30 31 def merged_merge_request_email(recipient_id, merge_request_id, merged_by) 24 32 @merge_request = MergeRequest.find(merge_request_id) 25 33 @project = @merge_request.project 26 mail(to: recipient(recipient_id), subject: subject("Accepted merge request ##{@merge_request.iid}", @merge_request.title)) 34 mail(to: recipient(recipient_id), subject: subject("#{merged_by.name} merged !#{@merge_request.iid}", @merge_request.title)) 8 9 9 def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id) 10 def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id, assigned_by) 10 11 @merge_request = MergeRequest.find(merge_request_id) 11 12 @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id 12 13 @project = @merge_request.project 13 mail(to: recipient(recipient_id), subject: subject("Changed merge request ##{@merge_request.iid}", @merge_request.title)) 14 mail(to: recipient(recipient_id), subject: subject("#{assigned_by.name} reassigned !#{@merge_request.iid} | #{@merge_request.title} to #{@merge_request.assignee.name}")) 14 15 end 15 16 16 17 def closed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id) 17 18 @merge_request = MergeRequest.find(merge_request_id) 18 19 @updated_by = User.find updated_by_user_id 19 20 @project = @merge_request.project 20 mail(to: recipient(recipient_id), subject: subject("Closed merge request ##{@merge_request.iid}", @merge_request.title)) 21 mail(to: recipient(recipient_id), subject: subject("#{@updated_by.name} closed merge request !#{@merge_request.iid}", @merge_request.title)) 14 15 end 15 16 16 17 def closed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id) 17 18 @merge_request = MergeRequest.find(merge_request_id) 18 19 @updated_by = User.find updated_by_user_id 19 20 @project = @merge_request.project 20 mail(to: recipient(recipient_id), subject: subject("Closed merge request ##{@merge_request.iid}", @merge_request.title)) 21 mail(to: recipient(recipient_id), subject: subject("#{@updated_by.name} closed merge request !#{@merge_request.iid}", @merge_request.title)) 21 22 end 22 23 23 def merged_merge_request_email(recipient_id, merge_request_id) 24 def reviewed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id, action) 25 @merge_request = MergeRequest.find(merge_request_id) 26 @updated_by = User.find updated_by_user_id 27 @action = action 28 mail(to: recipient(recipient_id), subject: subject("#{@updated_by.name} #{action} !#{@merge_request.iid}", @merge_request.title)) 141 144 action == LEFT 142 145 end 143 146 147 def accepted? 148 action == ACCEPTED 149 end 150 151 def rejected? 152 action == REJECTED 104 127 # both merged and closed mr's 105 128 scope :closed, -> { with_states(:closed, :merged) } 106 129 130 VALID_STATES_FOR_MERGE = ["opened", "reopened", "accepted", "rejected", "fixed", "closed", "merged"] 131 VALID_STATES_FOR_ACCEPT = ["opened", "reopened", "rejected", "fixed"] 132 VALID_STATES_FOR_REJECT = ["opened", "reopened", "accepted", "fixed"] 133 VALID_STATES_FOR_MARK_FIXED = ["rejected"] 134 135 # Hack: we want the review states ('accepted', 'rejected', 'fixed') to behave in the same way as the 'opened' one 104 127 # both merged and closed mr's 105 128 scope :closed, -> { with_states(:closed, :merged) } 106 129 130 VALID_STATES_FOR_MERGE = ["opened", "reopened", "accepted", "rejected", "fixed", "closed", "merged"] 92 114 93 115 scope :of_group, ->(group) { where("source_project_id in (:group_project_ids) OR target_project_id in (:group_project_ids)", group_project_ids: group.project_ids) } 94 116 scope :of_user_team, ->(team) { where("(source_project_id in (:team_project_ids) OR target_project_id in (:team_project_ids) AND assignee_id in (:team_member_ids))", team_project_ids: team.project_ids, team_member_ids: team.member_ids) } 95 scope :opened, -> { with_state(:opened) } 117 # Hack: we want the review states ('accepted', 'rejected', 'fixed') to behave in the same way as the 'opened' one 104 127 # both merged and closed mr's 105 128 scope :closed, -> { with_states(:closed, :merged) } 106 129 130 VALID_STATES_FOR_MERGE = ["opened", "reopened", "accepted", "rejected", "fixed", "closed", "merged"] 131 VALID_STATES_FOR_ACCEPT = ["opened", "reopened", "rejected", "fixed"] 132 VALID_STATES_FOR_REJECT = ["opened", "reopened", "accepted", "fixed"] 133 VALID_STATES_FOR_MARK_FIXED = ["rejected"] 104 127 # both merged and closed mr's 105 128 scope :closed, -> { with_states(:closed, :merged) } 106 129 130 VALID_STATES_FOR_MERGE = ["opened", "reopened", "accepted", "rejected", "fixed", "closed", "merged"] 131 VALID_STATES_FOR_ACCEPT = ["opened", "reopened", "rejected", "fixed"] 132 VALID_STATES_FOR_REJECT = ["opened", "reopened", "accepted", "fixed"] 31 31 scope :guests, -> { where(project_access: GUEST) } 32 32 scope :reporters, -> { where(project_access: REPORTER) } 33 33 scope :developers, -> { where(project_access: DEVELOPER) } 34 scope :developers_with_merge, -> { where(project_access: DEVELOPER_WITH_MERGE) } 104 127 # both merged and closed mr's 105 128 scope :closed, -> { with_states(:closed, :merged) } 106 129 130 VALID_STATES_FOR_MERGE = ["opened", "reopened", "accepted", "rejected", "fixed", "closed", "merged"] 131 VALID_STATES_FOR_ACCEPT = ["opened", "reopened", "rejected", "fixed"] 104 127 # both merged and closed mr's 105 128 scope :closed, -> { with_states(:closed, :merged) } 106 129 130 VALID_STATES_FOR_MERGE = ["opened", "reopened", "accepted", "rejected", "fixed", "closed", "merged"] 131 VALID_STATES_FOR_ACCEPT = ["opened", "reopened", "rejected", "fixed"] 132 VALID_STATES_FOR_REJECT = ["opened", "reopened", "accepted", "fixed"] 133 VALID_STATES_FOR_MARK_FIXED = ["rejected"] 134 135 # Hack: we want the review states ('accepted', 'rejected', 'fixed') to behave in the same way as the 'opened' one 136 def opened? 137 return state == "opened" || accepted? || rejected? || fixed? 84 end 85 76 86 # When we merge a merge request we should send next emails: 77 87 # 78 88 # * merge_request author if their notification level is not Disabled 79 89 # * merge_request assignee if their notification level is not Disabled 80 90 # * project team members with notification level higher then Participating 81 91 # 82 def merge_mr(merge_request) 92 def merge_mr(merge_request, current_user) 83 93 recipients = reject_muted_users([merge_request.author, merge_request.assignee], merge_request.target_project) 84 94 recipients = recipients.concat(project_watchers(merge_request.target_project)).uniq 85 95 86 96 recipients.each do |recipient| 87 mailer.merged_merge_request_email(recipient.id, merge_request.id) 97 mailer.merged_merge_request_email(recipient.id, merge_request.id, current_user) 113 116 items 114 117 end 115 118 119 def by_assigned_group_id(items) 120 if params[:assigned_group_id].present? 121 items = items.joins(assignee: :users_groups).where(users_groups: {group_id: params[:assigned_group_id]}) 35 35 execute_hooks(merge_request) 36 36 end 37 37 38 def after_accept(merge_request, transition) 39 notification.review_mr(merge_request, current_user, 'accepted (without merge)') 113 116 items 114 117 end 115 118 119 def by_assigned_group_id(items) 120 if params[:assigned_group_id].present? 121 items = items.joins(assignee: :users_groups).where(users_groups: {group_id: params[:assigned_group_id]}) 122 end 123 124 items 125 end 126 127 def by_created_group_id(items) 128 if params[:created_group_id].present? 129 items = items.joins(author: :users_groups).where(users_groups: {group_id: params[:created_group_id]}) 73 73 close_resource_email(merge_request, merge_request.target_project, current_user, 'closed_merge_request_email') 74 74 end 75 75 76 # When we change a merge request's review state we should send next emails: 77 # 78 # * merge_request author if his notification level is not Disabled 79 # * merge_request assignee if his notification level is not Disabled 80 # * project team members with notification level higher then Participating 81 # 82 def review_mr(merge_request, current_user, action) 83 review_mr_email(merge_request, merge_request.target_project, current_user, action) 250 270 recipients.delete(current_user) 251 271 252 272 recipients.each do |recipient| 253 mailer.send(method, recipient.id, target.id, target.assignee_id_was) 273 mailer.send(method, recipient.id, target.id, target.assignee_id_was, current_user) 227 237 end 228 238 end 229 239 240 def review_mr_email(target, project, current_user, action) 241 recipients = reject_muted_users([target.author, target.assignee], project) 242 recipients = recipients.concat(project_watchers(project)).uniq 243 recipients.delete(current_user) 244 245 recipients.each do |recipient| 246 mailer.send('reviewed_merge_request_email', recipient.id, target.id, current_user.id, action)
Please register or sign in to reply