Skip to content

Commit 21bac85

Browse files
author
kazmiruk
committed
move compatibility checks into compat.py
1 parent 1116a53 commit 21bac85

File tree

6 files changed

+15
-33
lines changed

6 files changed

+15
-33
lines changed

rest_framework/compat.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,3 +265,13 @@ def python_2_unicode_compatible(klass):
265265
klass.__unicode__ = klass.__str__
266266
klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
267267
return klass
268+
269+
try:
270+
from collections import OrderedDict
271+
except ImportError:
272+
from django.utils.datastructures import SortedDict as OrderedDict
273+
274+
if django.VERSION >= (1, 8):
275+
from django.contrib.contenttypes.fields import GenericForeignKey
276+
else:
277+
from django.contrib.contenttypes.generic import GenericForeignKey

rest_framework/fields.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,11 @@
2525
from django.utils.dateparse import parse_date, parse_datetime, parse_time
2626
from rest_framework import ISO_8601
2727
from rest_framework.compat import (
28-
BytesIO, smart_text,
28+
BytesIO, smart_text, OrderedDict,
2929
force_text, is_non_str_iterable
3030
)
3131
from rest_framework.settings import api_settings
3232

33-
try:
34-
from collections import OrderedDict
35-
except ImportError:
36-
from django.utils.datastructures import SortedDict as OrderedDict
37-
3833

3934
def is_simple_callable(obj):
4035
"""

rest_framework/routers.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,11 @@
2121
from django.core.exceptions import ImproperlyConfigured
2222
from django.core.urlresolvers import NoReverseMatch
2323
from rest_framework import views
24+
from rest_framework.compat import OrderedDict
2425
from rest_framework.response import Response
2526
from rest_framework.reverse import reverse
2627
from rest_framework.urlpatterns import format_suffix_patterns
2728

28-
try:
29-
from collections import OrderedDict
30-
except ImportError:
31-
from django.utils.datastructures import SortedDict as OrderedDict
32-
3329

3430
Route = namedtuple('Route', ['url', 'mapping', 'name', 'initkwargs'])
3531
DynamicDetailRoute = namedtuple('DynamicDetailRoute', ['url', 'name', 'initkwargs'])

rest_framework/serializers.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from django.utils import six
2424
from django.utils.functional import cached_property
2525
from django.core.exceptions import ObjectDoesNotExist
26+
from rest_framework.compat import OrderedDict, GenericForeignKey
2627
from rest_framework.settings import api_settings
2728

2829

@@ -36,16 +37,6 @@
3637
from rest_framework.relations import * # NOQA
3738
from rest_framework.fields import * # NOQA
3839

39-
try:
40-
from collections import OrderedDict
41-
except ImportError:
42-
from django.utils.datastructures import SortedDict as OrderedDict
43-
44-
if django.VERSION >= (1, 8):
45-
from django.contrib.contenttypes.fields import GenericForeignKey
46-
else:
47-
from django.contrib.contenttypes.generic import GenericForeignKey
48-
4940

5041
def _resolve_model(obj):
5142
"""

rest_framework/utils/encoders.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,13 @@
55
from django.utils import timezone
66
from django.db.models.query import QuerySet
77
from django.utils.functional import Promise
8-
from rest_framework.compat import force_text
8+
from rest_framework.compat import force_text, OrderedDict
99
from rest_framework.serializers import DictWithMetadata, OrderedDictWithMetadata
1010
import datetime
1111
import decimal
1212
import types
1313
import json
1414

15-
try:
16-
from collections import OrderedDict
17-
except ImportError:
18-
from django.utils.datastructures import SortedDict as OrderedDict
19-
2015

2116
class JSONEncoder(json.JSONEncoder):
2217
"""

rest_framework/views.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,12 @@
77
from django.http import Http404
88
from django.views.decorators.csrf import csrf_exempt
99
from rest_framework import status, exceptions
10-
from rest_framework.compat import smart_text, HttpResponseBase, View
10+
from rest_framework.compat import smart_text, HttpResponseBase, OrderedDict, View
1111
from rest_framework.request import Request
1212
from rest_framework.response import Response
1313
from rest_framework.settings import api_settings
1414
from rest_framework.utils import formatting
1515

16-
try:
17-
from collections import OrderedDict
18-
except ImportError:
19-
from django.utils.datastructures import SortedDict as OrderedDict
20-
2116

2217
def get_view_name(view_cls, suffix=None):
2318
"""

0 commit comments

Comments
 (0)