summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn L. Villalovos <john@sodarock.com>2022-01-11 18:38:32 -0800
committerJohn L. Villalovos <john@sodarock.com>2022-01-11 18:38:32 -0800
commit88ac96d59c17eabb9d96f3e7a5907f235563e008 (patch)
tree0f2b30151575035ebd4c7e830f9239107ceee9cb
parent4a000b6c41f0a7ef6121c62a4c598edc20973799 (diff)
downloadgitlab-jlvillal/all_objects.tar.gz
fix: members: use new *All objects for *AllManager managersjlvillal/all_objects
Change it so that: GroupMemberAllManager uses GroupMemberAll object ProjectMemberAllManager uses ProjectMemberAll object Create GroupMemberAll and ProjectMemberAll objects that do not support any Mixin type methods. Previously we were using GroupMember and ProjectMember which support the `save()` and `delete()` methods but those methods will not work with objects retrieved using the `/members/all/` API calls. `list()` API calls: [1] GET /groups/:id/members/all GET /projects/:id/members/all `get()` API calls: [2] GET /groups/:id/members/all/:user_id GET /projects/:id/members/all/:user_id Closes: #1825 [1] https://docs.gitlab.com/ee/api/members.html#list-all-members-of-a-group-or-project-including-inherited-and-invited-members [2] https://docs.gitlab.com/ee/api/members.html#get-a-member-of-a-group-or-project-including-inherited-and-invited-members
-rw-r--r--gitlab/v4/objects/members.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/gitlab/v4/objects/members.py b/gitlab/v4/objects/members.py
index 8fa2bb3..32c2ce5 100644
--- a/gitlab/v4/objects/members.py
+++ b/gitlab/v4/objects/members.py
@@ -70,15 +70,19 @@ class GroupBillableMemberMembershipManager(ListMixin, RESTManager):
_from_parent_attrs = {"group_id": "group_id", "user_id": "id"}
+class GroupMemberAll(RESTObject):
+ _short_print_attr = "username"
+
+
class GroupMemberAllManager(RetrieveMixin, RESTManager):
_path = "/groups/{group_id}/members/all"
- _obj_cls = GroupMember
+ _obj_cls = GroupMemberAll
_from_parent_attrs = {"group_id": "id"}
def get(
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
- ) -> GroupMember:
- return cast(GroupMember, super().get(id=id, lazy=lazy, **kwargs))
+ ) -> GroupMemberAll:
+ return cast(GroupMemberAll, super().get(id=id, lazy=lazy, **kwargs))
class ProjectMember(SaveMixin, ObjectDeleteMixin, RESTObject):
@@ -103,12 +107,16 @@ class ProjectMemberManager(CRUDMixin, RESTManager):
return cast(ProjectMember, super().get(id=id, lazy=lazy, **kwargs))
+class ProjectMemberAll(RESTObject):
+ _short_print_attr = "username"
+
+
class ProjectMemberAllManager(RetrieveMixin, RESTManager):
_path = "/projects/{project_id}/members/all"
- _obj_cls = ProjectMember
+ _obj_cls = ProjectMemberAll
_from_parent_attrs = {"project_id": "id"}
def get(
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
- ) -> ProjectMember:
- return cast(ProjectMember, super().get(id=id, lazy=lazy, **kwargs))
+ ) -> ProjectMemberAll:
+ return cast(ProjectMemberAll, super().get(id=id, lazy=lazy, **kwargs))