Skip to content

Commit

Permalink
Django 1.10
Browse files Browse the repository at this point in the history
  • Loading branch information
pennersr committed Aug 16, 2016
1 parent fc8379c commit 765d069
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 29 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ env:
- DJANGO="Django<1.8"
- DJANGO="Django<1.9"
- DJANGO="Django<1.10"
- DJANGO="Django<1.11"
cache:
directories:
- $HOME/.cache/pip
Expand Down
12 changes: 12 additions & 0 deletions ChangeLog.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
Unreleased
**********

Note worthy changes
-------------------

- Django 1.10 compatibility.

- The Twitter provider now supports querying of the email address.



0.26.1 (2016-07-25)
*******************

Expand Down
63 changes: 37 additions & 26 deletions allauth/account/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,15 +145,21 @@ def test_signup_email_twice(self):
user = get_user_model().objects.get(username='johndoe')
self.assertEqual(user.email, '[email protected]')

def _create_user(self):
user = get_user_model().objects.create(username='john', is_active=True)
user.set_password('doe')
def _create_user(self, username='john', password='doe'):
user = get_user_model().objects.create(
username=username,
is_active=True)
if password:
user.set_password(password)
else:
user.set_unusable_password()
user.save()
return user

def _create_user_and_login(self):
user = self._create_user()
self.client.login(username='john', password='doe')
def _create_user_and_login(self, usable_password=True):
password = 'doe' if usable_password else False
user = self._create_user(password=password)
self.client_force_login(user)
return user

def test_redirect_when_authenticated(self):
Expand All @@ -168,33 +174,38 @@ def test_password_reset_get(self):
self.assertTemplateUsed(resp, 'account/password_reset.html')

def test_password_set_redirect(self):
resp = self._password_set_or_reset_redirect('account_set_password',
True)
self.assertEqual(resp.status_code, 302)
resp = self._password_set_or_change_redirect(
'account_set_password',
True)
self.assertRedirects(
resp,
reverse('account_change_password'),
fetch_redirect_response=False)

def test_password_reset_no_redirect(self):
resp = self._password_set_or_reset_redirect('account_change_password',
True)
def test_password_change_no_redirect(self):
resp = self._password_set_or_change_redirect(
'account_change_password',
True)
self.assertEqual(resp.status_code, 200)

def test_password_set_no_redirect(self):
resp = self._password_set_or_reset_redirect('account_set_password',
False)
resp = self._password_set_or_change_redirect(
'account_set_password',
False)
self.assertEqual(resp.status_code, 200)

def test_password_reset_redirect(self):
resp = self._password_set_or_reset_redirect('account_change_password',
False)
self.assertEqual(resp.status_code, 302)
def test_password_change_redirect(self):
resp = self._password_set_or_change_redirect(
'account_change_password',
False)
self.assertRedirects(
resp,
reverse('account_set_password'),
fetch_redirect_response=False)

def _password_set_or_reset_redirect(self, urlname, usable_password):
user = self._create_user_and_login()
c = self.client
if not usable_password:
user.set_unusable_password()
user.save()
resp = c.get(reverse(urlname))
return resp
def _password_set_or_change_redirect(self, urlname, usable_password):
self._create_user_and_login(usable_password)
return self.client.get(reverse(urlname))

def test_password_forgotten_username_hint(self):
user = self._request_new_password()
Expand Down
8 changes: 8 additions & 0 deletions allauth/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,11 @@ def render_to_string(
else:
def validate_password(password, user=None, password_validators=None):
pass


def template_context_value(context, key):
try:
value = context[key]
except KeyError:
value = getattr(context, key)
return value
6 changes: 4 additions & 2 deletions allauth/socialaccount/templatetags/socialaccount.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

from allauth.socialaccount import providers
from allauth.utils import get_request_param
from allauth.compat import template_context_value


register = template.Library()

Expand All @@ -14,7 +16,7 @@ def __init__(self, provider_id, params):

def render(self, context):
provider_id = self.provider_id_var.resolve(context)
request = context['request']
request = template_context_value(context, 'request')
provider = providers.registry.by_id(provider_id, request)
query = dict([(str(name), var.resolve(context)) for name, var
in self.params.items()])
Expand Down Expand Up @@ -52,7 +54,7 @@ def provider_login_url(parser, token):

class ProvidersMediaJSNode(template.Node):
def render(self, context):
request = context['request']
request = template_context_value(context, 'request')
ret = '\n'.join([p.media_js(request)
for p in providers.registry.get_list(request)])
return ret
Expand Down
16 changes: 16 additions & 0 deletions allauth/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from django.test import TestCase as DjangoTestCase
from django.db import models

from allauth.account.utils import user_username
from . import utils
from .compat import urlparse, urlunparse

Expand Down Expand Up @@ -53,6 +54,21 @@ def assertRedirects(self, response, expected_url,
actual_url = urlunparse(parts)
self.assertEqual(expected_url, actual_url)

def client_force_login(self, user):
if django.VERSION >= (1, 9):
self.client.force_login(
user,
'django.contrib.auth.backends.ModelBackend')
else:
old_password = user.password
user.set_password('doe')
user.save()
self.client.login(
username=user_username(user),
password='doe')
user.password = old_password
user.save()


class MockedResponse(object):
def __init__(self, status_code, content, headers=None):
Expand Down
3 changes: 2 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py{27,32,33,34,35}-django{17,18,19}
envlist = py{27,32,33,34,35}-django{17,18,19,110}

[testenv]
deps =
Expand All @@ -8,6 +8,7 @@ deps =
django17: Django < 1.8
django18: Django < 1.9
django19: Django < 1.10
django110: Django < 1.11
commands =
coverage run manage.py test allauth
coverage report
Expand Down

0 comments on commit 765d069

Please sign in to comment.