1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
from typing import Any, cast, Union
from gitlab import types
from gitlab.base import RESTManager, RESTObject
from gitlab.mixins import (
CRUDMixin,
DeleteMixin,
ListMixin,
ObjectDeleteMixin,
RetrieveMixin,
SaveMixin,
)
from gitlab.types import RequiredOptional
__all__ = [
"GroupBillableMember",
"GroupBillableMemberManager",
"GroupBillableMemberMembership",
"GroupBillableMemberMembershipManager",
"GroupMember",
"GroupMemberAll",
"GroupMemberManager",
"GroupMemberAllManager",
"ProjectMember",
"ProjectMemberAll",
"ProjectMemberManager",
"ProjectMemberAllManager",
]
class GroupMember(SaveMixin, ObjectDeleteMixin, RESTObject):
_repr_attr = "username"
class GroupMemberManager(CRUDMixin, RESTManager):
_path = "/groups/{group_id}/members"
_obj_cls = GroupMember
_from_parent_attrs = {"group_id": "id"}
_create_attrs = RequiredOptional(
required=("access_level", "user_id"),
optional=("expires_at", "tasks_to_be_done"),
)
_update_attrs = RequiredOptional(
required=("access_level",), optional=("expires_at",)
)
_types = {
"user_ids": types.ArrayAttribute,
"tasks_to_be_done": types.ArrayAttribute,
}
def get(
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
) -> GroupMember:
return cast(GroupMember, super().get(id=id, lazy=lazy, **kwargs))
class GroupBillableMember(ObjectDeleteMixin, RESTObject):
_repr_attr = "username"
memberships: "GroupBillableMemberMembershipManager"
class GroupBillableMemberManager(ListMixin, DeleteMixin, RESTManager):
_path = "/groups/{group_id}/billable_members"
_obj_cls = GroupBillableMember
_from_parent_attrs = {"group_id": "id"}
_list_filters = ("search", "sort")
class GroupBillableMemberMembership(RESTObject):
_id_attr = "user_id"
class GroupBillableMemberMembershipManager(ListMixin, RESTManager):
_path = "/groups/{group_id}/billable_members/{user_id}/memberships"
_obj_cls = GroupBillableMemberMembership
_from_parent_attrs = {"group_id": "group_id", "user_id": "id"}
class GroupMemberAll(RESTObject):
_repr_attr = "username"
class GroupMemberAllManager(RetrieveMixin, RESTManager):
_path = "/groups/{group_id}/members/all"
_obj_cls = GroupMemberAll
_from_parent_attrs = {"group_id": "id"}
def get(
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
) -> GroupMemberAll:
return cast(GroupMemberAll, super().get(id=id, lazy=lazy, **kwargs))
class ProjectMember(SaveMixin, ObjectDeleteMixin, RESTObject):
_repr_attr = "username"
class ProjectMemberManager(CRUDMixin, RESTManager):
_path = "/projects/{project_id}/members"
_obj_cls = ProjectMember
_from_parent_attrs = {"project_id": "id"}
_create_attrs = RequiredOptional(
required=("access_level", "user_id"),
optional=("expires_at", "tasks_to_be_done"),
)
_update_attrs = RequiredOptional(
required=("access_level",), optional=("expires_at",)
)
_types = {
"user_ids": types.ArrayAttribute,
"tasks_to_be_dones": types.ArrayAttribute,
}
def get(
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
) -> ProjectMember:
return cast(ProjectMember, super().get(id=id, lazy=lazy, **kwargs))
class ProjectMemberAll(RESTObject):
_repr_attr = "username"
class ProjectMemberAllManager(RetrieveMixin, RESTManager):
_path = "/projects/{project_id}/members/all"
_obj_cls = ProjectMemberAll
_from_parent_attrs = {"project_id": "id"}
def get(
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
) -> ProjectMemberAll:
return cast(ProjectMemberAll, super().get(id=id, lazy=lazy, **kwargs))
|