Remove get_remote_field compat

This commit is contained in:
Carlton Gibson 2017-10-05 16:08:39 +02:00
parent 74c995ca16
commit b3136427a1
4 changed files with 10 additions and 38 deletions

View File

@ -78,19 +78,6 @@ def distinct(queryset, base):
return queryset.distinct()
# TODO: Remove
# field.rel is deprecated from 1.9 onwards
def get_remote_field(field, **kwargs):
if 'default' in kwargs:
if django.VERSION < (1, 9):
return getattr(field, 'rel', kwargs['default'])
return getattr(field, 'remote_field', kwargs['default'])
if django.VERSION < (1, 9):
return field.rel
return field.remote_field
def _resolve_model(obj):
"""
Resolve supplied `obj` to a Django model class.

View File

@ -32,7 +32,7 @@ from django.utils.translation import ugettext_lazy as _
from rest_framework import ISO_8601
from rest_framework.compat import (
InvalidTimeError, MaxLengthValidator, MaxValueValidator,
MinLengthValidator, MinValueValidator, get_remote_field, unicode_repr,
MinLengthValidator, MinValueValidator, unicode_repr,
unicode_to_repr
)
from rest_framework.exceptions import ErrorDetail, ValidationError
@ -1829,7 +1829,7 @@ class ModelField(Field):
MaxLengthValidator(self.max_length, message=message))
def to_internal_value(self, data):
rel = get_remote_field(self.model_field, default=None)
rel = self.model_field.remote_field
if rel is not None:
return rel.model._meta.get_field(rel.field_name).to_python(data)
return self.model_field.to_python(data)

View File

@ -7,7 +7,6 @@ Usage: `get_field_info(model)` returns a `FieldInfo` instance.
"""
from collections import OrderedDict, namedtuple
from rest_framework.compat import get_remote_field
FieldInfo = namedtuple('FieldResult', [
'pk', # Model field instance
@ -49,19 +48,19 @@ def get_field_info(model):
def _get_pk(opts):
pk = opts.pk
rel = get_remote_field(pk)
rel = pk.remote_field
while rel and rel.parent_link:
# If model is a child via multi-table inheritance, use parent's pk.
pk = pk.remote_field.model._meta.pk
rel = get_remote_field(pk)
rel = pk.remote_field
return pk
def _get_fields(opts):
fields = OrderedDict()
for field in [field for field in opts.fields if field.serialize and not get_remote_field(field)]:
for field in [field for field in opts.fields if field.serialize and not field.remote_field]:
fields[field.name] = field
return fields
@ -76,7 +75,7 @@ def _get_forward_relationships(opts):
Returns an `OrderedDict` of field names to `RelationInfo`.
"""
forward_relations = OrderedDict()
for field in [field for field in opts.fields if field.serialize and get_remote_field(field)]:
for field in [field for field in opts.fields if field.serialize and field.remote_field]:
forward_relations[field.name] = RelationInfo(
model_field=field,
related_model=field.remote_field.model,
@ -95,7 +94,7 @@ def _get_forward_relationships(opts):
# manytomany do not have to_fields
to_field=None,
has_through_model=(
not get_remote_field(field).through._meta.auto_created
not field.remote_field.through._meta.auto_created
),
reverse=False
)
@ -119,7 +118,7 @@ def _get_reverse_relationships(opts):
reverse_relations[accessor_name] = RelationInfo(
model_field=None,
related_model=related,
to_many=get_remote_field(relation.field).multiple,
to_many=relation.field.remote_field.multiple,
to_field=_get_to_field(relation.field),
has_through_model=False,
reverse=True
@ -137,8 +136,8 @@ def _get_reverse_relationships(opts):
# manytomany do not have to_fields
to_field=None,
has_through_model=(
(getattr(get_remote_field(relation.field), 'through', None) is not None) and
not get_remote_field(relation.field).through._meta.auto_created
(getattr(relation.field.remote_field, 'through', None) is not None) and
not relation.field.remote_field.through._meta.auto_created
),
reverse=True
)

View File

@ -22,20 +22,6 @@ class CompatTests(TestCase):
expected = (timedelta.days * 86400.0) + float(timedelta.seconds) + (timedelta.microseconds / 1000000.0)
assert compat.total_seconds(timedelta) == expected
def test_get_remote_field_with_old_django_version(self):
class MockField(object):
rel = 'example_rel'
compat.django.VERSION = (1, 8)
assert compat.get_remote_field(MockField(), default='default_value') == 'example_rel'
assert compat.get_remote_field(object(), default='default_value') == 'default_value'
def test_get_remote_field_with_new_django_version(self):
class MockField(object):
remote_field = 'example_remote_field'
compat.django.VERSION = (1, 10)
assert compat.get_remote_field(MockField(), default='default_value') == 'example_remote_field'
assert compat.get_remote_field(object(), default='default_value') == 'default_value'
def test_set_rollback_for_transaction_in_managed_mode(self):
class MockTransaction(object):
called_rollback = False