From 92f1843692f26f5c2bb4f104fe43f8695b603a27 Mon Sep 17 00:00:00 2001 From: Stas Kravets Date: Tue, 28 Dec 2010 11:39:01 +0300 Subject: [PATCH] Added new option to control saving of updates, fixed update signal results check. --- social_auth/backends.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/social_auth/backends.py b/social_auth/backends.py index c921aaf..a8d8936 100644 --- a/social_auth/backends.py +++ b/social_auth/backends.py @@ -128,11 +128,13 @@ class SocialAuthBackend(ModelBackend): def update_user_details(self, user, response, details): """Update user details with new (maybe) data""" changed = False - for name, value in details.iteritems(): - if value and value != getattr(user, name, value): - setattr(user, name, value) - changed = True - + + if not getattr(settings, 'SOCIAL_AUTH_CHANGE_SIGNAL_ONLY', False): + for name, value in details.iteritems(): + if value and value != getattr(user, name, value): + setattr(user, name, value) + changed = True + # Fire a pre-update signal sending current backend instance, # user instance (created or retrieved from database), service # response and processed details, signal handlers must return @@ -140,7 +142,14 @@ class SocialAuthBackend(ModelBackend): updated = filter(bool, pre_update.send(sender=self, user=user, response=response, details=details)) - if changed or len(updated) > 0: + # Looking for at least one update + has_update = False + for result in updated: + if result[1]: + has_update = True + break + + if changed or has_update: user.save() def get_user_id(self, details, response): -- 2.39.5