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
e8db1834
Commit
e8db1834
authored
Jan 23, 2015
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added UUIDField.
parent
4201c9fb
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
43 additions
and
1 deletions
+43
-1
rest_framework/fields.py
+18
-0
rest_framework/serializers.py
+7
-1
tests/test_fields.py
+18
-0
No files found.
rest_framework/fields.py
View file @
e8db1834
...
@@ -23,6 +23,7 @@ import datetime
...
@@ -23,6 +23,7 @@ import datetime
import
decimal
import
decimal
import
inspect
import
inspect
import
re
import
re
import
uuid
class
empty
:
class
empty
:
...
@@ -632,6 +633,23 @@ class URLField(CharField):
...
@@ -632,6 +633,23 @@ class URLField(CharField):
self
.
validators
.
append
(
validator
)
self
.
validators
.
append
(
validator
)
class
UUIDField
(
Field
):
default_error_messages
=
{
'invalid'
:
_
(
'"{value}" is not a valid UUID.'
),
}
def
to_internal_value
(
self
,
data
):
if
not
isinstance
(
data
,
uuid
.
UUID
):
try
:
return
uuid
.
UUID
(
data
)
except
(
ValueError
,
TypeError
):
self
.
fail
(
'invalid'
,
value
=
data
)
return
data
def
to_representation
(
self
,
value
):
return
str
(
value
)
# Number types...
# Number types...
class
IntegerField
(
Field
):
class
IntegerField
(
Field
):
...
...
rest_framework/serializers.py
View file @
e8db1834
...
@@ -702,6 +702,7 @@ class ModelSerializer(Serializer):
...
@@ -702,6 +702,7 @@ class ModelSerializer(Serializer):
you need you should either declare the extra/differing fields explicitly on
you need you should either declare the extra/differing fields explicitly on
the serializer class, or simply use a `Serializer` class.
the serializer class, or simply use a `Serializer` class.
"""
"""
_field_mapping
=
ClassLookupDict
({
_field_mapping
=
ClassLookupDict
({
models
.
AutoField
:
IntegerField
,
models
.
AutoField
:
IntegerField
,
models
.
BigIntegerField
:
IntegerField
,
models
.
BigIntegerField
:
IntegerField
,
...
@@ -724,7 +725,8 @@ class ModelSerializer(Serializer):
...
@@ -724,7 +725,8 @@ class ModelSerializer(Serializer):
models
.
SmallIntegerField
:
IntegerField
,
models
.
SmallIntegerField
:
IntegerField
,
models
.
TextField
:
CharField
,
models
.
TextField
:
CharField
,
models
.
TimeField
:
TimeField
,
models
.
TimeField
:
TimeField
,
models
.
URLField
:
URLField
,
models
.
URLField
:
URLField
# Note: Some version-specific mappings also defined below.
})
})
_related_class
=
PrimaryKeyRelatedField
_related_class
=
PrimaryKeyRelatedField
...
@@ -1132,6 +1134,10 @@ class ModelSerializer(Serializer):
...
@@ -1132,6 +1134,10 @@ class ModelSerializer(Serializer):
return
NestedSerializer
return
NestedSerializer
if
hasattr
(
models
,
'UUIDField'
):
ModelSerializer
.
_field_mapping
[
models
.
UUIDField
]
=
UUIDField
class
HyperlinkedModelSerializer
(
ModelSerializer
):
class
HyperlinkedModelSerializer
(
ModelSerializer
):
"""
"""
A type of `ModelSerializer` that uses hyperlinked relationships instead
A type of `ModelSerializer` that uses hyperlinked relationships instead
...
...
tests/test_fields.py
View file @
e8db1834
...
@@ -4,6 +4,7 @@ from rest_framework import serializers
...
@@ -4,6 +4,7 @@ from rest_framework import serializers
import
datetime
import
datetime
import
django
import
django
import
pytest
import
pytest
import
uuid
# Tests for field keyword arguments and core functionality.
# Tests for field keyword arguments and core functionality.
...
@@ -467,6 +468,23 @@ class TestURLField(FieldValues):
...
@@ -467,6 +468,23 @@ class TestURLField(FieldValues):
field
=
serializers
.
URLField
()
field
=
serializers
.
URLField
()
class
TestUUIDField
(
FieldValues
):
"""
Valid and invalid values for `UUIDField`.
"""
valid_inputs
=
{
'825d7aeb-05a9-45b5-a5b7-05df87923cda'
:
uuid
.
UUID
(
'825d7aeb-05a9-45b5-a5b7-05df87923cda'
),
'825d7aeb05a945b5a5b705df87923cda'
:
uuid
.
UUID
(
'825d7aeb-05a9-45b5-a5b7-05df87923cda'
)
}
invalid_inputs
=
{
'825d7aeb-05a9-45b5-a5b7'
:
[
'"825d7aeb-05a9-45b5-a5b7" is not a valid UUID.'
]
}
outputs
=
{
uuid
.
UUID
(
'825d7aeb-05a9-45b5-a5b7-05df87923cda'
):
'825d7aeb-05a9-45b5-a5b7-05df87923cda'
}
field
=
serializers
.
UUIDField
()
# Number types...
# Number types...
class
TestIntegerField
(
FieldValues
):
class
TestIntegerField
(
FieldValues
):
...
...
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