diff options
Diffstat (limited to 'rest_framework/compat.py')
| -rw-r--r-- | rest_framework/compat.py | 81 | 
1 files changed, 11 insertions, 70 deletions
| diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 36413394..50f37014 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -5,15 +5,13 @@ versions of django/python, and compatibility wrappers around optional packages.  # flake8: noqa  from __future__ import unicode_literals - -import inspect -  from django.core.exceptions import ImproperlyConfigured +from django.conf import settings  from django.utils.encoding import force_text  from django.utils.six.moves.urllib.parse import urlparse as _urlparse -from django.conf import settings  from django.utils import six  import django +import inspect  def unicode_repr(instance): @@ -33,6 +31,13 @@ def unicode_to_repr(value):      return value +def unicode_http_header(value): +    # Coerce HTTP header value to unicode. +    if isinstance(value, six.binary_type): +        return value.decode('iso-8859-1') +    return value + +  def total_seconds(timedelta):      # TimeDelta.total_seconds() is only available in Python 2.7      if hasattr(timedelta, 'total_seconds'): @@ -232,77 +237,13 @@ except ImportError:      apply_markdown = None -# Yaml is optional -try: -    import yaml -except ImportError: -    yaml = None - - -# XML is optional -try: -    import defusedxml.ElementTree as etree -except ImportError: -    etree = None - - -# OAuth2 is optional -try: -    # Note: The `oauth2` package actually provides oauth1.0a support.  Urg. -    import oauth2 as oauth -except ImportError: -    oauth = None - - -# OAuthProvider is optional -try: -    import oauth_provider -    from oauth_provider.store import store as oauth_provider_store - -    # check_nonce's calling signature in django-oauth-plus changes sometime -    # between versions 2.0 and 2.2.1 -    def check_nonce(request, oauth_request, oauth_nonce, oauth_timestamp): -        check_nonce_args = inspect.getargspec(oauth_provider_store.check_nonce).args -        if 'timestamp' in check_nonce_args: -            return oauth_provider_store.check_nonce( -                request, oauth_request, oauth_nonce, oauth_timestamp -            ) -        return oauth_provider_store.check_nonce( -            request, oauth_request, oauth_nonce -        ) - -except (ImportError, ImproperlyConfigured): -    oauth_provider = None -    oauth_provider_store = None -    check_nonce = None - - -# OAuth 2 support is optional -try: -    import provider as oauth2_provider -    from provider import scope as oauth2_provider_scope -    from provider import constants as oauth2_constants - -    if oauth2_provider.__version__ in ('0.2.3', '0.2.4'): -        # 0.2.3 and 0.2.4 are supported version that do not support -        # timezone aware datetimes -        import datetime - -        provider_now = datetime.datetime.now -    else: -        # Any other supported version does use timezone aware datetimes -        from django.utils.timezone import now as provider_now -except ImportError: -    oauth2_provider = None -    oauth2_provider_scope = None -    oauth2_constants = None -    provider_now = None -  # `separators` argument to `json.dumps()` differs between 2.x and 3.x  # See: http://bugs.python.org/issue22767  if six.PY3:      SHORT_SEPARATORS = (',', ':')      LONG_SEPARATORS = (', ', ': ') +    INDENT_SEPARATORS = (',', ': ')  else:      SHORT_SEPARATORS = (b',', b':')      LONG_SEPARATORS = (b', ', b': ') +    INDENT_SEPARATORS = (b',', b': ') | 
