Skip to content

Commit 6bd32c9

Browse files
committed
use lower-case usernames when dealing with these names as strings
1 parent 9bd4eb8 commit 6bd32c9

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

gh_org_mgr/_gh_org.py

+13-9
Original file line numberDiff line numberDiff line change
@@ -182,16 +182,16 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
182182
self._get_org_members()
183183

184184
# Get open invitations
185-
open_invitations = [user.login for user in self.org.invitations()]
185+
open_invitations = [user.login.lower() for user in self.org.invitations()]
186186

187187
for team, team_attrs in self.current_teams.items():
188188
# Update current team members with dict[NamedUser, str (role)]
189189
team_attrs["members"] = self._get_current_team_members(team)
190190

191191
# For the rest of the function however, we use just the login name
192-
# for each current user
192+
# for each current user. All lower-case
193193
current_team_members = {
194-
user.login: role for user, role in team_attrs["members"].items()
194+
user.login.lower(): role for user, role in team_attrs["members"].items()
195195
}
196196

197197
# Handle the team not being configured locally
@@ -209,16 +209,17 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
209209
else:
210210
team_configuration = {}
211211

212-
# Analog to team_attrs["members"], add members and maintainers to shared
213-
# dict with respective role, while maintainer role dominates
212+
# Analog to team_attrs["members"], add members and maintainers to
213+
# shared dict with respective role, while maintainer role dominates.
214+
# All user names shall be lower-case to ease comparison
214215
configured_users: dict[str, str] = {}
215216
for config_role in ("member", "maintainer"):
216217
team_members = self._get_configured_team_members(
217218
team_configuration, team.name, config_role
218219
)
219220
for team_member in team_members:
220-
# Add user with role to dict
221-
configured_users.update({team_member: config_role})
221+
# Add user with role to dict, in lower-case
222+
configured_users.update({team_member.lower(): config_role})
222223

223224
# Consider all GitHub organisation team maintainers if they are member of the team
224225
# This is because GitHub API returns them as maintainers even if they are just members
@@ -227,7 +228,7 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
227228
logging.debug(
228229
"Overriding role of organisation owner '%s' to maintainer", user.login
229230
)
230-
configured_users[user.login] = "maintainer"
231+
configured_users[user.login.lower()] = "maintainer"
231232

232233
# Only make edits to the team membership if the current state differs from config
233234
if configured_users == current_team_members:
@@ -278,8 +279,11 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
278279
# Loop through all current members. Remove them if they are not configured
279280
for current_user in current_team_members:
280281
if current_user not in configured_users:
282+
logging.debug("User '%s' not found within configured users", current_user)
281283
# Turn user to GitHub object, trying to find them
282284
if not (gh_user := self._resolve_gh_username(current_user, team.name)):
285+
# If the user cannot be found for some reason, log an
286+
# error and skip this loop
283287
continue
284288
if team.has_in_members(gh_user):
285289
logging.info(
@@ -561,7 +565,7 @@ def _get_configured_repos_and_user_perms(self):
561565
)
562566
)
563567
else:
564-
self.configured_repos_collaborators[repo][team_member] = perm
568+
self.configured_repos_collaborators[repo][team_member.lower()] = perm
565569

566570
def _convert_graphql_perm_to_rest(self, permission: str) -> str:
567571
"""Convert a repo permission coming from the GraphQL API to the ones

0 commit comments

Comments
 (0)