mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-08 08:06:20 +01:00
* Refactor allianceauth into its own package * Add setup * Add missing default_app_config declarations * Fix timerboard namespacing * Remove obsolete future imports * Remove py2 mock support * Remove six * Add experimental 3.7 support and multiple Dj versions * Remove python_2_unicode_compatible * Add navhelper as local package * Update requirements
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
import logging
|
|
|
|
from django.contrib.auth.models import User
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
|
|
from allianceauth.celeryapp import app
|
|
from .manager import MumbleManager
|
|
from .models import MumbleUser
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class MumbleTasks:
|
|
def __init__(self):
|
|
pass
|
|
|
|
@staticmethod
|
|
def has_account(user):
|
|
try:
|
|
return user.mumble.username != ''
|
|
except ObjectDoesNotExist:
|
|
return False
|
|
|
|
@staticmethod
|
|
def disable_mumble():
|
|
logger.info("Deleting all MumbleUser models")
|
|
MumbleUser.objects.all().delete()
|
|
|
|
@staticmethod
|
|
@app.task(bind=True, name="mumble.update_groups")
|
|
def update_groups(self, pk):
|
|
user = User.objects.get(pk=pk)
|
|
logger.debug("Updating mumble groups for user %s" % user)
|
|
if MumbleTasks.has_account(user):
|
|
groups = []
|
|
for group in user.groups.all():
|
|
groups.append(str(group.name))
|
|
if len(groups) == 0:
|
|
groups.append('empty')
|
|
logger.debug("Updating user %s mumble groups to %s" % (user, groups))
|
|
try:
|
|
if not MumbleManager.update_groups(user, groups):
|
|
raise Exception("Group sync failed")
|
|
except:
|
|
logger.exception("Mumble group sync failed for %s, retrying in 10 mins" % user)
|
|
raise self.retry(countdown=60 * 10)
|
|
logger.debug("Updated user %s mumble groups." % user)
|
|
else:
|
|
logger.debug("User %s does not have a mumble account, skipping" % user)
|
|
|
|
@staticmethod
|
|
@app.task(name="mumble.update_all_groups")
|
|
def update_all_groups():
|
|
logger.debug("Updating ALL mumble groups")
|
|
for mumble_user in MumbleUser.objects.exclude(username__exact=''):
|
|
MumbleTasks.update_groups.delay(mumble_user.user.pk)
|