Commit 03418d95 authored by Michal Čihař's avatar Michal Čihař

Handle urllib improrts through six for Python 3 compatibility

Signed-off-by: default avatarMichal Čihař <michal@cihar.com>
parent 8b769b1b
......@@ -14,6 +14,8 @@ Django (>= 1.7)
https://www.djangoproject.com/
Translate-toolkit (>= 1.10.0)
http://toolkit.translatehouse.org/
Six (>= 1.7.0)
https://pypi.python.org/pypi/six
Git (>= 1.6)
http://git-scm.com/
Mercurial (>= 2.8) (optional for Mercurial repositories support)
......
......@@ -3,6 +3,7 @@ Whoosh>=2.5.2,!=2.6.0
translate-toolkit>=1.10.0
lxml>=3.1.0
Pillow
six
python-dateutil
python-social-auth>=0.2.0
django-crispy-forms>=1.4.0
......
#!/usr/bin/python
import json
import urllib2
from six.moves.urllib.request import urlopen
import imp
import PyICU
......@@ -24,7 +24,7 @@ def print_language(lang, fmt='{0} ({1})'):
def main():
# load data
handle = urllib2.urlopen(URL)
handle = urlopen(URL)
data = handle.read()
handle.close()
# parse data
......
......@@ -20,11 +20,11 @@
from __future__ import unicode_literals
import urllib2
import sys
import urllib
import hashlib
import os.path
from six.moves.urllib.request import Request, urlopen
from six.moves.urllib.parse import urlencode
from django.core.cache import caches, InvalidCacheBackendError
from django.utils.html import escape
from django.utils.safestring import mark_safe
......@@ -79,7 +79,7 @@ def avatar_for_email(email, size=80):
url = "{0}avatar/{1}?{2}".format(
appsettings.AVATAR_URL_PREFIX,
mail_hash,
urllib.urlencode({
urlencode({
's': str(size),
'd': appsettings.AVATAR_DEFAULT_IMAGE
})
......@@ -154,12 +154,12 @@ def download_avatar_image(user, size):
Downloads avatar image from remote server.
"""
url = avatar_for_email(user.email, size)
request = urllib2.Request(url)
request = Request(url)
request.timeout = 0.5
request.add_header('User-Agent', USER_AGENT)
# Fire request
handle = urllib2.urlopen(request)
handle = urlopen(request)
# Read and possibly convert response
return handle.read()
......
......@@ -24,7 +24,7 @@ from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
import urllib2
from six.moves.urllib.request import Request, urlopen
import json
from social.pipeline.partial import partial
......@@ -40,14 +40,14 @@ from weblate import USER_AGENT
def get_github_email(access_token):
"""Get real email from GitHub"""
request = urllib2.Request('https://api.github.com/user/emails')
request = Request('https://api.github.com/user/emails')
request.timeout = 1.0
request.add_header('User-Agent', USER_AGENT)
request.add_header(
'Authorization',
'token {0}'.format(access_token)
)
handle = urllib2.urlopen(request)
handle = urlopen(request)
data = json.load(handle)
email = None
for entry in data:
......
......@@ -36,7 +36,7 @@ from django.views.generic import TemplateView
from django.contrib.auth import update_session_auth_hash
from django.core.urlresolvers import reverse
from urllib import urlencode
from six.moves.urllib.parse import urlencode
from weblate.accounts.forms import (
RegistrationForm, PasswordForm, PasswordChangeForm, EmailForm, ResetForm,
......@@ -378,7 +378,7 @@ def weblate_login(request):
return redirect('profile')
# Redirect if there is only one backend
auth_backends = load_backends(BACKENDS).keys()
auth_backends = list(load_backends(BACKENDS).keys())
if len(auth_backends) == 1 and auth_backends[0] != 'email':
return redirect('social:begin', auth_backends[0])
......
......@@ -18,7 +18,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from StringIO import StringIO
from six import StringIO
from django.test import TestCase
from django.contrib.auth.models import User
......
......@@ -23,7 +23,7 @@ from django.utils.translation import ugettext as _
from django.http import Http404
from weblate.lang.models import Language
from weblate.trans.models import Project, Dictionary, Change
from urllib import urlencode
from six.moves.urllib.parse import urlencode
def show_languages(request):
......
......@@ -110,6 +110,16 @@ def get_versions():
'1.7',
))
name = 'six'
url = 'https://pypi.python.org/pypi/six'
mod = get_version_module('social', name, url)
result.append((
name,
url,
mod.__version__,
'1.7.0',
))
name = 'python-social-auth'
url = 'http://psa.matiasaguirre.net/'
mod = get_version_module('social', name, url)
......
......@@ -40,7 +40,7 @@ from weblate.trans.permissions import (
from weblate.trans.specialchars import get_special_chars
from weblate.trans.validators import validate_check_flags
from weblate.accounts.forms import sort_choices
from urllib import urlencode
from six.moves.urllib.parse import urlencode
from datetime import date
from weblate.logger import LOGGER
from weblate import get_doc_url
......
......@@ -24,10 +24,10 @@ Base code for machine translation services.
from django.core.cache import cache
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from six.moves.urllib.request import Request, urlopen
from six.moves.urllib.parse import urlencode
import sys
import json
import urllib
import urllib2
from weblate import USER_AGENT
from weblate.logger import LOGGER
from weblate.trans.util import report_error
......@@ -72,7 +72,7 @@ class MachineTranslation(object):
'''
# Encode params
if len(kwargs) > 0:
params = urllib.urlencode(kwargs)
params = urlencode(kwargs)
else:
params = ''
......@@ -85,7 +85,7 @@ class MachineTranslation(object):
url = '%s?%s' % (url, params)
# Create request object with custom headers
request = urllib2.Request(url)
request = Request(url)
request.timeout = 0.5
request.add_header('User-Agent', USER_AGENT)
# Optional authentication
......@@ -94,9 +94,9 @@ class MachineTranslation(object):
# Fire request
if http_post:
handle = urllib2.urlopen(request, params)
handle = urlopen(request, params)
else:
handle = urllib2.urlopen(request)
handle = urlopen(request)
# Read and possibly convert response
text = handle.read()
......
......@@ -21,7 +21,7 @@
from weblate.trans.machine.base import (
MachineTranslation, MissingConfiguration
)
import urllib
from six.moves.urllib.parse import quote
from weblate import appsettings
......@@ -68,9 +68,9 @@ class TMServerTranslation(MachineTranslation):
'''
url = '%s/tmserver/%s/%s/unit/%s' % (
self.url,
urllib.quote(appsettings.SOURCE_LANGUAGE),
urllib.quote(language),
urllib.quote(text[:500].encode('utf-8').replace('\r', ' ')),
quote(appsettings.SOURCE_LANGUAGE),
quote(language),
quote(text[:500].encode('utf-8').replace('\r', ' ')),
)
response = self.json_req(url)
......
......@@ -48,7 +48,7 @@ from weblate.trans.views.helper import (
import weblate
import datetime
from urllib import urlencode
from six.moves.urllib.parse import urlencode
def home(request):
......
......@@ -31,7 +31,7 @@ from weblate.trans.models.changes import Change
from weblate.trans.views.helper import get_project_translation
from weblate.lang.models import Language
from weblate.trans.permissions import can_download_changes
from urllib import urlencode
from six.moves.urllib.parse import urlencode
import csv
......
......@@ -18,7 +18,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import urllib
from six.moves.urllib.parse import urlencode
from django.shortcuts import render
from django.utils.translation import ugettext as _
......@@ -42,7 +42,7 @@ def acl_checks(user):
def encode_optional(params):
if params:
return '?{0}'.format(urllib.urlencode(params))
return '?{0}'.format(urlencode(params))
else:
return ''
......
......@@ -36,7 +36,7 @@ import weblate
import csv
import sys
from urllib import urlencode
from six.moves.urllib.parse import urlencode
def dict_title(prj, lang):
......
......@@ -37,7 +37,7 @@ from weblate.trans.permissions import (
can_use_mt, can_see_repository_status, can_ignore_check,
)
from urllib import urlencode
from six.moves.urllib.parse import urlencode
def get_string(request, unit_id):
......
......@@ -26,7 +26,7 @@ from django.shortcuts import render, redirect, get_object_or_404
from django.utils.translation import ugettext as _
from django.views.decorators.http import require_POST
from django.contrib import messages
from urllib import urlencode
from six.moves.urllib.parse import urlencode
from weblate.trans.views.helper import get_subproject
from weblate.trans.models import Translation, Source
......
......@@ -25,7 +25,7 @@ from weblate.trans.fonts import is_base, get_font
from weblate.appsettings import ENABLE_HTTPS
from cStringIO import StringIO
import os.path
import urllib
from six.moves.urllib.parse import quote
COLOR_DATA = {
......@@ -360,7 +360,7 @@ class ShieldsBadgeWidget(Widget):
return '{0}://img.shields.io/badge/{1}-{2}-{3}.svg'.format(
proto,
urllib.quote(_('translated').encode('utf-8')),
quote(_('translated').encode('utf-8')),
'{0}%25'.format(int(self.percent)),
color
)
......
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