From de34d35add929fe63263458d2b6f4727f42a3051 Mon Sep 17 00:00:00 2001 From: Raynaldo Rivera Date: Sat, 29 Nov 2014 16:01:23 -0700 Subject: [PATCH] Fixed issue where syncgroups were preventing other groups from being created if a service is added after. --- celerytask/models.py | 4 ++- celerytask/tasks.py | 36 ++++++++++++++++--------- services/managers/ipboard_manager.py | 23 +++++++++------- services/managers/mumble_manager.py | 10 +++++-- services/managers/phpbb3_manager.py | 22 ++++++++++----- services/managers/teamspeak3_manager.py | 6 +++-- 6 files changed, 66 insertions(+), 35 deletions(-) diff --git a/celerytask/models.py b/celerytask/models.py index 0b290a62..3d14398a 100755 --- a/celerytask/models.py +++ b/celerytask/models.py @@ -4,7 +4,9 @@ from django.contrib.auth.models import User class SyncGroupCache(models.Model): groupname = models.CharField(max_length=254) + servicename = models.CharField(max_length=254, default="") + user = models.ForeignKey(User) def __str__(self): - return self.user.username + ' - ' + self.groupname + ' - SyncGroupCache' + return self.user.username + ' - ' + self.groupname + ' - ' + self.servicename + ' - SyncGroupCache' diff --git a/celerytask/tasks.py b/celerytask/tasks.py index fb256acc..bfbd20e4 100755 --- a/celerytask/tasks.py +++ b/celerytask/tasks.py @@ -83,6 +83,14 @@ def update_teamspeak3_groups(user): Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups) +def create_syncgroup_for_user(user, groupname, servicename): + synccache = SyncGroupCache() + synccache.groupname = groupname + synccache.user = user + synccache.servicename = servicename + synccache.save() + + def add_to_databases(user, groups, syncgroups): authserviceinfo = None try: @@ -95,25 +103,27 @@ def add_to_databases(user, groups, syncgroups): update = False for group in groups: - syncgroup = syncgroups.filter(groupname=group.name) - if not syncgroup: - synccache = SyncGroupCache() - synccache.groupname = group.name - synccache.user = user - synccache.save() - update = True - if update: if authserviceinfo.jabber_username and authserviceinfo.jabber_username != "": - update_jabber_groups(user) + if syncgroups.filter(groupname=group.name).filter(servicename="openfire").exists() is not True: + create_syncgroup_for_user(user, group.name, "openfire") + update_jabber_groups(user) if authserviceinfo.mumble_username and authserviceinfo.mumble_username != "": - update_mumble_groups(user) + if syncgroups.filter(groupname=group.name).filter(servicename="mumble").exists() is not True: + create_syncgroup_for_user(user, group.name, "mumble") + update_mumble_groups(user) if authserviceinfo.forum_username and authserviceinfo.forum_username != "": - update_forum_groups(user) + if syncgroups.filter(groupname=group.name).filter(servicename="phpbb3").exists() is not True: + create_syncgroup_for_user(user, group.name, "phpbb3") + update_forum_groups(user) if authserviceinfo.ipboard_username and authserviceinfo.ipboard_username != "": - update_ipboard_groups(user) + if syncgroups.filter(groupname=group.name).filter(servicename="ipboard").exists() is not True: + create_syncgroup_for_user(user, group.name, "ipboard") + update_ipboard_groups(user) if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "": - update_teamspeak3_groups(user) + if syncgroups.filter(groupname=group.name).filter(servicename="teamspeak3").exists() is not True: + create_syncgroup_for_user(user, group.name, "teamspeak3") + update_teamspeak3_groups(user) def remove_from_databases(user, groups, syncgroups): diff --git a/services/managers/ipboard_manager.py b/services/managers/ipboard_manager.py index bfff174d..a85a146a 100755 --- a/services/managers/ipboard_manager.py +++ b/services/managers/ipboard_manager.py @@ -6,7 +6,6 @@ from django.conf import settings class IPBoardManager: - def __init__(self): pass @@ -23,15 +22,18 @@ class IPBoardManager: @staticmethod def exec_xmlrpc(func, **kwargs): """ Send a XMLRPC request """ + try: + server = xmlrpclib.Server(settings.IPBOARD_ENDPOINT, verbose=False) + params = {} + for i in kwargs: + params[i] = kwargs[i] + params['api_key'] = settings.IPBOARD_APIKEY + params['api_module'] = settings.IPBOARD_APIMODULE + print params - server = xmlrpclib.Server(settings.IPBOARD_ENDPOINT, verbose=False) - params = {} - for i in kwargs: - params[i] = kwargs[i] - params['api_key'] = settings.IPBOARD_APIKEY - params['api_module'] = settings.IPBOARD_APIMODULE - print params - return getattr(server, func)(params) + return getattr(server, func)(params) + except: + return {} @staticmethod def add_user(username, email): @@ -39,7 +41,8 @@ class IPBoardManager: sanatized = str(IPBoardManager.__santatize_username(username)) plain_password = IPBoardManager.__generate_random_pass() password = md5(plain_password).hexdigest() - ret = IPBoardManager.exec_xmlrpc('createUser', username=sanatized, email=str(email), display_name=sanatized, md5_passwordHash=password) + ret = IPBoardManager.exec_xmlrpc('createUser', username=sanatized, email=str(email), display_name=sanatized, + md5_passwordHash=password) return sanatized, plain_password @staticmethod diff --git a/services/managers/mumble_manager.py b/services/managers/mumble_manager.py index 20641b27..71d2f34c 100755 --- a/services/managers/mumble_manager.py +++ b/services/managers/mumble_manager.py @@ -218,7 +218,13 @@ class MumbleManager: for g in addgroups: if not g in mumble_groups: mumble_groups[g] = MumbleManager._add_group(g) - MumbleManager._add_user_to_group(userid, mumble_groups[g]) + try: + MumbleManager._add_user_to_group(userid, mumble_groups[g]) + except: + print "Error occurred while adding a mumble to a group" for g in remgroups: - MumbleManager._del_user_from_group(userid, mumble_groups[g]) + try: + MumbleManager._del_user_from_group(userid, mumble_groups[g]) + except: + print "Error occurred while removing a mumble user from group" diff --git a/services/managers/phpbb3_manager.py b/services/managers/phpbb3_manager.py index ac6d690c..5c127054 100755 --- a/services/managers/phpbb3_manager.py +++ b/services/managers/phpbb3_manager.py @@ -95,13 +95,19 @@ class Phpbb3Manager: @staticmethod def __add_user_to_group(userid, groupid): - cursor = connections['phpbb3'].cursor() - cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0]) + try: + cursor = connections['phpbb3'].cursor() + cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0]) + except: + pass @staticmethod def __remove_user_from_group(userid, groupid): cursor = connections['phpbb3'].cursor() - cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid]) + try: + cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid]) + except: + pass @staticmethod def add_user(username, email, groups): @@ -118,8 +124,8 @@ class Phpbb3Manager: try: cursor.execute(Phpbb3Manager.SQL_ADD_USER, [username_clean, username_clean, pwhash, - email, 2, Phpbb3Manager.__get_current_utc_date(), - "", ""]) + email, 2, Phpbb3Manager.__get_current_utc_date(), + "", ""]) Phpbb3Manager.update_groups(username_clean, groups) except: pass @@ -176,8 +182,10 @@ class Phpbb3Manager: if userid: if groupid: - cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid]) - + try: + cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid]) + except: + pass @staticmethod def check_user(username): diff --git a/services/managers/teamspeak3_manager.py b/services/managers/teamspeak3_manager.py index a42a8217..fd382337 100755 --- a/services/managers/teamspeak3_manager.py +++ b/services/managers/teamspeak3_manager.py @@ -18,7 +18,7 @@ class Teamspeak3Manager: def __santatize_username(username): sanatized = username.replace(" ", "_") sanatized = sanatized.replace("'", "") - return sanatized.lower() + return sanatized @staticmethod def __generate_username(username, corp_ticker): @@ -207,8 +207,10 @@ class Teamspeak3Manager: @staticmethod def update_groups(uid, l_groups): + print uid + print l_groups userid = Teamspeak3Manager._get_userid(uid) - if userid: + if userid is not None: server_groups = Teamspeak3Manager._group_list() user_groups = set(Teamspeak3Manager._user_group_list(userid)) groups = []