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


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

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_email_participants(noteable, project, author, body) ⇒ Object


271
272
273
# File 'app/services/system_note_service.rb', line 271

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

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


164
165
166
# File 'app/services/system_note_service.rb', line 164

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


333
334
335
# File 'app/services/system_note_service.rb', line 333

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

#auto_resolve_prometheus_alert(noteable, project, author) ⇒ Object


291
292
293
# File 'app/services/system_note_service.rb', line 291

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


151
152
153
# File 'app/services/system_note_service.rb', line 151

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, reason = nil) ⇒ Object


341
342
343
# File 'app/services/system_note_service.rb', line 341

def change_alert_status(alert, author, reason = nil)
  ::SystemNotes::AlertManagementService.new(noteable: alert, project: alert.project, author: author).change_alert_status(reason)
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, event_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' event_type - the source of event: 'update' or 'delete' old_branch - old branch name new_branch - new branch name

Example Note text is based on event_type:

update: "changed target branch from `Old` to `New`"
delete: "deleted the `Old` branch. This merge request now targets the `New` branch"

Returns the created Note object


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

def change_branch(noteable, project, author, branch_type, event_type, old_branch, new_branch)
  ::SystemNotes::MergeRequestsService.new(noteable: noteable, project: project, author: author)
    .change_branch(branch_type, event_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


227
228
229
# File 'app/services/system_note_service.rb', line 227

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


184
185
186
# File 'app/services/system_note_service.rb', line 184

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


74
75
76
# File 'app/services/system_note_service.rb', line 74

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


353
354
355
# File 'app/services/system_note_service.rb', line 353

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

#change_incident_status(incident, author, reason = nil) ⇒ Object


357
358
359
# File 'app/services/system_note_service.rb', line 357

def change_incident_status(incident, author, reason = nil)
  ::SystemNotes::IncidentService.new(noteable: incident, project: incident.project, author: author).change_incident_status(reason)
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_contacts(issuable, project, author, added_count, removed_count) ⇒ Object


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

def change_issuable_contacts(issuable, project, author, added_count, removed_count)
  ::SystemNotes::IssuablesService.new(noteable: issuable, project: project, author: author).change_issuable_contacts(added_count, removed_count)
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


188
189
190
# File 'app/services/system_note_service.rb', line 188

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

#change_issue_type(issue, author) ⇒ Object


365
366
367
# File 'app/services/system_note_service.rb', line 365

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

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


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

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


251
252
253
# File 'app/services/system_note_service.rb', line 251

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


92
93
94
# File 'app/services/system_note_service.rb', line 92

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


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

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


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

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


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

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


349
350
351
# File 'app/services/system_note_service.rb', line 349

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

#cross_reference(mentioned, mentioned_in, author) ⇒ Object


243
244
245
# File 'app/services/system_note_service.rb', line 243

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

#cross_reference_disallowed?(mentioned, mentioned_in) ⇒ Boolean

Returns:

  • (Boolean)

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

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

#cross_reference_exists?(mentioned, mentioned_in) ⇒ Boolean

Returns:

  • (Boolean)

247
248
249
# File 'app/services/system_note_service.rb', line 247

def cross_reference_exists?(mentioned, mentioned_in)
  ::SystemNotes::IssuablesService.new(noteable: mentioned).cross_reference_exists?(mentioned_in)
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


317
318
319
320
321
# File 'app/services/system_note_service.rb', line 317

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


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

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


176
177
178
# File 'app/services/system_note_service.rb', line 176

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


172
173
174
# File 'app/services/system_note_service.rb', line 172

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


275
276
277
# File 'app/services/system_note_service.rb', line 275

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


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

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

#log_resolving_alert(alert, monitoring_tool) ⇒ Object


361
362
363
# File 'app/services/system_note_service.rb', line 361

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

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


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

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


263
264
265
# File 'app/services/system_note_service.rb', line 263

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


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

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


345
346
347
# File 'app/services/system_note_service.rb', line 345

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`"

235
236
237
# File 'app/services/system_note_service.rb', line 235

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


239
240
241
# File 'app/services/system_note_service.rb', line 239

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_cloned(noteable, project, noteable_ref, author, direction:) ⇒ Object


259
260
261
# File 'app/services/system_note_service.rb', line 259

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

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


255
256
257
# File 'app/services/system_note_service.rb', line 255

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_issuable(noteable, noteable_ref, user) ⇒ Object


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

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

#remove_attention_request(noteable, project, author, user) ⇒ Object


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

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

#remove_timelog(noteable, project, author, timelog) ⇒ Object

Called when a timelog is removed from a Noteable

noteable - Noteable object project - Project owning the noteable author - User performing the change timelog - The removed timelog

Example Note text:

"deleted 2h 30m of time spent from 22-03-2022"

Returns the created Note object


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

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

#request_attention(noteable, project, author, user) ⇒ Object


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

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

#resolve_all_discussions(merge_request, project, author) ⇒ Object


168
169
170
# File 'app/services/system_note_service.rb', line 168

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


337
338
339
# File 'app/services/system_note_service.rb', line 337

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

#unrelate_issuable(noteable, noteable_ref, user) ⇒ Object


56
57
58
# File 'app/services/system_note_service.rb', line 56

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

283
284
285
# File 'app/services/system_note_service.rb', line 283

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

287
288
289
# File 'app/services/system_note_service.rb', line 287

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