diff --git a/.gitignore b/.gitignore index da2f9c3a..5e7f7823 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,5 @@ target/ .vagrant/ alliance_auth/settings.py +*Thumbs.db +nginx_config.txt diff --git a/celerytask/tasks.py b/celerytask/tasks.py index 60069632..c835950b 100755 --- a/celerytask/tasks.py +++ b/celerytask/tasks.py @@ -9,6 +9,8 @@ from services.managers.mumble_manager import MumbleManager from services.managers.phpbb3_manager import Phpbb3Manager from services.managers.ipboard_manager import IPBoardManager from services.managers.teamspeak3_manager import Teamspeak3Manager +from services.models import AuthTS +from services.models import TSgroup from authentication.models import AuthServicesInfo from eveonline.managers import EveManager from services.managers.eve_api_manager import EveApiManager @@ -48,8 +50,6 @@ def update_jabber_groups(user): if len(groups) == 0: groups.append('empty') - print groups - OpenfireManager.update_user_groups(authserviceinfo.jabber_username, authserviceinfo.jabber_password, groups) @@ -93,14 +93,15 @@ def update_ipboard_groups(user): def update_teamspeak3_groups(user): - syncgroups = SyncGroupCache.objects.filter(user=user) + usergroups = user.groups.all() authserviceinfo = AuthServicesInfo.objects.get(user=user) - groups = [] - for syncgroup in syncgroups: - groups.append(str(syncgroup.groupname)) - - if len(groups) == 0: - groups.append('empty') + groups = {} + for usergroup in usergroups: + filtered_groups = AuthTS.objects.filter(auth_group=usergroup) + if filtered_groups: + for filtered_group in filtered_groups: + for ts_group in filtered_group.ts_group.all(): + groups[ts_group.ts_group_name] = ts_group.ts_group_id Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups) @@ -129,9 +130,11 @@ def add_to_databases(user, groups, syncgroups): if authserviceinfo: authserviceinfo = AuthServicesInfo.objects.get(user=user) - + + if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "": + 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: create_syncgroup_for_user(user, group.name, "openfire") @@ -148,10 +151,6 @@ def add_to_databases(user, groups, syncgroups): 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) def remove_from_databases(user, groups, syncgroups): @@ -190,6 +189,7 @@ def run_databaseUpdate(): for user in users: groups = user.groups.all() syncgroups = SyncGroupCache.objects.filter(user=user) + Teamspeak3Manager._sync_ts_group_db() add_to_databases(user, groups, syncgroups) remove_from_databases(user, groups, syncgroups) diff --git a/requirements.txt b/requirements.txt index 72b6116a..86464bf7 100755 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ xmpppy==0.5.0rc1 python-openfire==0.2.3-beta # Django Stuff # -django==1.6.1 +django==1.6.5 django-evolution django-bootstrap-form django-celery diff --git a/services/admin.py b/services/admin.py index 846f6b40..2026832a 100644 --- a/services/admin.py +++ b/services/admin.py @@ -1 +1,18 @@ -# Register your models here. +from django.contrib import admin +from .models import AuthTS +from .models import TSgroup +from .models import UserTSgroup + +class AuthTSgroupAdmin(admin.ModelAdmin): + fields = ['auth_group','ts_group'] + filter_horizontal = ('ts_group',) + +class TSgroupAdmin(admin.ModelAdmin): + fields = ['ts_group_name'] + +class UserTSgroupAdmin(admin.ModelAdmin): + fields = ['user','ts_group'] + filter_horizontal = ('ts_group',) + +admin.site.register(AuthTS, AuthTSgroupAdmin) +admin.site.register(TSgroup, TSgroupAdmin) \ No newline at end of file diff --git a/services/managers/teamspeak3_manager.py b/services/managers/teamspeak3_manager.py index 43632d65..4c50dab1 100755 --- a/services/managers/teamspeak3_manager.py +++ b/services/managers/teamspeak3_manager.py @@ -1,6 +1,7 @@ from django.conf import settings from services.managers.util.ts3 import TS3Server +from services.models import TSgroup class Teamspeak3Manager: @@ -93,30 +94,40 @@ class Teamspeak3Manager: return outlist @staticmethod - def _add_user_to_group(uid, groupname): - groupname = groupname[:30] + def _add_user_to_group(uid, groupid): server = Teamspeak3Manager.__get_created_server() server_groups = Teamspeak3Manager._group_list() user_groups = Teamspeak3Manager._user_group_list(uid) - - if not groupname in server_groups: - Teamspeak3Manager._create_group(groupname) - if not groupname in user_groups: + + if not groupid in user_groups.values(): server.send_command('servergroupaddclient', - {'sgid': Teamspeak3Manager._group_id_by_name(groupname), 'cldbid': uid}) + {'sgid': str(groupid), 'cldbid': uid}) @staticmethod - def _remove_user_from_group(uid, groupname): - groupname = groupname[:30] + def _remove_user_from_group(uid, groupid): server = Teamspeak3Manager.__get_created_server() server_groups = Teamspeak3Manager._group_list() user_groups = Teamspeak3Manager._user_group_list(uid) - if groupname in server_groups: - Teamspeak3Manager._create_group(groupname) - if groupname in user_groups: + if str(groupid) in user_groups.values(): server.send_command('servergroupdelclient', - {'sgid': Teamspeak3Manager._group_id_by_name(groupname), 'cldbid': uid}) + {'sgid': str(groupid), 'cldbid': uid}) + + @staticmethod + def _sync_ts_group_db(): + remote_groups = Teamspeak3Manager._group_list() + local_groups = TSgroup.objects.all() + for key in remote_groups: + remote_groups[key] = int(remote_groups[key]) + + for group in local_groups: + if group.ts_group_id not in remote_groups.values(): + TSgroup.objects.filter(ts_group_id=group.ts_group_id).delete() + for key in remote_groups: + g = TSgroup(ts_group_id=remote_groups[key],ts_group_name=key) + q = TSgroup.objects.filter(ts_group_id=g.ts_group_id) + if not q: + g.save() @staticmethod def add_user(username, corp_ticker): @@ -206,28 +217,26 @@ class Teamspeak3Manager: return Teamspeak3Manager.add_blue_user(username, corpticker) @staticmethod - def update_groups(uid, l_groups): - print uid - print l_groups + def update_groups(uid, ts_groups): userid = Teamspeak3Manager._get_userid(uid) + addgroups = [] + remgroups = [] if userid is not None: - server_groups = Teamspeak3Manager._group_list() - user_groups = set(Teamspeak3Manager._user_group_list(userid)) - groups = [] - for l_group in l_groups: - groups.append(l_group[:30]) - - act_groups = set([g.replace(' ', '-') for g in groups]) - addgroups = act_groups - user_groups - remgroups = user_groups - act_groups + user_ts_groups = Teamspeak3Manager._user_group_list(userid) + for key in user_ts_groups: + user_ts_groups[key] = int(user_ts_groups[key]) + for ts_group_key in ts_groups: + if ts_groups[ts_group_key] not in user_ts_groups.values(): + addgroups.append(ts_groups[ts_group_key]) + for user_ts_group_key in user_ts_groups: + if user_ts_groups[user_ts_group_key] not in ts_groups.values(): + remgroups.append(user_ts_groups[user_ts_group_key]) print userid print addgroups print remgroups for g in addgroups: - if not g in server_groups.keys(): - Teamspeak3Manager._create_group(g) Teamspeak3Manager._add_user_to_group(userid, g) for g in remgroups: diff --git a/services/models.py b/services/models.py index 6b202199..87a5ad57 100644 --- a/services/models.py +++ b/services/models.py @@ -1 +1,32 @@ -# Create your models here. +from django.db import models +from django.contrib.auth.models import Group + +class TSgroup(models.Model): + ts_group_id = models.IntegerField(primary_key=True) + ts_group_name = models.CharField(max_length=30) + + class Meta: + verbose_name='TS Group' + + def __str__(self): + return self.ts_group_name + +class AuthTS(models.Model): + auth_group = models.ForeignKey('auth.Group') + ts_group = models.ManyToManyField(TSgroup) + + class Meta: + verbose_name='Auth / TS Group' + + def __str__(self): + return self.auth_group.name + +class UserTSgroup(models.Model): + user = models.ForeignKey('auth.User') + ts_group = models.ManyToManyField(TSgroup) + + class Meta: + verbose_name='User TS Group' + + def __str__(self): + return self.user.name \ No newline at end of file diff --git a/static/img/index_images/Thumbs.db b/static/img/index_images/Thumbs.db new file mode 100644 index 00000000..748e9555 Binary files /dev/null and b/static/img/index_images/Thumbs.db differ diff --git a/vagrant/bootstrap.sh b/vagrant/bootstrap.sh index d2b440a3..b933faf5 100755 --- a/vagrant/bootstrap.sh +++ b/vagrant/bootstrap.sh @@ -12,6 +12,15 @@ sudo apt-get -y install python-dev libyaml-dev libffi-dev sudo apt-get -y install python-pip sudo apt-get -y install mysql-server mysql-client +#Python 3 stuff +sudo apt-get -y install python-software-properties +sudo add-apt-repository ppa:fkrull/deadsnakes +sudo apt-get -y update +sudo apt-get -y install python3.3 + +#virtualenv stuff +sudo apt-get -y install python-virtualenv + cd /vagrant/ sudo pip install --upgrade pip