55from django .utils .translation import gettext as _
66from netaddr import AddrFormatError
77
8- from core .choices import JobStatusChoices
9- from ipam .models import IPAddress
10- from netbox .filtersets import NetBoxModelFilterSet , BaseFilterSet
8+ from netbox .filtersets import BaseFilterSet
119from dcim .models import Device
1210from netbox_config_backup import models
1311from netbox_config_backup .choices import FileTypeChoices
14- from utilities .filters import MultiValueCharFilter
1512
1613
1714class BackupJobFilterSet (BaseFilterSet ):
@@ -24,6 +21,17 @@ class Meta:
2421 model = models .BackupJob
2522 fields = ['id' , 'status' ]
2623
24+ def search (self , queryset , name , value ):
25+ if not value .strip ():
26+ return queryset
27+ qs_filter = (
28+ Q (backup__name__icontains = value )
29+ | Q (backup__ip__address__icontains = value )
30+ | Q (backup__device__name__icontains = value )
31+ )
32+
33+ return queryset .filter (qs_filter )
34+
2735
2836class BackupFilterSet (BaseFilterSet ):
2937 q = django_filters .CharFilter (
@@ -34,12 +42,16 @@ class BackupFilterSet(BaseFilterSet):
3442 field_name = 'device__name' ,
3543 queryset = Device .objects .all (),
3644 to_field_name = 'name' ,
37- label = 'Device (name)' ,
45+ label = _ ( 'Device (name)' ) ,
3846 )
3947 device_id = django_filters .ModelMultipleChoiceFilter (
4048 field_name = 'device' ,
4149 queryset = Device .objects .all (),
42- label = 'Device (ID)' ,
50+ label = _ ('Device (ID)' ),
51+ )
52+ config_status = django_filters .BooleanFilter (
53+ field_name = 'config_status' ,
54+ label = _ ('Config Saved' ),
4355 )
4456 ip = django_filters .CharFilter (
4557 method = 'filter_address' ,
@@ -54,11 +66,11 @@ def search(self, queryset, name, value):
5466 if not value .strip ():
5567 return queryset
5668 qs_filter = (
57- Q (name__icontains = value ) |
58- Q (device__name__icontains = value ) |
59- Q (device__primary_ip4__address__contains = value .strip ()) |
60- Q (device__primary_ip6__address__contains = value .strip ()) |
61- Q (ip__address__contains = value .strip ())
69+ Q (name__icontains = value )
70+ | Q (device__name__icontains = value )
71+ | Q (device__primary_ip4__address__contains = value .strip ())
72+ | Q (device__primary_ip6__address__contains = value .strip ())
73+ | Q (ip__address__contains = value .strip ())
6274 )
6375
6476 try :
@@ -81,7 +93,7 @@ def filter_address(self, queryset, name, value):
8193 return queryset .filter (query )
8294 else :
8395 return queryset .filter (ip__address__net_host_contained = value )
84- except ValidationError as e :
96+ except ValidationError :
8597 return queryset .none ()
8698
8799
@@ -91,9 +103,7 @@ class BackupsFilterSet(BaseFilterSet):
91103 label = _ ('Search' ),
92104 )
93105 type = django_filters .MultipleChoiceFilter (
94- field_name = 'file__type' ,
95- choices = FileTypeChoices ,
96- null_value = None
106+ field_name = 'file__type' , choices = FileTypeChoices , null_value = None
97107 )
98108
99109 class Meta :
@@ -103,8 +113,5 @@ class Meta:
103113 def search (self , queryset , name , value ):
104114 if not value .strip ():
105115 return queryset
106- qs_filter = (
107- Q (file__type = value ) |
108- Q (file__type__startswith = value )
109- )
116+ qs_filter = Q (file__type = value ) | Q (file__type__startswith = value )
110117 return queryset .filter (qs_filter )
0 commit comments