Fixed issue where syncgroups were preventing other groups from being created if a service is added after.

This commit is contained in:
Raynaldo Rivera 2014-11-29 16:01:23 -07:00
parent 551cf01b44
commit de34d35add
6 changed files with 66 additions and 35 deletions

View File

@ -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'

View File

@ -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,24 +103,26 @@ 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 != "":
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 != "":
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 != "":
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 != "":
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 != "":
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)

View File

@ -6,7 +6,6 @@ from django.conf import settings
class IPBoardManager:
def __init__(self):
pass
@ -23,7 +22,7 @@ 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:
@ -31,7 +30,10 @@ class IPBoardManager:
params['api_key'] = settings.IPBOARD_APIKEY
params['api_module'] = settings.IPBOARD_APIMODULE
print 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

View File

@ -218,7 +218,13 @@ class MumbleManager:
for g in addgroups:
if not g in mumble_groups:
mumble_groups[g] = MumbleManager._add_group(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:
try:
MumbleManager._del_user_from_group(userid, mumble_groups[g])
except:
print "Error occurred while removing a mumble user from group"

View File

@ -95,13 +95,19 @@ class Phpbb3Manager:
@staticmethod
def __add_user_to_group(userid, groupid):
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()
try:
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
except:
pass
@staticmethod
def add_user(username, email, groups):
@ -176,8 +182,10 @@ class Phpbb3Manager:
if userid:
if groupid:
try:
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
except:
pass
@staticmethod
def check_user(username):

View File

@ -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 = []