Skip to content

Commit 47c6167

Browse files
author
kazmiruk
committed
adds backward compatibility
1 parent e4e3f57 commit 47c6167

File tree

6 files changed

+33
-7
lines changed

6 files changed

+33
-7
lines changed

rest_framework/fields.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@
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+
3338

3439
def is_simple_callable(obj):
3540
"""
@@ -224,7 +229,7 @@ def to_native(self, value):
224229
return [self.to_native(item) for item in value]
225230
elif isinstance(value, dict):
226231
# Make sure we preserve field ordering, if it exists
227-
ret = collections.OrderedDict()
232+
ret = OrderedDict()
228233
for key, val in value.items():
229234
ret[key] = self.to_native(val)
230235
return ret
@@ -239,7 +244,7 @@ def attributes(self):
239244
return {}
240245

241246
def metadata(self):
242-
metadata = collections.OrderedDict()
247+
metadata = OrderedDict()
243248
metadata['type'] = self.type_label
244249
metadata['required'] = getattr(self, 'required', False)
245250
optional_attrs = ['read_only', 'label', 'help_text',

rest_framework/routers.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from __future__ import unicode_literals
1717

1818
import itertools
19-
from collections import namedtuple, OrderedDict
19+
from collections import namedtuple
2020
from django.conf.urls import patterns, url
2121
from django.core.exceptions import ImproperlyConfigured
2222
from django.core.urlresolvers import NoReverseMatch
@@ -25,6 +25,11 @@
2525
from rest_framework.reverse import reverse
2626
from rest_framework.urlpatterns import format_suffix_patterns
2727

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

2934
Route = namedtuple('Route', ['url', 'mapping', 'name', 'initkwargs'])
3035
DynamicDetailRoute = namedtuple('DynamicDetailRoute', ['url', 'name', 'initkwargs'])

rest_framework/serializers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
response content is handled by parsers and renderers.
1212
"""
1313
from __future__ import unicode_literals
14-
from collections import OrderedDict
1514
import copy
1615
import datetime
1716
import inspect
@@ -37,6 +36,11 @@
3736
from rest_framework.relations import * # NOQA
3837
from rest_framework.fields import * # NOQA
3938

39+
try:
40+
from collections import OrderedDict
41+
except ImportError:
42+
from django.utils.datastructures import SortedDict as OrderedDict
43+
4044

4145
def _resolve_model(obj):
4246
"""

rest_framework/utils/encoders.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
Helper classes for parsers.
33
"""
44
from __future__ import unicode_literals
5-
from collections import OrderedDict
65
from django.utils import timezone
76
from django.db.models.query import QuerySet
87
from django.utils.functional import Promise
@@ -13,6 +12,11 @@
1312
import types
1413
import json
1514

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

1721
class JSONEncoder(json.JSONEncoder):
1822
"""

rest_framework/views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"""
44
from __future__ import unicode_literals
55

6-
from collections import OrderedDict
76
from django.core.exceptions import PermissionDenied
87
from django.http import Http404
98
from django.views.decorators.csrf import csrf_exempt
@@ -14,6 +13,11 @@
1413
from rest_framework.settings import api_settings
1514
from rest_framework.utils import formatting
1615

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

1822
def get_view_name(view_cls, suffix=None):
1923
"""

tests/test_fields.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"""
44
from __future__ import unicode_literals
55

6-
from collections import OrderedDict
76
import datetime
87
import re
98
from decimal import Decimal
@@ -14,6 +13,11 @@
1413
from rest_framework import serializers
1514
from tests.models import RESTFrameworkModel
1615

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

1822
class TimestampedModel(models.Model):
1923
added = models.DateTimeField(auto_now_add=True)

0 commit comments

Comments
 (0)