Fix misc django deprecations

This commit is contained in:
Ryan P Kilby 2016-09-14 23:54:47 -04:00
parent bb37cb7992
commit a084924ced
8 changed files with 40 additions and 27 deletions

View File

@ -138,6 +138,12 @@ def is_authenticated(user):
return user.is_authenticated return user.is_authenticated
def is_anonymous(user):
if django.VERSION < (1, 10):
return user.is_anonymous()
return user.is_anonymous
def get_related_model(field): def get_related_model(field):
if django.VERSION < (1, 9): if django.VERSION < (1, 9):
return _resolve_model(field.rel.to) return _resolve_model(field.rel.to)

View File

@ -11,6 +11,7 @@ factory = APIRequestFactory()
class BasicSerializer(serializers.ModelSerializer): class BasicSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = BasicModel model = BasicModel
fields = '__all__'
class ManyPostView(generics.GenericAPIView): class ManyPostView(generics.GenericAPIView):

View File

@ -1,6 +1,13 @@
def pytest_configure(): def pytest_configure():
from django.conf import settings from django.conf import settings
MIDDLEWARE = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
settings.configure( settings.configure(
DEBUG_PROPAGATE_EXCEPTIONS=True, DEBUG_PROPAGATE_EXCEPTIONS=True,
DATABASES={ DATABASES={
@ -21,12 +28,8 @@ def pytest_configure():
'APP_DIRS': True, 'APP_DIRS': True,
}, },
], ],
MIDDLEWARE_CLASSES=( MIDDLEWARE=MIDDLEWARE,
'django.middleware.common.CommonMiddleware', MIDDLEWARE_CLASSES=MIDDLEWARE,
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
),
INSTALLED_APPS=( INSTALLED_APPS=(
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',

View File

@ -5,7 +5,7 @@ import unittest
from django.conf.urls import url from django.conf.urls import url
from django.db import connection, connections, transaction from django.db import connection, connections, transaction
from django.http import Http404 from django.http import Http404
from django.test import TestCase, TransactionTestCase from django.test import TestCase, TransactionTestCase, override_settings
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from rest_framework import status from rest_framework import status
@ -36,6 +36,20 @@ class APIExceptionView(APIView):
raise APIException raise APIException
class NonAtomicAPIExceptionView(APIView):
@method_decorator(transaction.non_atomic_requests)
def dispatch(self, *args, **kwargs):
return super(NonAtomicAPIExceptionView, self).dispatch(*args, **kwargs)
def get(self, request, *args, **kwargs):
BasicModel.objects.all()
raise Http404
urlpatterns = (
url(r'^$', NonAtomicAPIExceptionView.as_view()),
)
@unittest.skipUnless( @unittest.skipUnless(
connection.features.uses_savepoints, connection.features.uses_savepoints,
"'atomic' requires transactions and savepoints." "'atomic' requires transactions and savepoints."
@ -124,22 +138,8 @@ class DBTransactionAPIExceptionTests(TestCase):
connection.features.uses_savepoints, connection.features.uses_savepoints,
"'atomic' requires transactions and savepoints." "'atomic' requires transactions and savepoints."
) )
@override_settings(ROOT_URLCONF='tests.test_atomic_requests')
class NonAtomicDBTransactionAPIExceptionTests(TransactionTestCase): class NonAtomicDBTransactionAPIExceptionTests(TransactionTestCase):
@property
def urls(self):
class NonAtomicAPIExceptionView(APIView):
@method_decorator(transaction.non_atomic_requests)
def dispatch(self, *args, **kwargs):
return super(NonAtomicAPIExceptionView, self).dispatch(*args, **kwargs)
def get(self, request, *args, **kwargs):
BasicModel.objects.all()
raise Http404
return (
url(r'^$', NonAtomicAPIExceptionView.as_view()),
)
def setUp(self): def setUp(self):
connections.databases['default']['ATOMIC_REQUESTS'] = True connections.databases['default']['ATOMIC_REQUESTS'] = True

View File

@ -20,6 +20,7 @@ from rest_framework.authentication import (
) )
from rest_framework.authtoken.models import Token from rest_framework.authtoken.models import Token
from rest_framework.authtoken.views import obtain_auth_token from rest_framework.authtoken.views import obtain_auth_token
from rest_framework.compat import is_authenticated
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.test import APIClient, APIRequestFactory from rest_framework.test import APIClient, APIRequestFactory
from rest_framework.views import APIView from rest_framework.views import APIView
@ -408,7 +409,7 @@ class FailingAuthAccessedInRenderer(TestCase):
def render(self, data, media_type=None, renderer_context=None): def render(self, data, media_type=None, renderer_context=None):
request = renderer_context['request'] request = renderer_context['request']
if request.user.is_authenticated(): if is_authenticated(request.user):
return b'authenticated' return b'authenticated'
return b'not authenticated' return b'not authenticated'

View File

@ -456,7 +456,7 @@ class AttributeModel(models.Model):
class SearchFilterModelFk(models.Model): class SearchFilterModelFk(models.Model):
title = models.CharField(max_length=20) title = models.CharField(max_length=20)
attribute = models.ForeignKey(AttributeModel) attribute = models.ForeignKey(AttributeModel, on_delete=models.CASCADE)
class SearchFilterFkSerializer(serializers.ModelSerializer): class SearchFilterFkSerializer(serializers.ModelSerializer):

View File

@ -962,7 +962,7 @@ class OneToOneTargetTestModel(models.Model):
class OneToOneSourceTestModel(models.Model): class OneToOneSourceTestModel(models.Model):
target = models.OneToOneField(OneToOneTargetTestModel, primary_key=True) target = models.OneToOneField(OneToOneTargetTestModel, primary_key=True, on_delete=models.CASCADE)
class TestModelFieldValues(TestCase): class TestModelFieldValues(TestCase):
@ -990,6 +990,7 @@ class TestUniquenessOverride(TestCase):
class TestSerializer(serializers.ModelSerializer): class TestSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = TestModel model = TestModel
fields = '__all__'
extra_kwargs = {'field_1': {'required': False}} extra_kwargs = {'field_1': {'required': False}}
fields = TestSerializer().fields fields = TestSerializer().fields

View File

@ -13,6 +13,7 @@ from django.utils import six
from rest_framework import status from rest_framework import status
from rest_framework.authentication import SessionAuthentication from rest_framework.authentication import SessionAuthentication
from rest_framework.compat import is_anonymous
from rest_framework.parsers import BaseParser, FormParser, MultiPartParser from rest_framework.parsers import BaseParser, FormParser, MultiPartParser
from rest_framework.request import Request from rest_framework.request import Request
from rest_framework.response import Response from rest_framework.response import Response
@ -169,9 +170,9 @@ class TestUserSetter(TestCase):
def test_user_can_logout(self): def test_user_can_logout(self):
self.request.user = self.user self.request.user = self.user
self.assertFalse(self.request.user.is_anonymous()) self.assertFalse(is_anonymous(self.request.user))
logout(self.request) logout(self.request)
self.assertTrue(self.request.user.is_anonymous()) self.assertTrue(is_anonymous(self.request.user))
def test_logged_in_user_is_set_on_wrapped_request(self): def test_logged_in_user_is_set_on_wrapped_request(self):
login(self.request, self.user) login(self.request, self.user)