Fix state role not always updated due to lazy properties

This commit is contained in:
ErikKalkoken
2020-07-02 21:26:40 +02:00
parent 3bab349d7b
commit 4d546f948d
7 changed files with 57 additions and 23 deletions

View File

@@ -96,10 +96,13 @@ class DiscordUser(models.Model):
else:
return False
def update_groups(self) -> bool:
def update_groups(self, state_name: str = None) -> bool:
"""update groups for a user based on his current group memberships.
Will add or remove roles of a user as needed.
Params:
- state_name: optional state name to be used
Returns:
- True on success
- None if user is no longer a member of the Discord server
@@ -132,7 +135,9 @@ class DiscordUser(models.Model):
requested_roles = match_or_create_roles_from_names(
client=client,
guild_id=DISCORD_GUILD_ID,
role_names=DiscordUser.objects.user_group_names(self.user)
role_names=DiscordUser.objects.user_group_names(
user=self.user, state_name=state_name
)
)
logger.debug(
'Requested roles for user %s: %s', self.user, requested_roles.ids()
@@ -148,13 +153,13 @@ class DiscordUser(models.Model):
role_ids=list(new_roles.ids())
)
if success:
logger.info('Groups for %s have been updated', self.user)
logger.info('Roles for %s have been updated', self.user)
else:
logger.warning('Failed to update groups for %s', self.user)
logger.warning('Failed to update roles for %s', self.user)
return success
else:
logger.info('No need to update groups for user %s', self.user)
logger.info('No need to update roles for user %s', self.user)
return True
def update_username(self) -> bool: