added post_resolver in django connection field

This commit is contained in:
Mardanov Timur Rustemovich 2019-02-04 13:33:51 +03:00
parent c2e175a94c
commit 1685b36e80

View File

@ -17,6 +17,7 @@ class DjangoFilterConnectionField(DjangoConnectionField):
order_by=None, order_by=None,
extra_filter_meta=None, extra_filter_meta=None,
filterset_class=None, filterset_class=None,
post_resolver=None,
*args, *args,
**kwargs **kwargs
): ):
@ -25,6 +26,7 @@ class DjangoFilterConnectionField(DjangoConnectionField):
self._filterset_class = None self._filterset_class = None
self._extra_filter_meta = extra_filter_meta self._extra_filter_meta = extra_filter_meta
self._base_args = None self._base_args = None
self._post_resolver = post_resolver
super(DjangoFilterConnectionField, self).__init__(type, *args, **kwargs) super(DjangoFilterConnectionField, self).__init__(type, *args, **kwargs)
@property @property
@ -91,6 +93,7 @@ class DjangoFilterConnectionField(DjangoConnectionField):
self.enforce_first_or_last, self.enforce_first_or_last,
self.filterset_class, self.filterset_class,
self.filtering_args, self.filtering_args,
self._post_resolver,
) )
@classmethod @classmethod
@ -102,6 +105,7 @@ class DjangoFilterConnectionField(DjangoConnectionField):
enforce_first_or_last, enforce_first_or_last,
filterset_class, filterset_class,
filtering_args, filtering_args,
post_resolver,
root, root,
info, info,
**args): **args):
@ -141,6 +145,9 @@ class DjangoFilterConnectionField(DjangoConnectionField):
for item in rels.items(): for item in rels.items():
qs=qs.has(**{item[0]: item[1]}) qs=qs.has(**{item[0]: item[1]})
if post_resolver:
qs = post_resolver(qs, info, **args)
if order: if order:
qs=qs.order_by(order) qs=qs.order_by(order)