diff --git a/common/djangoapps/third_party_auth/models.py b/common/djangoapps/third_party_auth/models.py index f00da2c1fc..00ec98d2e8 100644 --- a/common/djangoapps/third_party_auth/models.py +++ b/common/djangoapps/third_party_auth/models.py @@ -25,6 +25,7 @@ from social_core.utils import module_member from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers from openedx.core.djangoapps.theming.helpers import get_current_request +from openedx.core.djangoapps.user_api.accounts import USERNAME_MAX_LENGTH from openedx.core.lib.hash_utils import create_hash256 from .lti import LTI_PARAMS_KEY, LTIAuthBackend @@ -68,7 +69,7 @@ def clean_json(value, of_type): def clean_username(username=''): """ Simple helper method to ensure a username is compatible with our system requirements. """ - return re.sub(r'[^-\w]+', '_', username)[:30] + return re.sub(r'[^-\w]+', '_', username)[:USERNAME_MAX_LENGTH] class AuthNotConfigured(SocialAuthBaseException): diff --git a/openedx/core/djangoapps/user_api/accounts/__init__.py b/openedx/core/djangoapps/user_api/accounts/__init__.py index 77c3c99646..1cced0694b 100644 --- a/openedx/core/djangoapps/user_api/accounts/__init__.py +++ b/openedx/core/djangoapps/user_api/accounts/__init__.py @@ -2,7 +2,7 @@ Account constants """ - +from django.conf import settings from django.utils.text import format_lazy from django.utils.translation import ugettext_lazy as _ @@ -15,7 +15,8 @@ NAME_MAX_LENGTH = 255 # The minimum and maximum length for the username account field USERNAME_MIN_LENGTH = 2 -USERNAME_MAX_LENGTH = 30 +# Note: 30 chars is the default for historical reasons. Django uses 150 as the username length since 1.10 +USERNAME_MAX_LENGTH = getattr(settings, 'USERNAME_MAX_LENGTH', 30) # The minimum and maximum length for the email account field EMAIL_MIN_LENGTH = 3