From 71779a8ab22994cf7f612518eae39f30275a72a9 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Tue, 22 Mar 2016 06:04:08 +0000 Subject: [PATCH 1/5] Replace run_databaseUpdate with m2m receiver - listed to user group changes -> queue service group update Should help with #318 --- celerytask/__init__.py | 1 + celerytask/signals.py | 28 +++++++ celerytask/tasks.py | 169 ++++------------------------------------- 3 files changed, 45 insertions(+), 153 deletions(-) create mode 100644 celerytask/signals.py diff --git a/celerytask/__init__.py b/celerytask/__init__.py index e69de29b..b31856c4 100644 --- a/celerytask/__init__.py +++ b/celerytask/__init__.py @@ -0,0 +1 @@ +import signals diff --git a/celerytask/signals.py b/celerytask/signals.py new file mode 100644 index 00000000..abc779d2 --- /dev/null +++ b/celerytask/signals.py @@ -0,0 +1,28 @@ +from django.db.models.signals import m2m_changed +from django.dispatch import receiver +from django.contrib.auth.models import User +import logging +from .tasks import update_jabber_groups +from .tasks import update_mumble_groups +from .tasks import update_forum_groups +from .tasks import update_ipboard_groups +from .tasks import update_discord_groups + +logger = logging.getLogger(__name__) + +@receiver(m2m_changed, sender=User.groups.through) +def m2m_changed_user_groups(sender, instance, action, *args, **kwargs): + logger.debug("Received m2m_changed from %s groups with action %s" % (instance, action)) + if action=="post_add" or action=="post_remove" or action=="post_clear": + logger.debug("Triggering service group update for %s" % instance) + auth, c = AuthServicesInfo.objects.get_or_create(user=instance) + if auth.jabber_username: + update_jabber_groups.delay(instance) + if auth.jabber_username: + update_jabber_groups.delay(instance) + if auth.forum_username: + update_forum_groups.delay(instance) + if auth.ipboard_groups: + update_ipboard_groups.delay(instance) + if auth.discord_groups: + update_discord_groups.delay(instance) diff --git a/celerytask/tasks.py b/celerytask/tasks.py index bc2a2825..00d06e0d 100755 --- a/celerytask/tasks.py +++ b/celerytask/tasks.py @@ -4,7 +4,6 @@ from django.contrib.auth.models import User from django.contrib.auth.models import Group from notifications import notify from celery import task -from models import SyncGroupCache from celery.task.schedules import crontab from services.managers.openfire_manager import OpenfireManager from services.managers.mumble_manager import MumbleManager @@ -53,15 +52,13 @@ def disable_member(user): def is_teamspeak3_active(): return settings.ENABLE_AUTH_TEAMSPEAK3 or settings.ENABLE_BLUE_TEAMSPEAK3 +@task def update_jabber_groups(user): logger.debug("Updating jabber groups for user %s" % user) - syncgroups = SyncGroupCache.objects.filter(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user) groups = [] - logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) - for syncgroup in syncgroups: - groups.append(str(syncgroup.groupname)) - + for group in user.groups.all(): + groups.append(str(group.name)) if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s jabber groups to %s" % (user, groups)) @@ -69,52 +66,46 @@ def update_jabber_groups(user): OpenfireManager.update_user_groups(authserviceinfo.jabber_username, authserviceinfo.jabber_password, groups) logger.debug("Updated user %s jabber groups." % user) - +@task def update_mumble_groups(user): logger.debug("Updating mumble groups for user %s" % user) - syncgroups = SyncGroupCache.objects.filter(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user) groups = [] - logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) - for syncgroup in syncgroups: - groups.append(str(syncgroup.groupname)) - + for group in user.groups.all(): + groups.append(str(group.name)) if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s mumble groups to %s" % (user, groups)) MumbleManager.update_groups(authserviceinfo.mumble_username, groups) logger.debug("Updated user %s mumble groups." % user) +@task def update_forum_groups(user): logger.debug("Updating forum groups for user %s" % user) - syncgroups = SyncGroupCache.objects.filter(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user) groups = [] - logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) - for syncgroup in syncgroups: - groups.append(str(syncgroup.groupname)) - + for group in user.groups.all(): + groups.append(str(group.name)) if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s forum groups to %s" % (user, groups)) Phpbb3Manager.update_groups(authserviceinfo.forum_username, groups) logger.debug("Updated user %s forum groups." % user) +@task def update_ipboard_groups(user): logger.debug("Updating user %s ipboard groups." % user) - syncgroups = SyncGroupCache.objects.filter(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user) groups = [] - logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) - for syncgroup in syncgroups: - groups.append(str(syncgroup.groupname)) - + for group in user.groups.all(): + groups.append(str(group.name)) if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s ipboard groups to %s" % (user, groups)) IPBoardManager.update_groups(authserviceinfo.ipboard_username, groups) logger.debug("Updated user %s ipboard groups." % user) +@task def update_teamspeak3_groups(user): logger.debug("Updating user %s teamspeak3 groups" % user) usergroups = user.groups.all() @@ -130,15 +121,12 @@ def update_teamspeak3_groups(user): Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups) logger.debug("Updated user %s teamspeak3 groups." % user) +@task def update_discord_groups(user): logger.debug("Updating discord groups for user %s" % user) - syncgroups = SyncGroupCache.objects.filter(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user) - groups = [] - for syncgroup in syncgroups: - groups.append(str(syncgroup.groupname)) - - logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) + for group in user.groups.all(): + groups.append(str(group.name)) if len(groups) == 0: logger.debug("No syncgroups found for user. Adding empty group.") groups.append('empty') @@ -146,113 +134,6 @@ def update_discord_groups(user): DiscordManager.update_groups(authserviceinfo.discord_uid, groups) logger.debug("Updated user %s discord groups." % user) -def create_syncgroup_for_user(user, groupname, servicename): - logger.debug("Creating syncgroupcache for user %s group %s in service %s" % (user, groupname, servicename)) - synccache = SyncGroupCache() - synccache.groupname = groupname - synccache.user = user - synccache.servicename = servicename - synccache.save() - logger.info("Created syncgroup for user %s group %s in service %s" % (user, groupname, servicename)) - - -def remove_all_syncgroups_for_service(user, servicename): - logger.debug("Removing all syncgroups for user %s service %s" % (user, servicename)) - syncgroups = SyncGroupCache.objects.filter(user=user) - logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) - for syncgroup in syncgroups: - if syncgroup.servicename == servicename: - logger.debug("Deleting syncgroups %s" % syncgroup) - syncgroup.delete() - logger.info("Removed all syncgroups for user %s service %s" % (user, servicename)) - - -def add_to_databases(user, groups, syncgroups): - logger.debug("add_to_database for user %s called. groups %s - syncgroups %s" % (user, groups, syncgroups)) - authserviceinfo = None - try: - authserviceinfo = AuthServicesInfo.objects.get(user=user) - logger.debug("Got authservicesinfo object %s" % authserviceinfo) - except: - logger.debug("No authservicesinfo object found for user %s" % user) - pass - - if authserviceinfo: - authserviceinfo = AuthServicesInfo.objects.get(user=user) - - if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "": - logger.debug("Updating user TS groups.") - update_teamspeak3_groups(user) - - for group in groups: - if authserviceinfo.jabber_username and authserviceinfo.jabber_username != "": - if syncgroups.filter(groupname=group.name).filter(servicename="openfire").exists() is not True: - logger.debug("User %s has jabber username %s - missing group %s." % (user, authserviceinfo.jabber_username, group.name)) - create_syncgroup_for_user(user, group.name, "openfire") - update_jabber_groups(user) - if authserviceinfo.mumble_username and authserviceinfo.mumble_username != "": - if syncgroups.filter(groupname=group.name).filter(servicename="mumble").exists() is not True: - logger.debug("User %s has mumble username %s - missing group %s." % (user, authserviceinfo.mumble_username, group.name)) - create_syncgroup_for_user(user, group.name, "mumble") - update_mumble_groups(user) - if authserviceinfo.forum_username and authserviceinfo.forum_username != "": - if syncgroups.filter(groupname=group.name).filter(servicename="phpbb3").exists() is not True: - logger.debug("User %s has phpbb username %s - missing group %s." % (user, authserviceinfo.forum_username, group.name)) - create_syncgroup_for_user(user, group.name, "phpbb3") - update_forum_groups(user) - if authserviceinfo.ipboard_username and authserviceinfo.ipboard_username != "": - if syncgroups.filter(groupname=group.name).filter(servicename="ipboard").exists() is not True: - logger.debug("User %s has ipboard username %s - missing group %s." % (user, authserviceinfo.ipboard_username, group.name)) - create_syncgroup_for_user(user, group.name, "ipboard") - update_ipboard_groups(user) - if authserviceinfo.discord_uid and authserviceinfo.discord_uid != "": - if syncgroups.filter(groupname=group.name).filter(servicename="discord").exists() is not True: - logger.debug("User %s has discord uid %s - missing group %s." % (user, authserviceinfo.discord_uid, group.name)) - create_syncgroup_for_user(user, group.name, "discord") - update_discord_groups(user) - - -def remove_from_databases(user, groups, syncgroups): - logger.debug("remove_from_database for user %s called. groups %s - syncgroups %s" % (user, groups, syncgroups)) - authserviceinfo = None - try: - authserviceinfo = AuthServicesInfo.objects.get(user=user) - logger.debug("Got authservicesinfo object %s" % authserviceinfo) - except: - logger.debug("No authservicesinfo object found for user %s" % user) - pass - - if authserviceinfo: - update = False - for syncgroup in syncgroups: - group = groups.filter(name=syncgroup.groupname) - logger.debug("Got group %s for syncgroup %s" % (group, syncgroup)) - if not group: - logger.debug("Deleting syncgroup %s" % syncgroup) - syncgroup.delete() - update = True - - if update: - logger.debug("Syncgroups updated. Propogating to services for user %s" % user) - if authserviceinfo.jabber_username and authserviceinfo.jabber_username != "": - logger.debug("User %s has jabber username %s - updating groups." % (user, authserviceinfo.jabber_username)) - update_jabber_groups(user) - if authserviceinfo.mumble_username and authserviceinfo.mumble_username != "": - logger.debug("User %s has mumble username %s - updating groups." % (user, authserviceinfo.mumble_username)) - update_mumble_groups(user) - if authserviceinfo.forum_username and authserviceinfo.forum_username != "": - logger.debug("User %s has forum username %s - updating groups." % (user, authserviceinfo.forum_username)) - update_forum_groups(user) - if authserviceinfo.ipboard_username and authserviceinfo.ipboard_username != "": - logger.debug("User %s has ipboard username %s - updating groups." % (user, authserviceinfo.ipboard_username)) - update_ipboard_groups(user) - if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "": - logger.debug("User %s has ts3 uid %s - updating groups." % (user, authserviceinfo.teamspeak3_uid)) - update_teamspeak3_groups(user) - if authserviceinfo.discord_uid and authserviceinfo.discord_uid != "": - logger.debug("User %s has discord uid %s - updating groups." % (user, authserviceinfo.discord_uid)) - update_discord_groups(user) - def assign_corp_group(auth): corp_group = None if auth.main_char_id: @@ -420,24 +301,6 @@ def set_state(user): if change: notify(user, "Membership State Change", message="You membership state has been changed to %s" % state) -# Run every minute -@periodic_task(run_every=crontab(minute="*/10")) -def run_databaseUpdate(): - logger.debug("Starting database update.") - users = User.objects.all() - if (is_teamspeak3_active()): - logger.debug("TS3 installed. Syncing local group objects.") - Teamspeak3Manager._sync_ts_group_db() - for user in users: - logger.debug("Initiating database update for user %s" % user) - groups = user.groups.all() - logger.debug("User has groups %s" % groups) - syncgroups = SyncGroupCache.objects.filter(user=user) - logger.debug("User has syncgroups %s" % syncgroups) - add_to_databases(user, groups, syncgroups) - remove_from_databases(user, groups, syncgroups) - time.sleep(1) - # Run every 2 hours @periodic_task(run_every=crontab(minute="0", hour="*/2")) def run_discord_token_cleanup(): From febdaa2802dd1138d9fc4ad1156b2545fedb4757 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Tue, 22 Mar 2016 06:15:08 +0000 Subject: [PATCH 2/5] Add retry for group sync tasks every 10 mins --- celerytask/tasks.py | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/celerytask/tasks.py b/celerytask/tasks.py index 00d06e0d..62323493 100755 --- a/celerytask/tasks.py +++ b/celerytask/tasks.py @@ -62,8 +62,11 @@ def update_jabber_groups(user): if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s jabber groups to %s" % (user, groups)) - - OpenfireManager.update_user_groups(authserviceinfo.jabber_username, authserviceinfo.jabber_password, groups) + try: + OpenfireManager.update_user_groups(authserviceinfo.jabber_username, authserviceinfo.jabber_password, groups) + except: + logger.warn("Jabber group sync failed for %s, retrying in 10 mins" % user) + raise self.retry(countdown = 60 * 10) logger.debug("Updated user %s jabber groups." % user) @task @@ -76,7 +79,11 @@ def update_mumble_groups(user): if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s mumble groups to %s" % (user, groups)) - MumbleManager.update_groups(authserviceinfo.mumble_username, groups) + try: + MumbleManager.update_groups(authserviceinfo.mumble_username, groups) + except: + logger.warn("Mumble group sync failed for %s, retrying in 10 mins" % user) + raise self.retry(countdown = 60 * 10) logger.debug("Updated user %s mumble groups." % user) @task @@ -89,7 +96,11 @@ def update_forum_groups(user): if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s forum groups to %s" % (user, groups)) - Phpbb3Manager.update_groups(authserviceinfo.forum_username, groups) + try: + Phpbb3Manager.update_groups(authserviceinfo.forum_username, groups) + except: + logger.warn("Phpbb group sync failed for %s, retrying in 10 mins" % user) + raise self.retry(countdown = 60 * 10) logger.debug("Updated user %s forum groups." % user) @task @@ -102,7 +113,11 @@ def update_ipboard_groups(user): if len(groups) == 0: groups.append('empty') logger.debug("Updating user %s ipboard groups to %s" % (user, groups)) - IPBoardManager.update_groups(authserviceinfo.ipboard_username, groups) + try: + IPBoardManager.update_groups(authserviceinfo.ipboard_username, groups) + except: + logger.warn("IPBoard group sync failed for %s, retrying in 10 mins" % user) + raise self.retry(countdown = 60 * 10) logger.debug("Updated user %s ipboard groups." % user) @task @@ -131,7 +146,11 @@ def update_discord_groups(user): logger.debug("No syncgroups found for user. Adding empty group.") groups.append('empty') logger.debug("Updating user %s discord groups to %s" % (user, groups)) - DiscordManager.update_groups(authserviceinfo.discord_uid, groups) + try: + DiscordManager.update_groups(authserviceinfo.discord_uid, groups) + except: + logger.warn("Discord group sync failed for %s, retrying in 10 mins" % user) + raise self.retry(countdown = 60 * 10) logger.debug("Updated user %s discord groups." % user) def assign_corp_group(auth): From 48a01972dfa94fcb479ad918e3a2f9f95e690056 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Tue, 22 Mar 2016 14:02:04 -0400 Subject: [PATCH 3/5] Add missing import --- celerytask/signals.py | 1 + 1 file changed, 1 insertion(+) diff --git a/celerytask/signals.py b/celerytask/signals.py index abc779d2..e09de607 100644 --- a/celerytask/signals.py +++ b/celerytask/signals.py @@ -7,6 +7,7 @@ from .tasks import update_mumble_groups from .tasks import update_forum_groups from .tasks import update_ipboard_groups from .tasks import update_discord_groups +from authentication.models import AuthServicesInfo logger = logging.getLogger(__name__) From a55a53239d11b4535ea97ea802335f3585a60436 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Wed, 23 Mar 2016 00:04:07 +0000 Subject: [PATCH 4/5] Removed missing function reference --- services/views.py | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/services/views.py b/services/views.py index ab08dbd8..33535a26 100755 --- a/services/views.py +++ b/services/views.py @@ -16,7 +16,6 @@ from managers.teamspeak3_manager import Teamspeak3Manager from managers.discord_manager import DiscordManager from authentication.managers import AuthServicesInfoManager from eveonline.managers import EveManager -from celerytask.tasks import remove_all_syncgroups_for_service from celerytask.tasks import update_jabber_groups from celerytask.tasks import update_mumble_groups from celerytask.tasks import update_forum_groups @@ -135,7 +134,7 @@ def activate_forum(request): if result[0] != "": AuthServicesInfoManager.update_user_forum_info(result[0], result[1], request.user) logger.debug("Updated authserviceinfo for user %s with forum credentials. Updating groups." % request.user) - update_forum_groups(request.user) + update_forum_groups.delay(request.user) logger.info("Succesfully activated forum for user %s" % request.user) return HttpResponseRedirect("/services/") logger.error("Unsuccesful attempt to activate forum for user %s" % request.user) @@ -148,7 +147,6 @@ def deactivate_forum(request): logger.debug("deactivate_forum called by user %s" % request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) result = Phpbb3Manager.disable_user(authinfo.forum_username) - remove_all_syncgroups_for_service(request.user, "phpbb") # false we failed if result: AuthServicesInfoManager.update_user_forum_info("", "", request.user) @@ -185,7 +183,7 @@ def activate_ipboard_forum(request): if result[0] != "": AuthServicesInfoManager.update_user_ipboard_info(result[0], result[1], request.user) logger.debug("Updated authserviceinfo for user %s with ipboard credentials. Updating groups." % request.user) - update_ipboard_groups(request.user) + update_ipboard_groups.delay(request.user) logger.info("Succesfully activated ipboard for user %s" % request.user) return HttpResponseRedirect("/services/") logger.error("Unsuccesful attempt to activate ipboard for user %s" % request.user) @@ -198,7 +196,6 @@ def deactivate_ipboard_forum(request): logger.debug("deactivate_ipboard_forum called by user %s" % request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) result = IPBoardManager.disable_user(authinfo.ipboard_username) - remove_all_syncgroups_for_service(request.user, "ipboard") # false we failed if result: AuthServicesInfoManager.update_user_ipboard_info("", "", request.user) @@ -234,7 +231,7 @@ def activate_jabber(request): if info[0] is not "": AuthServicesInfoManager.update_user_jabber_info(info[0], info[1], request.user) logger.debug("Updated authserviceinfo for user %s with jabber credentials. Updating groups." % request.user) - update_jabber_groups(request.user) + update_jabber_groups.delay(request.user) logger.info("Succesfully activated jabber for user %s" % request.user) return HttpResponseRedirect("/services/") logger.error("Unsuccesful attempt to activate jabber for user %s" % request.user) @@ -247,7 +244,6 @@ def deactivate_jabber(request): logger.debug("deactivate_jabber called by user %s" % request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) result = OpenfireManager.delete_user(authinfo.jabber_username) - remove_all_syncgroups_for_service(request.user, "openfire") # If our username is blank means we failed if result: AuthServicesInfoManager.update_user_jabber_info("", "", request.user) @@ -288,7 +284,7 @@ def activate_mumble(request): if result[0] is not "": AuthServicesInfoManager.update_user_mumble_info(result[0], result[1], request.user) logger.debug("Updated authserviceinfo for user %s with mumble credentials. Updating groups." % request.user) - update_mumble_groups(request.user) + update_mumble_groups.delay(request.user) logger.info("Succesfully activated mumble for user %s" % request.user) return HttpResponseRedirect("/services/") logger.error("Unsuccessful attempt to activate mumble for user %s" % request.user) @@ -301,7 +297,6 @@ def deactivate_mumble(request): logger.debug("deactivate_mumble called by user %s" % request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) result = MumbleManager.delete_user(authinfo.mumble_username) - remove_all_syncgroups_for_service(request.user, "mumble") # if false we failed if result: AuthServicesInfoManager.update_user_mumble_info("", "", request.user) @@ -344,7 +339,7 @@ def activate_teamspeak3(request): if result[0] is not "": AuthServicesInfoManager.update_user_teamspeak3_info(result[0], result[1], request.user) logger.debug("Updated authserviceinfo for user %s with TS3 credentials. Updating groups." % request.user) - update_teamspeak3_groups(request.user) + update_teamspeak3_groups.delay(request.user) logger.info("Succesfully activated TS3 for user %s" % request.user) return HttpResponseRedirect("/services/") logger.error("Unsuccessful attempt to activate TS3 for user %s" % request.user) @@ -358,8 +353,6 @@ def deactivate_teamspeak3(request): authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) result = Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid) - remove_all_syncgroups_for_service(request.user, "teamspeak3") - # if false we failed if result: AuthServicesInfoManager.update_user_teamspeak3_info("", "", request.user) @@ -378,8 +371,6 @@ def reset_teamspeak3_perm(request): logger.debug("Deleting TS3 user for user %s" % request.user) Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid) - remove_all_syncgroups_for_service(request.user, "teamspeak3") - if check_if_user_has_permission(request.user, "blue_member"): logger.debug("Generating new permission key for blue user %s with main character %s" % (request.user, character)) result = Teamspeak3Manager.generate_new_blue_permissionkey(authinfo.teamspeak3_uid, character.character_name, @@ -393,7 +384,7 @@ def reset_teamspeak3_perm(request): if result != "": AuthServicesInfoManager.update_user_teamspeak3_info(result[0], result[1], request.user) logger.debug("Updated authserviceinfo for user %s with TS3 credentials. Updating groups." % request.user) - update_teamspeak3_groups(request.user) + update_teamspeak3_groups.delay(request.user) logger.info("Successfully reset TS3 permission key for user %s" % request.user) return HttpResponseRedirect("/services/") logger.error("Unsuccessful attempt to reset TS3 permission key for user %s" % request.user) @@ -413,7 +404,6 @@ def deactivate_discord(request): authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) result = DiscordManager.delete_user(authinfo.discord_uid) if result: - remove_all_syncgroups_for_service(request.user, "discord") AuthServicesInfoManager.update_user_discord_info("", request.user) logger.info("Succesfully deactivated discord for user %s" % request.user) return HttpResponseRedirect("/services/") @@ -453,7 +443,7 @@ def activate_discord(request): if user_id != "": AuthServicesInfoManager.update_user_discord_info(user_id, request.user) logger.debug("Updated discord id %s for user %s" % (user_id, request.user)) - update_discord_groups(request.user) + update_discord_groups.delay(request.user) logger.debug("Updated discord groups for user %s." % request.user) success = True logger.info("Succesfully activated discord for user %s" % request.user) @@ -592,4 +582,3 @@ def set_ipboard_password(request): logger.debug("Rendering form for user %s" % request.user) context = {'form': form, 'service': 'IPBoard', 'error': error} return render_to_response('registered/service_password.html', context, context_instance=RequestContext(request)) - From 7cdf1e2fc6e5c0a6efa23e972b9b69a5f271acef Mon Sep 17 00:00:00 2001 From: Adarnof Date: Tue, 22 Mar 2016 20:36:56 -0400 Subject: [PATCH 5/5] Correct field reference --- celerytask/signals.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/celerytask/signals.py b/celerytask/signals.py index e09de607..1a65f86a 100644 --- a/celerytask/signals.py +++ b/celerytask/signals.py @@ -23,7 +23,7 @@ def m2m_changed_user_groups(sender, instance, action, *args, **kwargs): update_jabber_groups.delay(instance) if auth.forum_username: update_forum_groups.delay(instance) - if auth.ipboard_groups: + if auth.ipboard_username: update_ipboard_groups.delay(instance) - if auth.discord_groups: + if auth.discord_username: update_discord_groups.delay(instance)