python3: use urlparse from six

This commit is contained in:
Frédéric Péters 2018-03-25 16:14:17 +02:00
parent 98f3aac85a
commit ef474d3ade
8 changed files with 22 additions and 24 deletions

View File

@ -19,7 +19,6 @@
import datetime
import json
import logging
import urlparse
from decimal import Decimal
@ -38,6 +37,7 @@ from django.core.urlresolvers import reverse
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from django.utils.formats import localize
from django.utils.http import urlencode
from django.utils.six.moves.urllib import parse as urlparse
from django.contrib.auth.models import User
from django.template.loader import render_to_string

View File

@ -14,13 +14,12 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from urlparse import urlparse
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from django.db import connection
from django.test.client import RequestFactory
from django.utils import translation
from django.utils.six.moves.urllib.parse import urlparse
from combo.apps.momo.utils import generate_manifest, GenerationError, GenerationInfo

View File

@ -16,7 +16,6 @@
import logging
import json
import urlparse
from requests.exceptions import RequestException, HTTPError

View File

@ -14,10 +14,10 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import urlparse
from django.contrib import messages
from django.http import HttpResponseRedirect, HttpResponseBadRequest
from django.http import HttpResponseRedirect
from django.utils.six.moves.urllib import parse as urlparse
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import View

View File

@ -24,7 +24,6 @@ import os
import re
import requests
import subprocess
import urlparse
from django.apps import apps
from django.conf import settings
@ -43,6 +42,7 @@ from django import template
from django.utils.encoding import force_text
from django.utils.html import strip_tags
from django.utils.safestring import mark_safe
from django.utils.six.moves.urllib.parse import urlparse
from django.utils.text import slugify
from django.utils.translation import ugettext_lazy as _
from django.forms.widgets import MediaDefiningClass
@ -826,7 +826,7 @@ class LinkCell(CellBase):
context['title'] = self.title or self.url
if self.anchor:
context['url'] += '#' + self.anchor
if render_skeleton and not urlparse.urlparse(context['url']).netloc:
if render_skeleton and not urlparse(context['url']).netloc:
# create full URL when used in a skeleton
context['url'] = request.build_absolute_uri(context['url'])
return context

View File

@ -15,8 +15,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
import urllib
import urlparse
import django
from django.conf import settings
@ -31,6 +29,7 @@ from django.shortcuts import render, resolve_url
from django.template import engines
from django.template.loader import get_template, TemplateDoesNotExist
from django.utils import lorem_ipsum, timezone
from django.utils.six.moves.urllib.parse import urlparse, quote
from django.views.decorators.csrf import csrf_exempt
from django.utils.translation import ugettext as _
@ -56,7 +55,7 @@ def login(request, *args, **kwargs):
if not 'next' in request.GET:
return HttpResponseRedirect(resolve_url('mellon_login'))
return HttpResponseRedirect(resolve_url('mellon_login') + '?next='
+ urllib.quote(request.GET.get('next')))
+ quote(request.GET.get('next')))
return auth_views.login(request, *args, **kwargs)
def logout(request, next_page=None):
@ -186,7 +185,7 @@ def skeleton(request):
raise PermissionDenied()
source = request.GET['source']
parsed_source = urlparse.urlparse(source)
parsed_source = urlparse(source)
netloc = parsed_source.netloc
if parsed_source.scheme == 'https' and netloc.endswith(':443'):
# somme HTTP client (like Mozilla/1.1 (compatible; MSPIE 2.0; Windows
@ -209,7 +208,7 @@ def skeleton(request):
if selected_page is None or len(redirect_url) > len(selected_page.get_redirect_url()):
selected_page = page
if urlparse.urlparse(redirect_url).netloc == netloc:
if urlparse(redirect_url).netloc == netloc:
same_domain_pages.append(page)
if selected_page is None and same_domain_pages:
@ -222,7 +221,7 @@ def skeleton(request):
for service_id in settings.KNOWN_SERVICES or {}:
for service_key in settings.KNOWN_SERVICES[service_id]:
service = settings.KNOWN_SERVICES[service_id][service_key]
if urlparse.urlparse(service.get('url')).netloc == netloc:
if urlparse(service.get('url')).netloc == netloc:
selected_page = Page()
selected_page.id = '__root'
selected_page.template_name = 'standard'

View File

@ -17,7 +17,6 @@
import hashlib
import logging
from StringIO import StringIO
import urlparse
from requests import Response, Session as RequestsSession
@ -25,6 +24,7 @@ from django.conf import settings
from django.core.cache import cache
from django.utils.encoding import smart_bytes
from django.utils.http import urlencode
from django.utils.six.moves.urllib.parse import urlparse, urlunparse
from .signature import sign_url
@ -49,12 +49,12 @@ class Requests(RequestsSession):
if remote_service == 'auto':
remote_service = None
scheme, netloc, path, params, query, fragment = urlparse.urlparse(url)
scheme, netloc, path, params, query, fragment = urlparse(url)
for services in settings.KNOWN_SERVICES.values():
for service in services.values():
remote_url = service.get('url')
remote_scheme, remote_netloc, r_path, r_params, r_query, r_fragment = \
urlparse.urlparse(remote_url)
urlparse(remote_url)
if remote_scheme == scheme and remote_netloc == netloc:
remote_service = service
break
@ -64,7 +64,7 @@ class Requests(RequestsSession):
if remote_service:
# only keeps the path (URI) in url parameter, scheme and netloc are
# in remote_service
url = urlparse.urlunparse(('', '', path, params, query, fragment))
url = urlunparse(('', '', path, params, query, fragment))
else:
logging.warning('service not found in settings.KNOWN_SERVICES for %s', url)
@ -91,7 +91,7 @@ class Requests(RequestsSession):
query_params['orig'] = remote_service.get('orig')
remote_service_base_url = remote_service.get('url')
scheme, netloc, old_path, params, old_query, fragment = urlparse.urlparse(
scheme, netloc, old_path, params, old_query, fragment = urlparse(
remote_service_base_url)
query = urlencode(query_params)
@ -101,7 +101,7 @@ class Requests(RequestsSession):
else:
path = url
url = urlparse.urlunparse((scheme, netloc, path, params, query, fragment))
url = urlunparse((scheme, netloc, path, params, query, fragment))
if method == 'GET' and cache_duration:
# handle cache

View File

@ -19,17 +19,18 @@ import datetime
import hmac
import hashlib
import random
import urlparse
from django.conf import settings
from django.utils.http import quote, urlencode
from django.utils.six.moves.urllib.parse import urlparse, urlunparse, parse_qs
# Simple signature scheme for query strings
def sign_url(url, key, algo='sha256', timestamp=None, nonce=None):
parsed = urlparse.urlparse(url)
parsed = urlparse(url)
new_query = sign_query(parsed.query, key, algo, timestamp, nonce)
return urlparse.urlunparse(parsed[:4] + (new_query,) + parsed[5:])
return urlunparse(parsed[:4] + (new_query,) + parsed[5:])
def sign_query(query, key, algo='sha256', timestamp=None, nonce=None):
if timestamp is None:
@ -69,7 +70,7 @@ def check_request_signature(django_request, keys=[]):
def check_query(query, keys, known_nonce=None, timedelta=30):
parsed = urlparse.parse_qs(query)
parsed = parse_qs(query)
if not ('signature' in parsed and 'algo' in parsed and
'timestamp' in parsed and 'nonce' in parsed):
return False