pennersr / django-allauth

Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication.
https://allauth.org
MIT License
9.37k stars 3.01k forks source link

[ACCOUNT_USERNAME_VALIDATORS] Django six.string_types conflicts with list requirement. #1658

Closed biddellns closed 7 years ago

biddellns commented 7 years ago

I'm trying to use the Battlenet BattletagUsernameValidator However, Django is throwing errors no matter which way I write it.

If my settings.py contains:

ACCOUNT_USERNAME_VALIDATORS = "socialaccount.some.validator"

I get an error that ACCOUNT_USERNAME_VALIDATORS must be a list.

If I amend this I get an error about django six.string_types.

Here is the error I'm currently getting:

Internal Server Error: /accounts/battlenet/login/callback/
Traceback (most recent call last):
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
    response = self._get_response(request)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/socialaccount/providers/oauth2/views.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/socialaccount/providers/oauth2/views.py", line 139, in dispatch
    return complete_social_login(request, login)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/socialaccount/helpers.py", line 153, in complete_social_login
    return _complete_social_login(request, sociallogin)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/socialaccount/helpers.py", line 169, in _complete_social_login
    ret = _process_signup(request, sociallogin)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/socialaccount/helpers.py", line 36, in _process_signup
    get_account_adapter(request).clean_username(username)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/account/adapter.py", line 247, in clean_username
    for validator in app_settings.USERNAME_VALIDATORS:
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/account/app_settings.py", line 313, in USERNAME_VALIDATORS
    ret = import_attribute(path)
  File "/home/app_user/.virtualenvs/litsl-staging/lib/python3.4/site-packages/allauth/utils.py", line 142, in import_attribute
    assert isinstance(path, six.string_types)
AssertionError

My settings.py looks like:

ACCOUNT_USERNAME_VALIDATORS = [ 'socialaccount.providers.battlenet.validators.BattletagUsernameValidator',
 ]
alexstacey commented 7 years ago

A solution to this is in https://github.com/pennersr/django-allauth/issues/1648

I got confused by the exact same thing.