Commit Graph

2462 Commits

Author SHA1 Message Date
Tom Christie
685706ff2b Merge pull request #584 from radiosilence/master
Adding timedelta support to JSONEncoder, and an example of how to add decode support to a serializer.
2013-01-15 05:25:24 -08:00
James Cleveland
4fc3b1ba56 Add timedelta encoder to the JSONEncoder class.
Whilst this commit adds *encoding* of timedeltas to a string of a floating
point value of the seconds, you must add your own serializer field for
whatever timedelta model field you are using. This is because Django doesn't
support any kind of timedelta field out-of-the-box, so you have to either
implement your own or use django-timedelta.

If this is the case and you want to serialise timedelta input, you will have
to implement your own special field to use for the timedelta, which is not
included in core as it is based on a 3rd party library. Here is an example:

    import datetime
    import timedelta
    from django import forms
    from django.core import validators
    from django.core.exceptions import ValidationError
    from django.utils.translation import ugettext_lazy as _
    from rest_framework.fields import WritableField

    class TimedeltaField(WritableField):
        type_name = 'TimedeltaField'
        form_field_class = forms.FloatField

        default_error_messages = {
            'invalid': _("'%s' value must be in seconds."),
        }

        def from_native(self, value):
            if value in validators.EMPTY_VALUES:
                return None

            try:
                return datetime.timedelta(seconds=float(value))
            except (TypeError, ValueError):
                msg = self.error_messages['invalid'] % value
                raise ValidationError(msg)

Which is based on the FloatField. This field can then be used in
your serializer like this:

    from yourapp.fields import TimedeltaField

    class YourSerializer(serializers.ModelSerializer):
        duration = TimedeltaField()
2013-01-15 13:08:52 +00:00
Stephan Groß
e32aaa29b8 Add @shezi thanks! 2013-01-15 14:00:32 +01:00
Stephan Groß
4a4759dacb Merge pull request #583 from shezi/master
Fixed a minor template bug
2013-01-15 04:58:44 -08:00
Johannes Spielmann
e67b23f1ac correcting template: closing tag was missing 2013-01-15 13:46:41 +01:00
Tom Christie
da6b9576c5 Update docstrings 2013-01-15 10:51:10 +00:00
Tom Christie
79f635e0dd Modify tutorial to work with pygments 1.6rc. Fixes #581. 2013-01-15 09:33:24 +00:00
Tom Christie
190473f508 Tweak messagepack links 2013-01-14 17:38:45 +00:00
Tom Christie
a7e7c441a4 Add link to @mjumbewu's CSV package 2013-01-14 17:38:32 +00:00
Tom Christie
191135d7b0 Version 2.1.16 2013-01-14 09:20:44 +00:00
Tom Christie
cae9a334ce Merge pull request #578 from Wackerbarth/tutorial
Format extensions have already been introduced.
2013-01-13 11:03:18 -08:00
Richard Wackerbarth
08943c3e0a Format extensions have already been introduced.
If format extensions are used,
they must be used in the creation of the
reverse URLs.
2013-01-13 12:09:49 -06:00
Stephan Groß
9d47c32f44 Merge pull request #577 from Wackerbarth/tutorial
A minor gramatical correction
2013-01-12 11:37:38 -08:00
Richard Wackerbarth
0987bed2f7 Minor gramatical correction 2013-01-12 12:36:21 -06:00
Stephan Groß
da85bb1ab3 Update django-filter link to pypi 2013-01-12 14:31:40 +01:00
Stephan Groß
e0440e609b Update django-filter link to pypi 2013-01-12 14:28:16 +01:00
Tom Christie
25a463be73 Update release notes. 2013-01-12 10:07:11 +00:00
Tom Christie
d9acec3e6d PK fields should only be read-only if they are an AutoField. Fixes #563 2013-01-12 09:43:14 +00:00
Tom Christie
73c4e5c460 auto_now and auto_now_add fields should be read only by default 2013-01-12 09:43:14 +00:00
Stephan Groß
919c5e1e01 Fix typo in permission_classes 2013-01-11 20:26:44 +01:00
Tom Christie
c09a579851 Added @wackerbarth. Thanks! 2013-01-11 08:57:06 +00:00
Tom Christie
6e1fe0a818 Merge pull request #573 from Wackerbarth/tutorial
Make the whitespace uniform
2013-01-11 00:54:17 -08:00
Richard Wackerbarth
7dd5c56f22 Make the whitespace uniform 2013-01-10 16:16:30 -06:00
Tom Christie
7ae1111d02 Merge pull request #550 from Wackerbarth/tutorial
Revised Tutorial
2013-01-10 14:00:10 -08:00
Richard Wackerbarth
12efd78fcf Bringing up the Web API 2013-01-10 15:37:49 -06:00
Richard Wackerbarth
8efd9563a6 Some comment on the tutorial repository 2013-01-10 15:37:33 -06:00
Richard Wackerbarth
674c9029c1 Imply an additional element in infinite lists
This is to allow the addition of elements without
having to change existing lines of code
2013-01-10 15:37:15 -06:00
Tom Christie
c4e33d8a75 Merge pull request #572 from juanriaza/master
Unused imports
2013-01-10 06:57:54 -08:00
Juan Riaza
268f60999c unused imports 2013-01-10 15:48:22 +01:00
Tom Christie
cb235977f6 Include CSRF note in SessionAuthentication docs. 2013-01-09 09:22:23 +00:00
Mark Shirley
394a26f833 Merge pull request #553 from maspwr/null-one-to-one
Handle ObjectDoesNotExist exceptions when serializing null reverse one-to-one
2013-01-08 08:40:00 -08:00
Mark Aaron Shirley
b298bf53f3 Update release notes 2013-01-08 08:35:41 -08:00
Mark Aaron Shirley
81691ff900 Merge remote-tracking branch 'upstream/master' into null-one-to-one 2013-01-08 08:33:01 -08:00
Tom Christie
431ced66e4 Merge pull request #566 from mjtamlyn/patch-1
ObtainAuthToken pluggable Serializer.
2013-01-08 07:38:18 -08:00
Tom Christie
37a8458687 Merge branch 'master' of https://github.com/tomchristie/django-rest-framework 2013-01-08 15:05:34 +00:00
Tom Christie
c1f194b0a5 Fix inconsistent view_name logic. Fixes #567. 2013-01-08 15:03:14 +00:00
Marc Tamlyn
49cd5e59a8 ObtainAuthToken pluggable Serializer.
It should have serializer_class in the same way as any other API view.
2013-01-08 12:20:01 +00:00
Stephan Groß
ae139cb06f Merge pull request #565 from mjtamlyn/patch-1
Fix reference to BasicAuthentication in settings.
2013-01-08 03:58:06 -08:00
Marc Tamlyn
4df1172665 Fix reference to BasicAuthentication in settings. 2013-01-08 11:45:55 +00:00
Mark Aaron Shirley
a897eb5480 Create separate *NullableOneToOneTests TestCase 2013-01-07 16:27:31 -08:00
Xavier Ordoquy
0f0e76d8b1 Don't double install django-filter. 2013-01-08 00:00:28 +01:00
Xavier Ordoquy
5dd76c0706 Correctly remove from the matrix incompatible django / python versions. 2013-01-07 23:55:16 +01:00
Xavier Ordoquy
0252057ee0 Reverted on the right django 1.5 rc1 url and made sure we use mirrors for our django downloads. 2013-01-07 23:52:26 +01:00
Xavier Ordoquy
28248f3573 Attempt with another url for django 2013-01-07 23:46:44 +01:00
Xavier Ordoquy
86a3ad9b3d Check for travis builds. 2013-01-07 23:36:39 +01:00
Xavier Ordoquy
dd45642055 Try a lighter alternative to install django-filter trunk 2013-01-07 23:34:03 +01:00
Xavier Ordoquy
510d6a3c55 Introduced HTTP_HEADER_ENCODING. 2013-01-07 23:26:14 +01:00
Xavier Ordoquy
22a7dc27d8 Typo in the travis.yml. 2013-01-07 23:09:47 +01:00
Xavier Ordoquy
c1e3b42fee Conditional six installation (only for django 1.3.5) and install 3.2 compatible django-filter for python 3.2 test. 2013-01-07 22:41:42 +01:00
Tom Christie
4e8f55887d Clean up test slightly. Refs #552 2013-01-07 21:37:44 +00:00