mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-04 12:30:11 +03:00
Remove get_remote_field compat
This commit is contained in:
parent
74c995ca16
commit
b3136427a1
|
@ -78,19 +78,6 @@ def distinct(queryset, base):
|
||||||
return queryset.distinct()
|
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):
|
def _resolve_model(obj):
|
||||||
"""
|
"""
|
||||||
Resolve supplied `obj` to a Django model class.
|
Resolve supplied `obj` to a Django model class.
|
||||||
|
|
|
@ -32,7 +32,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
from rest_framework import ISO_8601
|
from rest_framework import ISO_8601
|
||||||
from rest_framework.compat import (
|
from rest_framework.compat import (
|
||||||
InvalidTimeError, MaxLengthValidator, MaxValueValidator,
|
InvalidTimeError, MaxLengthValidator, MaxValueValidator,
|
||||||
MinLengthValidator, MinValueValidator, get_remote_field, unicode_repr,
|
MinLengthValidator, MinValueValidator, unicode_repr,
|
||||||
unicode_to_repr
|
unicode_to_repr
|
||||||
)
|
)
|
||||||
from rest_framework.exceptions import ErrorDetail, ValidationError
|
from rest_framework.exceptions import ErrorDetail, ValidationError
|
||||||
|
@ -1829,7 +1829,7 @@ class ModelField(Field):
|
||||||
MaxLengthValidator(self.max_length, message=message))
|
MaxLengthValidator(self.max_length, message=message))
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
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:
|
if rel is not None:
|
||||||
return rel.model._meta.get_field(rel.field_name).to_python(data)
|
return rel.model._meta.get_field(rel.field_name).to_python(data)
|
||||||
return self.model_field.to_python(data)
|
return self.model_field.to_python(data)
|
||||||
|
|
|
@ -7,7 +7,6 @@ Usage: `get_field_info(model)` returns a `FieldInfo` instance.
|
||||||
"""
|
"""
|
||||||
from collections import OrderedDict, namedtuple
|
from collections import OrderedDict, namedtuple
|
||||||
|
|
||||||
from rest_framework.compat import get_remote_field
|
|
||||||
|
|
||||||
FieldInfo = namedtuple('FieldResult', [
|
FieldInfo = namedtuple('FieldResult', [
|
||||||
'pk', # Model field instance
|
'pk', # Model field instance
|
||||||
|
@ -49,19 +48,19 @@ def get_field_info(model):
|
||||||
|
|
||||||
def _get_pk(opts):
|
def _get_pk(opts):
|
||||||
pk = opts.pk
|
pk = opts.pk
|
||||||
rel = get_remote_field(pk)
|
rel = pk.remote_field
|
||||||
|
|
||||||
while rel and rel.parent_link:
|
while rel and rel.parent_link:
|
||||||
# If model is a child via multi-table inheritance, use parent's pk.
|
# If model is a child via multi-table inheritance, use parent's pk.
|
||||||
pk = pk.remote_field.model._meta.pk
|
pk = pk.remote_field.model._meta.pk
|
||||||
rel = get_remote_field(pk)
|
rel = pk.remote_field
|
||||||
|
|
||||||
return pk
|
return pk
|
||||||
|
|
||||||
|
|
||||||
def _get_fields(opts):
|
def _get_fields(opts):
|
||||||
fields = OrderedDict()
|
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
|
fields[field.name] = field
|
||||||
|
|
||||||
return fields
|
return fields
|
||||||
|
@ -76,7 +75,7 @@ def _get_forward_relationships(opts):
|
||||||
Returns an `OrderedDict` of field names to `RelationInfo`.
|
Returns an `OrderedDict` of field names to `RelationInfo`.
|
||||||
"""
|
"""
|
||||||
forward_relations = OrderedDict()
|
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(
|
forward_relations[field.name] = RelationInfo(
|
||||||
model_field=field,
|
model_field=field,
|
||||||
related_model=field.remote_field.model,
|
related_model=field.remote_field.model,
|
||||||
|
@ -95,7 +94,7 @@ def _get_forward_relationships(opts):
|
||||||
# manytomany do not have to_fields
|
# manytomany do not have to_fields
|
||||||
to_field=None,
|
to_field=None,
|
||||||
has_through_model=(
|
has_through_model=(
|
||||||
not get_remote_field(field).through._meta.auto_created
|
not field.remote_field.through._meta.auto_created
|
||||||
),
|
),
|
||||||
reverse=False
|
reverse=False
|
||||||
)
|
)
|
||||||
|
@ -119,7 +118,7 @@ def _get_reverse_relationships(opts):
|
||||||
reverse_relations[accessor_name] = RelationInfo(
|
reverse_relations[accessor_name] = RelationInfo(
|
||||||
model_field=None,
|
model_field=None,
|
||||||
related_model=related,
|
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),
|
to_field=_get_to_field(relation.field),
|
||||||
has_through_model=False,
|
has_through_model=False,
|
||||||
reverse=True
|
reverse=True
|
||||||
|
@ -137,8 +136,8 @@ def _get_reverse_relationships(opts):
|
||||||
# manytomany do not have to_fields
|
# manytomany do not have to_fields
|
||||||
to_field=None,
|
to_field=None,
|
||||||
has_through_model=(
|
has_through_model=(
|
||||||
(getattr(get_remote_field(relation.field), 'through', None) is not None) and
|
(getattr(relation.field.remote_field, 'through', None) is not None) and
|
||||||
not get_remote_field(relation.field).through._meta.auto_created
|
not relation.field.remote_field.through._meta.auto_created
|
||||||
),
|
),
|
||||||
reverse=True
|
reverse=True
|
||||||
)
|
)
|
||||||
|
|
|
@ -22,20 +22,6 @@ class CompatTests(TestCase):
|
||||||
expected = (timedelta.days * 86400.0) + float(timedelta.seconds) + (timedelta.microseconds / 1000000.0)
|
expected = (timedelta.days * 86400.0) + float(timedelta.seconds) + (timedelta.microseconds / 1000000.0)
|
||||||
assert compat.total_seconds(timedelta) == expected
|
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):
|
def test_set_rollback_for_transaction_in_managed_mode(self):
|
||||||
class MockTransaction(object):
|
class MockTransaction(object):
|
||||||
called_rollback = False
|
called_rollback = False
|
||||||
|
|
Loading…
Reference in New Issue
Block a user