diff options
| author | Tom Christie | 2014-10-01 13:09:14 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-10-01 13:09:14 +0100 | 
| commit | 381771731f48c75e7d5951e353049cceec386512 (patch) | |
| tree | bc426b11d4ba33cbbb2063e3393f8855c7841fd8 | |
| parent | bb2222963f527638ed2bc9a817415102312e12e0 (diff) | |
| download | django-rest-framework-381771731f48c75e7d5951e353049cceec386512.tar.bz2 | |
Use six.text_type instead of str everywhere
| -rw-r--r-- | rest_framework/compat.py | 9 | ||||
| -rw-r--r-- | rest_framework/fields.py | 22 | ||||
| -rw-r--r-- | rest_framework/filters.py | 3 | ||||
| -rw-r--r-- | rest_framework/generics.py | 5 | ||||
| -rw-r--r-- | rest_framework/parsers.py | 3 | ||||
| -rw-r--r-- | rest_framework/relations.py | 3 | ||||
| -rw-r--r-- | rest_framework/reverse.py | 3 | ||||
| -rw-r--r-- | rest_framework/utils/encoders.py | 6 | 
8 files changed, 30 insertions, 24 deletions
| diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 89af9b48..3993cee6 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -5,11 +5,12 @@ versions of django/python, and compatibility wrappers around optional packages.  # flake8: noqa  from __future__ import unicode_literals -import django -import inspect +  from django.core.exceptions import ImproperlyConfigured  from django.conf import settings  from django.utils import six +import django +import inspect  # Handle django.utils.encoding rename in 1.5 onwards. @@ -177,12 +178,12 @@ class RequestFactory(DjangoRequestFactory):          r = {              'PATH_INFO':      self._get_path(parsed),              'QUERY_STRING':   force_text(parsed[4]), -            'REQUEST_METHOD': str(method), +            'REQUEST_METHOD': six.text_type(method),          }          if data:              r.update({                  'CONTENT_LENGTH': len(data), -                'CONTENT_TYPE':   str(content_type), +                'CONTENT_TYPE':   six.text_type(content_type),                  'wsgi.input':     FakePayload(data),              })          elif django.VERSION <= (1, 4): diff --git a/rest_framework/fields.py b/rest_framework/fields.py index f7ea3b0c..f3ff2233 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -2,7 +2,7 @@ from django import forms  from django.conf import settings  from django.core import validators  from django.core.exceptions import ValidationError -from django.utils import timezone +from django.utils import six, timezone  from django.utils.datastructures import SortedDict  from django.utils.dateparse import parse_date, parse_datetime, parse_time  from django.utils.encoding import is_protected_type @@ -431,10 +431,10 @@ class CharField(Field):          return super(CharField, self).run_validation(data)      def to_internal_value(self, data): -        return str(data) +        return six.text_type(data)      def to_representation(self, value): -        return str(value) +        return six.text_type(value)  class EmailField(CharField): @@ -448,10 +448,10 @@ class EmailField(CharField):          self.validators.append(validator)      def to_internal_value(self, data): -        return str(data).strip() +        return six.text_type(data).strip()      def to_representation(self, value): -        return str(value).strip() +        return six.text_type(value).strip()  class RegexField(CharField): @@ -510,7 +510,7 @@ class IntegerField(Field):      def to_internal_value(self, data):          try: -            data = int(str(data)) +            data = int(six.text_type(data))          except (ValueError, TypeError):              self.fail('invalid')          return data @@ -616,7 +616,7 @@ class DecimalField(Field):      def to_representation(self, value):          if not isinstance(value, decimal.Decimal): -            value = decimal.Decimal(str(value).strip()) +            value = decimal.Decimal(six.text_type(value).strip())          context = decimal.getcontext().copy()          context.prec = self.max_digits @@ -832,19 +832,19 @@ class ChoiceField(Field):          # Allows us to deal with eg. integer choices while supporting either          # integer or string input, but still get the correct datatype out.          self.choice_strings_to_values = dict([ -            (str(key), key) for key in self.choices.keys() +            (six.text_type(key), key) for key in self.choices.keys()          ])          super(ChoiceField, self).__init__(**kwargs)      def to_internal_value(self, data):          try: -            return self.choice_strings_to_values[str(data)] +            return self.choice_strings_to_values[six.text_type(data)]          except KeyError:              self.fail('invalid_choice', input=data)      def to_representation(self, value): -        return self.choice_strings_to_values[str(value)] +        return self.choice_strings_to_values[six.text_type(value)]  class MultipleChoiceField(ChoiceField): @@ -864,7 +864,7 @@ class MultipleChoiceField(ChoiceField):      def to_representation(self, value):          return set([ -            self.choice_strings_to_values[str(item)] for item in value +            self.choice_strings_to_values[six.text_type(item)] for item in value          ]) diff --git a/rest_framework/filters.py b/rest_framework/filters.py index 085dfe65..4c485668 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -3,6 +3,7 @@ Provides generic filtering backends that can be used to filter the results  returned by list views.  """  from __future__ import unicode_literals +  from django.core.exceptions import ImproperlyConfigured  from django.db import models  from django.utils import six @@ -97,7 +98,7 @@ class SearchFilter(BaseFilterBackend):          if not search_fields:              return queryset -        orm_lookups = [self.construct_search(str(search_field)) +        orm_lookups = [self.construct_search(six.text_type(search_field))                         for search_field in search_fields]          for search_term in self.get_search_terms(request): diff --git a/rest_framework/generics.py b/rest_framework/generics.py index cf903dab..3d6cf168 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -3,10 +3,11 @@ Generic views that provide commonly needed behaviour.  """  from __future__ import unicode_literals -from django.db.models.query import QuerySet  from django.core.paginator import Paginator, InvalidPage +from django.db.models.query import QuerySet  from django.http import Http404  from django.shortcuts import get_object_or_404 as _get_object_or_404 +from django.utils import six  from django.utils.translation import ugettext as _  from rest_framework import views, mixins  from rest_framework.settings import api_settings @@ -127,7 +128,7 @@ class GenericAPIView(views.APIView):              error_format = _('Invalid page (%(page_number)s): %(message)s')              raise Http404(error_format % {                  'page_number': page_number, -                'message': str(exc) +                'message': six.text_type(exc)              })          return page diff --git a/rest_framework/parsers.py b/rest_framework/parsers.py index fa02ecf1..ccb82f03 100644 --- a/rest_framework/parsers.py +++ b/rest_framework/parsers.py @@ -5,6 +5,7 @@ They give us a generic way of being able to handle various media types  on the request, such as form content or json encoded data.  """  from __future__ import unicode_literals +  from django.conf import settings  from django.core.files.uploadhandler import StopFutureHandlers  from django.http import QueryDict @@ -132,7 +133,7 @@ class MultiPartParser(BaseParser):              data, files = parser.parse()              return DataAndFiles(data, files)          except MultiPartParserError as exc: -            raise ParseError('Multipart form parse error - %s' % str(exc)) +            raise ParseError('Multipart form parse error - %s' % six.text_type(exc))  class XMLParser(BaseParser): diff --git a/rest_framework/relations.py b/rest_framework/relations.py index b37a6fed..b5effc6c 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -4,6 +4,7 @@ from rest_framework.reverse import reverse  from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured  from django.core.urlresolvers import resolve, get_script_prefix, NoReverseMatch, Resolver404  from django.db.models.query import QuerySet +from django.utils import six  from django.utils.translation import ugettext_lazy as _ @@ -49,7 +50,7 @@ class StringRelatedField(Field):          super(StringRelatedField, self).__init__(**kwargs)      def to_representation(self, value): -        return str(value) +        return six.text_type(value)  class PrimaryKeyRelatedField(RelatedField): diff --git a/rest_framework/reverse.py b/rest_framework/reverse.py index a51b07f5..a74e8aa2 100644 --- a/rest_framework/reverse.py +++ b/rest_framework/reverse.py @@ -3,6 +3,7 @@ Provide reverse functions that return fully qualified URLs  """  from __future__ import unicode_literals  from django.core.urlresolvers import reverse as django_reverse +from django.utils import six  from django.utils.functional import lazy @@ -20,4 +21,4 @@ def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra      return url -reverse_lazy = lazy(reverse, str) +reverse_lazy = lazy(reverse, six.text_type) diff --git a/rest_framework/utils/encoders.py b/rest_framework/utils/encoders.py index 174b08b8..7c4179a1 100644 --- a/rest_framework/utils/encoders.py +++ b/rest_framework/utils/encoders.py @@ -2,8 +2,8 @@  Helper classes for parsers.  """  from __future__ import unicode_literals -from django.utils import timezone  from django.db.models.query import QuerySet +from django.utils import six, timezone  from django.utils.datastructures import SortedDict  from django.utils.functional import Promise  from rest_framework.compat import force_text @@ -40,7 +40,7 @@ class JSONEncoder(json.JSONEncoder):                  representation = representation[:12]              return representation          elif isinstance(obj, datetime.timedelta): -            return str(obj.total_seconds()) +            return six.text_type(obj.total_seconds())          elif isinstance(obj, decimal.Decimal):              # Serializers will coerce decimals to strings by default.              return float(obj) @@ -72,7 +72,7 @@ else:          than the usual behaviour of sorting the keys.          """          def represent_decimal(self, data): -            return self.represent_scalar('tag:yaml.org,2002:str', str(data)) +            return self.represent_scalar('tag:yaml.org,2002:str', six.text_type(data))          def represent_mapping(self, tag, mapping, flow_style=None):              value = [] | 
