263 lines
8.4 KiB
Python
263 lines
8.4 KiB
Python
from typing import Any, cast, Union
|
|
|
|
from gitlab.base import RESTManager, RESTObject
|
|
from gitlab.mixins import (
|
|
CreateMixin,
|
|
CRUDMixin,
|
|
DeleteMixin,
|
|
GetMixin,
|
|
ObjectDeleteMixin,
|
|
RetrieveMixin,
|
|
SaveMixin,
|
|
UpdateMixin,
|
|
)
|
|
from gitlab.types import RequiredOptional
|
|
|
|
from .award_emojis import ( # noqa: F401
|
|
GroupEpicNoteAwardEmojiManager,
|
|
ProjectIssueNoteAwardEmojiManager,
|
|
ProjectMergeRequestNoteAwardEmojiManager,
|
|
ProjectSnippetNoteAwardEmojiManager,
|
|
)
|
|
|
|
__all__ = [
|
|
"GroupEpicNote",
|
|
"GroupEpicNoteManager",
|
|
"GroupEpicDiscussionNote",
|
|
"GroupEpicDiscussionNoteManager",
|
|
"ProjectNote",
|
|
"ProjectNoteManager",
|
|
"ProjectCommitDiscussionNote",
|
|
"ProjectCommitDiscussionNoteManager",
|
|
"ProjectIssueNote",
|
|
"ProjectIssueNoteManager",
|
|
"ProjectIssueDiscussionNote",
|
|
"ProjectIssueDiscussionNoteManager",
|
|
"ProjectMergeRequestNote",
|
|
"ProjectMergeRequestNoteManager",
|
|
"ProjectMergeRequestDiscussionNote",
|
|
"ProjectMergeRequestDiscussionNoteManager",
|
|
"ProjectSnippetNote",
|
|
"ProjectSnippetNoteManager",
|
|
"ProjectSnippetDiscussionNote",
|
|
"ProjectSnippetDiscussionNoteManager",
|
|
]
|
|
|
|
|
|
class GroupEpicNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
awardemojis: GroupEpicNoteAwardEmojiManager
|
|
|
|
|
|
class GroupEpicNoteManager(CRUDMixin, RESTManager):
|
|
_path = "/groups/{group_id}/epics/{epic_id}/notes"
|
|
_obj_cls = GroupEpicNote
|
|
_from_parent_attrs = {"group_id": "group_id", "epic_id": "id"}
|
|
_create_attrs = RequiredOptional(required=("body",), optional=("created_at",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> GroupEpicNote:
|
|
return cast(GroupEpicNote, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class GroupEpicDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class GroupEpicDiscussionNoteManager(
|
|
GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
|
|
):
|
|
_path = "/groups/{group_id}/epics/{epic_id}/discussions/{discussion_id}/notes"
|
|
_obj_cls = GroupEpicDiscussionNote
|
|
_from_parent_attrs = {
|
|
"group_id": "group_id",
|
|
"epic_id": "epic_id",
|
|
"discussion_id": "id",
|
|
}
|
|
_create_attrs = RequiredOptional(required=("body",), optional=("created_at",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> GroupEpicDiscussionNote:
|
|
return cast(GroupEpicDiscussionNote, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class ProjectNote(RESTObject):
|
|
pass
|
|
|
|
|
|
class ProjectNoteManager(RetrieveMixin, RESTManager):
|
|
_path = "/projects/{project_id}/notes"
|
|
_obj_cls = ProjectNote
|
|
_from_parent_attrs = {"project_id": "id"}
|
|
_create_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectNote:
|
|
return cast(ProjectNote, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class ProjectCommitDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class ProjectCommitDiscussionNoteManager(
|
|
GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
|
|
):
|
|
_path = (
|
|
"/projects/{project_id}/repository/commits/{commit_id}/"
|
|
"discussions/{discussion_id}/notes"
|
|
)
|
|
_obj_cls = ProjectCommitDiscussionNote
|
|
_from_parent_attrs = {
|
|
"project_id": "project_id",
|
|
"commit_id": "commit_id",
|
|
"discussion_id": "id",
|
|
}
|
|
_create_attrs = RequiredOptional(
|
|
required=("body",), optional=("created_at", "position")
|
|
)
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectCommitDiscussionNote:
|
|
return cast(
|
|
ProjectCommitDiscussionNote, super().get(id=id, lazy=lazy, **kwargs)
|
|
)
|
|
|
|
|
|
class ProjectIssueNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
awardemojis: ProjectIssueNoteAwardEmojiManager
|
|
|
|
|
|
class ProjectIssueNoteManager(CRUDMixin, RESTManager):
|
|
_path = "/projects/{project_id}/issues/{issue_iid}/notes"
|
|
_obj_cls = ProjectIssueNote
|
|
_from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"}
|
|
_create_attrs = RequiredOptional(required=("body",), optional=("created_at",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectIssueNote:
|
|
return cast(ProjectIssueNote, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class ProjectIssueDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class ProjectIssueDiscussionNoteManager(
|
|
GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
|
|
):
|
|
_path = (
|
|
"/projects/{project_id}/issues/{issue_iid}/discussions/{discussion_id}/notes"
|
|
)
|
|
_obj_cls = ProjectIssueDiscussionNote
|
|
_from_parent_attrs = {
|
|
"project_id": "project_id",
|
|
"issue_iid": "issue_iid",
|
|
"discussion_id": "id",
|
|
}
|
|
_create_attrs = RequiredOptional(required=("body",), optional=("created_at",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectIssueDiscussionNote:
|
|
return cast(ProjectIssueDiscussionNote, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class ProjectMergeRequestNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
awardemojis: ProjectMergeRequestNoteAwardEmojiManager
|
|
|
|
|
|
class ProjectMergeRequestNoteManager(CRUDMixin, RESTManager):
|
|
_path = "/projects/{project_id}/merge_requests/{mr_iid}/notes"
|
|
_obj_cls = ProjectMergeRequestNote
|
|
_from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"}
|
|
_create_attrs = RequiredOptional(required=("body",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectMergeRequestNote:
|
|
return cast(ProjectMergeRequestNote, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class ProjectMergeRequestDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class ProjectMergeRequestDiscussionNoteManager(
|
|
GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
|
|
):
|
|
_path = (
|
|
"/projects/{project_id}/merge_requests/{mr_iid}/"
|
|
"discussions/{discussion_id}/notes"
|
|
)
|
|
_obj_cls = ProjectMergeRequestDiscussionNote
|
|
_from_parent_attrs = {
|
|
"project_id": "project_id",
|
|
"mr_iid": "mr_iid",
|
|
"discussion_id": "id",
|
|
}
|
|
_create_attrs = RequiredOptional(required=("body",), optional=("created_at",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectMergeRequestDiscussionNote:
|
|
return cast(
|
|
ProjectMergeRequestDiscussionNote, super().get(id=id, lazy=lazy, **kwargs)
|
|
)
|
|
|
|
|
|
class ProjectSnippetNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
awardemojis: ProjectSnippetNoteAwardEmojiManager
|
|
|
|
|
|
class ProjectSnippetNoteManager(CRUDMixin, RESTManager):
|
|
_path = "/projects/{project_id}/snippets/{snippet_id}/notes"
|
|
_obj_cls = ProjectSnippetNote
|
|
_from_parent_attrs = {"project_id": "project_id", "snippet_id": "id"}
|
|
_create_attrs = RequiredOptional(required=("body",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectSnippetNote:
|
|
return cast(ProjectSnippetNote, super().get(id=id, lazy=lazy, **kwargs))
|
|
|
|
|
|
class ProjectSnippetDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
pass
|
|
|
|
|
|
class ProjectSnippetDiscussionNoteManager(
|
|
GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
|
|
):
|
|
_path = (
|
|
"/projects/{project_id}/snippets/{snippet_id}/"
|
|
"discussions/{discussion_id}/notes"
|
|
)
|
|
_obj_cls = ProjectSnippetDiscussionNote
|
|
_from_parent_attrs = {
|
|
"project_id": "project_id",
|
|
"snippet_id": "snippet_id",
|
|
"discussion_id": "id",
|
|
}
|
|
_create_attrs = RequiredOptional(required=("body",), optional=("created_at",))
|
|
_update_attrs = RequiredOptional(required=("body",))
|
|
|
|
def get(
|
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
|
) -> ProjectSnippetDiscussionNote:
|
|
return cast(
|
|
ProjectSnippetDiscussionNote, super().get(id=id, lazy=lazy, **kwargs)
|
|
)
|