Source code for evennia.server.validators
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
[docs]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"
)