mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 14:30:17 +02:00
Added syncgroup logic to celery tasks.
Wrote request handles for enabling and disabling discord user.
This commit is contained in:
parent
765fcb52de
commit
34a27ba885
@ -80,3 +80,10 @@ class AuthServicesInfoManager:
|
||||
authserviceinfo.is_blue = is_blue
|
||||
authserviceinfo.save(update_fields=['is_blue'])
|
||||
|
||||
@staticmethod
|
||||
def update_user_discord_info(username, user_id, user):
|
||||
if User.objects.filter(username=user.username).exists():
|
||||
authserviceinfo = AuthServicesInfoManager.__get_or_create(user)
|
||||
authserviceinfo.discord_username = username
|
||||
authserviceinfo.discord_uid = user_id
|
||||
authserviceinfo.save(update_fields=['discord_username', 'discord_uid'])
|
||||
|
@ -9,6 +9,7 @@ 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.managers.discord_manager import DiscordManager
|
||||
from services.models import AuthTS
|
||||
from services.models import TSgroup
|
||||
from authentication.models import AuthServicesInfo
|
||||
@ -105,6 +106,17 @@ def update_teamspeak3_groups(user):
|
||||
|
||||
Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups)
|
||||
|
||||
def update_discord_groups(user):
|
||||
syncgroups = SyncGroupCache.objects.filter(user=user)
|
||||
authserviceinfo = AuthServicesInfo.objects.get(user=user)
|
||||
groups = []
|
||||
for syncgroup in syncgroups:
|
||||
groups.append(str(syncgroup.groupname))
|
||||
|
||||
if len(groups) == 0:
|
||||
groups.append('empty')
|
||||
|
||||
DiscordManager.update_groups(authserviceinfo.discord_username, groups)
|
||||
|
||||
def create_syncgroup_for_user(user, groupname, servicename):
|
||||
synccache = SyncGroupCache()
|
||||
@ -151,6 +163,10 @@ 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.discord_username and authserviceinfo.discord_username != "":
|
||||
if syncgroups.filter(groupname=group.name).filter(servicename="discord").exists() is not True:
|
||||
create_syncgroup_for_user(user, group.name, "discord")
|
||||
update_discord_groups(user)
|
||||
|
||||
|
||||
def remove_from_databases(user, groups, syncgroups):
|
||||
@ -180,6 +196,8 @@ def remove_from_databases(user, groups, syncgroups):
|
||||
update_ipboard_groups(user)
|
||||
if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "":
|
||||
update_teamspeak3_groups(user)
|
||||
if authserviceinfo.discord_username and authserviceinfo.discord_username != "":
|
||||
update_discord_groups(user)
|
||||
|
||||
|
||||
# Run every minute
|
||||
|
@ -237,18 +237,17 @@ class DiscordManager:
|
||||
group_ids = []
|
||||
for g in groups:
|
||||
try:
|
||||
group_id = DiscordAPIManager.get_group_id(settings.DISCORD_SERVER_ID, g.name)
|
||||
group_id = DiscordAPIManager.get_group_id(settings.DISCORD_SERVER_ID, g)
|
||||
group_ids.append(group_id)
|
||||
except:
|
||||
# need to create role on server for group
|
||||
group_ids.append(DiscordManager.create_group(g.name))
|
||||
group_ids.append(DiscordManager.create_group(g))
|
||||
DiscordAPIManager.set_roles(settings.DISCORD_SERVER_ID, user_id, group_ids)
|
||||
|
||||
@staticmethod
|
||||
def create_group(groupname):
|
||||
safe_groupname = DiscordManager.__sanatize_username(groupname)
|
||||
new_group = DiscordAPIManager.generate_role(settings.DISCORD_SERVER_ID)
|
||||
named_group = DiscordAPIManager.edit_role(settings.DISCORD_SERVER_ID, new_group['id'], safe_groupname)
|
||||
named_group = DiscordAPIManager.edit_role(settings.DISCORD_SERVER_ID, new_group['id'], groupname)
|
||||
return named_group['id']
|
||||
|
||||
@staticmethod
|
||||
|
@ -12,6 +12,7 @@ from managers.phpbb3_manager import Phpbb3Manager
|
||||
from managers.mumble_manager import MumbleManager
|
||||
from managers.ipboard_manager import IPBoardManager
|
||||
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
|
||||
@ -317,3 +318,29 @@ def fleet_fits(request):
|
||||
context = {}
|
||||
return render_to_response('registered/fleetfits.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
def activate_discord(request):
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
character = EveManager.get_character_by_id(authinfo.main_char_id)
|
||||
info = DiscordManager.add_user(character.character_name)
|
||||
# If our username is blank means we already had a user
|
||||
if info[0] is not "":
|
||||
AuthServicesInfoManager.update_user_discord_info(info[0], info[1], request.user)
|
||||
update_discord_groups(request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
return HttpResponseRedirect("/dashboard")
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
def deactivate_discord(request):
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
result = DiscordManager.delete_user(authinfo.jabber_username)
|
||||
remove_all_syncgroups_for_service(request.user, "discord")
|
||||
# If our username is blank means we failed
|
||||
if result:
|
||||
AuthServicesInfoManager.update_user_discord_info("", "", request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
return HttpResponseRedirect("/dashboard")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user