Verified Commit fed6ef00 authored by Adrian DC's avatar Adrian DC
Browse files

fix(gitlab): avoid exceptions upon group last owner member removal

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent 4a0a1707
Loading
Loading
Loading
Loading
Loading
+11 −1
Changes for src/features/gitlab.py: 11 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ from typing import cast, Dict, List, Optional, Union
# Modules libraries
from gitlab import Gitlab
from gitlab.base import RESTObject, RESTObjectList
from gitlab.const import AccessLevel as GitLabAccessLevel
from gitlab.exceptions import (
    GitlabDeleteError,
    GitlabGetError,
@@ -139,9 +140,18 @@ class GitLabFeature:

        # Remove group members
        group = self.group(criteria)
        for member in group.members.list(get_all=True):
        for member in sorted(
                group.members.list(get_all=True),
                key=lambda item: item.access_level,
        ):
            if not self.__dry_run:
                try:
                    group.members.delete(member.id)
                except GitlabDeleteError as exception:
                    if member.access_level == GitLabAccessLevel.OWNER \
                            and len(group.members.list(get_all=True)) == 1:
                        continue
                    raise exception

        # Save group
        if not self.__dry_run: