Commit 7dc4bce4 by Tom Christie

Fix 2.6 compat

parent 937ef008
...@@ -426,3 +426,12 @@ try: ...@@ -426,3 +426,12 @@ try:
from xml.etree import ParseError as ETParseError from xml.etree import ParseError as ETParseError
except ImportError: # python < 2.7 except ImportError: # python < 2.7
ETParseError = None 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()
...@@ -9,7 +9,7 @@ from django.conf import settings ...@@ -9,7 +9,7 @@ from django.conf import settings
from django.http import QueryDict from django.http import QueryDict
from django.http.multipartparser import MultiPartParser as DjangoMultiPartParser from django.http.multipartparser import MultiPartParser as DjangoMultiPartParser
from django.http.multipartparser import MultiPartParserError 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.exceptions import ParseError
from rest_framework.compat import six from rest_framework.compat import six
from xml.etree import ElementTree as ET from xml.etree import ElementTree as ET
...@@ -148,7 +148,7 @@ class XMLParser(BaseParser): ...@@ -148,7 +148,7 @@ class XMLParser(BaseParser):
def parse(self, stream, media_type=None, parser_context=None): def parse(self, stream, media_type=None, parser_context=None):
parser_context = parser_context or {} parser_context = parser_context or {}
encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET) encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
parser = ET.XMLParser(encoding=encoding) parser = ET_XMLParser(encoding=encoding)
try: try:
tree = ET.parse(stream, parser=parser) tree = ET.parse(stream, parser=parser)
except (ExpatError, ETParseError, ValueError) as exc: except (ExpatError, ETParseError, ValueError) as exc:
......
...@@ -165,6 +165,11 @@ class BaseSerializer(Field): ...@@ -165,6 +165,11 @@ class BaseSerializer(Field):
# Remove anything in 'exclude' # Remove anything in 'exclude'
if self.opts.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: for key in self.opts.exclude:
ret.pop(key, None) ret.pop(key, None)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment