Skip to content

Commit 645f3aa

Browse files
committed
Merge pull request #7 from ngenworks/updates
rename EmberDataModelMixin to MultipleIDMixin and document it's usage
2 parents 9851d9e + 4671892 commit 645f3aa

File tree

5 files changed

+34
-12
lines changed

5 files changed

+34
-12
lines changed

README.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,3 +216,16 @@ To display a specific error inline use the following::
216216
{{/each}}
217217
{{input name="title" value=title}}
218218

219+
======
220+
Mixins
221+
======
222+
223+
The following mixin classes are available to use with Rest Framework
224+
resources.
225+
226+
-------------------------------------------
227+
rest_framework_ember.mixins.MultipleIDMixin
228+
-------------------------------------------
229+
230+
Overrides ``get_queryset`` to filter by ``ids[]`` in URL query params.
231+

example/api/api.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,8 @@ class EmberUserModelViewSet(viewsets.ModelViewSet):
5858
parser_classes = (parsers.EmberJSONParser, )
5959

6060

61-
class EmberDataMixinUserModelViewSet(mixins.EmberDataModelMixin, EmberUserModelViewSet):
61+
class EmberDataMixinUserModelViewSet(mixins.MultipleIDMixin,
62+
EmberUserModelViewSet):
63+
6264
queryset = auth_models.User.objects.all()
65+

example/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
PASSWORD_HASHERS = ('django.contrib.auth.hashers.UnsaltedMD5PasswordHasher', )
3333

34+
MIDDLEWARE_CLASSES = ()
3435

3536
REST_FRAMEWORK = {
3637
'PAGINATE_BY': 1,

example/tests/test_ember_data_model_mixin.py renamed to example/tests/test_multiple_id_mixin.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,20 @@
77
from django.conf import settings
88

99

10-
class EmberDataModelMixinTests(TestBase):
10+
class MultipleIDMixin(TestBase):
1111
"""
12-
Test usage with EmberDataModelMixin
12+
Test usage with MultipleIDMixin
1313
14-
[<RegexURLPattern user-list ^user-viewsets/$>, <RegexURLPattern user-detail ^user-viewsets/(?P<pk>[^/]+)/$>]
14+
[<RegexURLPattern user-list ^user-viewsets/$>,
15+
<RegexURLPattern user-detail ^user-viewsets/(?P<pk>[^/]+)/$>]
1516
"""
1617
list_url = reverse_lazy('user-list')
1718

18-
def setUp(self):
19-
super(EmberDataModelMixinTests, self).setUp()
20-
2119
def test_single_id_in_query_params(self):
2220
"""
2321
Ensure single ID in query params returns correct result
2422
"""
25-
url = '/user-mixin-viewset/?ids[]=%s' % self.miles.pk
23+
url = '/user-mixin-viewset/?ids[]={0}'.format(self.miles.pk)
2624
response = self.client.get(url)
2725
self.assertEqual(response.status_code, 200)
2826

@@ -48,7 +46,8 @@ def test_multiple_ids_in_query_params(self):
4846
"""
4947
Ensure multiple IDs in query params return correct result
5048
"""
51-
url = '/user-mixin-viewset/?ids[]=%s&ids[]=%s' % (self.miles.pk, self.john.pk)
49+
url = '/user-mixin-viewset/?ids[]={0}&ids[]={1}'.format(
50+
self.miles.pk, self.john.pk)
5251
response = self.client.get(url)
5352
self.assertEqual(response.status_code, 200)
5453

@@ -67,5 +66,8 @@ def test_multiple_ids_in_query_params(self):
6766
self.assertEquals(expected.get('user'), json_content.get('user'))
6867
self.assertEquals(meta.get('count', 0), 2)
6968
self.assertEquals(meta.get("next"), 2)
70-
self.assertEqual('http://testserver/user-mixin-viewset/?ids%5B%5D=2&ids%5B%5D=1&page=2', meta.get("next_link"))
69+
self.assertEqual(
70+
'http://testserver/user-mixin-viewset/?ids%5B%5D=2&ids%5B%5D=1&page=2',
71+
meta.get("next_link"))
7172
self.assertEqual(meta.get("page"), 1)
73+

rest_framework_ember/mixins.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
"""
2+
Class Mixins.
3+
"""
14

2-
3-
class EmberDataModelMixin(object):
5+
class MultipleIDMixin(object):
46
"""
57
Override get_queryset for multiple id support
68
"""
@@ -9,3 +11,4 @@ def get_queryset(self):
911
if ids:
1012
self.queryset = self.queryset.filter(id__in=ids)
1113
return self.queryset
14+

0 commit comments

Comments
 (0)