summaryrefslogtreecommitdiff
path: root/gitlab/v4/objects
diff options
context:
space:
mode:
authorNejc Habjan <hab.nejc@gmail.com>2021-05-14 23:17:18 +0200
committerNejc Habjan <hab.nejc@gmail.com>2021-05-25 23:07:54 +0200
commitfb0b083a0e536a6abab25c9ad377770cc4290fe9 (patch)
tree9819ff138d3deb9a17046e091afc8db0274db697 /gitlab/v4/objects
parent7824811e1cb99a0397149b74b0950441cdc21eda (diff)
downloadgitlab-fb0b083a0e536a6abab25c9ad377770cc4290fe9.tar.gz
feat(objects): add support for billable members
Diffstat (limited to 'gitlab/v4/objects')
-rw-r--r--gitlab/v4/objects/groups.py7
-rw-r--r--gitlab/v4/objects/members.py28
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