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
5586b658
Commit
5586b658
authored
Sep 22, 2014
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support format=None for date/time fields
parent
4db23cae
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
88 additions
and
9 deletions
+88
-9
rest_framework/fields.py
+6
-6
tests/test_fields.py
+82
-3
No files found.
rest_framework/fields.py
View file @
5586b658
...
@@ -548,8 +548,8 @@ class DateField(Field):
...
@@ -548,8 +548,8 @@ class DateField(Field):
format
=
api_settings
.
DATE_FORMAT
format
=
api_settings
.
DATE_FORMAT
input_formats
=
api_settings
.
DATE_INPUT_FORMATS
input_formats
=
api_settings
.
DATE_INPUT_FORMATS
def
__init__
(
self
,
format
=
None
,
input_formats
=
None
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
format
=
empty
,
input_formats
=
None
,
*
args
,
**
kwargs
):
self
.
format
=
format
if
format
is
not
None
else
self
.
format
self
.
format
=
format
if
format
is
not
empty
else
self
.
format
self
.
input_formats
=
input_formats
if
input_formats
is
not
None
else
self
.
input_formats
self
.
input_formats
=
input_formats
if
input_formats
is
not
None
else
self
.
input_formats
super
(
DateField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
DateField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
...
@@ -604,8 +604,8 @@ class DateTimeField(Field):
...
@@ -604,8 +604,8 @@ class DateTimeField(Field):
input_formats
=
api_settings
.
DATETIME_INPUT_FORMATS
input_formats
=
api_settings
.
DATETIME_INPUT_FORMATS
default_timezone
=
timezone
.
get_default_timezone
()
if
settings
.
USE_TZ
else
None
default_timezone
=
timezone
.
get_default_timezone
()
if
settings
.
USE_TZ
else
None
def
__init__
(
self
,
format
=
None
,
input_formats
=
None
,
default_timezone
=
None
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
format
=
empty
,
input_formats
=
None
,
default_timezone
=
None
,
*
args
,
**
kwargs
):
self
.
format
=
format
if
format
is
not
None
else
self
.
format
self
.
format
=
format
if
format
is
not
empty
else
self
.
format
self
.
input_formats
=
input_formats
if
input_formats
is
not
None
else
self
.
input_formats
self
.
input_formats
=
input_formats
if
input_formats
is
not
None
else
self
.
input_formats
self
.
default_timezone
=
default_timezone
if
default_timezone
is
not
None
else
self
.
default_timezone
self
.
default_timezone
=
default_timezone
if
default_timezone
is
not
None
else
self
.
default_timezone
super
(
DateTimeField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
DateTimeField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
...
@@ -670,8 +670,8 @@ class TimeField(Field):
...
@@ -670,8 +670,8 @@ class TimeField(Field):
format
=
api_settings
.
TIME_FORMAT
format
=
api_settings
.
TIME_FORMAT
input_formats
=
api_settings
.
TIME_INPUT_FORMATS
input_formats
=
api_settings
.
TIME_INPUT_FORMATS
def
__init__
(
self
,
format
=
None
,
input_formats
=
None
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
format
=
empty
,
input_formats
=
None
,
*
args
,
**
kwargs
):
self
.
format
=
format
if
format
is
not
None
else
self
.
format
self
.
format
=
format
if
format
is
not
empty
else
self
.
format
self
.
input_formats
=
input_formats
if
input_formats
is
not
None
else
self
.
input_formats
self
.
input_formats
=
input_formats
if
input_formats
is
not
None
else
self
.
input_formats
super
(
TimeField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
TimeField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
...
...
tests/test_fields.py
View file @
5586b658
...
@@ -316,7 +316,9 @@ class TestDateField(FieldValues):
...
@@ -316,7 +316,9 @@ class TestDateField(FieldValues):
'2001-99-99'
:
[
'Date has wrong format. Use one of these formats instead: YYYY[-MM[-DD]]'
],
'2001-99-99'
:
[
'Date has wrong format. Use one of these formats instead: YYYY[-MM[-DD]]'
],
datetime
.
datetime
(
2001
,
1
,
1
,
12
,
00
):
[
'Expected a date but got a datetime.'
],
datetime
.
datetime
(
2001
,
1
,
1
,
12
,
00
):
[
'Expected a date but got a datetime.'
],
}
}
outputs
=
{}
outputs
=
{
datetime
.
date
(
2001
,
1
,
1
):
'2001-01-01'
,
}
field
=
fields
.
DateField
()
field
=
fields
.
DateField
()
...
@@ -334,6 +336,30 @@ class TestCustomInputFormatDateField(FieldValues):
...
@@ -334,6 +336,30 @@ class TestCustomInputFormatDateField(FieldValues):
field
=
fields
.
DateField
(
input_formats
=
[
'
%
d
%
b
%
Y'
])
field
=
fields
.
DateField
(
input_formats
=
[
'
%
d
%
b
%
Y'
])
class
TestCustomOutputFormatDateField
(
FieldValues
):
"""
Values for `DateField` with a custom output format.
"""
valid_inputs
=
{}
invalid_inputs
=
{}
outputs
=
{
datetime
.
date
(
2001
,
1
,
1
):
'01 Jan 2001'
}
field
=
fields
.
DateField
(
format
=
'
%
d
%
b
%
Y'
)
class
TestNoOutputFormatDateField
(
FieldValues
):
"""
Values for `DateField` with no output format.
"""
valid_inputs
=
{}
invalid_inputs
=
{}
outputs
=
{
datetime
.
date
(
2001
,
1
,
1
):
datetime
.
date
(
2001
,
1
,
1
)
}
field
=
fields
.
DateField
(
format
=
None
)
class
TestDateTimeField
(
FieldValues
):
class
TestDateTimeField
(
FieldValues
):
"""
"""
Valid and invalid values for `DateTimeField`.
Valid and invalid values for `DateTimeField`.
...
@@ -351,7 +377,10 @@ class TestDateTimeField(FieldValues):
...
@@ -351,7 +377,10 @@ class TestDateTimeField(FieldValues):
'2001-99-99T99:00'
:
[
'Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]'
],
'2001-99-99T99:00'
:
[
'Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]'
],
datetime
.
date
(
2001
,
1
,
1
):
[
'Expected a datetime but got a date.'
],
datetime
.
date
(
2001
,
1
,
1
):
[
'Expected a datetime but got a date.'
],
}
}
outputs
=
{}
outputs
=
{
datetime
.
datetime
(
2001
,
1
,
1
,
13
,
00
):
'2001-01-01T13:00:00'
,
datetime
.
datetime
(
2001
,
1
,
1
,
13
,
00
,
tzinfo
=
timezone
.
UTC
()):
'2001-01-01T13:00:00Z'
,
}
field
=
fields
.
DateTimeField
(
default_timezone
=
timezone
.
UTC
())
field
=
fields
.
DateTimeField
(
default_timezone
=
timezone
.
UTC
())
...
@@ -369,6 +398,30 @@ class TestCustomInputFormatDateTimeField(FieldValues):
...
@@ -369,6 +398,30 @@ class TestCustomInputFormatDateTimeField(FieldValues):
field
=
fields
.
DateTimeField
(
default_timezone
=
timezone
.
UTC
(),
input_formats
=
[
'
%
I:
%
M
%
p,
%
d
%
b
%
Y'
])
field
=
fields
.
DateTimeField
(
default_timezone
=
timezone
.
UTC
(),
input_formats
=
[
'
%
I:
%
M
%
p,
%
d
%
b
%
Y'
])
class
TestCustomOutputFormatDateTimeField
(
FieldValues
):
"""
Values for `DateTimeField` with a custom output format.
"""
valid_inputs
=
{}
invalid_inputs
=
{}
outputs
=
{
datetime
.
datetime
(
2001
,
1
,
1
,
13
,
00
):
'01:00PM, 01 Jan 2001'
,
}
field
=
fields
.
DateTimeField
(
format
=
'
%
I:
%
M
%
p,
%
d
%
b
%
Y'
)
class
TestNoOutputFormatDateTimeField
(
FieldValues
):
"""
Values for `DateTimeField` with no output format.
"""
valid_inputs
=
{}
invalid_inputs
=
{}
outputs
=
{
datetime
.
datetime
(
2001
,
1
,
1
,
13
,
00
):
datetime
.
datetime
(
2001
,
1
,
1
,
13
,
00
),
}
field
=
fields
.
DateTimeField
(
format
=
None
)
class
TestNaiveDateTimeField
(
FieldValues
):
class
TestNaiveDateTimeField
(
FieldValues
):
"""
"""
Valid and invalid values for `DateTimeField` with naive datetimes.
Valid and invalid values for `DateTimeField` with naive datetimes.
...
@@ -394,7 +447,9 @@ class TestTimeField(FieldValues):
...
@@ -394,7 +447,9 @@ class TestTimeField(FieldValues):
'abc'
:
[
'Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]]'
],
'abc'
:
[
'Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]]'
],
'99:99'
:
[
'Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]]'
],
'99:99'
:
[
'Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]]'
],
}
}
outputs
=
{}
outputs
=
{
datetime
.
time
(
13
,
00
):
'13:00:00'
}
field
=
fields
.
TimeField
()
field
=
fields
.
TimeField
()
...
@@ -412,6 +467,30 @@ class TestCustomInputFormatTimeField(FieldValues):
...
@@ -412,6 +467,30 @@ class TestCustomInputFormatTimeField(FieldValues):
field
=
fields
.
TimeField
(
input_formats
=
[
'
%
I:
%
M
%
p'
])
field
=
fields
.
TimeField
(
input_formats
=
[
'
%
I:
%
M
%
p'
])
class
TestCustomOutputFormatTimeField
(
FieldValues
):
"""
Values for `TimeField` with a custom output format.
"""
valid_inputs
=
{}
invalid_inputs
=
{}
outputs
=
{
datetime
.
time
(
13
,
00
):
'01:00PM'
}
field
=
fields
.
TimeField
(
format
=
'
%
I:
%
M
%
p'
)
class
TestNoOutputFormatTimeField
(
FieldValues
):
"""
Values for `TimeField` with a no output format.
"""
valid_inputs
=
{}
invalid_inputs
=
{}
outputs
=
{
datetime
.
time
(
13
,
00
):
datetime
.
time
(
13
,
00
)
}
field
=
fields
.
TimeField
(
format
=
None
)
# Choice types...
# Choice types...
class
TestChoiceField
(
FieldValues
):
class
TestChoiceField
(
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