Skip to content

Commit 4575958

Browse files
committed
Fixed compatibility with DRF 3.0.0
Closes #16
1 parent 84ecbb0 commit 4575958

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

example/api/api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class UserEmber(User):
6666

6767

6868
class EmberUserModelViewSet(viewsets.ModelViewSet):
69-
model = auth_models.User
69+
queryset = auth_models.User.objects.all()
7070
serializer_class = IdentitySerializer
7171
allowed_methods = ['GET', 'POST', 'PUT', ]
7272
renderer_classes = (renderers.JSONRenderer, )

example/tests/test_format_keys.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def test_camelization(self):
4646

4747
json_content = json.loads(response.content)
4848
meta = json_content.get('meta')
49-
49+
5050
self.assertEquals(expected.get('user'), json_content.get('user'))
5151
self.assertEqual('http://testserver/user-viewset/?page=2', meta.get('nextLink'))
5252

rest_framework_ember/pagination.py

+12-11
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
from rest_framework_ember.utils import get_resource_name
66

77

8-
class NextPageLinkField(serializers.Field):
8+
class NextPageLinkField(serializers.ReadOnlyField):
99
"""
1010
Field that returns a link to the next page in paginated results.
1111
"""
1212
page_field = 'page'
1313

14-
def to_native(self, value):
14+
def to_representation(self, value):
1515
if not value.has_next():
1616
return None
1717
page = value.next_page_number()
@@ -20,25 +20,25 @@ def to_native(self, value):
2020
return replace_query_param(url, self.page_field, page)
2121

2222

23-
class NextPageField(serializers.Field):
23+
class NextPageField(serializers.ReadOnlyField):
2424
"""
2525
Field that returns a link to the next page in paginated results.
2626
"""
2727
page_field = 'page'
2828

29-
def to_native(self, value):
29+
def to_representation(self, value):
3030
if not value.has_next():
3131
return None
3232
return value.next_page_number()
3333

3434

35-
class PreviousPageLinkField(serializers.Field):
35+
class PreviousPageLinkField(serializers.ReadOnlyField):
3636
"""
3737
Field that returns a link to the previous page in paginated results.
3838
"""
3939
page_field = 'page'
4040

41-
def to_native(self, value):
41+
def to_representation(self, value):
4242
if not value.has_previous():
4343
return None
4444
page = value.previous_page_number()
@@ -47,25 +47,25 @@ def to_native(self, value):
4747
return replace_query_param(url, self.page_field, page)
4848

4949

50-
class PreviousPageField(serializers.Field):
50+
class PreviousPageField(serializers.ReadOnlyField):
5151
"""
5252
Field that returns a link to the previous page in paginated results.
5353
"""
5454
page_field = 'page'
5555

56-
def to_native(self, value):
56+
def to_representation(self, value):
5757
if not value.has_previous():
5858
return None
5959
return value.previous_page_number()
6060

6161

62-
class PageField(serializers.Field):
62+
class PageField(serializers.ReadOnlyField):
6363
"""
6464
Field that returns a link to the previous page in paginated results.
6565
"""
6666
page_field = 'page'
6767

68-
def to_native(self, value):
68+
def to_representation(self, value):
6969
return value.number
7070

7171

@@ -76,5 +76,6 @@ class EmberPaginationSerializer(pagination.BasePaginationSerializer):
7676
page = PageField(source='*')
7777
previous = PreviousPageField(source='*')
7878
previous_link = PreviousPageLinkField(source='*')
79-
count = serializers.Field(source='paginator.count')
79+
count = serializers.ReadOnlyField(source='paginator.count')
80+
total = serializers.ReadOnlyField(source='paginator.num_pages')
8081

rest_framework_ember/renderers.py

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import copy
21
import inflection
32

43
from django.conf import settings
@@ -29,20 +28,20 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
2928
return super(JSONRenderer, self).render(
3029
data, accepted_media_type, renderer_context)
3130

32-
data = format_keys(data, 'camelize')
31+
data = format_keys(data, 'camelize')
3332

3433
try:
35-
data_copy = copy.copy(data)
36-
content = data_copy.pop('results')
34+
content = data.pop('results')
3735
resource_name = format_resource_name(content, resource_name)
38-
data = {resource_name : content, "meta" : data_copy}
36+
data = {resource_name : content, "meta" : data}
3937
except (TypeError, KeyError, AttributeError) as e:
40-
38+
4139
# Default behavior
4240
if not resource_name == 'data':
4341
format_keys(data, 'camelize')
4442
resource_name = format_resource_name(data, resource_name)
4543

4644
data = {resource_name : data}
45+
4746
return super(JSONRenderer, self).render(
4847
data, accepted_media_type, renderer_context)

0 commit comments

Comments
 (0)