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
806b0b34
Commit
806b0b34
authored
Jul 16, 2015
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Include nested objects in metadata for OPTIONS. Closes #3156. Closes #2915.
parent
81709a2c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
1 deletions
+36
-1
rest_framework/metadata.py
+2
-0
runtests.py
+9
-1
tests/test_metadata.py
+25
-0
No files found.
rest_framework/metadata.py
View file @
806b0b34
...
...
@@ -133,6 +133,8 @@ class SimpleMetadata(BaseMetadata):
if
getattr
(
field
,
'child'
,
None
):
field_info
[
'child'
]
=
self
.
get_field_info
(
field
.
child
)
elif
getattr
(
field
,
'fields'
,
None
):
field_info
[
'children'
]
=
self
.
get_serializer_info
(
field
)
if
not
field_info
.
get
(
'read_only'
)
and
hasattr
(
field
,
'choices'
):
field_info
[
'choices'
]
=
[
...
...
runtests.py
View file @
806b0b34
...
...
@@ -8,7 +8,7 @@ import sys
import
pytest
PYTEST_ARGS
=
{
'default'
:
[
'tests'
,
'--tb=short'
,
'-s'
,
'--cov'
,
'rest_framework'
],
'default'
:
[
'tests'
,
'--tb=short'
,
'-s'
],
'fast'
:
[
'tests'
,
'--tb=short'
,
'-q'
,
'-s'
],
}
...
...
@@ -87,6 +87,14 @@ if __name__ == "__main__":
if
len
(
sys
.
argv
)
>
1
:
pytest_args
=
sys
.
argv
[
1
:]
first_arg
=
pytest_args
[
0
]
try
:
pytest_args
.
remove
(
'--coverage'
)
except
ValueError
:
pass
else
:
pytest_args
=
[
'--cov'
,
'rest_framework'
]
+
pytest_args
if
first_arg
.
startswith
(
'-'
):
# `runtests.py [flags]`
pytest_args
=
[
'tests'
]
+
pytest_args
...
...
tests/test_metadata.py
View file @
806b0b34
...
...
@@ -59,6 +59,10 @@ class TestMetadata:
On generic views OPTIONS should return an 'actions' key with metadata
on the fields that may be supplied to PUT and POST requests.
"""
class
NestedField
(
serializers
.
Serializer
):
a
=
serializers
.
IntegerField
()
b
=
serializers
.
IntegerField
()
class
ExampleSerializer
(
serializers
.
Serializer
):
choice_field
=
serializers
.
ChoiceField
([
'red'
,
'green'
,
'blue'
])
integer_field
=
serializers
.
IntegerField
(
...
...
@@ -72,6 +76,7 @@ class TestMetadata:
child
=
serializers
.
IntegerField
()
)
)
nested_field
=
NestedField
()
class
ExampleView
(
views
.
APIView
):
"""Example view."""
...
...
@@ -140,6 +145,26 @@ class TestMetadata:
'read_only'
:
False
}
}
},
'nested_field'
:
{
'type'
:
'nested object'
,
'required'
:
True
,
'read_only'
:
False
,
'label'
:
'Nested field'
,
'children'
:
{
'a'
:
{
'type'
:
'integer'
,
'required'
:
True
,
'read_only'
:
False
,
'label'
:
'A'
},
'b'
:
{
'type'
:
'integer'
,
'required'
:
True
,
'read_only'
:
False
,
'label'
:
'B'
}
}
}
}
}
...
...
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