1
1
#
2
- # Copyright © 2021 Ingram Micro Inc. All rights reserved.
2
+ # Copyright © 2022 Ingram Micro Inc. All rights reserved.
3
3
#
4
4
5
5
import decimal
@@ -553,9 +553,15 @@ def _get_filter_ordering_name(self, filter_item, filter_name):
553
553
554
554
return filter_item ['orm_route' ]
555
555
556
- def _build_filters (self , filters , filter_route = '' , orm_route = '' ,
557
- orm_model = None , select_tree = None , parent_qs = None ):
556
+ def _build_filters (self , filters , ** kwargs ):
558
557
""" Converter of provided nested filter configuration to linear inner representation. """
558
+ filter_route = kwargs .get ('filter_route' , '' )
559
+ orm_route = kwargs .get ('orm_route' , '' )
560
+ orm_model = kwargs .get ('orm_model' )
561
+ select_tree = kwargs .get ('select_tree' )
562
+ parent_qs = kwargs .get ('parent_qs' )
563
+ distinct = kwargs .get ('distinct' , False )
564
+
559
565
_model = orm_model or self .MODEL
560
566
561
567
if not orm_route :
@@ -591,16 +597,23 @@ def _build_filters(self, filters, filter_route='', orm_route='',
591
597
592
598
qs = item .get ('qs' )
593
599
tree , p_qs = self ._fill_select_tree (
594
- namespace , related_filter_route , select_tree ,
600
+ namespace ,
601
+ related_filter_route ,
602
+ select_tree ,
595
603
namespace = True ,
596
604
hidden = item .get ('hidden' , False ),
597
605
qs = qs ,
598
606
parent_qs = parent_qs ,
599
607
)
600
608
601
609
self ._build_filters (
602
- item .get ('filters' , []), related_filter_route + '.' ,
603
- related_orm_route , related_model , select_tree = tree , parent_qs = p_qs ,
610
+ item .get ('filters' , []),
611
+ filter_route = related_filter_route + '.' ,
612
+ orm_route = related_orm_route ,
613
+ orm_model = related_model ,
614
+ select_tree = tree ,
615
+ parent_qs = p_qs ,
616
+ distinct = item .get ('distinct' , distinct ),
604
617
)
605
618
continue
606
619
@@ -624,15 +637,20 @@ def _build_filters(self, filters, filter_route='', orm_route='',
624
637
625
638
self ._check_use_repr (item , field_filter_route )
626
639
self ._check_dynamic (item , field_filter_route , filter_route )
627
- self ._build_filters_for_common_item (item , field_filter_route , orm_route , _model )
640
+ self ._build_filters_for_common_item (
641
+ item , field_filter_route , orm_route , _model , distinct ,
642
+ )
628
643
629
- def _build_filters_for_common_item (self , item , field_filter_route , orm_route , orm_model ):
644
+ def _build_filters_for_common_item (
645
+ self , item , field_filter_route , orm_route , orm_model , distinct ,
646
+ ):
630
647
filter_name = item ['filter' ]
631
648
field = item .get ('field' )
632
649
kwargs = {
633
650
prop : item .get (prop )
634
- for prop in ('lookups' , 'use_repr' , 'null_values' , 'distinct' , ' openapi' , 'hidden' )
651
+ for prop in ('lookups' , 'use_repr' , 'null_values' , 'openapi' , 'hidden' )
635
652
}
653
+ kwargs ['distinct' ] = item .get ('distinct' , distinct )
636
654
637
655
if 'sources' in item :
638
656
items = []
0 commit comments