Skip to content

Commit 8952b79

Browse files
authored
Add explicit ID filtering to tables. (#542)
Fixes #541.
1 parent bbfcf18 commit 8952b79

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

mreg/api/v1/filters.py

+29-29
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
ReverseZoneDelegation,
1818
)
1919

20+
class FilterWithID(filters.FilterSet):
21+
id = filters.NumberFilter(field_name="id")
22+
id__in = filters.BaseInFilter(field_name="id")
23+
id__gt = filters.NumberFilter(field_name="id", lookup_expr="gt")
24+
id__lt = filters.NumberFilter(field_name="id", lookup_expr="lt")
25+
2026

2127
class JSONFieldExactFilter(filters.CharFilter):
2228
pass
@@ -26,152 +32,146 @@ class CIDRFieldExactFilter(filters.CharFilter):
2632
pass
2733

2834

29-
class BACnetIDFilterSet(filters.FilterSet):
35+
class BACnetIDFilterSet(FilterWithID):
3036
class Meta:
3137
model = BACnetID
3238
fields = "__all__"
3339

3440

35-
class CnameFilterSet(filters.FilterSet):
41+
class CnameFilterSet(FilterWithID):
3642
class Meta:
3743
model = Cname
3844
fields = "__all__"
3945

4046

41-
class ForwardZoneFilterSet(filters.FilterSet):
47+
class ForwardZoneFilterSet(FilterWithID):
4248
class Meta:
4349
model = ForwardZone
4450
fields = "__all__"
4551

4652

47-
class ForwardZoneDelegationFilterSet(filters.FilterSet):
53+
class ForwardZoneDelegationFilterSet(FilterWithID):
4854
class Meta:
4955
model = ForwardZoneDelegation
5056
fields = "__all__"
5157

5258

53-
class HinfoFilterSet(filters.FilterSet):
59+
class HinfoFilterSet(FilterWithID):
5460
class Meta:
5561
model = Hinfo
5662
fields = "__all__"
5763

5864

59-
class HistoryFilterSet(filters.FilterSet):
65+
class HistoryFilterSet(FilterWithID):
6066
data = JSONFieldExactFilter(field_name="data")
6167

6268
class Meta:
6369
model = History
6470
fields = "__all__"
6571

6672

67-
class HostFilterSet(filters.FilterSet):
68-
69-
# It's weird that we have to define the id field here, but it's necessary for the filters to work.
70-
id = filters.NumberFilter(field_name="id")
71-
id__in = filters.BaseInFilter(field_name="id")
72-
id__gt = filters.NumberFilter(field_name="id", lookup_expr="gt")
73-
id__lt = filters.NumberFilter(field_name="id", lookup_expr="lt")
73+
class HostFilterSet(FilterWithID):
7474
class Meta:
7575
model = Host
7676
fields = "__all__"
7777

7878

79-
class HostGroupFilterSet(filters.FilterSet):
79+
class HostGroupFilterSet(FilterWithID):
8080
class Meta:
8181
model = HostGroup
8282
fields = "__all__"
8383

8484

85-
class IpaddressFilterSet(filters.FilterSet):
85+
class IpaddressFilterSet(FilterWithID):
8686
class Meta:
8787
model = Ipaddress
8888
fields = "__all__"
8989

9090

91-
class LabelFilterSet(filters.FilterSet):
91+
class LabelFilterSet(FilterWithID):
9292
class Meta:
9393
model = Label
9494
fields = "__all__"
9595

9696

97-
class LocFilterSet(filters.FilterSet):
97+
class LocFilterSet(FilterWithID):
9898
class Meta:
9999
model = Loc
100100
fields = "__all__"
101101

102102

103-
class MxFilterSet(filters.FilterSet):
103+
class MxFilterSet(FilterWithID):
104104
class Meta:
105105
model = Mx
106106
fields = "__all__"
107107

108108

109-
class NameServerFilterSet(filters.FilterSet):
109+
class NameServerFilterSet(FilterWithID):
110110
class Meta:
111111
model = NameServer
112112
fields = "__all__"
113113

114114

115-
class NaptrFilterSet(filters.FilterSet):
115+
class NaptrFilterSet(FilterWithID):
116116
class Meta:
117117
model = Naptr
118118
fields = "__all__"
119119

120120

121-
class NetGroupRegexPermissionFilterSet(filters.FilterSet):
121+
class NetGroupRegexPermissionFilterSet(FilterWithID):
122122
range = CIDRFieldExactFilter(field_name="range")
123123

124124
class Meta:
125125
model = NetGroupRegexPermission
126126
fields = "__all__"
127127

128128

129-
class NetworkFilterSet(filters.FilterSet):
129+
class NetworkFilterSet(FilterWithID):
130130
network = CIDRFieldExactFilter(field_name="network")
131131

132132
class Meta:
133133
model = Network
134134
fields = "__all__"
135135

136136

137-
class NetworkExcludedRangeFilterSet(filters.FilterSet):
137+
class NetworkExcludedRangeFilterSet(FilterWithID):
138138
class Meta:
139139
model = NetworkExcludedRange
140140
fields = "__all__"
141141

142142

143-
class PtrOverrideFilterSet(filters.FilterSet):
143+
class PtrOverrideFilterSet(FilterWithID):
144144
class Meta:
145145
model = PtrOverride
146146
fields = "__all__"
147147

148148

149-
class ReverseZoneFilterSet(filters.FilterSet):
149+
class ReverseZoneFilterSet(FilterWithID):
150150
network = CIDRFieldExactFilter(field_name="network")
151151

152152
class Meta:
153153
model = ReverseZone
154154
fields = "__all__"
155155

156156

157-
class ReverseZoneDelegationFilterSet(filters.FilterSet):
157+
class ReverseZoneDelegationFilterSet(FilterWithID):
158158
class Meta:
159159
model = ReverseZoneDelegation
160160
fields = "__all__"
161161

162-
class SrvFilterSet(filters.FilterSet):
162+
class SrvFilterSet(FilterWithID):
163163
class Meta:
164164
model = Srv
165165
fields = "__all__"
166166

167167

168-
class SshfpFilterSet(filters.FilterSet):
168+
class SshfpFilterSet(FilterWithID):
169169
class Meta:
170170
model = Sshfp
171171
fields = "__all__"
172172

173173

174-
class TxtFilterSet(filters.FilterSet):
174+
class TxtFilterSet(FilterWithID):
175175
class Meta:
176176
model = Txt
177177
fields = "__all__"

0 commit comments

Comments
 (0)