Skip to content

Commit 6e07ef0

Browse files
committed
Ordering parameter now called 'order' rather than 'o'
This can be customsied via the GRAPHENE_ORDER_BY_FIELD setting, or by extending GrapheneFilterSet. I'm open to this being called 'order_by'.
1 parent 4f054b3 commit 6e07ef0

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed

graphene/contrib/django/filter/filterset.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import six
2+
from django.conf import settings
23
from django.db import models
34
from django_filters import Filter
45
from django_filters.filterset import FilterSetMetaclass, FilterSet
@@ -15,6 +16,9 @@ def filter(self, qs, value):
1516
return super(GlobalIDFilter, self).filter(qs, gid.id)
1617

1718

19+
ORDER_BY_FIELD = getattr(settings, 'GRAPHENE_ORDER_BY_FIELD', 'order')
20+
21+
1822
GRAPHENE_FILTER_SET_OVERRIDES = {
1923
models.AutoField: {
2024
'filter_class': GlobalIDFilter,
@@ -45,7 +49,7 @@ class GrapheneFilterSet(six.with_metaclass(GrapheneFilterSetMetaclass, FilterSet
4549
DjangoFilterConnectionField will wrap FilterSets with this class as
4650
necessary
4751
"""
48-
pass
52+
order_by_field = ORDER_BY_FIELD
4953

5054

5155
def setup_filterset(filterset_class):
@@ -54,7 +58,9 @@ def setup_filterset(filterset_class):
5458
return type(
5559
'Graphene{}'.format(filterset_class.__name__),
5660
(six.with_metaclass(GrapheneFilterSetMetaclass, filterset_class),),
57-
{},
61+
{
62+
'order_by_field': ORDER_BY_FIELD
63+
},
5864
)
5965

6066

@@ -66,6 +72,11 @@ def custom_filterset_factory(model, filterset_base_class=GrapheneFilterSet,
6672
'model': model,
6773
})
6874
meta_class = type(str('Meta'), (object,), meta)
69-
filterset = type(str('%sFilterSet' % model._meta.object_name),
70-
(filterset_base_class,), {'Meta': meta_class})
75+
filterset = type(
76+
str('%sFilterSet' % model._meta.object_name),
77+
(filterset_base_class,),
78+
{
79+
'Meta': meta_class
80+
}
81+
)
7182
return filterset

graphene/contrib/django/tests/filter/test_fields.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,27 @@ class Meta:
2424

2525

2626
def assert_arguments(field, *arguments):
27-
ignore = ('after', 'before', 'first', 'last', 'o')
27+
ignore = ('after', 'before', 'first', 'last', 'order')
2828
actual = [
2929
name
3030
for name in field.arguments.arguments.keys()
3131
if name not in ignore and not name.startswith('_')
3232
]
3333
assert set(arguments) == set(actual), \
34-
'Expected arguments ({}) did not match actual ({])'.format(
34+
'Expected arguments ({}) did not match actual ({})'.format(
3535
arguments,
3636
actual
3737
)
3838

3939

4040
def assert_orderable(field):
41-
assert 'o' in field.arguments.arguments.keys(), \
41+
assert 'order' in field.arguments.arguments.keys(), \
4242
'Field cannot be ordered'
4343

4444

4545
def assert_not_orderable(field):
46-
assert 'o' in field.arguments.arguments.keys(), \
47-
'Field cannot be ordered'
46+
assert 'order' in field.arguments.arguments.keys(), \
47+
'Field can be ordered'
4848

4949

5050
def test_filter_explicit_filterset_arguments():

graphene/contrib/django/tests/filter/test_resolvers.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ def test_filter_order():
6464
resolver = FilterConnectionResolver(ArticleNode,
6565
filterset_class=ArticleFilter)
6666
resolved = resolver(inst=article, args={
67-
# TODO: This should be 'order', not 'o'
68-
'o': 'headline'
67+
'order': 'headline'
6968
}, info=None)
7069
assert 'WHERE' not in str(resolved.query)
7170
assert 'ORDER BY' in str(resolved.query)
@@ -77,8 +76,7 @@ def test_filter_order_not_available():
7776
resolver = FilterConnectionResolver(ReporterNode,
7877
filterset_class=ReporterFilter)
7978
resolved = resolver(inst=reporter, args={
80-
# TODO: This should be 'order', not 'o'
81-
'o': 'last_name'
79+
'order': 'last_name'
8280
}, info=None)
8381
assert 'WHERE' not in str(resolved.query)
8482
assert 'ORDER BY' not in str(resolved.query)

0 commit comments

Comments
 (0)