mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-09 08:36:23 +01:00
Discourse (#377)
* Initial work on Discourse integration * Views for discourse * Discourse group updates Correct password display * Removed password functions Changed delete to suspend user forever Added unsuspend check to add_user
This commit is contained in:
@@ -10,6 +10,7 @@ from .tasks import update_forum_groups
|
||||
from .tasks import update_ipboard_groups
|
||||
from .tasks import update_discord_groups
|
||||
from .tasks import update_teamspeak3_groups
|
||||
from .tasks import update_discourse_groups
|
||||
from .tasks import update_smf_groups
|
||||
from authentication.models import AuthServicesInfo
|
||||
from services.models import AuthTS
|
||||
@@ -36,6 +37,8 @@ def m2m_changed_user_groups(sender, instance, action, *args, **kwargs):
|
||||
update_discord_groups.delay(instance.pk)
|
||||
if auth.mumble_username:
|
||||
update_mumble_groups.delay(instance.pk)
|
||||
if auth.discourse_username:
|
||||
update_discourse_groups.delay(instance.pk)
|
||||
|
||||
def trigger_all_ts_update():
|
||||
for auth in AuthServicesInfo.objects.filter(teamspeak3_uid__isnull=False):
|
||||
@@ -56,3 +59,4 @@ def post_save_authts(sender, instance, *args, **kwargs):
|
||||
def post_delete_authts(sender, instance, *args, **kwargs):
|
||||
logger.debug("Received post_delete signal from %s" % instance)
|
||||
trigger_all_ts_update()
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ 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, DiscordAPIManager
|
||||
from services.managers.discourse_manager import DiscourseManager
|
||||
from services.managers.smf_manager import smfManager
|
||||
from services.models import AuthTS
|
||||
from services.models import TSgroup
|
||||
@@ -181,6 +182,26 @@ def update_discord_groups(pk):
|
||||
raise self.retry(countdown = 60 * 10)
|
||||
logger.debug("Updated user %s discord groups." % user)
|
||||
|
||||
@task
|
||||
def update_discourse_groups(pk):
|
||||
user = User.objects.get(pk=pk)
|
||||
logger.debug("Updating discourse groups for user %s" % user)
|
||||
authserviceinfo = AuthServicesInfo.objects.get(user=user)
|
||||
groups = []
|
||||
for group in user.groups.all():
|
||||
groups.append(str(group.name))
|
||||
if len(groups) == 0:
|
||||
logger.debug("No syncgroups found for user. Adding empty group.")
|
||||
groups.append('empty')
|
||||
logger.debug("Updating user %s discord groups to %s" % (user, groups))
|
||||
try:
|
||||
DiscourseManager.update_groups(authserviceinfo.discourse_username, groups)
|
||||
except:
|
||||
logger.warn("Discourse group sync failed for %s, retrying in 10 mins" % user, exc_info=True)
|
||||
raise self.retry(countdown = 60 * 10)
|
||||
logger.debug("Updated user %s discord groups." % user)
|
||||
|
||||
|
||||
def assign_corp_group(auth):
|
||||
corp_group = None
|
||||
if auth.main_char_id:
|
||||
|
||||
Reference in New Issue
Block a user