1. 20 Jan, 2013 2 commits
  2. 19 Jan, 2013 7 commits
  3. 18 Jan, 2013 11 commits
  4. 17 Jan, 2013 8 commits
  5. 16 Jan, 2013 7 commits
  6. 15 Jan, 2013 5 commits
    • Update release notes · b4c43d5f
      Tom Christie committed
    • Merge pull request #584 from radiosilence/master · 685706ff
      Adding timedelta support to JSONEncoder, and an example of how to add decode support to a serializer.
      Tom Christie committed
    • Add timedelta encoder to the JSONEncoder class. · 4fc3b1ba
      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()
      James Cleveland committed