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
381fdd17
Commit
381fdd17
authored
Sep 11, 2012
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #259 from j4mie/rename-properties
Better naming for properties on views, requests and responses
parents
d4f8b4cf
272c4968
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
53 additions
and
53 deletions
+53
-53
djangorestframework/renderers.py
+1
-1
djangorestframework/request.py
+7
-7
djangorestframework/response.py
+9
-9
djangorestframework/tests/authentication.py
+1
-1
djangorestframework/tests/renderers.py
+7
-7
djangorestframework/tests/request.py
+1
-1
djangorestframework/tests/response.py
+17
-17
djangorestframework/views.py
+10
-10
No files found.
djangorestframework/renderers.py
View file @
381fdd17
...
...
@@ -216,7 +216,7 @@ class DocumentingTemplateRenderer(BaseRenderer):
"""
# Find the first valid renderer and render the content. (Don't use another documenting renderer.)
renderers
=
[
renderer
for
renderer
in
view
.
renderers
renderers
=
[
renderer
for
renderer
in
view
.
renderer
_classe
s
if
not
issubclass
(
renderer
,
DocumentingTemplateRenderer
)]
if
not
renderers
:
return
'[No renderers were found]'
...
...
djangorestframework/request.py
View file @
381fdd17
...
...
@@ -37,9 +37,9 @@ class Request(object):
Kwargs:
- request(HttpRequest). The original request instance.
- parsers(list/tuple). The parsers to use for parsing the
- parsers
_classes
(list/tuple). The parsers to use for parsing the
request content.
- authentications(list/tuple). The authentications used to try
- authentication
_classe
s(list/tuple). The authentications used to try
authenticating the request's user.
"""
...
...
@@ -47,10 +47,10 @@ class Request(object):
_CONTENT_PARAM
=
api_settings
.
FORM_CONTENT_OVERRIDE
_CONTENTTYPE_PARAM
=
api_settings
.
FORM_CONTENTTYPE_OVERRIDE
def
__init__
(
self
,
request
,
parser
s
=
None
,
authentication
=
None
):
def
__init__
(
self
,
request
,
parser
_classes
=
None
,
authentication_classes
=
None
):
self
.
_request
=
request
self
.
parser
s
=
parser
s
or
()
self
.
authentication
=
authentication
or
()
self
.
parser
_classes
=
parser_classe
s
or
()
self
.
authentication
_classes
=
authentication_classes
or
()
self
.
_data
=
Empty
self
.
_files
=
Empty
self
.
_method
=
Empty
...
...
@@ -61,13 +61,13 @@ class Request(object):
"""
Instantiates and returns the list of parsers the request will use.
"""
return
[
parser
()
for
parser
in
self
.
parsers
]
return
[
parser
()
for
parser
in
self
.
parser
_classe
s
]
def
get_authentications
(
self
):
"""
Instantiates and returns the list of parsers the request will use.
"""
return
[
authentication
()
for
authentication
in
self
.
authentication
]
return
[
authentication
()
for
authentication
in
self
.
authentication
_classes
]
@property
def
method
(
self
):
...
...
djangorestframework/response.py
View file @
381fdd17
...
...
@@ -35,14 +35,14 @@ class Response(SimpleTemplateResponse):
- content(object). The raw content, not yet serialized.
This must be native Python data that renderers can handle.
(e.g.: `dict`, `str`, ...)
- renderers(list/tuple). The renderers to use for rendering the response content.
- renderer
_classe
s(list/tuple). The renderers to use for rendering the response content.
"""
_ACCEPT_QUERY_PARAM
=
api_settings
.
URL_ACCEPT_OVERRIDE
_IGNORE_IE_ACCEPT_HEADER
=
True
def
__init__
(
self
,
content
=
None
,
status
=
None
,
headers
=
None
,
view
=
None
,
request
=
None
,
renderers
=
None
,
format
=
None
):
request
=
None
,
renderer
_classe
s
=
None
,
format
=
None
):
# First argument taken by `SimpleTemplateResponse.__init__` is template_name,
# which we don't need
super
(
Response
,
self
)
.
__init__
(
None
,
status
=
status
)
...
...
@@ -52,17 +52,17 @@ class Response(SimpleTemplateResponse):
self
.
headers
=
headers
and
headers
[:]
or
[]
self
.
view
=
view
self
.
request
=
request
self
.
renderer
s
=
renderer
s
self
.
renderer
_classes
=
renderer_classe
s
self
.
format
=
format
def
get_renderers
(
self
):
"""
Instantiates and returns the list of renderers the response will use.
"""
if
self
.
renderers
is
None
:
if
self
.
renderer
_classe
s
is
None
:
renderer_classes
=
api_settings
.
DEFAULT_RENDERERS
else
:
renderer_classes
=
self
.
renderers
renderer_classes
=
self
.
renderer
_classe
s
if
self
.
format
:
return
[
cls
(
self
.
view
)
for
cls
in
renderer_classes
...
...
@@ -133,7 +133,7 @@ class Response(SimpleTemplateResponse):
def
_determine_renderer
(
self
):
"""
Determines the appropriate renderer for the output, given the list of
accepted media types, and the :attr:`renderers` set on this class.
accepted media types, and the :attr:`renderer
_classe
s` set on this class.
Returns a 2-tuple of `(renderer, media_type)`
...
...
@@ -162,12 +162,12 @@ class Response(SimpleTemplateResponse):
raise
NotAcceptable
def
_get_406_response
(
self
):
renderer
=
self
.
renderers
[
0
]
renderer
=
self
.
renderer
_classe
s
[
0
]
return
Response
(
{
'detail'
:
'Could not satisfy the client
\'
s Accept header'
,
'available_types'
:
[
renderer
.
media_type
for
renderer
in
self
.
renderers
]
for
renderer
in
self
.
renderer
_classe
s
]
},
status
=
status
.
HTTP_406_NOT_ACCEPTABLE
,
view
=
self
.
view
,
request
=
self
.
request
,
renderers
=
[
renderer
])
view
=
self
.
view
,
request
=
self
.
request
,
renderer
_classe
s
=
[
renderer
])
djangorestframework/tests/authentication.py
View file @
381fdd17
...
...
@@ -23,7 +23,7 @@ class MockView(APIView):
def
put
(
self
,
request
):
return
HttpResponse
({
'a'
:
1
,
'b'
:
2
,
'c'
:
3
})
MockView
.
authentication
+=
(
TokenAuthentication
,)
MockView
.
authentication
_classes
+=
(
TokenAuthentication
,)
urlpatterns
=
patterns
(
''
,
(
r'^$'
,
MockView
.
as_view
()),
...
...
djangorestframework/tests/renderers.py
View file @
381fdd17
...
...
@@ -51,7 +51,7 @@ class RendererB(BaseRenderer):
class
MockView
(
APIView
):
renderers
=
(
RendererA
,
RendererB
)
renderer
_classe
s
=
(
RendererA
,
RendererB
)
def
get
(
self
,
request
,
**
kwargs
):
response
=
Response
(
DUMMYCONTENT
,
status
=
DUMMYSTATUS
)
...
...
@@ -65,23 +65,23 @@ class MockGETView(APIView):
class
HTMLView
(
APIView
):
renderers
=
(
DocumentingHTMLRenderer
,
)
renderer
_classe
s
=
(
DocumentingHTMLRenderer
,
)
def
get
(
self
,
request
,
**
kwargs
):
return
Response
(
'text'
)
class
HTMLView1
(
APIView
):
renderers
=
(
DocumentingHTMLRenderer
,
JSONRenderer
)
renderer
_classe
s
=
(
DocumentingHTMLRenderer
,
JSONRenderer
)
def
get
(
self
,
request
,
**
kwargs
):
return
Response
(
'text'
)
urlpatterns
=
patterns
(
''
,
url
(
r'^.*\.(?P<format>.+)$'
,
MockView
.
as_view
(
renderers
=
[
RendererA
,
RendererB
])),
url
(
r'^$'
,
MockView
.
as_view
(
renderers
=
[
RendererA
,
RendererB
])),
url
(
r'^jsonp/jsonrenderer$'
,
MockGETView
.
as_view
(
renderers
=
[
JSONRenderer
,
JSONPRenderer
])),
url
(
r'^jsonp/nojsonrenderer$'
,
MockGETView
.
as_view
(
renderers
=
[
JSONPRenderer
])),
url
(
r'^.*\.(?P<format>.+)$'
,
MockView
.
as_view
(
renderer
_classe
s
=
[
RendererA
,
RendererB
])),
url
(
r'^$'
,
MockView
.
as_view
(
renderer
_classe
s
=
[
RendererA
,
RendererB
])),
url
(
r'^jsonp/jsonrenderer$'
,
MockGETView
.
as_view
(
renderer
_classe
s
=
[
JSONRenderer
,
JSONPRenderer
])),
url
(
r'^jsonp/nojsonrenderer$'
,
MockGETView
.
as_view
(
renderer
_classe
s
=
[
JSONPRenderer
])),
url
(
r'^html$'
,
HTMLView
.
as_view
()),
url
(
r'^html1$'
,
HTMLView1
.
as_view
()),
url
(
r'^api'
,
include
(
'djangorestframework.urls'
,
namespace
=
'djangorestframework'
))
...
...
djangorestframework/tests/request.py
View file @
381fdd17
...
...
@@ -217,7 +217,7 @@ class TestContentParsing(TestCase):
class
MockView
(
APIView
):
authentication
=
(
SessionAuthentication
,)
authentication
_classes
=
(
SessionAuthentication
,)
def
post
(
self
,
request
):
if
request
.
POST
.
get
(
'example'
)
is
not
None
:
...
...
djangorestframework/tests/response.py
View file @
381fdd17
...
...
@@ -26,12 +26,12 @@ class MockJsonRenderer(BaseRenderer):
class
TestResponseDetermineRenderer
(
TestCase
):
def
get_response
(
self
,
url
=
''
,
accept_list
=
[],
renderers
=
[]):
def
get_response
(
self
,
url
=
''
,
accept_list
=
[],
renderer
_classe
s
=
[]):
kwargs
=
{}
if
accept_list
is
not
None
:
kwargs
[
'HTTP_ACCEPT'
]
=
','
.
join
(
accept_list
)
request
=
RequestFactory
()
.
get
(
url
,
**
kwargs
)
return
Response
(
request
=
request
,
renderer
s
=
renderer
s
)
return
Response
(
request
=
request
,
renderer
_classes
=
renderer_classe
s
)
def
test_determine_accept_list_accept_header
(
self
):
"""
...
...
@@ -62,14 +62,14 @@ class TestResponseDetermineRenderer(TestCase):
Test that right renderer is chosen, in the order of Accept list.
"""
accept_list
=
[
'application/pickle'
,
'application/json'
]
renderers
=
(
MockPickleRenderer
,
MockJsonRenderer
)
response
=
self
.
get_response
(
accept_list
=
accept_list
,
renderer
s
=
renderer
s
)
renderer
_classe
s
=
(
MockPickleRenderer
,
MockJsonRenderer
)
response
=
self
.
get_response
(
accept_list
=
accept_list
,
renderer
_classes
=
renderer_classe
s
)
renderer
,
media_type
=
response
.
_determine_renderer
()
self
.
assertEqual
(
media_type
,
'application/pickle'
)
self
.
assertTrue
(
isinstance
(
renderer
,
MockPickleRenderer
))
renderers
=
(
MockJsonRenderer
,
)
response
=
self
.
get_response
(
accept_list
=
accept_list
,
renderer
s
=
renderer
s
)
renderer
_classe
s
=
(
MockJsonRenderer
,
)
response
=
self
.
get_response
(
accept_list
=
accept_list
,
renderer
_classes
=
renderer_classe
s
)
renderer
,
media_type
=
response
.
_determine_renderer
()
self
.
assertEqual
(
media_type
,
'application/json'
)
self
.
assertTrue
(
isinstance
(
renderer
,
MockJsonRenderer
))
...
...
@@ -78,8 +78,8 @@ class TestResponseDetermineRenderer(TestCase):
"""
Test determine renderer when Accept was not specified.
"""
renderers
=
(
MockPickleRenderer
,
)
response
=
self
.
get_response
(
accept_list
=
None
,
renderer
s
=
renderer
s
)
renderer
_classe
s
=
(
MockPickleRenderer
,
)
response
=
self
.
get_response
(
accept_list
=
None
,
renderer
_classes
=
renderer_classe
s
)
renderer
,
media_type
=
response
.
_determine_renderer
()
self
.
assertEqual
(
media_type
,
'*/*'
)
self
.
assertTrue
(
isinstance
(
renderer
,
MockPickleRenderer
))
...
...
@@ -89,15 +89,15 @@ class TestResponseDetermineRenderer(TestCase):
Test determine renderer when no renderer can satisfy the Accept list.
"""
accept_list
=
[
'application/json'
]
renderers
=
(
MockPickleRenderer
,
)
response
=
self
.
get_response
(
accept_list
=
accept_list
,
renderer
s
=
renderer
s
)
renderer
_classe
s
=
(
MockPickleRenderer
,
)
response
=
self
.
get_response
(
accept_list
=
accept_list
,
renderer
_classes
=
renderer_classe
s
)
self
.
assertRaises
(
NotAcceptable
,
response
.
_determine_renderer
)
class
TestResponseRenderContent
(
TestCase
):
def
get_response
(
self
,
url
=
''
,
accept_list
=
[],
content
=
None
,
renderers
=
None
):
def
get_response
(
self
,
url
=
''
,
accept_list
=
[],
content
=
None
,
renderer
_classe
s
=
None
):
request
=
RequestFactory
()
.
get
(
url
,
HTTP_ACCEPT
=
','
.
join
(
accept_list
))
return
Response
(
request
=
request
,
content
=
content
,
renderer
s
=
renderer
s
or
DEFAULT_RENDERERS
)
return
Response
(
request
=
request
,
content
=
content
,
renderer
_classes
=
renderer_classe
s
or
DEFAULT_RENDERERS
)
def
test_render
(
self
):
"""
...
...
@@ -168,29 +168,29 @@ class RendererB(BaseRenderer):
class
MockView
(
APIView
):
renderers
=
(
RendererA
,
RendererB
)
renderer
_classe
s
=
(
RendererA
,
RendererB
)
def
get
(
self
,
request
,
**
kwargs
):
return
Response
(
DUMMYCONTENT
,
status
=
DUMMYSTATUS
)
class
HTMLView
(
APIView
):
renderers
=
(
DocumentingHTMLRenderer
,
)
renderer
_classe
s
=
(
DocumentingHTMLRenderer
,
)
def
get
(
self
,
request
,
**
kwargs
):
return
Response
(
'text'
)
class
HTMLView1
(
APIView
):
renderers
=
(
DocumentingHTMLRenderer
,
JSONRenderer
)
renderer
_classe
s
=
(
DocumentingHTMLRenderer
,
JSONRenderer
)
def
get
(
self
,
request
,
**
kwargs
):
return
Response
(
'text'
)
urlpatterns
=
patterns
(
''
,
url
(
r'^.*\.(?P<format>.+)$'
,
MockView
.
as_view
(
renderers
=
[
RendererA
,
RendererB
])),
url
(
r'^$'
,
MockView
.
as_view
(
renderers
=
[
RendererA
,
RendererB
])),
url
(
r'^.*\.(?P<format>.+)$'
,
MockView
.
as_view
(
renderer
_classe
s
=
[
RendererA
,
RendererB
])),
url
(
r'^$'
,
MockView
.
as_view
(
renderer
_classe
s
=
[
RendererA
,
RendererB
])),
url
(
r'^html$'
,
HTMLView
.
as_view
()),
url
(
r'^html1$'
,
HTMLView1
.
as_view
()),
url
(
r'^restframework'
,
include
(
'djangorestframework.urls'
,
namespace
=
'djangorestframework'
))
...
...
djangorestframework/views.py
View file @
381fdd17
...
...
@@ -54,9 +54,9 @@ def _camelcase_to_spaces(content):
class
APIView
(
_View
):
renderers
=
api_settings
.
DEFAULT_RENDERERS
parsers
=
api_settings
.
DEFAULT_PARSERS
authentication
=
api_settings
.
DEFAULT_AUTHENTICATION
renderer
_classe
s
=
api_settings
.
DEFAULT_RENDERERS
parser
_classe
s
=
api_settings
.
DEFAULT_PARSERS
authentication
_classes
=
api_settings
.
DEFAULT_AUTHENTICATION
throttle_classes
=
api_settings
.
DEFAULT_THROTTLES
permission_classes
=
api_settings
.
DEFAULT_PERMISSIONS
...
...
@@ -139,35 +139,35 @@ class APIView(_View):
"""
Return a list of all the media types that this view can parse.
"""
return
[
parser
.
media_type
for
parser
in
self
.
parsers
]
return
[
parser
.
media_type
for
parser
in
self
.
parser
_classe
s
]
@property
def
_default_parser
(
self
):
"""
Return the view's default parser class.
"""
return
self
.
parsers
[
0
]
return
self
.
parser
_classe
s
[
0
]
@property
def
_rendered_media_types
(
self
):
"""
Return an list of all the media types that this response can render.
"""
return
[
renderer
.
media_type
for
renderer
in
self
.
renderers
]
return
[
renderer
.
media_type
for
renderer
in
self
.
renderer
_classe
s
]
@property
def
_rendered_formats
(
self
):
"""
Return a list of all the formats that this response can render.
"""
return
[
renderer
.
format
for
renderer
in
self
.
renderers
]
return
[
renderer
.
format
for
renderer
in
self
.
renderer
_classe
s
]
@property
def
_default_renderer
(
self
):
"""
Return the response's default renderer class.
"""
return
self
.
renderers
[
0
]
return
self
.
renderer
_classe
s
[
0
]
def
get_permissions
(
self
):
"""
...
...
@@ -201,7 +201,7 @@ class APIView(_View):
"""
Returns the initial request object.
"""
return
Request
(
request
,
parser
s
=
self
.
parsers
,
authentication
=
self
.
authentication
)
return
Request
(
request
,
parser
_classes
=
self
.
parser_classes
,
authentication_classes
=
self
.
authentication_classes
)
def
finalize_response
(
self
,
request
,
response
,
*
args
,
**
kwargs
):
"""
...
...
@@ -210,7 +210,7 @@ class APIView(_View):
if
isinstance
(
response
,
Response
):
response
.
view
=
self
response
.
request
=
request
response
.
renderer
s
=
self
.
renderer
s
response
.
renderer
_classes
=
self
.
renderer_classe
s
if
api_settings
.
FORMAT_SUFFIX_KWARG
:
response
.
format
=
kwargs
.
get
(
api_settings
.
FORMAT_SUFFIX_KWARG
,
None
)
...
...
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