mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 22:40:16 +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.is_blue = is_blue
|
||||||
authserviceinfo.save(update_fields=['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.phpbb3_manager import Phpbb3Manager
|
||||||
from services.managers.ipboard_manager import IPBoardManager
|
from services.managers.ipboard_manager import IPBoardManager
|
||||||
from services.managers.teamspeak3_manager import Teamspeak3Manager
|
from services.managers.teamspeak3_manager import Teamspeak3Manager
|
||||||
|
from services.managers.discord_manager import DiscordManager
|
||||||
from services.models import AuthTS
|
from services.models import AuthTS
|
||||||
from services.models import TSgroup
|
from services.models import TSgroup
|
||||||
from authentication.models import AuthServicesInfo
|
from authentication.models import AuthServicesInfo
|
||||||
@ -105,6 +106,17 @@ def update_teamspeak3_groups(user):
|
|||||||
|
|
||||||
Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups)
|
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):
|
def create_syncgroup_for_user(user, groupname, servicename):
|
||||||
synccache = SyncGroupCache()
|
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:
|
if syncgroups.filter(groupname=group.name).filter(servicename="ipboard").exists() is not True:
|
||||||
create_syncgroup_for_user(user, group.name, "ipboard")
|
create_syncgroup_for_user(user, group.name, "ipboard")
|
||||||
update_ipboard_groups(user)
|
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):
|
def remove_from_databases(user, groups, syncgroups):
|
||||||
@ -180,6 +196,8 @@ def remove_from_databases(user, groups, syncgroups):
|
|||||||
update_ipboard_groups(user)
|
update_ipboard_groups(user)
|
||||||
if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "":
|
if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "":
|
||||||
update_teamspeak3_groups(user)
|
update_teamspeak3_groups(user)
|
||||||
|
if authserviceinfo.discord_username and authserviceinfo.discord_username != "":
|
||||||
|
update_discord_groups(user)
|
||||||
|
|
||||||
|
|
||||||
# Run every minute
|
# Run every minute
|
||||||
|
@ -237,18 +237,17 @@ class DiscordManager:
|
|||||||
group_ids = []
|
group_ids = []
|
||||||
for g in groups:
|
for g in groups:
|
||||||
try:
|
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)
|
group_ids.append(group_id)
|
||||||
except:
|
except:
|
||||||
# need to create role on server for group
|
# 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)
|
DiscordAPIManager.set_roles(settings.DISCORD_SERVER_ID, user_id, group_ids)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_group(groupname):
|
def create_group(groupname):
|
||||||
safe_groupname = DiscordManager.__sanatize_username(groupname)
|
|
||||||
new_group = DiscordAPIManager.generate_role(settings.DISCORD_SERVER_ID)
|
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']
|
return named_group['id']
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -12,6 +12,7 @@ from managers.phpbb3_manager import Phpbb3Manager
|
|||||||
from managers.mumble_manager import MumbleManager
|
from managers.mumble_manager import MumbleManager
|
||||||
from managers.ipboard_manager import IPBoardManager
|
from managers.ipboard_manager import IPBoardManager
|
||||||
from managers.teamspeak3_manager import Teamspeak3Manager
|
from managers.teamspeak3_manager import Teamspeak3Manager
|
||||||
|
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 remove_all_syncgroups_for_service
|
||||||
@ -317,3 +318,29 @@ def fleet_fits(request):
|
|||||||
context = {}
|
context = {}
|
||||||
return render_to_response('registered/fleetfits.html', context,
|
return render_to_response('registered/fleetfits.html', context,
|
||||||
context_instance=RequestContext(request))
|
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