Skip to content

group.members.get only working if result is within first 20 #499

Closed
@ericfrederich

Description

@ericfrederich

Description of the problem, including code/CLI snippet

group.members.get(userid) only seems to be working if that userid is within first 20 hits.
Run this on any group with more than 20 members:

group = gl.groups.get('some-group')
# iterate over the exhaustive list of members as a generator
for member in group.members.list(as_list=False):
    # so this call should never fail; but it does
    group.members.get(member.id)

Expected Behavior

Ultimately it should call https://docs.gitlab.com/ce/api/members.html#get-a-member-of-a-group-or-project with the exact group id and user id. This would be most efficient.

Alternatively it could call .list() in such a way that it is able to iterate over all results. For example .list(as_list=False) to force a generator to be returned or .list(all=True) to force the exhaustive list to be returned. But again, this is bad if there is a more efficient API to call as linked to above.

Actual Behavior

It ends up calling GetFromListMixin which ends up calling http_list with no arguments which just returns 20 items. It then compares those id's to the requested one.

Specifications

  • python-gitlab version: 1.3.0
  • API version you are using (v3/v4): 4

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions