@@ -978,9 +978,12 @@ class ConsoleConnectionFilter(django_filters.FilterSet):
978
978
method = 'filter_site' ,
979
979
label = 'Site (slug)' ,
980
980
)
981
- device = django_filters .CharFilter (
981
+ device_id = MultiValueNumberFilter (
982
+ method = 'filter_device'
983
+ )
984
+ device = MultiValueCharFilter (
982
985
method = 'filter_device' ,
983
- label = 'Device' ,
986
+ field_name = 'device__name'
984
987
)
985
988
986
989
class Meta :
@@ -993,11 +996,11 @@ def filter_site(self, queryset, name, value):
993
996
return queryset .filter (connected_endpoint__device__site__slug = value )
994
997
995
998
def filter_device (self , queryset , name , value ):
996
- if not value . strip () :
999
+ if not value :
997
1000
return queryset
998
1001
return queryset .filter (
999
- Q (device__name__icontains = value ) |
1000
- Q (connected_endpoint__device__name__icontains = value )
1002
+ Q (** { '{}__in' . format ( name ): value } ) |
1003
+ Q (** { 'connected_endpoint__{}__in' . format ( name ): value } )
1001
1004
)
1002
1005
1003
1006
@@ -1006,9 +1009,12 @@ class PowerConnectionFilter(django_filters.FilterSet):
1006
1009
method = 'filter_site' ,
1007
1010
label = 'Site (slug)' ,
1008
1011
)
1009
- device = django_filters .CharFilter (
1012
+ device_id = MultiValueNumberFilter (
1013
+ method = 'filter_device'
1014
+ )
1015
+ device = MultiValueCharFilter (
1010
1016
method = 'filter_device' ,
1011
- label = 'Device' ,
1017
+ field_name = 'device__name'
1012
1018
)
1013
1019
1014
1020
class Meta :
@@ -1021,11 +1027,11 @@ def filter_site(self, queryset, name, value):
1021
1027
return queryset .filter (_connected_poweroutlet__device__site__slug = value )
1022
1028
1023
1029
def filter_device (self , queryset , name , value ):
1024
- if not value . strip () :
1030
+ if not value :
1025
1031
return queryset
1026
1032
return queryset .filter (
1027
- Q (device__name__icontains = value ) |
1028
- Q (_connected_poweroutlet__device__name__icontains = value )
1033
+ Q (** { '{}__in' . format ( name ): value } ) |
1034
+ Q (** { '_connected_poweroutlet__{}__in' . format ( name ): value } )
1029
1035
)
1030
1036
1031
1037
@@ -1034,9 +1040,12 @@ class InterfaceConnectionFilter(django_filters.FilterSet):
1034
1040
method = 'filter_site' ,
1035
1041
label = 'Site (slug)' ,
1036
1042
)
1037
- device = django_filters .CharFilter (
1043
+ device_id = MultiValueNumberFilter (
1044
+ method = 'filter_device'
1045
+ )
1046
+ device = MultiValueCharFilter (
1038
1047
method = 'filter_device' ,
1039
- label = 'Device' ,
1048
+ field_name = 'device__name'
1040
1049
)
1041
1050
1042
1051
class Meta :
@@ -1052,11 +1061,11 @@ def filter_site(self, queryset, name, value):
1052
1061
)
1053
1062
1054
1063
def filter_device (self , queryset , name , value ):
1055
- if not value . strip () :
1064
+ if not value :
1056
1065
return queryset
1057
1066
return queryset .filter (
1058
- Q (device__name__icontains = value ) |
1059
- Q (_connected_interface__device__name__icontains = value )
1067
+ Q (** { '{}__in' . format ( name ): value } ) |
1068
+ Q (** { '_connected_interface__{}__in' . format ( name ): value } )
1060
1069
)
1061
1070
1062
1071
0 commit comments