Merge pull request #278 from Adarnof/notification

Batch of User Notifications
This commit is contained in:
Adarnof 2016-02-18 15:43:23 -05:00
commit 1b7f2254c2
7 changed files with 75 additions and 10 deletions

View File

@ -2,6 +2,7 @@ from django.conf import settings
from celery.task import periodic_task from celery.task import periodic_task
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from notifications import notify
from celery import task from celery import task
from models import SyncGroupCache from models import SyncGroupCache
from celery.task.schedules import crontab from celery.task.schedules import crontab
@ -35,14 +36,18 @@ import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def disable_member(user): def disable_member(user):
change = False
logger.debug("Disabling member %s" % user) logger.debug("Disabling member %s" % user)
if user.user_permissions.all().exists(): if user.user_permissions.all().exists():
logger.info("Clearning user %s permission to deactivate user." % user) logger.info("Clearning user %s permission to deactivate user." % user)
user.user_permissions.clear() user.user_permissions.clear()
change = True
if user.groups.all().exists(): if user.groups.all().exists():
logger.info("Clearing user %s groups to deactivate user." % user) logger.info("Clearing user %s groups to deactivate user." % user)
user.groups.clear() user.groups.clear()
change = True
deactivate_services(user) deactivate_services(user)
return change
def is_teamspeak3_active(): def is_teamspeak3_active():
return settings.ENABLE_AUTH_TEAMSPEAK3 or settings.ENABLE_BLUE_TEAMSPEAK3 return settings.ENABLE_AUTH_TEAMSPEAK3 or settings.ENABLE_BLUE_TEAMSPEAK3
@ -301,56 +306,70 @@ def assign_alliance_group(auth):
auth.user.groups.remove(g) auth.user.groups.remove(g)
def make_member(user): def make_member(user):
change = False
logger.debug("Ensuring user %s has member permissions and groups." % user) logger.debug("Ensuring user %s has member permissions and groups." % user)
# ensure member is not blue right now # ensure member is not blue right now
if check_if_user_has_permission(user, 'blue_member'): if check_if_user_has_permission(user, 'blue_member'):
logger.info("Removing user %s blue permission to transition to member" % user) logger.info("Removing user %s blue permission to transition to member" % user)
remove_member_permission(user, 'blue_member') remove_member_permission(user, 'blue_member')
change = True
blue_group, c = Group.objects.get_or_create(name=settings.DEFAULT_BLUE_GROUP) blue_group, c = Group.objects.get_or_create(name=settings.DEFAULT_BLUE_GROUP)
if blue_group in user.groups.all(): if blue_group in user.groups.all():
logger.info("Removing user %s blue group" % user) logger.info("Removing user %s blue group" % user)
user.groups.remove(blue_group) user.groups.remove(blue_group)
change = True
# make member # make member
if check_if_user_has_permission(user, 'member') is False: if check_if_user_has_permission(user, 'member') is False:
logger.info("Adding user %s member permission" % user) logger.info("Adding user %s member permission" % user)
add_member_permission(user, 'member') add_member_permission(user, 'member')
change = True
member_group, c = Group.objects.get_or_create(name=settings.DEFAULT_AUTH_GROUP) member_group, c = Group.objects.get_or_create(name=settings.DEFAULT_AUTH_GROUP)
if not member_group in user.groups.all(): if not member_group in user.groups.all():
logger.info("Adding user %s to member group" % user) logger.info("Adding user %s to member group" % user)
user.groups.add(member_group) user.groups.add(member_group)
change = True
auth, c = AuthServicesInfo.objects.get_or_create(user=user) auth, c = AuthServicesInfo.objects.get_or_create(user=user)
if auth.is_blue: if auth.is_blue:
logger.info("Marking user %s as non-blue" % user) logger.info("Marking user %s as non-blue" % user)
auth.is_blue = False auth.is_blue = False
auth.save() auth.save()
change = True
assign_corp_group(auth) assign_corp_group(auth)
assign_alliance_group(auth) assign_alliance_group(auth)
return change
def make_blue(user): def make_blue(user):
change = False
logger.debug("Ensuring user %s has blue permissions and groups." % user) logger.debug("Ensuring user %s has blue permissions and groups." % user)
# ensure user is not a member # ensure user is not a member
if check_if_user_has_permission(user, 'member'): if check_if_user_has_permission(user, 'member'):
logger.info("Removing user %s member permission to transition to blue" % user) logger.info("Removing user %s member permission to transition to blue" % user)
remove_member_permission(user, 'blue_member') remove_member_permission(user, 'blue_member')
change = True
member_group, c = Group.objects.get_or_create(name=settings.DEFAULT_AUTH_GROUP) member_group, c = Group.objects.get_or_create(name=settings.DEFAULT_AUTH_GROUP)
if member_group in user.groups.all(): if member_group in user.groups.all():
logger.info("Removing user %s member group" % user) logger.info("Removing user %s member group" % user)
user.groups.remove(member_group) user.groups.remove(member_group)
change = True
# make blue # make blue
if check_if_user_has_permission(user, 'blue_member') is False: if check_if_user_has_permission(user, 'blue_member') is False:
logger.info("Adding user %s blue permission" % user) logger.info("Adding user %s blue permission" % user)
add_member_permission(user, 'blue_member') add_member_permission(user, 'blue_member')
change = True
blue_group, c = Group.objects.get_or_create(name=settings.DEFAULT_BLUE_GROUP) blue_group, c = Group.objects.get_or_create(name=settings.DEFAULT_BLUE_GROUP)
if not blue_group in user.groups.all(): if not blue_group in user.groups.all():
logger.info("Adding user %s to blue group" % user) logger.info("Adding user %s to blue group" % user)
user.groups.add(blue_group) user.groups.add(blue_group)
change = True
auth, c = AuthServicesInfo.objects.get_or_create(user=user) auth, c = AuthServicesInfo.objects.get_or_create(user=user)
if auth.is_blue is False: if auth.is_blue is False:
logger.info("Marking user %s as blue" % user) logger.info("Marking user %s as blue" % user)
auth.is_blue = True auth.is_blue = True
auth.save() auth.save()
change = True
assign_corp_group(auth) assign_corp_group(auth)
assign_alliance_group(auth) assign_alliance_group(auth)
return change
def determine_membership_by_character(char): def determine_membership_by_character(char):
if settings.IS_CORP: if settings.IS_CORP:
@ -388,14 +407,17 @@ def determine_membership_by_user(user):
return False return False
def set_state(user): def set_state(user):
change = False
state = determine_membership_by_user(user) state = determine_membership_by_user(user)
logger.debug("Assigning user %s to state %s" % (user, state)) logger.debug("Assigning user %s to state %s" % (user, state))
if state == "MEMBER": if state == "MEMBER":
make_member(user) change = make_member(user)
elif state == "BLUE": elif state == "BLUE":
make_blue(user) change = make_blue(user)
else: else:
disable_member(user) change = disable_member(user)
if change:
notify(user, "Membership State Change", message="You membership state has been changed to %s" % state)
# Run every minute # Run every minute
@periodic_task(run_every=crontab(minute="*/1")) @periodic_task(run_every=crontab(minute="*/1"))
@ -445,6 +467,7 @@ def refresh_api(api_key_pair):
elif type == False: elif type == False:
logger.info("Determined api key %s for blue user %s is no longer type account as requred." % (api_key_pair.api_id, user)) logger.info("Determined api key %s for blue user %s is no longer type account as requred." % (api_key_pair.api_id, user))
still_valid = False still_valid = False
notify(user, "API Failed Validation", message="Your API key ID %s is not account-wide as required." % api_key_pair.api_id, level="danger")
full = EveApiManager.check_blue_api_is_full(api_key_pair.api_id, api_key_pair.api_key) full = EveApiManager.check_blue_api_is_full(api_key_pair.api_id, api_key_pair.api_key)
if full == None: if full == None:
api_key_pair.error_count += 1 api_key_pair.error_count += 1
@ -454,6 +477,7 @@ def refresh_api(api_key_pair):
elif full == False: elif full == False:
logger.info("Determined api key %s for blue user %s no longer meets minimum access mask as required." % (api_key_pair.api_id, user)) logger.info("Determined api key %s for blue user %s no longer meets minimum access mask as required." % (api_key_pair.api_id, user))
still_valid = False still_valid = False
notify(user, "API Failed Validation", message="Your API key ID %s does not meet access mask requirements." % api_key_pair.api_id, level="danger")
elif state == "MEMBER": elif state == "MEMBER":
if settings.MEMBER_API_ACCOUNT: if settings.MEMBER_API_ACCOUNT:
type = EveApiManager.check_api_is_type_account(api_key_pair.api_id, api_key_pair.api_key) type = EveApiManager.check_api_is_type_account(api_key_pair.api_id, api_key_pair.api_key)
@ -465,6 +489,7 @@ def refresh_api(api_key_pair):
elif type == False: elif type == False:
logger.info("Determined api key %s for user %s is no longer type account as required." % (api_key_pair.api_id, user)) logger.info("Determined api key %s for user %s is no longer type account as required." % (api_key_pair.api_id, user))
still_valid = False still_valid = False
notify(user, "API Failed Validation", message="Your API key ID %s is not account-wide as required." % api_key_pair.api_id, level="danger")
full = EveApiManager.check_api_is_full(api_key_pair.api_id, api_key_pair.api_key) full = EveApiManager.check_api_is_full(api_key_pair.api_id, api_key_pair.api_key)
if full == None: if full == None:
api_key_pair.error_count += 1 api_key_pair.error_count += 1
@ -474,14 +499,17 @@ def refresh_api(api_key_pair):
elif full == False: elif full == False:
logger.info("Determined api key %s for user %s no longer meets minimum access mask as required." % (api_key_pair.api_id, user)) logger.info("Determined api key %s for user %s no longer meets minimum access mask as required." % (api_key_pair.api_id, user))
still_valid = False still_valid = False
notify(user, "API Failed Validation", message="Your API key ID %s does not meet access mask requirements." % api_key_pair.api_id, level="danger")
if still_valid == None: if still_valid == None:
if api_key_pair.error_count >= 3: if api_key_pair.error_count >= 3:
logger.info("API key %s has incurred 3 or more errors. Assuming invalid." % api_key_pair.api_id) logger.info("API key %s has incurred 3 or more errors. Assuming invalid." % api_key_pair.api_id)
still_valid = False still_valid = False
notify(user, "API Failed Validation", message="Your API key ID %s has accumulated too many errors during refresh and is assumed to be invalid." % api_key_pair.api_id, level="danger")
if still_valid == False: if still_valid == False:
logger.debug("API key %s has failed validation; it and its characters will be deleted." % api_key_pair.api_id) logger.debug("API key %s has failed validation; it and its characters will be deleted." % api_key_pair.api_id)
EveManager.delete_characters_by_api_id(api_key_pair.api_id, user.id) EveManager.delete_characters_by_api_id(api_key_pair.api_id, user.id)
EveManager.delete_api_key_pair(api_key_pair.api_id, user.id) EveManager.delete_api_key_pair(api_key_pair.api_id, user.id)
notify(user, "API Key Deleted", message="Your API key ID %s has failed validation. It and its associated characters have been deleted." % api_key_pair.api_id, level="danger")
elif still_valid == True: elif still_valid == True:
if api_key_pair.error_count != 0: if api_key_pair.error_count != 0:
logger.info("Clearing error count for api %s as it passed validation" % api_key_pair.api_id) logger.info("Clearing error count for api %s as it passed validation" % api_key_pair.api_id)
@ -504,6 +532,7 @@ def refresh_api(api_key_pair):
logger.debug("API key %s is no longer valid; it and its characters will be deleted." % api_key_pair.api_id) logger.debug("API key %s is no longer valid; it and its characters will be deleted." % api_key_pair.api_id)
EveManager.delete_characters_by_api_id(api_key_pair.api_id, user.id) EveManager.delete_characters_by_api_id(api_key_pair.api_id, user.id)
EveManager.delete_api_key_pair(api_key_pair.api_id, user.id) EveManager.delete_api_key_pair(api_key_pair.api_id, user.id)
notify(user, "API Key Deleted", message="Your API key ID %s is invalid. It and its associated characters have been deleted." % api_key_pair.api_id, level="danger")
# Run every 3 hours # Run every 3 hours
@periodic_task(run_every=crontab(minute=0, hour="*/3")) @periodic_task(run_every=crontab(minute=0, hour="*/3"))
@ -526,6 +555,7 @@ def run_api_refresh():
logger.info("User %s main character id %s missing model. Clearning main character." % (user, authserviceinfo.main_char_id)) logger.info("User %s main character id %s missing model. Clearning main character." % (user, authserviceinfo.main_char_id))
authserviceinfo.main_char_id = '' authserviceinfo.main_char_id = ''
authserviceinfo.save() authserviceinfo.save()
notify(user, "Main Character Reset", message="Your specified main character no longer has a model.\nThis could be the result of an invalid API\nYour main character ID has been reset." % api_key_pair.api_id, level="warn")
set_state(user) set_state(user)
def populate_alliance(id, blue=False): def populate_alliance(id, blue=False):

View File

@ -5,7 +5,7 @@ from django.conf import settings
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from notifications import notify
from models import GroupDescription from models import GroupDescription
from models import GroupRequest from models import GroupRequest
from models import HiddenGroup from models import HiddenGroup
@ -48,6 +48,7 @@ def group_accept_request(request, group_request_id):
group_request.user.save() group_request.user.save()
group_request.delete() group_request.delete()
logger.info("User %s accepted group request from user %s to group %s" % (request.user, group_request.user, group_request.group.name)) logger.info("User %s accepted group request from user %s to group %s" % (request.user, group_request.user, group_request.group.name))
notify(group_request.user, "Group Application Accepted", level="success", message="Your application to %s has been accepted." % group_request.group)
except: except:
logger.exception("Unhandled exception occured while user %s attempting to accept grouprequest id %s." % (request.user, group_request_id)) logger.exception("Unhandled exception occured while user %s attempting to accept grouprequest id %s." % (request.user, group_request_id))
pass pass
@ -65,6 +66,7 @@ def group_reject_request(request, group_request_id):
if group_request: if group_request:
logger.info("User %s rejected group request from user %s to group %s" % (request.user, group_request.user, group_request.group.name)) logger.info("User %s rejected group request from user %s to group %s" % (request.user, group_request.user, group_request.group.name))
group_request.delete() group_request.delete()
notify(group_request.user, "Group Application Rejected", level="danger", message="Your application to %s has been rejected." % group_request.group)
except: except:
logger.exception("Unhandled exception occured while user %s attempting to reject group request id %s" % (request.user, group_request_id)) logger.exception("Unhandled exception occured while user %s attempting to reject group request id %s" % (request.user, group_request_id))
pass pass
@ -83,6 +85,7 @@ def group_leave_accept_request(request, group_request_id):
group_request.user.save() group_request.user.save()
group_request.delete() group_request.delete()
logger.info("User %s accepted group leave request from user %s to group %s" % (request.user, group_request.user, group_request.group.name)) logger.info("User %s accepted group leave request from user %s to group %s" % (request.user, group_request.user, group_request.group.name))
notify(group_request.user, "Group Leave Request Accepted", level="success", message="Your request to leave %s has been accepted." % group_request.group)
except: except:
logger.exception("Unhandled exception occured while user %s attempting to accept group leave request id %s" % (request.user, group_request_id)) logger.exception("Unhandled exception occured while user %s attempting to accept group leave request id %s" % (request.user, group_request_id))
pass pass
@ -100,6 +103,7 @@ def group_leave_reject_request(request, group_request_id):
if group_request: if group_request:
group_request.delete() group_request.delete()
logger.info("User %s rejected group leave request from user %s for group %s" % (request.user, group_request.user, group_request.group.name)) logger.info("User %s rejected group leave request from user %s for group %s" % (request.user, group_request.user, group_request.group.name))
notify(group_request.user, "Group Leave Request Rejected", level="danger", message="Your request to leave %s has been rejected." % group_request.group)
except: except:
logger.exception("Unhandled exception occured while user %s attempting to reject group leave request id %s" % (request.user, group_request_id)) logger.exception("Unhandled exception occured while user %s attempting to reject group leave request id %s" % (request.user, group_request_id))
pass pass
@ -160,7 +164,6 @@ def group_request_add(request, group_id):
grouprequest.leave_request = False grouprequest.leave_request = False
grouprequest.save() grouprequest.save()
logger.info("Created group request for user %s to group %s" % (request.user, Group.objects.get(id=group_id))) logger.info("Created group request for user %s to group %s" % (request.user, Group.objects.get(id=group_id)))
return HttpResponseRedirect("/groups") return HttpResponseRedirect("/groups")

View File

@ -3,7 +3,7 @@ from django.shortcuts import render_to_response
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.shortcuts import HttpResponseRedirect from django.shortcuts import HttpResponseRedirect
from notifications import notify
from models import HRApplication from models import HRApplication
from models import HRApplicationComment from models import HRApplicationComment
from forms import HRApplicationForm from forms import HRApplicationForm
@ -162,6 +162,7 @@ def hr_application_remove(request, app_id):
application = HRApplication.objects.get(id=app_id) application = HRApplication.objects.get(id=app_id)
if application: if application:
logger.info("Deleted HRApplication id %s on behalf of user %s" % (app_id, request.user)) logger.info("Deleted HRApplication id %s on behalf of user %s" % (app_id, request.user))
notify(application.user, "Application Deleted", message="Your application to %s was deleted.")
application.delete() application.delete()
else: else:
logger.error("Unable to delete HRApplication with id %s on behalf of user %s: application is NoneType" % (app_id, request.user)) logger.error("Unable to delete HRApplication with id %s on behalf of user %s: application is NoneType" % (app_id, request.user))
@ -183,6 +184,7 @@ def hr_application_approve(request, app_id):
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
application.save() application.save()
logger.info("HRApplication for user %s to corp %s approved by %s" % (application.user, application.corp, request.user)) logger.info("HRApplication for user %s to corp %s approved by %s" % (application.user, application.corp, request.user))
notify(application.user, "Application Accepted", message="Your application to %s has been approved." % application.corp, level="success")
else: else:
logger.error("User %s unable to approve HRApplication id %s - hrapplication with that id not found." % (request.user, app_id)) logger.error("User %s unable to approve HRApplication id %s - hrapplication with that id not found." % (request.user, app_id))
@ -201,6 +203,7 @@ def hr_application_reject(request, app_id):
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
application.save() application.save()
logger.info("HRApplication for user %s to corp %s rejected by %s" % (application.user, application.corp, request.user)) logger.info("HRApplication for user %s to corp %s rejected by %s" % (application.user, application.corp, request.user))
notify(application.user, "Application Rejected", message="Your application to %s has been rejected." % application.corp, level="danger")
else: else:
logger.error("User %s unable to reject HRApplication id %s - hrapplication with that id not found." % (request.user, app_id)) logger.error("User %s unable to reject HRApplication id %s - hrapplication with that id not found." % (request.user, app_id))
@ -251,6 +254,7 @@ def hr_application_mark_in_progress(request, app_id):
application.reviewer_inprogress_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) application.reviewer_inprogress_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
application.save() application.save()
logger.info("Marked HRApplication for user %s to corp %s in progress by user %s" % (application.user, application.corp, request.user)) logger.info("Marked HRApplication for user %s to corp %s in progress by user %s" % (application.user, application.corp, request.user))
notify(application.user, "Application In Progress", message="Your application to %s is being reviewed by %s" % (application.corp, application.reviewer_inprogress_character))
else: else:
logger.error("Unable to mark HRApplication id %s in progress by user %s - hrapplication matching id not found." % (app_id, request.user)) logger.error("Unable to mark HRApplication id %s in progress by user %s - hrapplication matching id not found." % (app_id, request.user))

View File

@ -0,0 +1,15 @@
from .models import Notification
import logging
logger = logging.getLogger(__name__)
def notify(user, title, message=None, level='info'):
notif = Notification()
notif.user = user
notif.title = title
if not message:
message = title
notif.message = message
notif.level = level
notif.save()
logger.info("Created notification %s" % notif)

View File

@ -2,6 +2,8 @@ import logging
from django.contrib.auth.models import User from django.contrib.auth.models import User
from .models import Notification from .models import Notification
logger = logging.getLogger(__name__)
class NotificationHandler(logging.Handler): class NotificationHandler(logging.Handler):
def emit(self, record): def emit(self, record):
for user in User.objects.all(): for user in User.objects.all():
@ -10,5 +12,8 @@ class NotificationHandler(logging.Handler):
notif.user = user notif.user = user
notif.title = "%s [%s:%s]" % (record.levelname, record.funcName, record.lineno) notif.title = "%s [%s:%s]" % (record.levelname, record.funcName, record.lineno)
notif.level = str([item[0] for item in Notification.LEVEL_CHOICES if item[1] == record.levelname][0]) notif.level = str([item[0] for item in Notification.LEVEL_CHOICES if item[1] == record.levelname][0])
notif.message = record.getMessage() message = record.getMessage()
message = message + "\n\n"
message = message + record.exc_text
notif.message = message
notif.save() notif.save()

View File

@ -13,7 +13,7 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="panel panel-{{ notif.level }}"> <div class="panel panel-{{ notif.level }}">
<div class="panel-heading">{{ notif.timestamp }} {{ notif.title }}</div> <div class="panel-heading">{{ notif.timestamp }} {{ notif.title }}</div>
<div class="panel-body">{{ notif.message }}</div> <div class="panel-body"><pre>{{ notif.message }}</pre></div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from django.contrib.auth.models import User from django.contrib.auth.models import User
from notifications import notify
from authentication.managers import AuthServicesInfoManager from authentication.managers import AuthServicesInfoManager
from services.managers.openfire_manager import OpenfireManager from services.managers.openfire_manager import OpenfireManager
from services.managers.phpbb3_manager import Phpbb3Manager from services.managers.phpbb3_manager import Phpbb3Manager
@ -39,33 +39,41 @@ def remove_user_from_group(user, groupname):
def deactivate_services(user): def deactivate_services(user):
change = False
logger.debug("Deactivating services for user %s" % user) logger.debug("Deactivating services for user %s" % user)
authinfo = AuthServicesInfoManager.get_auth_service_info(user) authinfo = AuthServicesInfoManager.get_auth_service_info(user)
if authinfo.mumble_username and authinfo.mumble_username != "": if authinfo.mumble_username and authinfo.mumble_username != "":
logger.debug("User %s has mumble account %s. Deleting." % (user, authinfo.mumble_username)) logger.debug("User %s has mumble account %s. Deleting." % (user, authinfo.mumble_username))
MumbleManager.delete_user(authinfo.mumble_username) MumbleManager.delete_user(authinfo.mumble_username)
AuthServicesInfoManager.update_user_mumble_info("", "", user) AuthServicesInfoManager.update_user_mumble_info("", "", user)
change = True
if authinfo.jabber_username and authinfo.jabber_username != "": if authinfo.jabber_username and authinfo.jabber_username != "":
logger.debug("User %s has jabber account %s. Deleting." % (user, authinfo.jabber_username)) logger.debug("User %s has jabber account %s. Deleting." % (user, authinfo.jabber_username))
OpenfireManager.delete_user(authinfo.jabber_username) OpenfireManager.delete_user(authinfo.jabber_username)
AuthServicesInfoManager.update_user_jabber_info("", "", user) AuthServicesInfoManager.update_user_jabber_info("", "", user)
change = True
if authinfo.forum_username and authinfo.forum_username != "": if authinfo.forum_username and authinfo.forum_username != "":
logger.debug("User %s has forum account %s. Deleting." % (user, authinfo.forum_username)) logger.debug("User %s has forum account %s. Deleting." % (user, authinfo.forum_username))
Phpbb3Manager.disable_user(authinfo.forum_username) Phpbb3Manager.disable_user(authinfo.forum_username)
AuthServicesInfoManager.update_user_forum_info("", "", user) AuthServicesInfoManager.update_user_forum_info("", "", user)
change = True
if authinfo.ipboard_username and authinfo.ipboard_username != "": if authinfo.ipboard_username and authinfo.ipboard_username != "":
logger.debug("User %s has ipboard account %s. Deleting." % (user, authinfo.ipboard_username)) logger.debug("User %s has ipboard account %s. Deleting." % (user, authinfo.ipboard_username))
IPBoardManager.disable_user(authinfo.ipboard_username) IPBoardManager.disable_user(authinfo.ipboard_username)
AuthServicesInfoManager.update_user_forum_info("", "", user) AuthServicesInfoManager.update_user_forum_info("", "", user)
change = True
if authinfo.teamspeak3_uid and authinfo.teamspeak3_uid != "": if authinfo.teamspeak3_uid and authinfo.teamspeak3_uid != "":
logger.debug("User %s has mumble account %s. Deleting." % (user, authinfo.teamspeak3_uid)) logger.debug("User %s has mumble account %s. Deleting." % (user, authinfo.teamspeak3_uid))
Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid) Teamspeak3Manager.delete_user(authinfo.teamspeak3_uid)
AuthServicesInfoManager.update_user_teamspeak3_info("", "", user) AuthServicesInfoManager.update_user_teamspeak3_info("", "", user)
change = True
if authinfo.discord_uid and authinfo.discord_uid != "": if authinfo.discord_uid and authinfo.discord_uid != "":
logger.debug("User %s has discord account %s. Deleting." % (user, authinfo.discord_uid)) logger.debug("User %s has discord account %s. Deleting." % (user, authinfo.discord_uid))
DiscordManager.delete_user(authinfo.discord_uid) DiscordManager.delete_user(authinfo.discord_uid)
AuthServicesInfoManager.update_user_discord_info("", user) AuthServicesInfoManager.update_user_discord_info("", user)
change = True
if change:
notify(user, "Services Disabled", message="Your services accounts have been disabled.", level="danger")
def generate_corp_group_name(corpname): def generate_corp_group_name(corpname):
return 'Corp_' + corpname.replace(' ', '_') return 'Corp_' + corpname.replace(' ', '_')