Merge pull request #319 from Adarnof/receiver

Replace run_databaseUpdate with m2m receiver
This commit is contained in:
Mr McClain 2016-03-22 21:04:44 -05:00
commit ae1da75d81
4 changed files with 78 additions and 177 deletions

View File

@ -0,0 +1 @@
import signals

29
celerytask/signals.py Normal file
View File

@ -0,0 +1,29 @@
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
from authentication.models import AuthServicesInfo
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_username:
update_ipboard_groups.delay(instance)
if auth.discord_username:
update_discord_groups.delay(instance)

View File

@ -4,7 +4,6 @@ from django.contrib.auth.models import User
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from notifications import notify from notifications import notify
from celery import task from celery import task
from models import SyncGroupCache
from celery.task.schedules import crontab from celery.task.schedules import crontab
from services.managers.openfire_manager import OpenfireManager from services.managers.openfire_manager import OpenfireManager
from services.managers.mumble_manager import MumbleManager from services.managers.mumble_manager import MumbleManager
@ -54,68 +53,75 @@ def disable_member(user):
def is_teamspeak3_active(): def is_teamspeak3_active():
return settings.ENABLE_AUTH_TEAMSPEAK3 or settings.ENABLE_BLUE_TEAMSPEAK3 return settings.ENABLE_AUTH_TEAMSPEAK3 or settings.ENABLE_BLUE_TEAMSPEAK3
@task
def update_jabber_groups(user): def update_jabber_groups(user):
logger.debug("Updating jabber groups for user %s" % user) logger.debug("Updating jabber groups for user %s" % user)
syncgroups = SyncGroupCache.objects.filter(user=user)
authserviceinfo = AuthServicesInfo.objects.get(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user)
groups = [] groups = []
logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) for group in user.groups.all():
for syncgroup in syncgroups: groups.append(str(group.name))
groups.append(str(syncgroup.groupname))
if len(groups) == 0: if len(groups) == 0:
groups.append('empty') 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:
OpenfireManager.update_user_groups(authserviceinfo.jabber_username, authserviceinfo.jabber_password, groups) 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) logger.debug("Updated user %s jabber groups." % user)
@task
def update_mumble_groups(user): def update_mumble_groups(user):
logger.debug("Updating mumble groups for user %s" % user) logger.debug("Updating mumble groups for user %s" % user)
syncgroups = SyncGroupCache.objects.filter(user=user)
authserviceinfo = AuthServicesInfo.objects.get(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user)
groups = [] groups = []
logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) for group in user.groups.all():
for syncgroup in syncgroups: groups.append(str(group.name))
groups.append(str(syncgroup.groupname))
if len(groups) == 0: if len(groups) == 0:
groups.append('empty') groups.append('empty')
logger.debug("Updating user %s mumble groups to %s" % (user, groups)) 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) logger.debug("Updated user %s mumble groups." % user)
@task
def update_forum_groups(user): def update_forum_groups(user):
logger.debug("Updating forum groups for user %s" % user) logger.debug("Updating forum groups for user %s" % user)
syncgroups = SyncGroupCache.objects.filter(user=user)
authserviceinfo = AuthServicesInfo.objects.get(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user)
groups = [] groups = []
logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) for group in user.groups.all():
for syncgroup in syncgroups: groups.append(str(group.name))
groups.append(str(syncgroup.groupname))
if len(groups) == 0: if len(groups) == 0:
groups.append('empty') groups.append('empty')
logger.debug("Updating user %s forum groups to %s" % (user, groups)) 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) logger.debug("Updated user %s forum groups." % user)
@task
def update_ipboard_groups(user): def update_ipboard_groups(user):
logger.debug("Updating user %s ipboard groups." % user) logger.debug("Updating user %s ipboard groups." % user)
syncgroups = SyncGroupCache.objects.filter(user=user)
authserviceinfo = AuthServicesInfo.objects.get(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user)
groups = [] groups = []
logger.debug("User %s has %s syncgroups." % (user, len(syncgroups))) for group in user.groups.all():
for syncgroup in syncgroups: groups.append(str(group.name))
groups.append(str(syncgroup.groupname))
if len(groups) == 0: if len(groups) == 0:
groups.append('empty') groups.append('empty')
logger.debug("Updating user %s ipboard groups to %s" % (user, groups)) 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) logger.debug("Updated user %s ipboard groups." % user)
@task
def update_teamspeak3_groups(user): def update_teamspeak3_groups(user):
logger.debug("Updating user %s teamspeak3 groups" % user) logger.debug("Updating user %s teamspeak3 groups" % user)
usergroups = user.groups.all() usergroups = user.groups.all()
@ -131,129 +137,23 @@ def update_teamspeak3_groups(user):
Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups) Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups)
logger.debug("Updated user %s teamspeak3 groups." % user) logger.debug("Updated user %s teamspeak3 groups." % user)
@task
def update_discord_groups(user): def update_discord_groups(user):
logger.debug("Updating discord groups for user %s" % user) logger.debug("Updating discord groups for user %s" % user)
syncgroups = SyncGroupCache.objects.filter(user=user)
authserviceinfo = AuthServicesInfo.objects.get(user=user) authserviceinfo = AuthServicesInfo.objects.get(user=user)
groups = [] for group in user.groups.all():
for syncgroup in syncgroups: groups.append(str(group.name))
groups.append(str(syncgroup.groupname))
logger.debug("User %s has %s syncgroups." % (user, len(syncgroups)))
if len(groups) == 0: if len(groups) == 0:
logger.debug("No syncgroups found for user. Adding empty group.") logger.debug("No syncgroups found for user. Adding empty group.")
groups.append('empty') 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))
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) 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): def assign_corp_group(auth):
corp_group = None corp_group = None
if auth.main_char_id: if auth.main_char_id:
@ -421,24 +321,6 @@ def set_state(user):
if change: if change:
notify(user, "Membership State Change", message="You membership state has been changed to %s" % state) 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 # Run every 2 hours
@periodic_task(run_every=crontab(minute="0", hour="*/2")) @periodic_task(run_every=crontab(minute="0", hour="*/2"))
def run_discord_token_cleanup(): def run_discord_token_cleanup():

View File

@ -16,7 +16,6 @@ from managers.teamspeak3_manager import Teamspeak3Manager
from managers.discord_manager import DiscordManager from managers.discord_manager import DiscordManager
from authentication.managers import AuthServicesInfoManager from authentication.managers import AuthServicesInfoManager
from eveonline.managers import EveManager 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_jabber_groups
from celerytask.tasks import update_mumble_groups from celerytask.tasks import update_mumble_groups
from celerytask.tasks import update_forum_groups from celerytask.tasks import update_forum_groups
@ -135,7 +134,7 @@ def activate_forum(request):
if result[0] != "": if result[0] != "":
AuthServicesInfoManager.update_user_forum_info(result[0], result[1], request.user) 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) 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) logger.info("Succesfully activated forum for user %s" % request.user)
return HttpResponseRedirect("/services/") return HttpResponseRedirect("/services/")
logger.error("Unsuccesful attempt to activate forum for user %s" % request.user) 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) logger.debug("deactivate_forum called by user %s" % request.user)
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = Phpbb3Manager.disable_user(authinfo.forum_username) result = Phpbb3Manager.disable_user(authinfo.forum_username)
remove_all_syncgroups_for_service(request.user, "phpbb")
# false we failed # false we failed
if result: if result:
AuthServicesInfoManager.update_user_forum_info("", "", request.user) AuthServicesInfoManager.update_user_forum_info("", "", request.user)
@ -185,7 +183,7 @@ def activate_ipboard_forum(request):
if result[0] != "": if result[0] != "":
AuthServicesInfoManager.update_user_ipboard_info(result[0], result[1], request.user) 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) 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) logger.info("Succesfully activated ipboard for user %s" % request.user)
return HttpResponseRedirect("/services/") return HttpResponseRedirect("/services/")
logger.error("Unsuccesful attempt to activate ipboard for user %s" % request.user) 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) logger.debug("deactivate_ipboard_forum called by user %s" % request.user)
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = IPBoardManager.disable_user(authinfo.ipboard_username) result = IPBoardManager.disable_user(authinfo.ipboard_username)
remove_all_syncgroups_for_service(request.user, "ipboard")
# false we failed # false we failed
if result: if result:
AuthServicesInfoManager.update_user_ipboard_info("", "", request.user) AuthServicesInfoManager.update_user_ipboard_info("", "", request.user)
@ -234,7 +231,7 @@ def activate_jabber(request):
if info[0] is not "": if info[0] is not "":
AuthServicesInfoManager.update_user_jabber_info(info[0], info[1], request.user) 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) 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) logger.info("Succesfully activated jabber for user %s" % request.user)
return HttpResponseRedirect("/services/") return HttpResponseRedirect("/services/")
logger.error("Unsuccesful attempt to activate jabber for user %s" % request.user) 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) logger.debug("deactivate_jabber called by user %s" % request.user)
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = OpenfireManager.delete_user(authinfo.jabber_username) result = OpenfireManager.delete_user(authinfo.jabber_username)
remove_all_syncgroups_for_service(request.user, "openfire")
# If our username is blank means we failed # If our username is blank means we failed
if result: if result:
AuthServicesInfoManager.update_user_jabber_info("", "", request.user) AuthServicesInfoManager.update_user_jabber_info("", "", request.user)
@ -288,7 +284,7 @@ def activate_mumble(request):
if result[0] is not "": if result[0] is not "":
AuthServicesInfoManager.update_user_mumble_info(result[0], result[1], request.user) 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) 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) logger.info("Succesfully activated mumble for user %s" % request.user)
return HttpResponseRedirect("/services/") return HttpResponseRedirect("/services/")
logger.error("Unsuccessful attempt to activate mumble for user %s" % request.user) 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) logger.debug("deactivate_mumble called by user %s" % request.user)
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = MumbleManager.delete_user(authinfo.mumble_username) result = MumbleManager.delete_user(authinfo.mumble_username)
remove_all_syncgroups_for_service(request.user, "mumble")
# if false we failed # if false we failed
if result: if result:
AuthServicesInfoManager.update_user_mumble_info("", "", request.user) AuthServicesInfoManager.update_user_mumble_info("", "", request.user)
@ -344,7 +339,7 @@ def activate_teamspeak3(request):
if result[0] is not "": if result[0] is not "":
AuthServicesInfoManager.update_user_teamspeak3_info(result[0], result[1], request.user) 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) 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) logger.info("Succesfully activated TS3 for user %s" % request.user)
return HttpResponseRedirect("/services/") return HttpResponseRedirect("/services/")
logger.error("Unsuccessful attempt to activate TS3 for user %s" % request.user) 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) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid) result = Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid)
remove_all_syncgroups_for_service(request.user, "teamspeak3")
# if false we failed # if false we failed
if result: if result:
AuthServicesInfoManager.update_user_teamspeak3_info("", "", request.user) 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) logger.debug("Deleting TS3 user for user %s" % request.user)
Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid) Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid)
remove_all_syncgroups_for_service(request.user, "teamspeak3")
if check_if_user_has_permission(request.user, "blue_member"): 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)) 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, result = Teamspeak3Manager.generate_new_blue_permissionkey(authinfo.teamspeak3_uid, character.character_name,
@ -393,7 +384,7 @@ def reset_teamspeak3_perm(request):
if result != "": if result != "":
AuthServicesInfoManager.update_user_teamspeak3_info(result[0], result[1], request.user) 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) 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) logger.info("Successfully reset TS3 permission key for user %s" % request.user)
return HttpResponseRedirect("/services/") return HttpResponseRedirect("/services/")
logger.error("Unsuccessful attempt to reset TS3 permission key for user %s" % request.user) 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) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = DiscordManager.delete_user(authinfo.discord_uid) result = DiscordManager.delete_user(authinfo.discord_uid)
if result: if result:
remove_all_syncgroups_for_service(request.user, "discord")
AuthServicesInfoManager.update_user_discord_info("", request.user) AuthServicesInfoManager.update_user_discord_info("", request.user)
logger.info("Succesfully deactivated discord for user %s" % request.user) logger.info("Succesfully deactivated discord for user %s" % request.user)
return HttpResponseRedirect("/services/") return HttpResponseRedirect("/services/")
@ -453,7 +443,7 @@ def activate_discord(request):
if user_id != "": if user_id != "":
AuthServicesInfoManager.update_user_discord_info(user_id, request.user) AuthServicesInfoManager.update_user_discord_info(user_id, request.user)
logger.debug("Updated discord id %s for user %s" % (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) logger.debug("Updated discord groups for user %s." % request.user)
success = True success = True
logger.info("Succesfully activated discord for user %s" % request.user) 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) logger.debug("Rendering form for user %s" % request.user)
context = {'form': form, 'service': 'IPBoard', 'error': error} context = {'form': form, 'service': 'IPBoard', 'error': error}
return render_to_response('registered/service_password.html', context, context_instance=RequestContext(request)) return render_to_response('registered/service_password.html', context, context_instance=RequestContext(request))