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:
Adarnof
2016-04-17 15:17:32 -04:00
committed by Mr McClain
parent 0b20f8f72b
commit e29c1d3295
11 changed files with 481 additions and 2 deletions

View File

@@ -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()

View File

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