diff options
| author | Andreas Pelme | 2013-02-14 21:19:51 +0100 |
|---|---|---|
| committer | Andreas Pelme | 2013-02-14 21:19:51 +0100 |
| commit | 5a5df18d182d43d993da8f0b5d4a8888e868fcae (patch) | |
| tree | 7de7b40330976a8573fa3f62d8e194ab924cedd7 /rest_framework/fields.py | |
| parent | de029561d0cbb090c0d704811551b2d611472288 (diff) | |
| download | django-rest-framework-5a5df18d182d43d993da8f0b5d4a8888e868fcae.tar.bz2 | |
Added a serializer TimeField
Diffstat (limited to 'rest_framework/fields.py')
| -rw-r--r-- | rest_framework/fields.py | 28 |
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 |
