Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
c9535c03
Commit
c9535c03
authored
Aug 19, 2014
by
Xavier Ordoquy
Browse files
Options
Browse Files
Download
Plain Diff
Merged #1398 against 2.4 branch.
parents
4876bec9
4d45865b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
2 deletions
+38
-2
rest_framework/filters.py
+1
-1
tests/models.py
+12
-0
tests/test_filters.py
+25
-1
No files found.
rest_framework/filters.py
View file @
c9535c03
...
...
@@ -44,7 +44,7 @@ class DjangoFilterBackend(BaseFilterBackend):
if
filter_class
:
filter_model
=
filter_class
.
Meta
.
model
assert
issubclass
(
filter_model
,
queryset
.
model
),
\
assert
issubclass
(
queryset
.
model
,
filter_
model
),
\
'FilterSet model
%
s does not match queryset model
%
s'
%
\
(
filter_model
,
queryset
.
model
)
...
...
tests/models.py
View file @
c9535c03
...
...
@@ -60,6 +60,18 @@ class ReadOnlyManyToManyModel(RESTFrameworkModel):
rel
=
models
.
ManyToManyField
(
Anchor
)
class
BaseFilterableItem
(
RESTFrameworkModel
):
text
=
models
.
CharField
(
max_length
=
100
)
class
Meta
:
abstract
=
True
class
FilterableItem
(
BaseFilterableItem
):
decimal
=
models
.
DecimalField
(
max_digits
=
4
,
decimal_places
=
2
)
date
=
models
.
DateField
()
# Model for regression test for #285
class
Comment
(
RESTFrameworkModel
):
...
...
tests/test_filters.py
View file @
c9535c03
...
...
@@ -9,7 +9,7 @@ from django.conf.urls import patterns, url
from
rest_framework
import
generics
,
serializers
,
status
,
filters
from
rest_framework.compat
import
django_filters
from
rest_framework.test
import
APIRequestFactory
from
.models
import
FilterableItem
,
BasicModel
from
.models
import
BaseFilterableItem
,
FilterableItem
,
BasicModel
from
.utils
import
temporary_setting
factory
=
APIRequestFactory
()
...
...
@@ -55,6 +55,18 @@ if django_filters:
filter_class
=
SeveralFieldsFilter
filter_backends
=
(
filters
.
DjangoFilterBackend
,)
# These classes are used to test base model filter support
class
BaseFilterableItemFilter
(
django_filters
.
FilterSet
):
text
=
django_filters
.
CharFilter
()
class
Meta
:
model
=
BaseFilterableItem
class
BaseFilterableItemFilterRootView
(
generics
.
ListCreateAPIView
):
model
=
FilterableItem
filter_class
=
BaseFilterableItemFilter
filter_backends
=
(
filters
.
DjangoFilterBackend
,)
# Regression test for #814
class
FilterableItemSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
...
...
@@ -226,6 +238,18 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
self
.
assertRaises
(
AssertionError
,
view
,
request
)
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_base_model_filter
(
self
):
"""
The `get_filter_class` model checks should allow base model filters.
"""
view
=
BaseFilterableItemFilterRootView
.
as_view
()
request
=
factory
.
get
(
'/?text=aaa'
)
response
=
view
(
request
)
.
render
()
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_unknown_filter
(
self
):
"""
GET requests with filters that aren't configured should return 200.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment