mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 22:10:16 +02:00
[ADD] Respect and display the new Discord username format when eligible
This commit is contained in:
parent
36b3077caa
commit
7856cd5ce4
@ -6,6 +6,7 @@ from ...admin import ServicesUserAdmin
|
||||
from . import __title__
|
||||
from .models import DiscordUser
|
||||
from .utils import LoggerAddTag
|
||||
from .auth_hooks import DiscordService
|
||||
|
||||
logger = LoggerAddTag(logging.getLogger(__name__), __title__)
|
||||
|
||||
@ -27,6 +28,6 @@ class DiscordUserAdmin(ServicesUserAdmin):
|
||||
|
||||
@admin.display(description='Discord Username', ordering='username')
|
||||
def _username(self, obj):
|
||||
if obj.username and obj.discriminator:
|
||||
return f'{obj.username}#{obj.discriminator}'
|
||||
return ''
|
||||
return DiscordService.get_discord_username(
|
||||
username=obj.username, discriminator=obj.discriminator
|
||||
)
|
||||
|
@ -30,6 +30,29 @@ class DiscordService(ServicesHook):
|
||||
self.access_perm = 'discord.access_discord'
|
||||
self.name_format = '{character_name}'
|
||||
|
||||
@staticmethod
|
||||
def get_discord_username(username:str, discriminator:str) -> str:
|
||||
"""
|
||||
Determine the Discord username (Old and new format)
|
||||
:param username:
|
||||
:type username:
|
||||
:param discriminator:
|
||||
:type discriminator:
|
||||
:return:
|
||||
:rtype:
|
||||
"""
|
||||
|
||||
if username and discriminator:
|
||||
discord_username = f'{username}#{discriminator}'
|
||||
|
||||
# New Discord user name format
|
||||
if discriminator == '0':
|
||||
discord_username = f'@{username}'
|
||||
else:
|
||||
discord_username = ''
|
||||
|
||||
return discord_username
|
||||
|
||||
def delete_user(self, user: User, notify_user: bool = False) -> None:
|
||||
if self.user_has_account(user):
|
||||
logger.debug('Deleting user %s %s account', user, self.name)
|
||||
@ -43,10 +66,19 @@ class DiscordService(ServicesHook):
|
||||
user_has_account = True
|
||||
username = request.user.discord.username
|
||||
discriminator = request.user.discord.discriminator
|
||||
if username and discriminator:
|
||||
discord_username = f'{username}#{discriminator}'
|
||||
else:
|
||||
discord_username = ''
|
||||
|
||||
discord_username = self.get_discord_username(
|
||||
username=username, discriminator=discriminator
|
||||
)
|
||||
|
||||
# if username and discriminator:
|
||||
# discord_username = f'{username}#{discriminator}'
|
||||
#
|
||||
# # New Discord user name format
|
||||
# if discriminator == '0':
|
||||
# discord_username = f'@{username}'
|
||||
# else:
|
||||
# discord_username = ''
|
||||
else:
|
||||
discord_username = ''
|
||||
user_has_account = False
|
||||
|
@ -150,3 +150,23 @@ class TestDiscordService(NoSocketsTestCase):
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn('/discord/reset/', response)
|
||||
self.assertIn('/discord/deactivate/', response)
|
||||
|
||||
def test_new_discord_username_format(self):
|
||||
"""
|
||||
Test if we get Discord's new username format
|
||||
:return:
|
||||
:rtype:
|
||||
"""
|
||||
|
||||
# given
|
||||
username = 'william_riker'
|
||||
discriminator = '0' # Seems to be returned as 0 for Discord's new username format
|
||||
|
||||
# when
|
||||
discord_username = DiscordService.get_discord_username(
|
||||
username=username, discriminator=discriminator
|
||||
)
|
||||
|
||||
# then
|
||||
expected_username = '@william_riker'
|
||||
self.assertEqual(first=discord_username, second=expected_username)
|
||||
|
Loading…
x
Reference in New Issue
Block a user