From 93a16087cab94bffec4be30fcf23ff1a623369d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Sat, 6 Sep 2014 11:42:26 -0700 Subject: [PATCH] fix django 1.6 compatibility --- .travis.yml | 11 +++++----- accounts/tests.py | 38 +++++++++++++++++++---------------- accounts/views.py | 51 +++++++++++++++++++++++++++++++++++++---------- 3 files changed, 66 insertions(+), 34 deletions(-) diff --git a/.travis.yml b/.travis.yml index be5abb4..18313ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,17 +9,16 @@ env: - DJANGO='1.7' install: - - if [[ $DJANGO == '1.6' ]]; then pip install django==1.6; fi - - if [[ $DJANGO != '1.6' ]]; then pip install -e git+git://github.com/django/django.git@1.7c2#egg=django1.7rc2; fi + - if [[ $DJANGO == '1.6' && $TRAVIS_PYTHON_VERSION == 3.4 ]]; then pip install django==1.6; fi - pip install -r requirements.txt - - if [[ $DJANGO == '1.6' ]]; then pip install coveralls; fi + - if [[ $DJANGO == '1.6' && $TRAVIS_PYTHON_VERSION == 3.4 ]]; then pip install coveralls; fi script: - - if [[ $DJANGO == '1.6' ]]; then coverage run --branch --source=accounts,permissions,tracker --omit=accounts/migrations/*.py,permissions/migrations/*.py,tracker/migrations/*.py manage.py test; fi - - if [[ $DJANGO != '1.6' ]]; then python manage.py test; fi + - if [[ $DJANGO == '1.6' && $TRAVIS_PYTHON_VERSION == 3.4 ]]; then coverage run --branch --source=accounts,permissions,tracker --omit=accounts/migrations/*.py,permissions/migrations/*.py,tracker/migrations/*.py manage.py test; fi + - if [[ $DJANGO != '1.6' || $TRAVIS_PYTHON_VERSION != 3.4 ]]; then python manage.py test; fi after_success: - if [[ $DJANGO == '1.6' ]]; then coveralls; fi + if [[ $DJANGO == '1.6' && $TRAVIS_PYTHON_VERSION == 3.4 ]]; then coveralls; fi notifications: irc: diff --git a/accounts/tests.py b/accounts/tests.py index 8a116f3..84787ff 100644 --- a/accounts/tests.py +++ b/accounts/tests.py @@ -1,7 +1,8 @@ -import json - from django.test import TestCase from django.core.urlresolvers import reverse +from django import VERSION + +import json from accounts.models import * @@ -47,7 +48,11 @@ class TestViews(TestCase): 'new_password1': 'newpassword', 'new_password2': 'newpassword', }, follow=True) - self.assertRedirects(response, reverse('login')+'?next='+reverse('profile')) + if VERSION >= (1, 7): + # since django 1.7, session are invalid after a password change + self.assertRedirects(response, reverse('login')+'?next='+reverse('profile')) + else: + self.assertRedirects(response, reverse('profile')) self.assertContains(response, 'Password updated successfully') user = User.objects.get(username='admin') self.assertTrue(user.check_password('newpassword')) @@ -159,7 +164,7 @@ class TestViews(TestCase): }) self.assertRedirects(response, reverse('show-user', args=[user.id])) user = User.objects.get(pk=user.pk) - self.assertTrue(group in user.groups.all()) + self.assertTrue(user.groups.filter(pk=group.pk).exists()) def test_user_remove_group(self): user = User.objects.get(username='user1') @@ -168,11 +173,11 @@ class TestViews(TestCase): response = self.client.get(reverse('remove-group-from-user', args=[user.id, group.id])) self.assertEqual(response.status_code, 404) user = User.objects.get(pk=user.pk) - self.assertTrue(group in user.groups.all()) + self.assertTrue(user.groups.filter(pk=group.pk).exists()) response = self.client.get(reverse('remove-group-from-user', args=[user.id, group.id])) self.assertEqual(response.status_code, 200) user = User.objects.get(pk=user.pk) - self.assertFalse(group in user.groups.all()) + self.assertFalse(user.groups.filter(pk=group.pk).exists()) def test_user_add_team(self): user = User.objects.get(username='user1') @@ -188,7 +193,7 @@ class TestViews(TestCase): }) self.assertRedirects(response, reverse('show-user', args=[user.id])) team = Team.objects.get(pk=team.pk) - self.assertTrue(user in team.users.all()) + self.assertTrue(team.users.filter(pk=user.pk).exists()) def test_user_remove_team(self): user = User.objects.get(username='user1') @@ -196,7 +201,7 @@ class TestViews(TestCase): response = self.client.get(reverse('remove-team-from-user', args=[user.id, team.id])) self.assertEqual(response.status_code, 200) team = Team.objects.get(pk=team.pk) - self.assertFalse(user in team.users.all()) + self.assertFalse(team.users.filter(pk=user.pk).exists()) # Group @@ -257,7 +262,7 @@ class TestViews(TestCase): response = self.client.get(reverse('add-user-to-group', args=[group.id]) + '?query=new') self.assertEqual(response.status_code, 404) user = User.objects.get(pk=user.pk) - self.assertFalse(group in user.groups.all()) + self.assertFalse(user.groups.filter(pk=group.pk).exists()) response = self.client.get(reverse('add-user-to-group', args=[group.id])) self.assertEqual(response.status_code, 404) response = self.client.get(reverse('add-user-to-group', args=[group.id]) + '?query=new') @@ -269,7 +274,7 @@ class TestViews(TestCase): }) self.assertRedirects(response, reverse('show-group', args=[group.id])) user = User.objects.get(pk=user.pk) - self.assertTrue(group in user.groups.all()) + self.assertTrue(user.groups.filter(pk=group.pk).exists()) def test_group_remove_user(self): user = User.objects.get(username='user1') @@ -278,11 +283,10 @@ class TestViews(TestCase): response = self.client.get(reverse('remove-user-from-group', args=[group.id, user.id])) self.assertEqual(response.status_code, 404) user = User.objects.get(pk=user.pk) - self.assertTrue(group in user.groups.all()) + self.assertTrue(user.groups.filter(pk=group.pk).exists()) response = self.client.get(reverse('remove-user-from-group', args=[group.id, user.id])) self.assertEqual(response.status_code, 200) - user = User.objects.get(pk=user.pk) - self.assertFalse(group in user.groups.all()) + self.assertFalse(user.groups.filter(pk=group.pk).exists()) # Team @@ -345,7 +349,7 @@ class TestViews(TestCase): }) self.assertRedirects(response, reverse('show-team', args=[team.id])) team = Team.objects.get(pk=team.pk) - self.assertTrue(user in team.users.all()) + self.assertTrue(team.users.filter(pk=user.pk).exists()) def test_team_remove_user(self): team = Team.objects.get(name='team2') @@ -353,7 +357,7 @@ class TestViews(TestCase): response = self.client.get(reverse('remove-user-from-team', args=[team.id, user.id])) self.assertEqual(response.status_code, 200) team = Team.objects.get(pk=team.pk) - self.assertFalse(user in team.users.all()) + self.assertFalse(team.users.filter(pk=user.pk).exists()) def test_team_add_group(self): team = Team.objects.get(name='team2') @@ -369,7 +373,7 @@ class TestViews(TestCase): }) self.assertRedirects(response, reverse('show-team', args=[team.id])) team = Team.objects.get(pk=team.pk) - self.assertTrue(group in team.groups.all()) + self.assertTrue(team.groups.filter(pk=group.pk).exists()) def test_team_remove_group(self): team = Team.objects.get(name='team2') @@ -377,7 +381,7 @@ class TestViews(TestCase): response = self.client.get(reverse('remove-group-from-team', args=[team.id, group.id])) self.assertEqual(response.status_code, 200) team = Team.objects.get(pk=team.pk) - self.assertFalse(group in team.groups.all()) + self.assertFalse(team.groups.filter(pk=group.pk).exists()) class TestModels(TestCase): diff --git a/accounts/views.py b/accounts/views.py index 0c58d82..8b2a8ac 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -7,8 +7,13 @@ from django.db.models import Q from django.core.exceptions import ObjectDoesNotExist from django.conf import settings from django.contrib.auth.forms import PasswordChangeForm +from django import VERSION -from django.http import Http404, HttpResponse, JsonResponse +from django.http import Http404, HttpResponse +if VERSION >= (1, 7): + from django.http import JsonResponse +else: + import json from permissions.decorators import project_perm_required @@ -186,9 +191,13 @@ def user_add_group(request, user): 'value': group.name, 'data': group.name, }] - return JsonResponse({ + c = { 'suggestions': response, - }, safe=False) + } + if VERSION >= (1, 7): + return JsonResponse(c, safe=False) + else: + return HttpResponse(json.dumps(c), content_type="application/json") @project_perm_required('manage_accounts') @@ -239,9 +248,13 @@ def user_add_team(request, user): 'value': team.name, 'data': team.name, }] - return JsonResponse({ + c = { 'suggestions': response, - }, safe=False) + } + if VERSION >= (1, 7): + return JsonResponse(c, safe=False) + else: + return HttpResponse(json.dumps(c), content_type="application/json") @project_perm_required('manage_accounts') @@ -321,17 +334,21 @@ def group_add_user(request, group): try: user = User.objects.get(username=user) except ObjectDoesNotExist: + print('user not found') messages.error(request, 'User not found.') else: if group.users.filter(id=user.id).exists(): + print('already exist') messages.info(request, 'User already in group.') else: user.groups.add(group) user.save() messages.success(request, 'User added to group successfully.') + print('huge success') else: messages.error(request, 'User not found.') + print('not found 2') return redirect('show-group', group.id) else: term = request.GET.get('query') @@ -347,9 +364,13 @@ def group_add_user(request, group): 'value': user.username_and_fullname, 'data': user.username, }] - return JsonResponse({ + c = { 'suggestions': response, - }, safe=False) + } + if VERSION >= (1, 7): + return JsonResponse(c, safe=False) + else: + return HttpResponse(json.dumps(c), content_type="application/json") @project_perm_required('manage_accounts') @@ -454,9 +475,13 @@ def team_add_user(request, team): 'value': user.username_and_fullname, 'data': user.username, }] - return JsonResponse({ + c = { 'suggestions': response, - }, safe=False) + } + if VERSION >= (1, 7): + return JsonResponse(c, safe=False) + else: + return HttpResponse(json.dumps(c), content_type="application/json") @project_perm_required('manage_accounts') @@ -503,9 +528,13 @@ def team_add_group(request, team): 'value': group.name, 'data': group.name, }] - return JsonResponse({ + c = { 'suggestions': response, - }, safe=False) + } + if VERSION >= (1, 7): + return JsonResponse(c, safe=False) + else: + return HttpResponse(json.dumps(c), content_type="application/json") @project_perm_required('manage_accounts')