Include state in service group sync.

The "empty" group will never appear as all users have a state so it has been removed.

I haven't yet found a good way to apply this to Teamspeak - perhaps go back to the token generation logic and create one with a user's state instead of "Member" and exempt those names from group sync?

Addresses #950
This commit is contained in:
Adarnof 2018-02-21 17:11:22 -05:00
parent 6f7cf8805d
commit 4d194457d8
7 changed files with 7 additions and 21 deletions

View File

@ -62,12 +62,9 @@ class DiscordTasks:
user = User.objects.get(pk=pk) user = User.objects.get(pk=pk)
logger.debug("Updating discord groups for user %s" % user) logger.debug("Updating discord groups for user %s" % user)
if DiscordTasks.has_account(user): if DiscordTasks.has_account(user):
groups = [] groups = [user.profile.state.name]
for group in user.groups.all(): for group in user.groups.all():
groups.append(str(group.name)) groups.append(str(group.name))
if len(groups) == 0:
logger.debug("No syncgroups found for user. Adding empty group.")
groups.append('empty')
logger.debug("Updating user %s discord groups to %s" % (user, groups)) logger.debug("Updating user %s discord groups to %s" % (user, groups))
try: try:
DiscordOAuthManager.update_groups(user.discord.uid, groups) DiscordOAuthManager.update_groups(user.discord.uid, groups)

View File

@ -345,7 +345,7 @@ class DiscourseManager:
@staticmethod @staticmethod
def update_groups(user): def update_groups(user):
groups = [] groups = [DiscourseManager._sanitize_groupname(user.profile.state.name)]
for g in user.groups.all(): for g in user.groups.all():
groups.append(DiscourseManager._sanitize_groupname(str(g))) groups.append(DiscourseManager._sanitize_groupname(str(g)))
logger.debug("Updating discourse user %s groups to %s" % (user, groups)) logger.debug("Updating discourse user %s groups to %s" % (user, groups))

View File

@ -82,11 +82,9 @@ class MumbleUser(AbstractServiceModel):
def update_groups(self, groups: Group=None): def update_groups(self, groups: Group=None):
if groups is None: if groups is None:
groups = self.user.groups.all() groups = self.user.groups.all()
groups_str = [] groups_str = [self.user.profile.state.name]
for group in groups: for group in groups:
groups_str.append(str(group.name)) groups_str.append(str(group.name))
if len(groups) == 0:
groups_str.append('empty')
safe_groups = ','.join(set([g.replace(' ', '-') for g in groups_str])) safe_groups = ','.join(set([g.replace(' ', '-') for g in groups_str]))
logger.info("Updating mumble user {} groups to {}".format(self.user, safe_groups)) logger.info("Updating mumble user {} groups to {}".format(self.user, safe_groups))
self.groups = safe_groups self.groups = safe_groups

View File

@ -45,11 +45,9 @@ class OpenfireTasks:
user = User.objects.get(pk=pk) user = User.objects.get(pk=pk)
logger.debug("Updating jabber groups for user %s" % user) logger.debug("Updating jabber groups for user %s" % user)
if OpenfireTasks.has_account(user): if OpenfireTasks.has_account(user):
groups = [] groups = [user.profile.state.name]
for group in user.groups.all(): for group in user.groups.all():
groups.append(str(group.name)) groups.append(str(group.name))
if len(groups) == 0:
groups.append('empty')
logger.debug("Updating user %s jabber groups to %s" % (user, groups)) logger.debug("Updating user %s jabber groups to %s" % (user, groups))
try: try:
OpenfireManager.update_user_groups(user.openfire.username, groups) OpenfireManager.update_user_groups(user.openfire.username, groups)

View File

@ -40,11 +40,9 @@ class Phpbb3Tasks:
user = User.objects.get(pk=pk) user = User.objects.get(pk=pk)
logger.debug("Updating phpbb3 groups for user %s" % user) logger.debug("Updating phpbb3 groups for user %s" % user)
if Phpbb3Tasks.has_account(user): if Phpbb3Tasks.has_account(user):
groups = [] groups = [user.profile.state.name]
for group in user.groups.all(): for group in user.groups.all():
groups.append(str(group.name)) groups.append(str(group.name))
if len(groups) == 0:
groups.append('empty')
logger.debug("Updating user %s phpbb3 groups to %s" % (user, groups)) logger.debug("Updating user %s phpbb3 groups to %s" % (user, groups))
try: try:
Phpbb3Manager.update_groups(user.phpbb3.username, groups) Phpbb3Manager.update_groups(user.phpbb3.username, groups)

View File

@ -38,13 +38,10 @@ class SeatTasks:
def update_roles(self, pk): def update_roles(self, pk):
user = User.objects.get(pk=pk) user = User.objects.get(pk=pk)
logger.debug("Updating SeAT roles for user %s" % user) logger.debug("Updating SeAT roles for user %s" % user)
groups = []
if SeatTasks.has_account(user): if SeatTasks.has_account(user):
groups = [user.profile.state.name]
for group in user.groups.all(): for group in user.groups.all():
groups.append(str(group.name)) groups.append(str(group.name))
if len(groups) == 0:
logger.debug("No syncgroups found for user. Adding empty group.")
groups.append('empty')
logger.debug("Updating user %s SeAT roles to %s" % (user, groups)) logger.debug("Updating user %s SeAT roles to %s" % (user, groups))
try: try:
SeatManager.update_roles(user.seat.username, groups) SeatManager.update_roles(user.seat.username, groups)

View File

@ -44,11 +44,9 @@ class SmfTasks:
user = User.objects.get(pk=pk) user = User.objects.get(pk=pk)
logger.debug("Updating smf groups for user %s" % user) logger.debug("Updating smf groups for user %s" % user)
if SmfTasks.has_account(user): if SmfTasks.has_account(user):
groups = [] groups = [user.profile.state.name]
for group in user.groups.all(): for group in user.groups.all():
groups.append(str(group.name)) groups.append(str(group.name))
if len(groups) == 0:
groups.append('empty')
logger.debug("Updating user %s smf groups to %s" % (user, groups)) logger.debug("Updating user %s smf groups to %s" % (user, groups))
try: try:
SmfManager.update_groups(user.smf.username, groups) SmfManager.update_groups(user.smf.username, groups)