aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/fields.py
diff options
context:
space:
mode:
authorAndreas Pelme2013-02-14 21:19:51 +0100
committerAndreas Pelme2013-02-14 21:19:51 +0100
commit5a5df18d182d43d993da8f0b5d4a8888e868fcae (patch)
tree7de7b40330976a8573fa3f62d8e194ab924cedd7 /rest_framework/fields.py
parentde029561d0cbb090c0d704811551b2d611472288 (diff)
downloaddjango-rest-framework-5a5df18d182d43d993da8f0b5d4a8888e868fcae.tar.bz2
Added a serializer TimeField
Diffstat (limited to 'rest_framework/fields.py')
-rw-r--r--rest_framework/fields.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index 327008fb..236e0f1e 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -18,6 +18,7 @@ from rest_framework.compat import timezone
from rest_framework.compat import BytesIO
from rest_framework.compat import six
from rest_framework.compat import smart_text
+from rest_framework.compat import parse_time
def is_simple_callable(obj):
@@ -531,6 +532,33 @@ class DateTimeField(WritableField):
raise ValidationError(msg)
+class TimeField(WritableField):
+ type_name = 'TimeField'
+ widget = widgets.TimeInput
+ form_field_class = forms.TimeField
+
+ default_error_messages = {
+ 'invalid': _("'%s' value has an invalid format. It must be a valid "
+ "time in the HH:MM[:ss[.uuuuuu]] format."),
+ }
+ empty = None
+
+ def from_native(self, value):
+ if value in validators.EMPTY_VALUES:
+ return None
+
+ if isinstance(value, datetime.time):
+ return value
+
+ try:
+ parsed = parse_time(value)
+ assert parsed is not None
+ return parsed
+ except ValueError:
+ msg = self.error_messages['invalid'] % value
+ raise ValidationError(msg)
+
+
class IntegerField(WritableField):
type_name = 'IntegerField'
form_field_class = forms.IntegerField