diff options
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/compat.py | 9 | ||||
| -rw-r--r-- | rest_framework/parsers.py | 4 | ||||
| -rw-r--r-- | rest_framework/serializers.py | 5 | 
3 files changed, 16 insertions, 2 deletions
| diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 8c64d951..0d512342 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -426,3 +426,12 @@ try:      from xml.etree import ParseError as ETParseError  except ImportError:  # python < 2.7      ETParseError = None + + +# XMLParser only takes an encoding arg from >= 2.7 +def ET_XMLParser(encoding=None): +    from xml.etree import ElementTree as ET +    try: +        return ET.XMLParser(encoding=encoding) +    except TypeError: +        return ET.XMLParser() diff --git a/rest_framework/parsers.py b/rest_framework/parsers.py index 98d63fec..06b02226 100644 --- a/rest_framework/parsers.py +++ b/rest_framework/parsers.py @@ -9,7 +9,7 @@ from django.conf import settings  from django.http import QueryDict  from django.http.multipartparser import MultiPartParser as DjangoMultiPartParser  from django.http.multipartparser import MultiPartParserError -from rest_framework.compat import yaml, ETParseError +from rest_framework.compat import yaml, ETParseError, ET_XMLParser  from rest_framework.exceptions import ParseError  from rest_framework.compat import six  from xml.etree import ElementTree as ET @@ -148,7 +148,7 @@ class XMLParser(BaseParser):      def parse(self, stream, media_type=None, parser_context=None):          parser_context = parser_context or {}          encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET) -        parser = ET.XMLParser(encoding=encoding) +        parser = ET_XMLParser(encoding=encoding)          try:              tree = ET.parse(stream, parser=parser)          except (ExpatError, ETParseError, ValueError) as exc: diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index b635d20d..d9125e21 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -165,6 +165,11 @@ class BaseSerializer(Field):          # Remove anything in 'exclude'          if self.opts.exclude: +            # Note: To be deprecated in line with Django's ModelForm change. +            # https://code.djangoproject.com/ticket/19733 +            warnings.warn('`exclude` option on serializers is due to be deprecated. ' +                          'Use the `fields` option instead.', +                           PendingDeprecationWarning, stacklevel=2)              for key in self.opts.exclude:                  ret.pop(key, None) | 
