aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Ordoquy2013-01-02 19:06:55 +0100
committerXavier Ordoquy2013-01-02 19:06:55 +0100
commit4b77b3c5adcc147316629a01e05a3600d1d89d27 (patch)
treea5b2f7860f8644a0d81a715f5077ecd4ea08816a
parentc95fa81cb25fbdb7af3c8cc39cc45e49eff66c98 (diff)
downloaddjango-rest-framework-4b77b3c5adcc147316629a01e05a3600d1d89d27.tar.bz2
Move the urlparse lib compatibility to the compat file.
-rw-r--r--rest_framework/compat.py8
-rw-r--r--rest_framework/relations.py4
-rw-r--r--rest_framework/templatetags/rest_framework.py11
3 files changed, 13 insertions, 10 deletions
diff --git a/rest_framework/compat.py b/rest_framework/compat.py
index d5a9d995..42ad9e93 100644
--- a/rest_framework/compat.py
+++ b/rest_framework/compat.py
@@ -30,6 +30,13 @@ except ImportError:
from six import BytesIO
+# urlparse compat import (Required because it changed in python 3.x)
+try:
+ from urllib import parse as urlparse
+except ImportError:
+ import urlparse as urlparse
+
+
# Try to import PIL in either of the two ways it can end up installed.
try:
from PIL import Image
@@ -109,7 +116,6 @@ else:
import re
import random
import logging
- import urlparse
from django.conf import settings
from django.core.urlresolvers import get_callable
diff --git a/rest_framework/relations.py b/rest_framework/relations.py
index fe8cbc44..33d3732f 100644
--- a/rest_framework/relations.py
+++ b/rest_framework/relations.py
@@ -12,7 +12,7 @@ except ImportError:
from django.utils.encoding import smart_unicode as smart_text
from rest_framework.fields import Field, WritableField
from rest_framework.reverse import reverse
-from urlparse import urlparse
+from rest_framework.compat import urlparse
##### Relational fields #####
@@ -360,7 +360,7 @@ class HyperlinkedRelatedField(RelatedField):
if value.startswith('http:') or value.startswith('https:'):
# If needed convert absolute URLs to relative path
- value = urlparse(value).path
+ value = urlparse.urlparse(value).path
prefix = get_script_prefix()
if value.startswith(prefix):
value = '/' + value[len(prefix):]
diff --git a/rest_framework/templatetags/rest_framework.py b/rest_framework/templatetags/rest_framework.py
index 18427802..52c7a59c 100644
--- a/rest_framework/templatetags/rest_framework.py
+++ b/rest_framework/templatetags/rest_framework.py
@@ -1,4 +1,4 @@
-from __future__ import unicode_literals
+from __future__ import unicode_literals, absolute_import
import six
from django import template
@@ -10,10 +10,7 @@ except ImportError:
from django.utils.encoding import force_unicode as force_text
from django.utils.html import escape
from django.utils.safestring import SafeData, mark_safe
-try:
- from urllib.parse import urlsplit, urlunsplit
-except ImportError:
- from urlparse import urlsplit, urlunsplit
+from rest_framework.compat import urlparse
import re
import string
@@ -108,11 +105,11 @@ def replace_query_param(url, key, val):
Given a URL and a key/val pair, set or replace an item in the query
parameters of the URL, and return the new URL.
"""
- (scheme, netloc, path, query, fragment) = urlsplit(url)
+ (scheme, netloc, path, query, fragment) = urlparse.urlsplit(url)
query_dict = QueryDict(query).copy()
query_dict[key] = val
query = query_dict.urlencode()
- return urlunsplit((scheme, netloc, path, query, fragment))
+ return urlparse.urlunsplit((scheme, netloc, path, query, fragment))
# Regex for adding classes to html snippets