diff --git a/alliance_auth/urls.py b/alliance_auth/urls.py
index dbdbb767..78f3fbd4 100755
--- a/alliance_auth/urls.py
+++ b/alliance_auth/urls.py
@@ -128,6 +128,7 @@ urlpatterns = patterns('',
# Discord Service Control
url(r'^activate_discord/$', 'services.views.activate_discord', name='auth_activate_discord'),
url(r'^deactivate_discord/$', 'services.views.deactivate_discord', name='auth_deactivate_discord'),
+ url(r'^reset_discord/$', 'services.views.reset_discord', name='auth_reset_discord'),
# Tools
url(r'^tool/fleet_formatter_tool/$', 'services.views.fleet_formatter_view',
diff --git a/services/managers/discord_manager.py b/services/managers/discord_manager.py
index d0f61016..0b99e26f 100644
--- a/services/managers/discord_manager.py
+++ b/services/managers/discord_manager.py
@@ -227,13 +227,12 @@ class DiscordManager:
def delete_user(username):
try:
user_id = DiscordAPIManager.get_user_id(username)
- except:
+ DiscordAPIManager.kick_user(settings.DISCORD_SERVER_ID, user_id)
+ except KeyError:
#user does not exist
return True
- try:
- DiscordAPIManager.kick_user(settings.DISCORD_SERVER_ID, user_id)
- return True
except:
+ #something went wrong
return False
@staticmethod
diff --git a/services/views.py b/services/views.py
index a566fe63..980c3f47 100755
--- a/services/views.py
+++ b/services/views.py
@@ -337,11 +337,23 @@ def activate_discord(request):
@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)
+ result = DiscordManager.delete_user(authinfo.discord_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")
+@login_required
+@user_passes_test(service_blue_alliance_test)
+def reset_discord(request):
+ authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
+ result = DiscordManager.delete_user(authinfo.discord_username)
+ if result:
+ # ensures succesful deletion
+ new_result = DiscordManager.add_user(authinfo.discord_username)
+ if new_result:
+ # ensures succesful creation
+ AuthServicesInfoManager.update_user_discord_info(new_result[0], new_result[1], request.user)
+ return HttpResponseRedirect("/services/")
+ return HttpResponseRedirect("/services/")
diff --git a/stock/templates/registered/services.html b/stock/templates/registered/services.html
index c26b5ced..0a2d4d86 100755
--- a/stock/templates/registered/services.html
+++ b/stock/templates/registered/services.html
@@ -172,6 +172,10 @@
class="glyphicon glyphicon-ok">
{% else %}
+
+
+
@@ -346,6 +350,10 @@
class="glyphicon glyphicon-ok">
{% else %}
+
+
+