mirror of
https://github.com/evennia/evennia.git
synced 2026-03-28 02:36:32 +01:00
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import re
|
|
|
|
from django.conf import settings
|
|
from django.core.exceptions import ValidationError
|
|
from django.utils.translation import gettext as _
|
|
|
|
from evennia.accounts.models import AccountDB
|
|
|
|
|
|
class EvenniaUsernameAvailabilityValidator:
|
|
"""
|
|
Checks to make sure a given username is not taken or otherwise reserved.
|
|
"""
|
|
|
|
def __call__(self, username):
|
|
"""
|
|
Validates a username to make sure it is not in use or reserved.
|
|
|
|
Args:
|
|
username (str): Username to validate
|
|
|
|
Returns:
|
|
None (None): None if password successfully validated,
|
|
raises ValidationError otherwise.
|
|
|
|
"""
|
|
# Check guest list
|
|
if settings.GUEST_LIST and username.lower() in (
|
|
guest.lower() for guest in settings.GUEST_LIST
|
|
):
|
|
raise ValidationError(
|
|
_("Sorry, that username is reserved."), code="evennia_username_reserved"
|
|
)
|
|
|
|
# Check database
|
|
exists = AccountDB.objects.filter(username__iexact=username).exists()
|
|
if exists:
|
|
raise ValidationError(
|
|
_("Sorry, that username is already taken."), code="evennia_username_taken"
|
|
)
|