Skip to content

Commit

Permalink
Merge branch 'andreif-feature/support-django2'
Browse files Browse the repository at this point in the history
  • Loading branch information
omab committed Oct 21, 2017
2 parents 0e3cbd2 + d443827 commit 007c908
Show file tree
Hide file tree
Showing 11 changed files with 100 additions and 17 deletions.
10 changes: 7 additions & 3 deletions .travis.yml
Expand Up @@ -6,7 +6,6 @@ python:
env:
- TOX_ENV=py35-django-18
- TOX_ENV=py34-django-18
- TOX_ENV=py33-django-18
- TOX_ENV=py27-django-18
- TOX_ENV=py35-django-19
- TOX_ENV=py34-django-19
Expand All @@ -18,14 +17,19 @@ env:
- TOX_ENV=py34-django-111
- TOX_ENV=py27-django-111
- TOX_ENV=py35-django-master
- TOX_ENV=py35-django-20

matrix:
fast_finish: true
include:
- python: "3.6"
- python: 3.3
env: TOX_ENV=py33-django-18
- python: 3.6
env: TOX_ENV=py36-django-111
- python: "3.6"
- python: 3.6
env: TOX_ENV=py36-django-master
- python: 3.6
env: TOX_ENV=py36-django-20
allow_failures:
- env: TOX_ENV=py35-django-master
- env: TOX_ENV=py36-django-master
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- Update `JSONField` default value to `dict` callable
- Update `JSONField` to support PostgreSQL builtin option if configured
- Updated `authenticate()` parameters cleanup to avoid double arguments errors
- Fix imports to bring Django 2.0 support

## [1.2.0](https://github.com/python-social-auth/social-app-django/releases/tag/1.2.0) - 2017-05-06

Expand Down
20 changes: 20 additions & 0 deletions social_django/compat.py
@@ -0,0 +1,20 @@
# coding=utf-8
import six
import django
from django.db import models

if django.VERSION >= (2, 0):
from django.urls import reverse
else:
from django.core.urlresolvers import reverse


def get_rel_model(field):
if django.VERSION >= (2, 0):
return field.model

user_model = field.rel.to
if isinstance(user_model, six.string_types):
app_label, model_name = user_model.split('.')
user_model = models.get_model(app_label, model_name)
return user_model
6 changes: 2 additions & 4 deletions social_django/models.py
Expand Up @@ -7,6 +7,7 @@

from social_core.utils import setting_name

from .compat import get_rel_model
from .storage import DjangoUserMixin, DjangoAssociationMixin, \
DjangoNonceMixin, DjangoCodeMixin, \
DjangoPartialMixin, BaseDjangoStorage
Expand Down Expand Up @@ -59,10 +60,7 @@ def username_max_length(cls):

@classmethod
def user_model(cls):
user_model = cls._meta.get_field('user').rel.to
if isinstance(user_model, six.string_types):
app_label, model_name = user_model.split('.')
return models.get_model(app_label, model_name)
user_model = get_rel_model(field=cls._meta.get_field('user'))
return user_model


Expand Down
5 changes: 2 additions & 3 deletions social_django/utils.py
@@ -1,14 +1,13 @@
import warnings

# coding=utf-8
from functools import wraps

from django.conf import settings
from django.core.urlresolvers import reverse
from django.http import Http404

from social_core.utils import setting_name, module_member, get_strategy
from social_core.exceptions import MissingBackend
from social_core.backends.utils import get_backend
from .compat import reverse


BACKENDS = settings.AUTHENTICATION_BACKENDS
Expand Down
9 changes: 9 additions & 0 deletions tests/compat.py
@@ -0,0 +1,9 @@
# coding=utf-8
import django
from django.conf.urls import include
from django.contrib import admin

if django.VERSION < (1, 9):
admin_urls = include(admin.site.urls)
else:
admin_urls = admin.site.urls
22 changes: 21 additions & 1 deletion tests/settings.py
Expand Up @@ -18,18 +18,38 @@
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.sites",
"django.contrib.messages",
"django.contrib.admin",
"social_django",
]

SITE_ID = 1

MIDDLEWARE_CLASSES = (
MIDDLEWARE = MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'social_django.middleware.SocialAuthExceptionMiddleware',
)

AUTHENTICATION_BACKENDS = (
'social_core.backends.facebook.FacebookOAuth2',
'django.contrib.auth.backends.ModelBackend',
)

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
}
},
]

SECRET_KEY = '6p%gef2(6kvjsgl*7!51a7z8c3=u4uc&6ulpua0g1^&sthiifp'
30 changes: 30 additions & 0 deletions tests/test_admin.py
@@ -0,0 +1,30 @@
# -*- coding: utf-8
from __future__ import unicode_literals, absolute_import

from django.contrib.auth import get_user_model
from django.test import TestCase
from social_django.compat import reverse
from social_django.models import UserSocialAuth


class SocialAdminTest(TestCase):
@classmethod
def setUpTestData(cls):
User = get_user_model()
User.objects.create_superuser(
username='admin', email='admin@test.com', first_name='Admin',
password='super-duper-test'
)

def test_admin_app_name(self):
"""The App name in the admin index page"""
self.client.login(username='admin', password='super-duper-test')
response = self.client.get(reverse('admin:index'))
self.assertContains(response, "Social_Django")

def test_social_auth_changelist(self):
"""The App name in the admin index page"""
self.client.login(username='admin', password='super-duper-test')
meta = UserSocialAuth._meta
url_name = 'admin:%s_%s_changelist' % (meta.app_label, meta.model_name)
self.client.get(reverse(url_name))
6 changes: 2 additions & 4 deletions tests/test_views.py
Expand Up @@ -3,11 +3,8 @@

from django.test import Client
from django.test import TestCase
try:
from django.urls import reverse
except ImportError:
from django.core.urlresolvers import reverse

from social_django.compat import reverse
from social_django.views import get_session_timeout


Expand All @@ -23,6 +20,7 @@ def test_begin_view(self):
response = self.client.get(reverse('social:begin', kwargs={'backend': 'facebook'}))
self.assertEqual(response.status_code, 302)


class TestGetSessionTimeout(TestCase):
"""
Ensure that the branching logic of get_session_timeout behaves as expected.
Expand Down
5 changes: 3 additions & 2 deletions tests/urls.py
@@ -1,8 +1,9 @@
# -*- coding: utf-8
from django.conf.urls import url, include
from .compat import admin_urls

from social_django.urls import urlpatterns as social_django_urls

urlpatterns = [
url(r'^', include(social_django_urls, namespace='social')),
url(r'^admin/', admin_urls),
url(r'^', include('social_django.urls', namespace='social')),
]
3 changes: 3 additions & 0 deletions tox.ini
Expand Up @@ -5,8 +5,10 @@ envlist =
{py27,py34,py35}-django-110
{py27,py34,py35,py36}-django-111
{py35,py36}-django-master
{py35,py36}-django-20

[testenv]
install_command = pip install --pre {opts} {packages}
setenv =
PYTHONPATH = {toxinidir}:{toxinidir}/social_django
commands = coverage run manage.py test
Expand All @@ -16,6 +18,7 @@ deps =
django-110: Django>=1.10,<1.11
django-111: Django>=1.11,<2
django-master: https://github.com/django/django/archive/master.tar.gz
django-20: Django>=2.0b1,<2.1
-r{toxinidir}/dev-requirements.txt

basepython =
Expand Down

0 comments on commit 007c908

Please sign in to comment.