diff options
| author | Nejc Habjan <hab.nejc@gmail.com> | 2021-05-14 23:17:18 +0200 |
|---|---|---|
| committer | Nejc Habjan <hab.nejc@gmail.com> | 2021-05-25 23:07:54 +0200 |
| commit | fb0b083a0e536a6abab25c9ad377770cc4290fe9 (patch) | |
| tree | 9819ff138d3deb9a17046e091afc8db0274db697 /gitlab/v4/objects | |
| parent | 7824811e1cb99a0397149b74b0950441cdc21eda (diff) | |
| download | gitlab-fb0b083a0e536a6abab25c9ad377770cc4290fe9.tar.gz | |
feat(objects): add support for billable members
Diffstat (limited to 'gitlab/v4/objects')
| -rw-r--r-- | gitlab/v4/objects/groups.py | 7 | ||||
| -rw-r--r-- | gitlab/v4/objects/members.py | 28 |
2 files changed, 34 insertions, 1 deletions
diff --git a/gitlab/v4/objects/groups.py b/gitlab/v4/objects/groups.py index 8c1b681..e29edc8 100644 --- a/gitlab/v4/objects/groups.py +++ b/gitlab/v4/objects/groups.py @@ -15,7 +15,11 @@ from .epics import GroupEpicManager # noqa: F401 from .export_import import GroupExportManager, GroupImportManager # noqa: F401 from .issues import GroupIssueManager # noqa: F401 from .labels import GroupLabelManager # noqa: F401 -from .members import GroupMemberAllManager, GroupMemberManager # noqa: F401 +from .members import ( # noqa: F401 + GroupBillableMemberManager, + GroupMemberAllManager, + GroupMemberManager, +) from .merge_requests import GroupMergeRequestManager # noqa: F401 from .milestones import GroupMilestoneManager # noqa: F401 from .notification_settings import GroupNotificationSettingsManager # noqa: F401 @@ -38,6 +42,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject): ("accessrequests", "GroupAccessRequestManager"), ("audit_events", "GroupAuditEventManager"), ("badges", "GroupBadgeManager"), + ("billable_members", "GroupBillableMemberManager"), ("boards", "GroupBoardManager"), ("customattributes", "GroupCustomAttributeManager"), ("exports", "GroupExportManager"), diff --git a/gitlab/v4/objects/members.py b/gitlab/v4/objects/members.py index a64df24..3ff8de5 100644 --- a/gitlab/v4/objects/members.py +++ b/gitlab/v4/objects/members.py @@ -2,6 +2,8 @@ from gitlab import types from gitlab.base import RequiredOptional, RESTManager, RESTObject from gitlab.mixins import ( CRUDMixin, + DeleteMixin, + ListMixin, MemberAllMixin, ObjectDeleteMixin, RetrieveMixin, @@ -9,6 +11,10 @@ from gitlab.mixins import ( ) __all__ = [ + "GroupBillableMember", + "GroupBillableMemberManager", + "GroupBillableMemberMembership", + "GroupBillableMemberMembershipManager", "GroupMember", "GroupMemberManager", "GroupMemberAllManager", @@ -35,6 +41,28 @@ class GroupMemberManager(MemberAllMixin, CRUDMixin, RESTManager): _types = {"user_ids": types.ListAttribute} +class GroupBillableMember(ObjectDeleteMixin, RESTObject): + _short_print_attr = "username" + _managers = (("memberships", "GroupBillableMemberMembershipManager"),) + + +class GroupBillableMemberManager(ListMixin, DeleteMixin, RESTManager): + _path = "/groups/%(group_id)s/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)s/billable_members/%(user_id)s/memberships" + _obj_cls = GroupBillableMemberMembership + _from_parent_attrs = {"group_id": "group_id", "user_id": "id"} + + class GroupMemberAllManager(RetrieveMixin, RESTManager): _path = "/groups/%(group_id)s/members/all" _obj_cls = GroupMember |
