upd tests

This commit is contained in:
DonQueso89 2021-01-29 16:20:15 +01:00
parent a107c29566
commit c191b78e1c
2 changed files with 23 additions and 28 deletions

View File

@ -33,12 +33,7 @@ class PetNode(DjangoObjectType):
class PersonFilterSet(FilterSet): class PersonFilterSet(FilterSet):
class Meta: class Meta:
model = Person model = Person
fields = {} fields = {"name": ["in"]}
names = filters.BaseInFilter(method="filter_names")
def filter_names(self, qs, name, value):
return qs.filter(name__in=value)
class PersonNode(DjangoObjectType): class PersonNode(DjangoObjectType):
@ -47,7 +42,6 @@ class PersonNode(DjangoObjectType):
interfaces = (Node,) interfaces = (Node,)
filterset_class = PersonFilterSet filterset_class = PersonFilterSet
class Query(ObjectType): class Query(ObjectType):
pets = DjangoFilterConnectionField(PetNode) pets = DjangoFilterConnectionField(PetNode)
people = DjangoFilterConnectionField(PersonNode) people = DjangoFilterConnectionField(PersonNode)
@ -92,7 +86,7 @@ def test_string_in_filter_with_filterset_class():
query = """ query = """
query { query {
people (names: ["John", "Michael"]) { people (name_In: ["John", "Michael"]) {
edges { edges {
node { node {
name name

View File

@ -79,23 +79,24 @@ def replace_csv_filters(filterset_class):
""" """
for name, filter_field in list(filterset_class.base_filters.items()): for name, filter_field in list(filterset_class.base_filters.items()):
filter_type = filter_field.lookup_expr filter_type = filter_field.lookup_expr
if name not in filterset_class.declared_filters: if name in filterset_class.declared_filters:
if filter_type in {"in", "contains", "overlap"}: continue
filterset_class.base_filters[name] = InFilter( if filter_type in {"in", "contains", "overlap"}:
field_name=filter_field.field_name, filterset_class.base_filters[name] = InFilter(
lookup_expr=filter_field.lookup_expr, field_name=filter_field.field_name,
label=filter_field.label, lookup_expr=filter_field.lookup_expr,
method=filter_field.method, label=filter_field.label,
exclude=filter_field.exclude, method=filter_field.method,
**filter_field.extra exclude=filter_field.exclude,
) **filter_field.extra
)
elif filter_type == "range": elif filter_type == "range":
filterset_class.base_filters[name] = RangeFilter( filterset_class.base_filters[name] = RangeFilter(
field_name=filter_field.field_name, field_name=filter_field.field_name,
lookup_expr=filter_field.lookup_expr, lookup_expr=filter_field.lookup_expr,
label=filter_field.label, label=filter_field.label,
method=filter_field.method, method=filter_field.method,
exclude=filter_field.exclude, exclude=filter_field.exclude,
**filter_field.extra **filter_field.extra
) )