Upgraded to Python Social Auth 0.2.21 to resolve migration issue
This commit is contained in:
committed by
Clinton Blackburn
parent
5cd3a86382
commit
4cc7628696
@@ -1,38 +0,0 @@
|
||||
"""
|
||||
Monkey patch implementation for a python_social_auth Django ORM method that is not Django 1.8-compatible.
|
||||
Remove once the module fully supports Django 1.8!
|
||||
"""
|
||||
|
||||
from django.db import transaction
|
||||
from social.storage.django_orm import DjangoUserMixin
|
||||
from social.apps.django_app.default.models import (
|
||||
UserSocialAuth, Nonce, Association, Code
|
||||
)
|
||||
|
||||
|
||||
def patch():
|
||||
"""
|
||||
Monkey-patch the DjangoUserMixin class.
|
||||
"""
|
||||
def create_social_auth_wrapper(wrapped_func):
|
||||
# pylint: disable=missing-docstring
|
||||
wrapped_func = wrapped_func.__func__
|
||||
|
||||
def _create_social_auth(*args, **kwargs):
|
||||
# The entire reason for this monkey-patch is to wrap the create_social_auth call
|
||||
# in an atomic transaction. The call can sometime raise an IntegrityError, which is
|
||||
# caught and dealt with by python_social_auth - but not inside of an atomic transaction.
|
||||
# In Django 1.8, unless the exception is raised in an atomic transaction, the transaction
|
||||
# becomes unusable after the IntegrityError exception is raised.
|
||||
with transaction.atomic():
|
||||
return wrapped_func(*args, **kwargs)
|
||||
return classmethod(_create_social_auth)
|
||||
|
||||
DjangoUserMixin.create_social_auth = create_social_auth_wrapper(DjangoUserMixin.create_social_auth)
|
||||
|
||||
# Monkey-patch some social auth models' Meta class to squelch Django19 warnings.
|
||||
# pylint: disable=protected-access
|
||||
UserSocialAuth._meta.app_label = "default"
|
||||
Nonce._meta.app_label = "default"
|
||||
Association._meta.app_label = "default"
|
||||
Code._meta.app_label = "default"
|
||||
Reference in New Issue
Block a user