Skip to content

Commit

Permalink
Merge pull request #48 from OpenRailAssociation/fix-member-without-team
Browse files Browse the repository at this point in the history
Do not warn about members without team if they just have been added
  • Loading branch information
mxmehl authored Aug 23, 2024
2 parents 66bf0da + cb08731 commit d443793
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions gh_org_mgr/_gh_org.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class GHorg: # pylint: disable=too-many-instance-attributes, too-many-lines
org_members: list[NamedUser] = field(default_factory=list)
current_teams: dict[Team, dict] = field(default_factory=dict)
configured_teams: dict[str, dict | None] = field(default_factory=dict)
newly_added_users: list[NamedUser] = field(default_factory=list)
current_repos_teams: dict[Repository, dict[Team, str]] = field(default_factory=dict)
current_repos_collaborators: dict[Repository, dict[str, str]] = field(default_factory=dict)
configured_repos_collaborators: dict[str, dict[str, str]] = field(default_factory=dict)
Expand Down Expand Up @@ -485,6 +486,13 @@ def _get_current_team_members(self, team: Team) -> dict[NamedUser, str]:

return current_users

def _add_or_update_user_in_team(self, team: Team, user: NamedUser, role: str):
"""Add or update membership of a user in a team"""
team.add_membership(member=user, role=role)
# Document that the user has just been added to a team. Relevant when we
# will later find users without team membership
self.newly_added_users.append(user)

def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-many-branches
"""Check the configured members of each team, add missing ones and delete unconfigured"""
logging.debug("Starting to sync team members")
Expand Down Expand Up @@ -571,7 +579,7 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
config_role,
)
if not dry:
team.add_membership(member=gh_user, role=config_role)
self._add_or_update_user_in_team(team=team, user=gh_user, role=config_role)

# Update roles if they differ from old role
elif config_role != current_team_members.get(config_user, ""):
Expand All @@ -585,7 +593,7 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
config_role,
)
if not dry:
team.add_membership(member=gh_user, role=config_role)
self._add_or_update_user_in_team(team=team, user=gh_user, role=config_role)

# Loop through all current members. Remove them if they are not configured
for current_user in current_team_members:
Expand Down Expand Up @@ -618,11 +626,12 @@ def get_members_without_team(self) -> None:
all_org_members = set(self.org_members + self.current_org_owners)

# Get all members of all teams
all_team_members_lst = []
all_team_members_lst: list[NamedUser] = []
for _, team_attrs in self.current_teams.items():
for member in team_attrs.get("members", {}):
all_team_members_lst.append(member)
all_team_members = set(all_team_members_lst)
# Also add users that have just been added to a team, and unify them
all_team_members: set[NamedUser] = set(all_team_members_lst + self.newly_added_users)

# Find members that are in org_members but not team_members
members_without_team = all_org_members.difference(all_team_members)
Expand Down

0 comments on commit d443793

Please sign in to comment.