Skip to content

Commit 373242f

Browse files
author
Ryan P Kilby
authored
Fix method name collision (#189)
* Move 'get_filter_name' => 'get_param_filter_name' * Fix tz awareness regression test DRF only appends the Zulu prefix if the datetime is in UTC. * Update changelog
1 parent 49b77cc commit 373242f

File tree

4 files changed

+38
-22
lines changed

4 files changed

+38
-22
lines changed

CHANGELOG.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
11
Unreleased:
22
-----------
33

4+
v0.10.2:
5+
--------
6+
7+
This is a maintenance release that fixes compatibility with django-filter.
8+
9+
* 189 Fix method name collision
10+
11+
12+
v0.10.1:
13+
--------
14+
15+
This is a maintenance release that fixes the following bugs:
16+
17+
* #172 Prevent deepcopying of filter's parent
18+
19+
420
v0.10.0:
521
--------
622

rest_framework_filters/filterset.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,22 @@ def expand_filters(self):
138138
return requested_filters
139139

140140
@classmethod
141-
def get_filter_name(cls, param):
141+
def get_param_filter_name(cls, param):
142142
"""
143143
Get the filter name for the request data parameter.
144144
145145
ex::
146146
147147
# regular attribute filters
148-
name = FilterSet.get_filter_name('email')
148+
name = FilterSet.get_param_filter_name('email')
149149
assert name == 'email'
150150
151151
# exclusion filters
152-
name = FilterSet.get_filter_name('email!')
152+
name = FilterSet.get_param_filter_name('email!')
153153
assert name == 'email'
154154
155155
# related filters
156-
name = FilterSet.get_filter_name('author__email')
156+
name = FilterSet.get_param_filter_name('author__email')
157157
assert name == 'author'
158158
159159
"""
@@ -217,7 +217,7 @@ def get_subset(cls, params):
217217
# param names that traverse relations are translated to just the local
218218
# filter names. eg, `author__username` => `author`. Empty values are
219219
# removed, as they indicate an unknown field eg, author__foobar__isnull
220-
filter_names = [cls.get_filter_name(param) for param in params]
220+
filter_names = [cls.get_param_filter_name(param) for param in params]
221221
filter_names = [f for f in filter_names if f is not None]
222222

223223
# attempt to retrieve related filterset subset from the cache

tests/test_filterset.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -162,32 +162,32 @@ class Meta:
162162
self.assertIs(F.base_filters['id__in'], f)
163163

164164

165-
class GetFilterNameTests(TestCase):
165+
class GetParamFilterNameTests(TestCase):
166166

167167
def test_regular_filter(self):
168-
name = UserFilter.get_filter_name('email')
168+
name = UserFilter.get_param_filter_name('email')
169169
self.assertEqual('email', name)
170170

171171
def test_exclusion_filter(self):
172-
name = UserFilter.get_filter_name('email!')
172+
name = UserFilter.get_param_filter_name('email!')
173173
self.assertEqual('email', name)
174174

175175
def test_non_filter(self):
176-
name = UserFilter.get_filter_name('foobar')
176+
name = UserFilter.get_param_filter_name('foobar')
177177
self.assertEqual(None, name)
178178

179179
def test_related_filter(self):
180180
# 'exact' matches
181-
name = NoteFilterWithRelated.get_filter_name('author')
181+
name = NoteFilterWithRelated.get_param_filter_name('author')
182182
self.assertEqual('author', name)
183183

184184
# related attribute filters
185-
name = NoteFilterWithRelated.get_filter_name('author__email')
185+
name = NoteFilterWithRelated.get_param_filter_name('author__email')
186186
self.assertEqual('author', name)
187187

188188
# non-existent related filters should match, as it's the responsibility
189189
# of the related filterset to handle non-existent filters
190-
name = NoteFilterWithRelated.get_filter_name('author__foobar')
190+
name = NoteFilterWithRelated.get_param_filter_name('author__foobar')
191191
self.assertEqual('author', name)
192192

193193
def test_twice_removed_related_filter(self):
@@ -199,21 +199,21 @@ class Meta:
199199
model = Post
200200
fields = []
201201

202-
name = PostFilterWithDirectAuthor.get_filter_name('note__title')
202+
name = PostFilterWithDirectAuthor.get_param_filter_name('note__title')
203203
self.assertEqual('note', name)
204204

205205
# 'exact' matches, preference more specific filter name, as less specific
206206
# filter may not have related access.
207-
name = PostFilterWithDirectAuthor.get_filter_name('note__author')
207+
name = PostFilterWithDirectAuthor.get_param_filter_name('note__author')
208208
self.assertEqual('note__author', name)
209209

210210
# related attribute filters
211-
name = PostFilterWithDirectAuthor.get_filter_name('note__author__email')
211+
name = PostFilterWithDirectAuthor.get_param_filter_name('note__author__email')
212212
self.assertEqual('note__author', name)
213213

214214
# non-existent related filters should match, as it's the responsibility
215215
# of the related filterset to handle non-existent filters
216-
name = PostFilterWithDirectAuthor.get_filter_name('note__author__foobar')
216+
name = PostFilterWithDirectAuthor.get_param_filter_name('note__author__foobar')
217217
self.assertEqual('note__author', name)
218218

219219
def test_name_hiding(self):
@@ -226,19 +226,19 @@ class Meta:
226226
model = Post
227227
fields = []
228228

229-
name = PostFilterNameHiding.get_filter_name('note__author')
229+
name = PostFilterNameHiding.get_param_filter_name('note__author')
230230
self.assertEqual('note__author', name)
231231

232-
name = PostFilterNameHiding.get_filter_name('note__title')
232+
name = PostFilterNameHiding.get_param_filter_name('note__title')
233233
self.assertEqual('note', name)
234234

235-
name = PostFilterNameHiding.get_filter_name('note')
235+
name = PostFilterNameHiding.get_param_filter_name('note')
236236
self.assertEqual('note', name)
237237

238-
name = PostFilterNameHiding.get_filter_name('note2')
238+
name = PostFilterNameHiding.get_param_filter_name('note2')
239239
self.assertEqual('note2', name)
240240

241-
name = PostFilterNameHiding.get_filter_name('note2__author')
241+
name = PostFilterNameHiding.get_param_filter_name('note2__author')
242242
self.assertEqual('note2', name)
243243

244244

tests/test_regressions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def test_implicit_date_filters(self):
100100
p = list(f.qs)[0]
101101
self.assertEqual(p.name, "John")
102102

103-
@override_settings(USE_TZ=True)
103+
@override_settings(USE_TZ=True, TIME_ZONE='UTC')
104104
def test_datetime_timezone_awareness(self):
105105
# Addresses issue #24 - ensure that datetime strings terminating
106106
# in 'Z' are correctly handled.

0 commit comments

Comments
 (0)