diff options
| author | Tom Christie | 2014-12-12 15:37:43 +0000 | 
|---|---|---|
| committer | Tom Christie | 2014-12-12 15:37:43 +0000 | 
| commit | baaa356489dd51d7c68161db40e99cd59b1124c3 (patch) | |
| tree | 23dc5c4cbe1065580ff88ddd1bfa6dcda956ac68 /rest_framework/utils | |
| parent | 5e6052811716a494e995a84c497579867ee6acaa (diff) | |
| parent | fd473aa905337908b41c9a1087967a19f0558f89 (diff) | |
| download | django-rest-framework-baaa356489dd51d7c68161db40e99cd59b1124c3.tar.bz2 | |
Merge master
Diffstat (limited to 'rest_framework/utils')
| -rw-r--r-- | rest_framework/utils/encoders.py | 2 | ||||
| -rw-r--r-- | rest_framework/utils/field_mapping.py | 14 | ||||
| -rw-r--r-- | rest_framework/utils/mediatypes.py | 5 | ||||
| -rw-r--r-- | rest_framework/utils/representation.py | 2 | ||||
| -rw-r--r-- | rest_framework/utils/serializer_helpers.py | 14 | 
5 files changed, 17 insertions, 20 deletions
| diff --git a/rest_framework/utils/encoders.py b/rest_framework/utils/encoders.py index 2c97f1d7..0bd24939 100644 --- a/rest_framework/utils/encoders.py +++ b/rest_framework/utils/encoders.py @@ -4,8 +4,8 @@ Helper classes for parsers.  from __future__ import unicode_literals  from django.db.models.query import QuerySet  from django.utils import six, timezone +from django.utils.encoding import force_text  from django.utils.functional import Promise -from rest_framework.compat import force_text  import datetime  import decimal  import json diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 9c187176..fca97b4b 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -59,7 +59,7 @@ def get_field_kwargs(field_name, model_field):      Creates a default instance of a basic non-relational field.      """      kwargs = {} -    validator_kwarg = model_field.validators +    validator_kwarg = list(model_field.validators)      # The following will only be used by ModelField classes.      # Gets removed for everything else. @@ -91,18 +91,18 @@ def get_field_kwargs(field_name, model_field):      if model_field.has_default() or model_field.blank or model_field.null:          kwargs['required'] = False -    if model_field.flatchoices: -        # If this model field contains choices, then return early. -        # Further keyword arguments are not valid. -        kwargs['choices'] = model_field.flatchoices -        return kwargs -      if model_field.null and not isinstance(model_field, models.NullBooleanField):          kwargs['allow_null'] = True      if model_field.blank:          kwargs['allow_blank'] = True +    if model_field.flatchoices: +        # If this model field contains choices, then return early. +        # Further keyword arguments are not valid. +        kwargs['choices'] = model_field.flatchoices +        return kwargs +      # Ensure that max_length is passed explicitly as a keyword arg,      # rather than as a validator.      max_length = getattr(model_field, 'max_length', None) diff --git a/rest_framework/utils/mediatypes.py b/rest_framework/utils/mediatypes.py index 87b3cc6a..de2931c2 100644 --- a/rest_framework/utils/mediatypes.py +++ b/rest_framework/utils/mediatypes.py @@ -5,6 +5,7 @@ See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7  """  from __future__ import unicode_literals  from django.http.multipartparser import parse_header +from django.utils.encoding import python_2_unicode_compatible  from rest_framework import HTTP_HEADER_ENCODING @@ -43,6 +44,7 @@ def order_by_precedence(media_type_lst):      return [media_types for media_types in ret if media_types] +@python_2_unicode_compatible  class _MediaType(object):      def __init__(self, media_type_str):          if media_type_str is None: @@ -79,9 +81,6 @@ class _MediaType(object):          return 3      def __str__(self): -        return self.__unicode__().encode('utf-8') - -    def __unicode__(self):          ret = "%s/%s" % (self.main_type, self.sub_type)          for key, val in self.params.items():              ret += "; %s=%s" % (key, val) diff --git a/rest_framework/utils/representation.py b/rest_framework/utils/representation.py index 2a7c4675..3f17a8b9 100644 --- a/rest_framework/utils/representation.py +++ b/rest_framework/utils/representation.py @@ -3,8 +3,8 @@ Helper functions for creating user-friendly representations  of serializer classes and serializer fields.  """  from django.db import models +from django.utils.encoding import force_text  from django.utils.functional import Promise -from rest_framework.compat import force_text  import re diff --git a/rest_framework/utils/serializer_helpers.py b/rest_framework/utils/serializer_helpers.py index 92d19857..277cf649 100644 --- a/rest_framework/utils/serializer_helpers.py +++ b/rest_framework/utils/serializer_helpers.py @@ -1,3 +1,4 @@ +import collections  from rest_framework.compat import OrderedDict @@ -70,7 +71,7 @@ class NestedBoundField(BoundField):          return BoundField(field, value, error, prefix=self.name + '.') -class BindingDict(object): +class BindingDict(collections.MutableMapping):      """      This dict-like object is used to store fields on a serializer. @@ -92,11 +93,8 @@ class BindingDict(object):      def __delitem__(self, key):          del self.fields[key] -    def items(self): -        return self.fields.items() - -    def keys(self): -        return self.fields.keys() +    def __iter__(self): +        return iter(self.fields) -    def values(self): -        return self.fields.values() +    def __len__(self): +        return len(self.fields) | 
