failure. At some point a pipeline entry must create a UserSocialAuth instance
and load it to the output if the user logged in correctly.
"""
+import warnings
+
+from django.conf import settings
+
from social_auth.models import User
USERNAME = 'username'
USERNAME_MAX_LENGTH = User._meta.get_field(USERNAME).max_length
+
+
+def warn_setting(name, func_name):
+ """Warn about deprecated settings."""
+ if hasattr(settings, name):
+ msg = '%s is deprecated, disable or override "%s" pipeline instead'
+ warnings.warn(msg % (name, func_name))
from django.core.exceptions import MultipleObjectsReturned
from social_auth.models import User
+from social_auth.backends.pipeline import warn_setting
def associate_by_email(details, *args, **kwargs):
"""Return user entry with same email address as one returned on details."""
email = details.get('email')
+ warn_setting('SOCIAL_AUTH_ASSOCIATE_BY_MAIL', 'associate_by_email')
+
if email and getattr(settings, 'SOCIAL_AUTH_ASSOCIATE_BY_MAIL', False):
# try to associate accounts registered with the same email address,
# only if it's a single object. ValueError is raised if multiple
from django.db.utils import IntegrityError
from social_auth.models import User, UserSocialAuth
+from social_auth.backends.pipeline import warn_setting
def social_auth_user(backend, uid, user=None, *args, **kwargs):
"""Load extra data from provider and store it on current UserSocialAuth
extra_data field.
"""
+ warn_setting('SOCIAL_AUTH_EXTRA_DATA', 'load_extra_data')
+
if getattr(settings, 'SOCIAL_AUTH_EXTRA_DATA', True):
extra_data = backend.extra_data(user, uid, response, details)
if extra_data and social_user.extra_data != extra_data:
from django.conf import settings
from social_auth.models import User
-from social_auth.backends.pipeline import USERNAME, USERNAME_MAX_LENGTH
+from social_auth.backends.pipeline import USERNAME, USERNAME_MAX_LENGTH, warn_setting
from social_auth.signals import socialauth_not_registered, \
socialauth_registered, \
pre_update
if user:
return {'username': user.username}
- FORCE_RANDOM_USERNAME = getattr(settings,
- 'SOCIAL_AUTH_FORCE_RANDOM_USERNAME',
- False)
- if FORCE_RANDOM_USERNAME:
+ warn_setting('SOCIAL_AUTH_FORCE_RANDOM_USERNAME', 'get_username')
+ warn_setting('SOCIAL_AUTH_DEFAULT_USERNAME', 'get_username')
+ warn_setting('SOCIAL_AUTH_UUID_LENGTH', 'get_username')
+ warn_setting('SOCIAL_AUTH_USERNAME_FIXER', 'get_username')
+
+ if getattr(settings, 'SOCIAL_AUTH_FORCE_RANDOM_USERNAME', False):
username = uuid4().get_hex()
elif details.get(USERNAME):
username = details[USERNAME]
return {'username': final_username}
-def create_user(backend, details, response, uid, username, user=None, *args, **kwargs):
+def create_user(backend, details, response, uid, username, user=None, *args,
+ **kwargs):
"""Create user. Depends on get_username pipeline."""
if user:
return {'user': user}
if not username:
return None
+ warn_setting('SOCIAL_AUTH_CREATE_USERS', 'create_user')
+
if not getattr(settings, 'SOCIAL_AUTH_CREATE_USERS', True):
# Send signal for cases where tracking failed registering is useful.
socialauth_not_registered.send(sender=backend.__class__,
"""Update user details using data from provider."""
changed = False # flag to track changes
+ warn_setting('SOCIAL_AUTH_CHANGE_SIGNAL_ONLY', 'update_user_details')
+
# check if values update should be left to signals handlers only
if not getattr(settings, 'SOCIAL_AUTH_CHANGE_SIGNAL_ONLY', False):
for name, value in details.iteritems():