Skip to content

Commit ed634c8

Browse files
authored
Update django-filter to v1.1 (#292)
* Update Filter.name => Filter.field_name * Bump django-filter compat to v1.1 * Bump minor version, update changelog * Ditch detox in favor of tox * Pin Django<2 in perf tests * Fix warnings * Pin versions for warnings build in 0.11.x
1 parent ff8943f commit ed634c8

File tree

9 files changed

+75
-69
lines changed

9 files changed

+75
-69
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ python:
99
- "3.6"
1010

1111
install:
12-
- travis_retry pip install detox tox-travis coverage
12+
- travis_retry pip install tox tox-travis coverage
1313
script:
14-
- detox -- -v 2
14+
- tox -- -v 2
1515
after_success:
1616
- coverage report
1717
- bash <(curl -s https://codecov.io/bash)

CHANGELOG.rst

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

4+
v0.11.0
5+
-------
6+
7+
This is a minor release that upgrades django-filter compatibility from ``v1.0``
8+
to ``v1.1``. No new functionality has been introduced.
9+
410
v0.10.2.post0:
511
--------------
612

rest_framework_filters/filters.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def get_queryset(self, request):
4040
queryset = super(RelatedFilter, self).get_queryset(request)
4141
assert queryset is not None, \
4242
"Expected `.get_queryset()` for related filter '%s.%s' to return a `QuerySet`, but got `None`." \
43-
% (self.parent.__class__.__name__, self.name)
43+
% (self.parent.__class__.__name__, self.field_name)
4444
return queryset
4545

4646

rest_framework_filters/filterset.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def __new__(cls, name, bases, attrs):
4141
del declared_filters[param]
4242

4343
for param, f in six.iteritems(auto_filters):
44-
opts.fields = {f.name: f.lookups or []}
44+
opts.fields = {f.field_name: f.lookups or []}
4545

4646
# patch, generate auto filters
4747
new_class._meta, new_class.declared_filters = opts, declared_filters
@@ -50,7 +50,7 @@ def __new__(cls, name, bases, attrs):
5050
# get_filters() generates param names from the model field name
5151
# Replace the field name with the parameter name from the filerset
5252
new_class.base_filters.update(OrderedDict(
53-
(gen_param.replace(f.name, param, 1), gen_f)
53+
(gen_param.replace(f.field_name, param, 1), gen_f)
5454
for gen_param, gen_f in six.iteritems(generated_filters)
5555
))
5656

@@ -132,7 +132,7 @@ def expand_filters(self):
132132
# modify filter names to account for relationship
133133
for related_name, related_f in six.iteritems(filterset.expand_filters()):
134134
related_name = LOOKUP_SEP.join([filter_name, related_name])
135-
related_f.name = LOOKUP_SEP.join([f.name, related_f.name])
135+
related_f.field_name = LOOKUP_SEP.join([f.field_name, related_f.field_name])
136136
requested_filters[related_name] = related_f
137137

138138
return requested_filters

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def get_package_data(package):
3636

3737
setup(
3838
name='djangorestframework-filters',
39-
version='0.10.2.post0',
39+
version='0.11.0',
4040
url='http://github.com/philipn/django-rest-framework-filters',
4141
license='MIT',
4242
long_description=README,
@@ -48,7 +48,7 @@ def get_package_data(package):
4848
zip_safe=False,
4949
install_requires=[
5050
'djangorestframework',
51-
'django-filter~=1.0',
51+
'django-filter~=1.1',
5252
],
5353
classifiers=[
5454
'Development Status :: 5 - Production/Stable',

tests/test_filtering.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,8 @@ def test_relatedfilter_queryset_required(self):
349349
# The default behavior should not expose information, which requires users to
350350
# explicitly set the `queryset` argument.
351351
class NoteFilter(FilterSet):
352-
title = filters.CharFilter(name='title')
353-
author = filters.RelatedFilter(UserFilter, name='author')
352+
title = filters.CharFilter(field_name='title')
353+
author = filters.RelatedFilter(UserFilter, field_name='author')
354354

355355
class Meta:
356356
model = Note
@@ -376,7 +376,7 @@ class Meta:
376376
fields = ['username']
377377

378378
class NoteFilter(FilterSet):
379-
author = filters.RelatedFilter(RequestCheck, name='author', queryset=User.objects.all())
379+
author = filters.RelatedFilter(RequestCheck, field_name='author', queryset=User.objects.all())
380380

381381
class Meta:
382382
model = Note
@@ -389,7 +389,7 @@ class Meta:
389389

390390
def test_validation(self):
391391
class F(PostFilter):
392-
pk = filters.NumberFilter(name='id')
392+
pk = filters.NumberFilter(field_name='id')
393393

394394
GET = {
395395
'note__author': 'foo',
@@ -411,7 +411,7 @@ def test_multiwidget_incompatibility(self):
411411

412412
# test django-filter functionality
413413
class PersonFilter(DFFilterSet):
414-
date_joined = filters.DateFromToRangeFilter(name='date_joined')
414+
date_joined = filters.DateFromToRangeFilter(field_name='date_joined')
415415

416416
class Meta:
417417
model = Person
@@ -426,7 +426,7 @@ class Meta:
426426

427427
# test drf-filters caveat
428428
class PersonFilter(FilterSet):
429-
date_joined = filters.DateFromToRangeFilter(name='date_joined')
429+
date_joined = filters.DateFromToRangeFilter(field_name='date_joined')
430430

431431
class Meta:
432432
model = Person

tests/test_filterset.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@ class Meta:
8686
def test_alllookupsfilter_for_related_field(self):
8787
# See: https://github.com/philipn/django-rest-framework-filters/issues/127
8888
class F(FilterSet):
89-
author = filters.AllLookupsFilter(name='author__last_name')
89+
author = filters.AllLookupsFilter(field_name='author__last_name')
9090

9191
class Meta:
9292
model = Note
9393
fields = []
9494

9595
self.assertIsInstance(F.base_filters['author'], filters.CharFilter)
96-
self.assertEqual(F.base_filters['author'].name, 'author__last_name')
96+
self.assertEqual(F.base_filters['author'].field_name, 'author__last_name')
9797

9898
def test_relatedfilter_combined_with__all__(self):
9999
# ensure that related filter is compatible with __all__ lookups.

tests/testapp/filters.py

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,62 +11,62 @@
1111

1212

1313
class DFUserFilter(django_filters.FilterSet):
14-
email = filters.CharFilter(name='email')
14+
email = filters.CharFilter(field_name='email')
1515

1616
class Meta:
1717
model = User
1818
fields = '__all__'
1919

2020

2121
class NoteFilterWithAll(FilterSet):
22-
title = AllLookupsFilter(name='title')
22+
title = AllLookupsFilter(field_name='title')
2323

2424
class Meta:
2525
model = Note
2626
fields = []
2727

2828

2929
class UserFilter(FilterSet):
30-
username = filters.CharFilter(name='username')
31-
email = filters.CharFilter(name='email')
30+
username = filters.CharFilter(field_name='username')
31+
email = filters.CharFilter(field_name='email')
3232
last_login = filters.AllLookupsFilter()
33-
is_active = filters.BooleanFilter(name='is_active')
33+
is_active = filters.BooleanFilter(field_name='is_active')
3434

3535
class Meta:
3636
model = User
3737
fields = []
3838

3939

4040
class UserFilterWithAll(FilterSet):
41-
username = AllLookupsFilter(name='username')
42-
email = filters.CharFilter(name='email')
41+
username = AllLookupsFilter(field_name='username')
42+
email = filters.CharFilter(field_name='email')
4343

4444
class Meta:
4545
model = User
4646
fields = []
4747

4848

4949
class NoteFilterWithRelated(FilterSet):
50-
title = filters.CharFilter(name='title')
51-
author = RelatedFilter(UserFilter, name='author', queryset=User.objects.all())
50+
title = filters.CharFilter(field_name='title')
51+
author = RelatedFilter(UserFilter, field_name='author', queryset=User.objects.all())
5252

5353
class Meta:
5454
model = Note
5555
fields = []
5656

5757

5858
class NoteFilterWithRelatedAll(FilterSet):
59-
title = filters.CharFilter(name='title')
60-
author = RelatedFilter(UserFilterWithAll, name='author', queryset=User.objects.all())
59+
title = filters.CharFilter(field_name='title')
60+
author = RelatedFilter(UserFilterWithAll, field_name='author', queryset=User.objects.all())
6161

6262
class Meta:
6363
model = Note
6464
fields = []
6565

6666

6767
class NoteFilterWithRelatedAllDifferentFilterName(FilterSet):
68-
title = filters.CharFilter(name='title')
69-
writer = RelatedFilter(UserFilterWithAll, name='author', queryset=User.objects.all())
68+
title = filters.CharFilter(field_name='title')
69+
writer = RelatedFilter(UserFilterWithAll, field_name='author', queryset=User.objects.all())
7070

7171
class Meta:
7272
model = Note
@@ -75,9 +75,9 @@ class Meta:
7575

7676
class PostFilter(FilterSet):
7777
# Used for Related filter and Filter.method regression tests
78-
note = RelatedFilter(NoteFilterWithRelatedAll, name='note', queryset=Note.objects.all())
78+
note = RelatedFilter(NoteFilterWithRelatedAll, field_name='note', queryset=Note.objects.all())
7979
date_published = filters.AllLookupsFilter()
80-
is_published = filters.BooleanFilter(name='date_published', method='filter_is_published')
80+
is_published = filters.BooleanFilter(field_name='date_published', method='filter_is_published')
8181

8282
class Meta:
8383
model = Post
@@ -95,68 +95,68 @@ def filter_is_published(self, qs, name, value):
9595

9696

9797
class CoverFilterWithRelatedMethodFilter(FilterSet):
98-
comment = filters.CharFilter(name='comment')
99-
post = RelatedFilter(PostFilter, name='post', queryset=Post.objects.all())
98+
comment = filters.CharFilter(field_name='comment')
99+
post = RelatedFilter(PostFilter, field_name='post', queryset=Post.objects.all())
100100

101101
class Meta:
102102
model = Cover
103103
fields = []
104104

105105

106106
class CoverFilterWithRelated(FilterSet):
107-
comment = filters.CharFilter(name='comment')
108-
post = RelatedFilter(PostFilter, name='post', queryset=Post.objects.all())
107+
comment = filters.CharFilter(field_name='comment')
108+
post = RelatedFilter(PostFilter, field_name='post', queryset=Post.objects.all())
109109

110110
class Meta:
111111
model = Cover
112112
fields = []
113113

114114

115115
class PageFilterWithRelated(FilterSet):
116-
title = filters.CharFilter(name='title')
117-
previous_page = RelatedFilter(PostFilter, name='previous_page', queryset=Post.objects.all())
116+
title = filters.CharFilter(field_name='title')
117+
previous_page = RelatedFilter(PostFilter, field_name='previous_page', queryset=Post.objects.all())
118118

119119
class Meta:
120120
model = Page
121121
fields = []
122122

123123

124124
class PageFilterWithAliasedNestedRelated(FilterSet):
125-
title = filters.CharFilter(name='title')
126-
two_pages_back = RelatedFilter(PostFilter, name='previous_page__previous_page', queryset=Page.objects.all())
125+
title = filters.CharFilter(field_name='title')
126+
two_pages_back = RelatedFilter(PostFilter, field_name='previous_page__previous_page', queryset=Page.objects.all())
127127

128128
class Meta:
129129
model = Page
130130
fields = []
131131

132132

133133
class TagFilter(FilterSet):
134-
name = AllLookupsFilter(name='name')
134+
name = AllLookupsFilter(field_name='name')
135135

136136
class Meta:
137137
model = Tag
138138
fields = []
139139

140140

141141
class BlogPostFilter(FilterSet):
142-
title = filters.CharFilter(name='title')
143-
tags = RelatedFilter(TagFilter, name='tags', queryset=Tag.objects.all())
142+
title = filters.CharFilter(field_name='title')
143+
tags = RelatedFilter(TagFilter, field_name='tags', queryset=Tag.objects.all())
144144

145145
class Meta:
146146
model = BlogPost
147147
fields = []
148148

149149

150150
class UserFilterWithDifferentName(FilterSet):
151-
name = filters.CharFilter(name='username')
151+
name = filters.CharFilter(field_name='username')
152152

153153
class Meta:
154154
model = User
155155
fields = []
156156

157157

158158
class NoteFilterWithRelatedDifferentName(FilterSet):
159-
author = RelatedFilter(UserFilterWithDifferentName, name='author', queryset=User.objects.all())
159+
author = RelatedFilter(UserFilterWithDifferentName, field_name='author', queryset=User.objects.all())
160160

161161
class Meta:
162162
model = Note
@@ -167,35 +167,35 @@ class Meta:
167167
# Recursive filtersets
168168
#############################################################
169169
class AFilter(FilterSet):
170-
title = filters.CharFilter(name='title')
171-
b = RelatedFilter('tests.testapp.filters.BFilter', name='b', queryset=B.objects.all())
170+
title = filters.CharFilter(field_name='title')
171+
b = RelatedFilter('tests.testapp.filters.BFilter', field_name='b', queryset=B.objects.all())
172172

173173
class Meta:
174174
model = A
175175
fields = []
176176

177177

178178
class CFilter(FilterSet):
179-
title = filters.CharFilter(name='title')
180-
a = RelatedFilter(AFilter, name='a', queryset=A.objects.all())
179+
title = filters.CharFilter(field_name='title')
180+
a = RelatedFilter(AFilter, field_name='a', queryset=A.objects.all())
181181

182182
class Meta:
183183
model = C
184184
fields = []
185185

186186

187187
class BFilter(FilterSet):
188-
name = AllLookupsFilter(name='name')
189-
c = RelatedFilter(CFilter, name='c', queryset=C.objects.all())
188+
name = AllLookupsFilter(field_name='name')
189+
c = RelatedFilter(CFilter, field_name='c', queryset=C.objects.all())
190190

191191
class Meta:
192192
model = B
193193
fields = []
194194

195195

196196
class PersonFilter(FilterSet):
197-
name = AllLookupsFilter(name='name')
198-
best_friend = RelatedFilter('tests.testapp.filters.PersonFilter', name='best_friend', queryset=Person.objects.all())
197+
name = AllLookupsFilter(field_name='name')
198+
best_friend = RelatedFilter('tests.testapp.filters.PersonFilter', field_name='best_friend', queryset=Person.objects.all())
199199

200200
class Meta:
201201
model = Person
@@ -206,19 +206,19 @@ class Meta:
206206
# Extensions to django_filter fields for DRF.
207207
#############################################################
208208
class AllLookupsPersonDateFilter(FilterSet):
209-
date_joined = AllLookupsFilter(name='date_joined')
210-
time_joined = AllLookupsFilter(name='time_joined')
211-
datetime_joined = AllLookupsFilter(name='datetime_joined')
209+
date_joined = AllLookupsFilter(field_name='date_joined')
210+
time_joined = AllLookupsFilter(field_name='time_joined')
211+
datetime_joined = AllLookupsFilter(field_name='datetime_joined')
212212

213213
class Meta:
214214
model = Person
215215
fields = []
216216

217217

218218
class ExplicitLookupsPersonDateFilter(FilterSet):
219-
date_joined = AllLookupsFilter(name='date_joined')
220-
time_joined = AllLookupsFilter(name='time_joined')
221-
datetime_joined = AllLookupsFilter(name='datetime_joined')
219+
date_joined = AllLookupsFilter(field_name='date_joined')
220+
time_joined = AllLookupsFilter(field_name='time_joined')
221+
datetime_joined = AllLookupsFilter(field_name='datetime_joined')
222222

223223
class Meta:
224224
model = Person
@@ -242,8 +242,8 @@ class Meta:
242242

243243

244244
class BlogPostOverrideFilter(FilterSet):
245-
declared_publish_date__isnull = filters.NumberFilter(name='publish_date', lookup_expr='isnull')
246-
all_declared_publish_date = filters.AllLookupsFilter(name='publish_date')
245+
declared_publish_date__isnull = filters.NumberFilter(field_name='publish_date', lookup_expr='isnull')
246+
all_declared_publish_date = filters.AllLookupsFilter(field_name='publish_date')
247247

248248
class Meta:
249249
model = BlogPost

0 commit comments

Comments
 (0)