GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — python-gitlab/docs/gl_objects/discussions.rst at master · classicvalues/python-gitlab

Expand file tree

/

discussions.rst

Copy path
More file actions
More file actions

Latest commit

 

History

History
History
107 lines (75 loc) · 3.35 KB
/

discussions.rst

Copy path

File metadata and controls

107 lines (75 loc) · 3.35 KB
Raw
Copy raw file
Download raw file
Outline
Edit and raw actions

Discussions

Discussions organize the notes in threads. See the :ref:`project-notes` chapter for more information about notes.

Discussions are available for project issues, merge requests, snippets and commits.

Reference

  • v4 API:

    Issues:

    • :class:`gitlab.v4.objects.ProjectIssueDiscussion`
    • :class:`gitlab.v4.objects.ProjectIssueDiscussionManager`
    • :class:`gitlab.v4.objects.ProjectIssueDiscussionNote`
    • :class:`gitlab.v4.objects.ProjectIssueDiscussionNoteManager`
    • :attr:`gitlab.v4.objects.ProjectIssue.notes`

    MergeRequests:

    • :class:`gitlab.v4.objects.ProjectMergeRequestDiscussion`
    • :class:`gitlab.v4.objects.ProjectMergeRequestDiscussionManager`
    • :class:`gitlab.v4.objects.ProjectMergeRequestDiscussionNote`
    • :class:`gitlab.v4.objects.ProjectMergeRequestDiscussionNoteManager`
    • :attr:`gitlab.v4.objects.ProjectMergeRequest.notes`

    Snippets:

    • :class:`gitlab.v4.objects.ProjectSnippetDiscussion`
    • :class:`gitlab.v4.objects.ProjectSnippetDiscussionManager`
    • :class:`gitlab.v4.objects.ProjectSnippetDiscussionNote`
    • :class:`gitlab.v4.objects.ProjectSnippetDiscussionNoteManager`
    • :attr:`gitlab.v4.objects.ProjectSnippet.notes`
  • GitLab API: https://docs.gitlab.com/ce/api/discussions.html

Examples

List the discussions for a resource (issue, merge request, snippet or commit):

discussions = resource.discussions.list()

Get a single discussion:

discussion = resource.discussions.get(discussion_id)

You can access the individual notes in the discussion through the notes attribute. It holds a list of notes in chronological order:

# ``resource.notes`` is a DiscussionNoteManager, so we need to get the
# object notes using ``attributes``
for note in discussion.attributes['notes']:
    print(note['body'])

Note

The notes are dicts, not objects.

You can add notes to existing discussions:

new_note = discussion.notes.create({'body': 'Episode IV: A new note'})

You can get and update a single note using the *DiscussionNote resources:

discussion = resource.discussions.get(discussion_id)
# Get the latest note's id
note_id = discussion.attributes['note'][-1]['id']
last_note = discussion.notes.get(note_id)
last_note.body = 'Updated comment'
last_note.save()

Create a new discussion:

discussion = resource.discussions.create({'body': 'First comment of discussion'})

You can comment on merge requests and commit diffs. Provide the position dict to define where the comment should appear in the diff:

mr_diff = mr.diffs.get(diff_id)
mr.discussions.create({'body': 'Note content',
                       'position': {
                           'base_sha': mr_diff.base_commit_sha,
                           'start_sha': mr_diff.start_commit_sha,
                           'head_sha': mr_diff.head_commit_sha,
                           'position_type': 'text',
                           'new_line': 1,
                           'old_path': 'README.rst',
                           'new_path': 'README.rst'}
                       })

Resolve / unresolve a merge request discussion:

mr_d = mr.discussions.get(d_id)
mr_d.resolved = True  # True to resolve, False to unresolve
mr_d.save()

Delete a comment:

discussions.notes.delete(note_id)
# or
note.delete()
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.