]> git.parisson.com Git - django-social-auth.git/commitdiff
Added new option to control saving of updates, fixed update signal results check.
authorStas Kravets <skravets@Applebough.local>
Tue, 28 Dec 2010 08:39:01 +0000 (11:39 +0300)
committerStas Kravets <skravets@Applebough.local>
Tue, 28 Dec 2010 08:39:01 +0000 (11:39 +0300)
social_auth/backends.py

index c921aaf15e9c6ee08795d9491c0030632a69f88a..a8d8936423cee0fd86f89f9140070862c72cdb93 100644 (file)
@@ -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):