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
d80d58e9
Commit
d80d58e9
authored
Nov 20, 2014
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into 3.0-beta
parents
096c58b7
6ec96d0b
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
53 additions
and
18 deletions
+53
-18
rest_framework/exceptions.py
+18
-14
rest_framework/fields.py
+4
-0
rest_framework/renderers.py
+12
-2
rest_framework/templates/rest_framework/api_form.html
+8
-0
rest_framework/templates/rest_framework/horizontal/select.html
+3
-0
rest_framework/templates/rest_framework/inline/select.html
+4
-1
rest_framework/templates/rest_framework/vertical/select.html
+4
-1
No files found.
rest_framework/exceptions.py
View file @
d80d58e9
...
...
@@ -13,6 +13,23 @@ from rest_framework.compat import force_text
import
math
def
_force_text_recursive
(
data
):
"""
Descend into a nested data structure, forcing any
lazy translation strings into plain text.
"""
if
isinstance
(
data
,
list
):
return
[
_force_text_recursive
(
item
)
for
item
in
data
]
elif
isinstance
(
data
,
dict
):
return
dict
([
(
key
,
_force_text_recursive
(
value
))
for
key
,
value
in
data
.
items
()
])
return
force_text
(
data
)
class
APIException
(
Exception
):
"""
Base class for REST framework exceptions.
...
...
@@ -38,19 +55,6 @@ class APIException(Exception):
# from rest_framework import serializers
# raise serializers.ValidationError('Value was invalid')
def
force_text_recursive
(
data
):
if
isinstance
(
data
,
list
):
return
[
force_text_recursive
(
item
)
for
item
in
data
]
elif
isinstance
(
data
,
dict
):
return
dict
([
(
key
,
force_text_recursive
(
value
))
for
key
,
value
in
data
.
items
()
])
return
force_text
(
data
)
class
ValidationError
(
APIException
):
status_code
=
status
.
HTTP_400_BAD_REQUEST
...
...
@@ -59,7 +63,7 @@ class ValidationError(APIException):
# The details should always be coerced to a list if not already.
if
not
isinstance
(
detail
,
dict
)
and
not
isinstance
(
detail
,
list
):
detail
=
[
detail
]
self
.
detail
=
force_text_recursive
(
detail
)
self
.
detail
=
_
force_text_recursive
(
detail
)
def
__str__
(
self
):
return
str
(
self
.
detail
)
...
...
rest_framework/fields.py
View file @
d80d58e9
...
...
@@ -181,6 +181,9 @@ class Field(object):
self
.
style
=
{}
if
style
is
None
else
style
self
.
allow_null
=
allow_null
if
allow_null
and
self
.
default_empty_html
is
empty
:
self
.
default_empty_html
=
None
if
validators
is
not
None
:
self
.
validators
=
validators
[:]
...
...
@@ -495,6 +498,7 @@ class CharField(Field):
}
initial
=
''
coerce_blank_to_null
=
False
default_empty_html
=
''
def
__init__
(
self
,
**
kwargs
):
self
.
allow_blank
=
kwargs
.
pop
(
'allow_blank'
,
False
)
...
...
rest_framework/renderers.py
View file @
d80d58e9
...
...
@@ -429,7 +429,10 @@ class HTMLFormRenderer(BaseRenderer):
style
[
'base_template'
]
=
self
.
base_template
style
[
'renderer'
]
=
self
if
'template'
in
style
:
# This API needs to be finessed and finalized for 3.1
if
'template'
in
renderer_context
:
template_name
=
renderer_context
[
'template'
]
elif
'template'
in
style
:
template_name
=
style
[
'template'
]
else
:
template_name
=
style
[
'template_pack'
]
.
strip
(
'/'
)
+
'/'
+
style
[
'base_template'
]
...
...
@@ -555,7 +558,14 @@ class BrowsableAPIRenderer(BaseRenderer):
if
data
is
not
None
:
serializer
.
is_valid
()
form_renderer
=
self
.
form_renderer_class
()
return
form_renderer
.
render
(
serializer
.
data
,
self
.
accepted_media_type
,
self
.
renderer_context
)
return
form_renderer
.
render
(
serializer
.
data
,
self
.
accepted_media_type
,
dict
(
self
.
renderer_context
.
items
()
+
[(
'template'
,
'rest_framework/api_form.html'
)]
)
)
def
get_raw_data_form
(
self
,
data
,
view
,
method
,
request
):
"""
...
...
rest_framework/templates/rest_framework/api_form.html
0 → 100644
View file @
d80d58e9
{% load rest_framework %}
{% csrf_token %}
{% for field in form %}
{% if not field.read_only %}
{% render_field field style=style %}
{% endif %}
{% endfor %}
<!-- form.non_field_errors -->
rest_framework/templates/rest_framework/horizontal/select.html
View file @
d80d58e9
...
...
@@ -4,6 +4,9 @@
{% endif %}
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
name=
"{{ field.name }}"
>
{% if field.allow_null %}
<option
value=
""
{%
if
not
field
.
value
%}
selected
{%
endif
%}
>
--------
</option>
{% endif %}
{% for key, text in field.choices.items %}
<option
value=
"{{ key }}"
{%
if
key =
=
field
.
value
%}
selected
{%
endif
%}
>
{{ text }}
</option>
{% endfor %}
...
...
rest_framework/templates/rest_framework/inline/select.html
View file @
d80d58e9
...
...
@@ -3,8 +3,11 @@
<label
class=
"sr-only"
>
{{ field.label }}
</label>
{% endif %}
<select
class=
"form-control"
name=
"{{ field.name }}"
>
{% if field.allow_null %}
<option
value=
""
{%
if
not
field
.
value
%}
selected
{%
endif
%}
>
--------
</option>
{% endif %}
{% for key, text in field.choices.items %}
<option
value=
"{{ key }}"
{%
if
key =
=
field
.
value
%}
selected
{%
endif
%}
>
{{ text }}
</option>
<option
value=
"{{ key }}"
{%
if
key =
=
field
.
value
%}
selected
{%
endif
%}
>
{{ text }}
</option>
{% endfor %}
</select>
</div>
rest_framework/templates/rest_framework/vertical/select.html
View file @
d80d58e9
...
...
@@ -3,8 +3,11 @@
<label
{%
if
style
.
hide_label
%}
class=
"sr-only"
{%
endif
%}
>
{{ field.label }}
</label>
{% endif %}
<select
class=
"form-control"
name=
"{{ field.name }}"
>
{% if field.allow_null %}
<option
value=
""
{%
if
not
field
.
value
%}
selected
{%
endif
%}
>
--------
</option>
{% endif %}
{% for key, text in field.choices.items %}
<option
value=
"{{ key }}"
{%
if
key =
=
field
.
value
%}
selected
{%
endif
%}
>
{{ text }}
</option>
<option
value=
"{{ key }}"
{%
if
key =
=
field
.
value
%}
selected
{%
endif
%}
>
{{ text }}
</option>
{% endfor %}
</select>
{% if field.errors %}
...
...
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