Skip to content

Commit

Permalink
Use filter label as argument description. Fixed #16
Browse files Browse the repository at this point in the history
  • Loading branch information
syrusakbary committed Oct 16, 2016
1 parent 775221c commit 60bcc0b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
23 changes: 18 additions & 5 deletions graphene_django/filter/tests/test_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import pytest

from graphene import Field, ObjectType, Schema
from graphene import Field, ObjectType, Schema, Argument, Float
from graphene.relay import Node
from graphene_django import DjangoObjectType
from graphene_django.forms import (GlobalIDFormField,
Expand Down Expand Up @@ -46,10 +46,7 @@ class Meta:


def get_args(field):
if isinstance(field.args, list):
return {arg.name: arg for arg in field.args}
else:
return field.args
return field.args


def assert_arguments(field, *arguments):
Expand Down Expand Up @@ -252,6 +249,22 @@ class Meta:
assert id_filter.field_class == GlobalIDFormField


def test_filterset_descriptions():
class ArticleIdFilter(django_filters.FilterSet):

class Meta:
model = Article
fields = ['id']

max_time = django_filters.NumberFilter(method='filter_max_time', label="The maximum time")

field = DjangoFilterConnectionField(ArticleNode, filterset_class=ArticleIdFilter)
max_time = field.args['max_time']
assert isinstance(max_time, Argument)
assert max_time.type == Float
assert max_time.description == 'The maximum time'


def test_global_id_field_relation():
field = DjangoFilterConnectionField(ArticleNode, fields=['reporter'])
filterset_class = field.filterset_class
Expand Down
4 changes: 3 additions & 1 deletion graphene_django/filter/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ def get_filtering_args_from_filterset(filterset_class, type):

args = {}
for name, filter_field in six.iteritems(filterset_class.base_filters):
field_type = convert_form_field(filter_field.field)
field_type = convert_form_field(filter_field.field).Argument()
field_type.description = filter_field.label
args[name] = field_type

# Also add the 'order_by' field
if filterset_class._meta.order_by:
args[filterset_class.order_by_field] = String()

return args


Expand Down

0 comments on commit 60bcc0b

Please sign in to comment.