Module: SystemNoteService

Extended by:
SystemNoteService
Included in:
SystemNoteService
Defined in:
app/services/system_note_service.rb

Overview

SystemNoteService

Used for creating system notes (e.g., when a user references a merge request from an issue, an issue's assignee changes, an issue is closed, etc.)

Instance Method Summary collapse

Instance Method Details

#abort_merge_when_pipeline_succeeds(noteable, project, author, reason) ⇒ Object

Called when 'merge when pipeline succeeds' is aborted


129
130
131
# File 'app/services/system_note_service.rb', line 129

def abort_merge_when_pipeline_succeeds(noteable, project, author, reason)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author).abort_merge_when_pipeline_succeeds(reason)
end

#add_commits(noteable, project, author, new_commits, existing_commits = [], oldrev = nil) ⇒ Object

Called when commits are added to a Merge Request

noteable - Noteable object project - Project owning noteable author - User performing the change new_commits - Array of Commits added since last push existing_commits - Array of Commits added in a previous push oldrev - Optional String SHA of a previous Commit

Returns the created Note object


20
21
22
# File 'app/services/system_note_service.rb', line 20

def add_commits(noteable, project, author, new_commits, existing_commits = [], oldrev = nil)
  ::SystemNotes::CommitService.new(noteable: noteable, project: project, author: author).add_commits(new_commits, existing_commits, oldrev)
end

#add_merge_request_draft_from_commit(noteable, project, author, commit) ⇒ Object


137
138
139
# File 'app/services/system_note_service.rb', line 137

def add_merge_request_draft_from_commit(noteable, project, author, commit)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author).add_merge_request_draft_from_commit(commit)
end

#approve_mr(noteable, user) ⇒ Object

Called when the merge request is approved by user

noteable - Noteable object user - User performing approve

Example Note text:

"approved this merge request"

Returns the created Note object


295
296
297
# File 'app/services/system_note_service.rb', line 295

def approve_mr(noteable, user)
  merge_requests_service(noteable, noteable.project, user).approve_mr
end

#auto_resolve_prometheus_alert(noteable, project, author) ⇒ Object


253
254
255
# File 'app/services/system_note_service.rb', line 253

def auto_resolve_prometheus_alert(noteable, project, author)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).auto_resolve_prometheus_alert
end

#cancel_merge_when_pipeline_succeeds(noteable, project, author) ⇒ Object

Called when 'merge when pipeline succeeds' is canceled


124
125
126
# File 'app/services/system_note_service.rb', line 124

def cancel_merge_when_pipeline_succeeds(noteable, project, author)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author).cancel_merge_when_pipeline_succeeds
end

#change_alert_status(alert, author) ⇒ Object


303
304
305
# File 'app/services/system_note_service.rb', line 303

def change_alert_status(alert, author)
  ::SystemNotes::AlertManagementService.new(noteable: alert, project: alert.project, author: author).change_alert_status(alert)
end

#change_assignee(noteable, project, author, assignee) ⇒ Object


36
37
38
# File 'app/services/system_note_service.rb', line 36

def change_assignee(noteable, project, author, assignee)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).change_assignee(assignee)
end

#change_branch(noteable, project, author, branch_type, old_branch, new_branch) ⇒ Object

Called when a branch in Noteable is changed

noteable - Noteable object project - Project owning noteable author - User performing the change branch_type - 'source' or 'target' old_branch - old branch name new_branch - new branch name

Example Note text:

"changed target branch from `Old` to `New`"

Returns the created Note object


179
180
181
# File 'app/services/system_note_service.rb', line 179

def change_branch(noteable, project, author, branch_type, old_branch, new_branch)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author).change_branch(branch_type, old_branch, new_branch)
end

#change_branch_presence(noteable, project, author, branch_type, branch, presence) ⇒ Object

Called when a branch in Noteable is added or deleted

noteable - Noteable object project - Project owning noteable author - User performing the change branch_type - :source or :target branch - branch name presence - :add or :delete

Example Note text:

"restored target branch `feature`"

Returns the created Note object


197
198
199
# File 'app/services/system_note_service.rb', line 197

def change_branch_presence(noteable, project, author, branch_type, branch, presence)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author).change_branch_presence(branch_type, branch, presence)
end

#change_description(noteable, project, author) ⇒ Object


157
158
159
# File 'app/services/system_note_service.rb', line 157

def change_description(noteable, project, author)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).change_description
end

#change_due_date(noteable, project, author, due_date) ⇒ Object

Called when the due_date of a Noteable is changed

noteable - Noteable object project - Project owning noteable author - User performing the change due_date - Due date being assigned, or nil

Example Note text:

"removed due date"

"changed due date to September 20, 2018"

Returns the created Note object


70
71
72
# File 'app/services/system_note_service.rb', line 70

def change_due_date(noteable, project, author, due_date)
  ::SystemNotes::TimeTrackingService.new(noteable: noteable, project: project, author: author).change_due_date(due_date)
end

#change_incident_severity(incident, author) ⇒ Object


315
316
317
# File 'app/services/system_note_service.rb', line 315

def change_incident_severity(incident, author)
  ::SystemNotes::IncidentService.new(noteable: incident, project: incident.project, author: author).change_incident_severity
end

#change_issuable_assignees(issuable, project, author, old_assignees) ⇒ Object


40
41
42
# File 'app/services/system_note_service.rb', line 40

def change_issuable_assignees(issuable, project, author, old_assignees)
  ::SystemNotes::IssuablesService.new(noteable: issuable, project: project, author: author).change_issuable_assignees(old_assignees)
end

#change_issuable_reviewers(issuable, project, author, old_reviewers) ⇒ Object


44
45
46
# File 'app/services/system_note_service.rb', line 44

def change_issuable_reviewers(issuable, project, author, old_reviewers)
  ::SystemNotes::IssuablesService.new(noteable: issuable, project: project, author: author).change_issuable_reviewers(old_reviewers)
end

#change_issue_confidentiality(issue, project, author) ⇒ Object


161
162
163
# File 'app/services/system_note_service.rb', line 161

def change_issue_confidentiality(issue, project, author)
  ::SystemNotes::IssuablesService.new(noteable: issue, project: project, author: author).change_issue_confidentiality
end

#change_status(noteable, project, author, status, source = nil) ⇒ Object


114
115
116
# File 'app/services/system_note_service.rb', line 114

def change_status(noteable, project, author, status, source = nil)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).change_status(status, source)
end

#change_task_status(noteable, project, author, new_task) ⇒ Object


221
222
223
# File 'app/services/system_note_service.rb', line 221

def change_task_status(noteable, project, author, new_task)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).change_task_status(new_task)
end

#change_time_estimate(noteable, project, author) ⇒ Object

Called when the estimated time of a Noteable is changed

noteable - Noteable object project - Project owning noteable author - User performing the change time_estimate - Estimated time

Example Note text:

"removed time estimate"

"changed time estimate to 3d 5h"

Returns the created Note object


88
89
90
# File 'app/services/system_note_service.rb', line 88

def change_time_estimate(noteable, project, author)
  ::SystemNotes::TimeTrackingService.new(noteable: noteable, project: project, author: author).change_time_estimate
end

#change_time_spent(noteable, project, author) ⇒ Object

Called when the spent time of a Noteable is changed

noteable - Noteable object project - Project owning noteable author - User performing the change time_spent - Spent time

Example Note text:

"removed time spent"

"added 2h 30m of time spent"

Returns the created Note object


106
107
108
# File 'app/services/system_note_service.rb', line 106

def change_time_spent(noteable, project, author)
  ::SystemNotes::TimeTrackingService.new(noteable: noteable, project: project, author: author).change_time_spent
end

#change_title(noteable, project, author, old_title) ⇒ Object


153
154
155
# File 'app/services/system_note_service.rb', line 153

def change_title(noteable, project, author, old_title)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).change_title(old_title)
end

#close_after_error_tracking_resolve(issue, project, author) ⇒ Object


110
111
112
# File 'app/services/system_note_service.rb', line 110

def close_after_error_tracking_resolve(issue, project, author)
  ::SystemNotes::IssuablesService.new(noteable: issue, project: project, author: author).close_after_error_tracking_resolve
end

#create_new_alert(alert, monitoring_tool) ⇒ Object


311
312
313
# File 'app/services/system_note_service.rb', line 311

def create_new_alert(alert, monitoring_tool)
  ::SystemNotes::AlertManagementService.new(noteable: alert, project: alert.project).create_new_alert(monitoring_tool)
end

#cross_reference(noteable, mentioner, author) ⇒ Object


213
214
215
# File 'app/services/system_note_service.rb', line 213

def cross_reference(noteable, mentioner, author)
  ::SystemNotes::IssuablesService.new(noteable: noteable, author: author).cross_reference(mentioner)
end

#cross_reference_disallowed?(noteable, mentioner) ⇒ Boolean

Returns:

  • (Boolean)

241
242
243
# File 'app/services/system_note_service.rb', line 241

def cross_reference_disallowed?(noteable, mentioner)
  ::SystemNotes::IssuablesService.new(noteable: noteable).cross_reference_disallowed?(mentioner)
end

#cross_reference_exists?(noteable, mentioner) ⇒ Boolean

Returns:

  • (Boolean)

217
218
219
# File 'app/services/system_note_service.rb', line 217

def cross_reference_exists?(noteable, mentioner)
  ::SystemNotes::IssuablesService.new(noteable: noteable).cross_reference_exists?(mentioner)
end

#design_discussion_added(discussion_note) ⇒ Object

Called when a new discussion is created on a design

discussion_note - DiscussionNote

Example Note text:

"started a discussion on screen.png"

Returns the created Note object


279
280
281
282
283
# File 'app/services/system_note_service.rb', line 279

def design_discussion_added(discussion_note)
  design = discussion_note.noteable

  ::SystemNotes::DesignManagementService.new(noteable: design.issue, project: design.project, author: discussion_note.author).design_discussion_added(discussion_note)
end

#design_version_added(version) ⇒ Object

Parameters:

- version [DesignManagement::Version]

Example Note text:

"added [1 designs](link-to-version)"
"changed [2 designs](link-to-version)"

Returns [Array<Note>]: the created Note objects


266
267
268
# File 'app/services/system_note_service.rb', line 266

def design_version_added(version)
  ::SystemNotes::DesignManagementService.new(noteable: version.issue, project: version.issue.project, author: version.author).design_version_added(version)
end

#diff_discussion_outdated(discussion, project, author, change_position) ⇒ Object


149
150
151
# File 'app/services/system_note_service.rb', line 149

def diff_discussion_outdated(discussion, project, author, change_position)
  ::SystemNotes::MergeRequestsService.new(project: project, author: author).diff_discussion_outdated(discussion, change_position)
end

#discussion_continued_in_issue(discussion, project, author, issue) ⇒ Object


145
146
147
# File 'app/services/system_note_service.rb', line 145

def discussion_continued_in_issue(discussion, project, author, issue)
  ::SystemNotes::MergeRequestsService.new(project: project, author: author).discussion_continued_in_issue(discussion, issue)
end

#discussion_lock(issuable, author) ⇒ Object


237
238
239
# File 'app/services/system_note_service.rb', line 237

def discussion_lock(issuable, author)
  ::SystemNotes::IssuablesService.new(noteable: issuable, project: issuable.project, author: author).discussion_lock
end

#handle_merge_request_draft(noteable, project, author) ⇒ Object


133
134
135
# File 'app/services/system_note_service.rb', line 133

def handle_merge_request_draft(noteable, project, author)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author).handle_merge_request_draft
end

#mark_canonical_issue_of_duplicate(noteable, project, author, duplicate_issue) ⇒ Object


233
234
235
# File 'app/services/system_note_service.rb', line 233

def mark_canonical_issue_of_duplicate(noteable, project, author, duplicate_issue)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).mark_canonical_issue_of_duplicate(duplicate_issue)
end

#mark_duplicate_issue(noteable, project, author, canonical_issue) ⇒ Object


229
230
231
# File 'app/services/system_note_service.rb', line 229

def mark_duplicate_issue(noteable, project, author, canonical_issue)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).mark_duplicate_issue(canonical_issue)
end

#merge_when_pipeline_succeeds(noteable, project, author, sha) ⇒ Object

Called when 'merge when pipeline succeeds' is executed


119
120
121
# File 'app/services/system_note_service.rb', line 119

def merge_when_pipeline_succeeds(noteable, project, author, sha)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author).merge_when_pipeline_succeeds(sha)
end

#new_alert_issue(alert, issue, author) ⇒ Object


307
308
309
# File 'app/services/system_note_service.rb', line 307

def new_alert_issue(alert, issue, author)
  ::SystemNotes::AlertManagementService.new(noteable: alert, project: alert.project, author: author).new_alert_issue(issue)
end

#new_issue_branch(issue, project, author, branch, branch_project: nil) ⇒ Object

Called when a branch is created from the 'new branch' button on a issue Example note text:

"created branch `201-issue-branch-button`"

205
206
207
# File 'app/services/system_note_service.rb', line 205

def new_issue_branch(issue, project, author, branch, branch_project: nil)
  ::SystemNotes::MergeRequestsService.new(noteable: issue, project: project, author: author).new_issue_branch(branch, branch_project: branch_project)
end

#new_merge_request(issue, project, author, merge_request) ⇒ Object


209
210
211
# File 'app/services/system_note_service.rb', line 209

def new_merge_request(issue, project, author, merge_request)
  ::SystemNotes::MergeRequestsService.new(noteable: issue, project: project, author: author).new_merge_request(merge_request)
end

#noteable_moved(noteable, project, noteable_ref, author, direction:) ⇒ Object


225
226
227
# File 'app/services/system_note_service.rb', line 225

def noteable_moved(noteable, project, noteable_ref, author, direction:)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: project, author: author).noteable_moved(noteable_ref, direction)
end

#relate_issue(noteable, noteable_ref, user) ⇒ Object


48
49
50
# File 'app/services/system_note_service.rb', line 48

def relate_issue(noteable, noteable_ref, user)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: noteable.project, author: user).relate_issue(noteable_ref)
end

#resolve_all_discussions(merge_request, project, author) ⇒ Object


141
142
143
# File 'app/services/system_note_service.rb', line 141

def resolve_all_discussions(merge_request, project, author)
  ::SystemNotes::MergeRequestsService.new(noteable: merge_request, project: project, author: author).resolve_all_discussions
end

#tag_commit(noteable, project, author, tag_name) ⇒ Object

Called when a commit was tagged

noteable - Noteable object project - Project owning noteable author - User performing the tag tag_name - The created tag name

Returns the created Note object


32
33
34
# File 'app/services/system_note_service.rb', line 32

def tag_commit(noteable, project, author, tag_name)
  ::SystemNotes::CommitService.new(noteable: noteable, project: project, author: author).tag_commit(tag_name)
end

#unapprove_mr(noteable, user) ⇒ Object


299
300
301
# File 'app/services/system_note_service.rb', line 299

def unapprove_mr(noteable, user)
  merge_requests_service(noteable, noteable.project, user).unapprove_mr
end

#unrelate_issue(noteable, noteable_ref, user) ⇒ Object


52
53
54
# File 'app/services/system_note_service.rb', line 52

def unrelate_issue(noteable, noteable_ref, user)
  ::SystemNotes::IssuablesService.new(noteable: noteable, project: noteable.project, author: user).unrelate_issue(noteable_ref)
end

245
246
247
# File 'app/services/system_note_service.rb', line 245

def zoom_link_added(issue, project, author)
  ::SystemNotes::ZoomService.new(noteable: issue, project: project, author: author).zoom_link_added
end

249
250
251
# File 'app/services/system_note_service.rb', line 249

def zoom_link_removed(issue, project, author)
  ::SystemNotes::ZoomService.new(noteable: issue, project: project, author: author).zoom_link_removed
end