Commit 545a7c20 authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki

py2/py3: stop using deprecated urllib.split* functions.

parent d1a6a688
...@@ -55,10 +55,7 @@ from Products.ERP5 import _dtmldir ...@@ -55,10 +55,7 @@ from Products.ERP5 import _dtmldir
from six.moves import xrange from six.moves import xrange
from six.moves import cStringIO as StringIO from six.moves import cStringIO as StringIO
from six.moves.urllib.request import pathname2url, urlopen, urlretrieve from six.moves.urllib.request import pathname2url, urlopen, urlretrieve
try: from six.moves.urllib.parse import urlparse
from urllib import splittype
except ImportError: # six.PY3
from urllib.parse import splittype
from six.moves import urllib from six.moves import urllib
import re import re
from xml.dom.minidom import parse from xml.dom.minidom import parse
...@@ -385,7 +382,9 @@ class TemplateTool (BaseTool): ...@@ -385,7 +382,9 @@ class TemplateTool (BaseTool):
if id is None: if id is None:
id = self.generateNewId() id = self.generateNewId()
urltype, path = splittype(url) parsed_url = urlparse(url)
urltype = parsed_url.scheme
path = parsed_url.path
if WIN and urltype and '\\' in path: if WIN and urltype and '\\' in path:
urltype = None urltype = None
path = url path = url
...@@ -625,7 +624,9 @@ class TemplateTool (BaseTool): ...@@ -625,7 +624,9 @@ class TemplateTool (BaseTool):
#LOG('updateRepositoryBusiessTemplateList', 0, #LOG('updateRepositoryBusiessTemplateList', 0,
# 'repository_list = %r' % (repository_list,)) # 'repository_list = %r' % (repository_list,))
for repository in repository_list: for repository in repository_list:
urltype, url = splittype(repository) parsed_url = urlparse(url)
urltype = parsed_url.scheme
path = parsed_url.path
if WIN and urltype and '\\' in url: if WIN and urltype and '\\' in url:
urltype = None urltype = None
url = repository url = repository
......
...@@ -61,7 +61,7 @@ from Products.PythonScripts.PythonScript import PythonScript ...@@ -61,7 +61,7 @@ from Products.PythonScripts.PythonScript import PythonScript
from Products.ERP5Type.Accessor.Constant import PropertyGetter as ConstantGetter from Products.ERP5Type.Accessor.Constant import PropertyGetter as ConstantGetter
from Products.ERP5Form.PreferenceTool import Priority from Products.ERP5Form.PreferenceTool import Priority
from zLOG import LOG, DEBUG from zLOG import LOG, DEBUG
from Products.ERP5Type.Utils import convertToUpperCase from Products.ERP5Type.Utils import convertToUpperCase, str2bytes
from Products.ERP5Type.tests.backportUnittest import SetupSiteError from Products.ERP5Type.tests.backportUnittest import SetupSiteError
from Products.ERP5Type.tests.utils import addUserToDeveloperRole from Products.ERP5Type.tests.utils import addUserToDeveloperRole
from Products.ERP5Type.tests.utils import parseListeningAddress from Products.ERP5Type.tests.utils import parseListeningAddress
...@@ -590,17 +590,18 @@ class ERP5TypeTestCaseMixin(ProcessingNodeTestCase, PortalTestCase): ...@@ -590,17 +590,18 @@ class ERP5TypeTestCaseMixin(ProcessingNodeTestCase, PortalTestCase):
bt5_path_list += [os.path.join(path, "*") for path in bt5_path_list] bt5_path_list += [os.path.join(path, "*") for path in bt5_path_list]
def search(path, template): def search(path, template):
urltype, url = urllib.splittype(path + '/' + template) parsed_url = six.moves.urllib.parse.urlparse(path + '/' + template)
if urltype == 'http': if parsed_url.scheme == 'http':
host, selector = urllib.splithost(url) user = parsed_url.username
user_passwd, host = urllib.splituser(host) password = parsed_url.password
host = urllib.unquote(host) host = parsed_url.hostname
h = httplib.HTTP(host) selector = parsed_url.path
h = http_client.HTTP(host)
Please register or sign in to reply
h.putrequest('HEAD', selector) h.putrequest('HEAD', selector)
h.putheader('Host', host) h.putheader('Host', host)
if user_passwd: if user and passwd:
  • Undefined variable 'passwd' here

  • and more errors below

    image

    if I understand correctly, this code is to support http://user:password@host/... style URLs (and it only http, not https) as business template repositories.

    I don't think anybody uses this, can't we drop this part ?

  • What I have in mind is that keeping only this branch might be enough

          def search(path, template):
            path_list = glob(os.path.join(path, template))
            if path_list:
              return path_list[0]

    ( and I also think that it would be nice to run pylint on Products code, we don't do it because there was too much bad code, but we moved a lot of code in business templates, maybe now it would be possible to consider pylint on Products as well )

  • let's try !1678 (closed)

Please register or sign in to reply
h.putheader('Authorization', h.putheader('Authorization',
'Basic %s' % base64.b64encode(user_passwd).strip()) 'Basic %s' % base64.b64encode(str2bytes('%s:%s' % (user, passwd))).strip())
h.endheaders() h.endheaders()
errcode, errmsg, headers = h.getreply() errcode, errmsg, headers = h.getreply()
if errcode == 200: if errcode == 200:
...@@ -1313,7 +1314,7 @@ class ERP5TypeCommandLineTestCase(ERP5TypeTestCaseMixin): ...@@ -1313,7 +1314,7 @@ class ERP5TypeCommandLineTestCase(ERP5TypeTestCaseMixin):
sql = kw.get('erp5_sql_connection_string') sql = kw.get('erp5_sql_connection_string')
if sql: if sql:
app[portal_name]._setProperty('erp5_site_global_id', app[portal_name]._setProperty('erp5_site_global_id',
base64.standard_b64encode(sql)) base64.standard_b64encode(str2bytes(sql)))
if not quiet: if not quiet:
ZopeTestCase._print('done (%.3fs)\n' % (time.time() - _start)) ZopeTestCase._print('done (%.3fs)\n' % (time.time() - _start))
# Release locks # Release locks
......
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