diff options
| author | Tom Christie | 2013-02-04 21:35:47 +0000 |
|---|---|---|
| committer | Tom Christie | 2013-02-04 21:35:47 +0000 |
| commit | 7dc4bce4e2d8bd21ba383ae1d62fdacf4998742e (patch) | |
| tree | 7544827416d24edba3441c6227122b97746355e6 /rest_framework | |
| parent | 937ef008081fb20907494eb888e7374a8eb51a4f (diff) | |
| download | django-rest-framework-7dc4bce4e2d8bd21ba383ae1d62fdacf4998742e.tar.bz2 | |
Fix 2.6 compat
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) |
