misc: replace basestring by six.string_types (#36515)

This commit is contained in:
Frédéric Péters 2019-11-12 19:53:06 +01:00
parent 6f279b7b28
commit 6d8c2ffb14
16 changed files with 47 additions and 34 deletions

View File

@ -23,6 +23,7 @@ import os
import errno
import calendar
from django.utils import six
from django.utils.six.moves.urllib import parse as urllib
from django.utils.six.moves.urllib import parse as urlparse
@ -40,17 +41,17 @@ def is_url_signed(utcnow=None, duration=DEFAULT_DURATION):
if not query_string:
return False
signature = get_request().form.get('signature')
if not isinstance(signature, basestring):
if not isinstance(signature, six.string_types):
return False
# verify signature
orig = get_request().form.get('orig')
if not isinstance(orig, basestring):
if not isinstance(orig, six.string_types):
raise AccessForbiddenError('missing/multiple orig field')
key = get_publisher().get_site_option(orig, 'api-secrets')
if not key:
raise AccessForbiddenError('invalid orig')
algo = get_request().form.get('algo')
if not isinstance(algo, basestring):
if not isinstance(algo, six.string_types):
raise AccessForbiddenError('missing/multiple algo field')
try:
algo = getattr(hashlib, algo)
@ -60,7 +61,7 @@ def is_url_signed(utcnow=None, duration=DEFAULT_DURATION):
hmac.new(key, query_string[:query_string.find('&signature=')], algo).digest()):
raise AccessForbiddenError('invalid signature')
timestamp = get_request().form.get('timestamp')
if not isinstance(timestamp, basestring):
if not isinstance(timestamp, six.string_types):
raise AccessForbiddenError('missing/multiple timestamp field')
try:
timestamp = datetime.datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%SZ')
@ -118,7 +119,7 @@ def get_user_from_api_query_string(api_name=None):
user = None
if get_request().form.get('email'):
email = get_request().form.get('email')
if not isinstance(email, basestring):
if not isinstance(email, six.string_types):
raise AccessForbiddenError('multiple email field')
users = list(get_publisher().user_class.get_users_with_email(email))
if users:
@ -127,7 +128,7 @@ def get_user_from_api_query_string(api_name=None):
raise AccessForbiddenError('unknown email')
elif get_request().form.get('NameID'):
ni = get_request().form.get('NameID')
if not isinstance(ni, basestring):
if not isinstance(ni, six.string_types):
raise AccessForbiddenError('multiple NameID field')
users = list(get_publisher().user_class.get_users_with_name_identifier(ni))
if users:

View File

@ -26,6 +26,7 @@ try:
except ImportError:
xlwt = None
from django.utils import six
from django.utils.encoding import force_text
from django.utils.six.moves.urllib import parse as urllib
from django.utils.six import StringIO
@ -2553,7 +2554,7 @@ class FormBackOfficeStatusPage(FormStatusPage):
k = safe(k)
r += htmltext('<li><code title="%s">%s</code>') % (k, k)
r += htmltext(' <div class="value"><span>%s</span>') % ellipsize(safe(v), 10000)
if not isinstance(v, basestring):
if not isinstance(v, six.string_types):
r += htmltext(' <span class="type">(%r)</span>') % type(v)
r += htmltext('</div></li>')
r += htmltext('</div>')

View File

@ -14,6 +14,8 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
from django.utils import six
from wcs.formdata import FormData
@ -39,6 +41,6 @@ class CardData(FormData):
if not field.varname:
continue
value = self.data and self.data.get(field.id)
if isinstance(value, basestring):
if isinstance(value, six.string_types):
item[field.varname] = value
return item

View File

@ -23,6 +23,7 @@ import sys
import tempfile
import hashlib
from django.utils import six
from django.utils.encoding import force_text
from django.utils.six.moves import configparser as ConfigParser
from django.utils.six.moves.urllib import parse as urlparse
@ -502,7 +503,7 @@ class CmdCheckHobos(Command):
if not createdb_cfg:
createdb_cfg = {}
for k, v in pub.cfg['postgresql'].items():
if v and isinstance(v, basestring):
if v and isinstance(v, six.string_types):
createdb_cfg[k] = v
try:

View File

@ -23,6 +23,8 @@ import psycopg2.errorcodes
from datetime import datetime
from shutil import rmtree
from django.utils import six
from ..qommon.ctl import Command, make_option
@ -58,7 +60,7 @@ class CmdDeleteTenant(Command):
if pub.is_using_postgresql():
postgresql_cfg = {}
for k, v in pub.cfg['postgresql'].items():
if v and isinstance(v, basestring):
if v and isinstance(v, six.string_types):
postgresql_cfg[k] = v
# if there's a createdb-connection-params, we can do a DROP DATABASE with

View File

@ -18,6 +18,7 @@ import collections
import hashlib
import xml.etree.ElementTree as ET
from django.utils import six
from django.utils.encoding import force_text
from django.utils.six.moves.urllib import parse as urllib
from django.utils.six.moves.urllib import parse as urlparse
@ -164,7 +165,7 @@ def get_structured_items(data_source, mode=None):
elif len(value[0]) == 1:
return [{'id': x[0], 'text': x[0]} for x in value]
return value
elif isinstance(value[0], basestring):
elif isinstance(value[0], six.string_types):
return [{'id': x, 'text': x} for x in value]
return value
except:

View File

@ -767,7 +767,7 @@ class StringField(WidgetField):
def migrate(self):
changed = super(StringField, self).migrate()
if isinstance(self.validation, basestring):
if isinstance(self.validation, six.string_types):
self.validation = {'type': 'regex', 'value': self.validation}
changed = True
return changed
@ -1806,7 +1806,7 @@ class PageField(Field):
def migrate(self):
changed = super(PageField, self).migrate()
if isinstance(self.condition, basestring):
if isinstance(self.condition, six.string_types):
if self.condition:
self.condition = {'type': 'python', 'value': self.condition}
else:
@ -1814,7 +1814,7 @@ class PageField(Field):
changed = True
for post_condition in self.post_conditions or []:
condition = post_condition.get('condition')
if isinstance(condition, basestring):
if isinstance(condition, six.string_types):
if condition:
post_condition['condition'] = {'type': 'python', 'value': condition}
else:

View File

@ -22,6 +22,8 @@ import re
import sys
import time
from django.utils import six
from quixote import get_request, get_publisher, get_session
from quixote.http_request import Upload
@ -407,7 +409,7 @@ class FormData(StorableObject):
if field.prefill and field.prefill.get('type') == 'user':
form_user_data[field.prefill['value']] = self.data.get(field.id)
user_label = ' '.join([form_user_data.get(x) for x in field_name_values
if isinstance(form_user_data.get(x), basestring)])
if isinstance(form_user_data.get(x), six.string_types)])
if user_label != self.user_label:
self.user_label = user_label
changed = True

View File

@ -24,6 +24,7 @@ import json
import xml.etree.ElementTree as ET
import datetime
from django.utils import six
from django.utils.encoding import force_text
from quixote import get_request, get_publisher
@ -809,7 +810,7 @@ class FormDef(StorableObject):
and 'id' in value['workflow']):
formdef.workflow_id = value['workflow'].get('id')
elif 'workflow' in value:
if isinstance(value['workflow'], basestring):
if isinstance(value['workflow'], six.string_types):
workflow = value.get('workflow')
else:
workflow = value['workflow'].get('name')
@ -961,7 +962,7 @@ class FormDef(StorableObject):
element = ET.SubElement(options, 'option')
element.attrib['varname'] = option
option_value = self.workflow_options.get(option)
if isinstance(option_value, basestring):
if isinstance(option_value, six.string_types):
element.text = force_text(self.workflow_options.get(option, ''), charset)
elif hasattr(option_value, 'base_filename'):
ET.SubElement(element, 'filename').text = option_value.base_filename

View File

@ -25,6 +25,7 @@ try:
except ImportError:
qrcode = None
from django.utils import six
from django.utils.http import quote
from django.utils.six import StringIO
from django.utils.safestring import mark_safe
@ -737,7 +738,7 @@ class FormPage(Directory, FormTemplateMixin):
continue
v, verified = field.get_prefill_value(user=prefill_user)
if verified:
if not isinstance(v, basestring) and field.convert_value_to_str:
if not isinstance(v, six.string_types) and field.convert_value_to_str:
# convert structured data to strings as if they were
# submitted by the browser.
v = field.convert_value_to_str(v)

View File

@ -556,7 +556,7 @@ class Template:
list = _get_value(valref, ctx)
except UnknownReference:
return
if isinstance(list, basestring):
if isinstance(list, six.string_types):
raise NeedSequenceError()
refname = valref[0]
ctx.for_index[refname] = idx = [ list, 0 ]

View File

@ -29,6 +29,7 @@ from pyproj import Geod
from django import template
from django.template import defaultfilters
from django.utils import dateparse
from django.utils import six
from django.utils.encoding import force_bytes, force_text
from django.utils.safestring import mark_safe
from wcs.qommon import evalutils
@ -138,7 +139,7 @@ def time(value, arg=None):
def parse_decimal(value):
if hasattr(value, 'get_value'):
value = value.get_value() # unlazy
if isinstance(value, basestring):
if isinstance(value, six.string_types):
# replace , by . for French users comfort
value = value.replace(',', '.')
try:
@ -327,7 +328,7 @@ def get_latlon(obj):
return None, None
if hasattr(obj, 'get_value'):
obj = obj.get_value() # unlazy
if not obj or not isinstance(obj, basestring) or ';' not in obj:
if not obj or not isinstance(obj, six.string_types) or ';' not in obj:
return None, None
try:
return float(obj.split(';')[0]), float(obj.split(';')[1])

View File

@ -21,11 +21,13 @@ import os
import subprocess
import stat
from django.utils import six
_openssl = 'openssl'
def decapsulate_pem_file(file_or_string):
'''Remove PEM header lines'''
if not isinstance(file_or_string, basestring):
if not isinstance(file_or_string, six.string_types):
content = file_or_string.read()
else:
content = file_or_string

View File

@ -269,10 +269,6 @@ def str_encode(value):
return value
def site_unicode(value):
if not isinstance(value, basestring):
value = force_text(value)
if isinstance(value, unicode):
return value
return force_text(value, get_publisher().site_charset)
def get_connection(new=False):
@ -1145,7 +1141,7 @@ class SqlMixin(object):
# turn {'poire': 2, 'abricot': 1, 'pomme': 3} into an array
value = [[x, site_unicode(y).encode('utf-8')] for x, y in value.items()]
elif sql_type == 'varchar':
assert isinstance(value, basestring)
assert isinstance(value, six.string_types)
elif sql_type == 'date':
assert type(value) is time.struct_time
value = datetime.datetime(value.tm_year, value.tm_mon, value.tm_mday)
@ -1487,7 +1483,7 @@ class SqlDataMixin(SqlMixin):
elif field.key in ('item', 'items'):
value = self.data.get('%s_display' % field.id)
if value:
if isinstance(value, basestring):
if isinstance(value, six.string_types):
fts_strings.append(value)
elif type(value) in (tuple, list):
fts_strings.extend(value)
@ -1768,7 +1764,7 @@ class SqlUser(SqlMixin, wcs.users.User):
elif field.key in ('item', 'items'):
value = self.form_data.get('%s_display' % field.id)
if value:
if isinstance(value, basestring):
if isinstance(value, six.string_types):
fts_strings.append(value)
elif type(value) in (tuple, list):
fts_strings.extend(value)

View File

@ -19,6 +19,8 @@ import json
import os
import sys
from django.utils import six
from quixote import get_publisher, get_request, redirect
from quixote.directory import Directory
@ -128,7 +130,7 @@ class JumpWorkflowStatusItem(WorkflowStatusJumpItem):
def migrate(self):
changed = super(JumpWorkflowStatusItem, self).migrate()
if isinstance(self.condition, basestring):
if isinstance(self.condition, six.string_types):
if self.condition:
self.condition = {'type': 'python', 'value': self.condition}
else:

View File

@ -1170,7 +1170,7 @@ class WorkflowGlobalActionTimeoutTrigger(WorkflowGlobalActionTrigger):
day=anchor_date.day)
elif isinstance(anchor_date, time.struct_time):
anchor_date = datetime.datetime.fromtimestamp(time.mktime(anchor_date))
elif isinstance(anchor_date, basestring) and anchor_date:
elif isinstance(anchor_date, six.string_types) and anchor_date:
try:
anchor_date = get_as_datetime(anchor_date)
except ValueError:
@ -1866,7 +1866,7 @@ class WorkflowStatusItem(XmlSerialisable):
@classmethod
def compute(cls, var, render=True, raises=False, context=None, formdata=None, status_item=None):
if not isinstance(var, basestring):
if not isinstance(var, six.string_types):
return var
expression = cls.get_expression(var)
@ -2540,7 +2540,7 @@ class SendmailWorkflowStatusItem(WorkflowStatusItem):
# this works around the fact that parametric workflows only support
# string values, so if we get set a string, we convert it here to an
# array.
if isinstance(self.to, basestring):
if isinstance(self.to, six.string_types):
self.to = [self.to]
addresses = []
@ -2556,7 +2556,7 @@ class SendmailWorkflowStatusItem(WorkflowStatusItem):
if isinstance(dest, list):
addresses.extend(dest)
continue
elif isinstance(dest, basestring) and ',' in dest:
elif isinstance(dest, six.string_types) and ',' in dest:
# if the email contains a comma consider it as a serie of
# emails
addresses.extend([x.strip() for x in dest.split(',')])