mirror of https://github.com/django/django.git
Replaced some smart_xxx by force_xxx equivalent
smart_str/smart_text should only be used when a potential lazy string should be preserved in the result of the function call.
This commit is contained in:
parent
36df198e4b
commit
ae88e73fa6
|
@ -7,7 +7,7 @@ from __future__ import unicode_literals
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import formats
|
from django.utils import formats
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.encoding import smart_text, smart_str, iri_to_uri
|
from django.utils.encoding import smart_text, force_str, iri_to_uri
|
||||||
from django.db.models.query import QuerySet
|
from django.db.models.query import QuerySet
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ class EasyModel(object):
|
||||||
self.verbose_name_plural = model._meta.verbose_name_plural
|
self.verbose_name_plural = model._meta.verbose_name_plural
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str('<EasyModel for %s>' % self.model._meta.object_name)
|
return force_str('<EasyModel for %s>' % self.model._meta.object_name)
|
||||||
|
|
||||||
def model_databrowse(self):
|
def model_databrowse(self):
|
||||||
"Returns the ModelDatabrowse class for this model."
|
"Returns the ModelDatabrowse class for this model."
|
||||||
|
@ -62,7 +62,7 @@ class EasyField(object):
|
||||||
self.model, self.field = easy_model, field
|
self.model, self.field = easy_model, field
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str('<EasyField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
|
return force_str('<EasyField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
|
||||||
|
|
||||||
def choices(self):
|
def choices(self):
|
||||||
for value, label in self.field.choices:
|
for value, label in self.field.choices:
|
||||||
|
@ -80,7 +80,7 @@ class EasyChoice(object):
|
||||||
self.value, self.label = value, label
|
self.value, self.label = value, label
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str('<EasyChoice for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
|
return force_str('<EasyChoice for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
|
||||||
|
|
||||||
def url(self):
|
def url(self):
|
||||||
return '%s%s/%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.field.name, iri_to_uri(self.value))
|
return '%s%s/%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.field.name, iri_to_uri(self.value))
|
||||||
|
@ -91,7 +91,7 @@ class EasyInstance(object):
|
||||||
self.model, self.instance = easy_model, instance
|
self.model, self.instance = easy_model, instance
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str('<EasyInstance for %s (%s)>' % (self.model.model._meta.object_name, self.instance._get_pk_val()))
|
return force_str('<EasyInstance for %s (%s)>' % (self.model.model._meta.object_name, self.instance._get_pk_val()))
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
val = smart_text(self.instance)
|
val = smart_text(self.instance)
|
||||||
|
@ -135,7 +135,7 @@ class EasyInstanceField(object):
|
||||||
self.raw_value = getattr(instance.instance, field.name)
|
self.raw_value = getattr(instance.instance, field.name)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str('<EasyInstanceField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
|
return force_str('<EasyInstanceField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
|
||||||
|
|
||||||
def values(self):
|
def values(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -6,7 +6,7 @@ from threading import local
|
||||||
from django.core.cache.backends.base import BaseCache, InvalidCacheBackendError
|
from django.core.cache.backends.base import BaseCache, InvalidCacheBackendError
|
||||||
|
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import force_str
|
||||||
|
|
||||||
class BaseMemcachedCache(BaseCache):
|
class BaseMemcachedCache(BaseCache):
|
||||||
def __init__(self, server, params, library, value_not_found_exception):
|
def __init__(self, server, params, library, value_not_found_exception):
|
||||||
|
@ -53,7 +53,7 @@ class BaseMemcachedCache(BaseCache):
|
||||||
|
|
||||||
def make_key(self, key, version=None):
|
def make_key(self, key, version=None):
|
||||||
# Python 2 memcache requires the key to be a byte string.
|
# Python 2 memcache requires the key to be a byte string.
|
||||||
return smart_str(super(BaseMemcachedCache, self).make_key(key, version))
|
return force_str(super(BaseMemcachedCache, self).make_key(key, version))
|
||||||
|
|
||||||
def add(self, key, value, timeout=0, version=None):
|
def add(self, key, value, timeout=0, version=None):
|
||||||
key = self.make_key(key, version=version)
|
key = self.make_key(key, version=version)
|
||||||
|
|
|
@ -8,7 +8,7 @@ from io import BytesIO
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.files.base import File
|
from django.core.files.base import File
|
||||||
from django.core.files import temp as tempfile
|
from django.core.files import temp as tempfile
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import force_str
|
||||||
|
|
||||||
__all__ = ('UploadedFile', 'TemporaryUploadedFile', 'InMemoryUploadedFile',
|
__all__ = ('UploadedFile', 'TemporaryUploadedFile', 'InMemoryUploadedFile',
|
||||||
'SimpleUploadedFile')
|
'SimpleUploadedFile')
|
||||||
|
@ -30,7 +30,7 @@ class UploadedFile(File):
|
||||||
self.charset = charset
|
self.charset = charset
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str("<%s: %s (%s)>" % (
|
return force_str("<%s: %s (%s)>" % (
|
||||||
self.__class__.__name__, self.name, self.content_type))
|
self.__class__.__name__, self.name, self.content_type))
|
||||||
|
|
||||||
def _get_name(self):
|
def _get_name(self):
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.core import signals
|
||||||
from django.core.handlers import base
|
from django.core.handlers import base
|
||||||
from django.core.urlresolvers import set_script_prefix
|
from django.core.urlresolvers import set_script_prefix
|
||||||
from django.utils import datastructures
|
from django.utils import datastructures
|
||||||
from django.utils.encoding import force_text, smart_str, iri_to_uri
|
from django.utils.encoding import force_str, force_text, iri_to_uri
|
||||||
from django.utils.log import getLogger
|
from django.utils.log import getLogger
|
||||||
|
|
||||||
logger = getLogger('django.request')
|
logger = getLogger('django.request')
|
||||||
|
@ -246,5 +246,5 @@ class WSGIHandler(base.BaseHandler):
|
||||||
response_headers = [(str(k), str(v)) for k, v in response.items()]
|
response_headers = [(str(k), str(v)) for k, v in response.items()]
|
||||||
for c in response.cookies.values():
|
for c in response.cookies.values():
|
||||||
response_headers.append((str('Set-Cookie'), str(c.output(header=''))))
|
response_headers.append((str('Set-Cookie'), str(c.output(header=''))))
|
||||||
start_response(smart_str(status), response_headers)
|
start_response(force_str(status), response_headers)
|
||||||
return response
|
return response
|
||||||
|
|
|
@ -12,7 +12,7 @@ import traceback
|
||||||
import django
|
import django
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.core.management.color import color_style
|
from django.core.management.color import color_style
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import force_str
|
||||||
from django.utils.six import StringIO
|
from django.utils.six import StringIO
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ class OutputWrapper(object):
|
||||||
msg += ending
|
msg += ending
|
||||||
style_func = [f for f in (style_func, self.style_func, lambda x:x)
|
style_func = [f for f in (style_func, self.style_func, lambda x:x)
|
||||||
if f is not None][0]
|
if f is not None][0]
|
||||||
self._out.write(smart_str(style_func(msg)))
|
self._out.write(force_str(style_func(msg)))
|
||||||
|
|
||||||
|
|
||||||
class BaseCommand(object):
|
class BaseCommand(object):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from django.core.management.color import color_style
|
from django.core.management.color import color_style
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import force_str
|
||||||
from django.utils.itercompat import is_iterable
|
from django.utils.itercompat import is_iterable
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ class ModelErrorCollection:
|
||||||
|
|
||||||
def add(self, context, error):
|
def add(self, context, error):
|
||||||
self.errors.append((context, error))
|
self.errors.append((context, error))
|
||||||
self.outfile.write(self.style.ERROR(smart_str("%s: %s\n" % (context, error))))
|
self.outfile.write(self.style.ERROR(force_str("%s: %s\n" % (context, error))))
|
||||||
|
|
||||||
def get_validation_errors(outfile, app=None):
|
def get_validation_errors(outfile, app=None):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -14,7 +14,7 @@ from threading import local
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
|
from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
|
||||||
from django.utils.datastructures import MultiValueDict
|
from django.utils.datastructures import MultiValueDict
|
||||||
from django.utils.encoding import iri_to_uri, force_text, smart_str
|
from django.utils.encoding import force_str, force_text, iri_to_uri
|
||||||
from django.utils.functional import memoize, lazy
|
from django.utils.functional import memoize, lazy
|
||||||
from django.utils.importlib import import_module
|
from django.utils.importlib import import_module
|
||||||
from django.utils.module_loading import module_has_submodule
|
from django.utils.module_loading import module_has_submodule
|
||||||
|
@ -195,7 +195,7 @@ class RegexURLPattern(LocaleRegexProvider):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str('<%s %s %s>' % (self.__class__.__name__, self.name, self.regex.pattern))
|
return force_str('<%s %s %s>' % (self.__class__.__name__, self.name, self.regex.pattern))
|
||||||
|
|
||||||
def add_prefix(self, prefix):
|
def add_prefix(self, prefix):
|
||||||
"""
|
"""
|
||||||
|
@ -245,7 +245,7 @@ class RegexURLResolver(LocaleRegexProvider):
|
||||||
self._app_dict = {}
|
self._app_dict = {}
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str('<%s %s (%s:%s) %s>' % (
|
return force_str('<%s %s (%s:%s) %s>' % (
|
||||||
self.__class__.__name__, self.urlconf_name, self.app_name,
|
self.__class__.__name__, self.urlconf_name, self.app_name,
|
||||||
self.namespace, self.regex.pattern))
|
self.namespace, self.regex.pattern))
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ except ImportError: # Python 2
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.utils.encoding import smart_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.ipv6 import is_valid_ipv6_address
|
from django.utils.ipv6 import is_valid_ipv6_address
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ class RegexValidator(object):
|
||||||
"""
|
"""
|
||||||
Validates that the input matches the regular expression.
|
Validates that the input matches the regular expression.
|
||||||
"""
|
"""
|
||||||
if not self.regex.search(smart_text(value)):
|
if not self.regex.search(force_text(value)):
|
||||||
raise ValidationError(self.message, code=self.code)
|
raise ValidationError(self.message, code=self.code)
|
||||||
|
|
||||||
class URLValidator(RegexValidator):
|
class URLValidator(RegexValidator):
|
||||||
|
@ -55,7 +55,7 @@ class URLValidator(RegexValidator):
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
# Trivial case failed. Try for possible IDN domain
|
# Trivial case failed. Try for possible IDN domain
|
||||||
if value:
|
if value:
|
||||||
value = smart_text(value)
|
value = force_text(value)
|
||||||
scheme, netloc, path, query, fragment = urlsplit(value)
|
scheme, netloc, path, query, fragment = urlsplit(value)
|
||||||
try:
|
try:
|
||||||
netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE
|
netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE
|
||||||
|
|
|
@ -609,7 +609,7 @@ class BaseDatabaseOperations(object):
|
||||||
exists for database backends to provide a better implementation
|
exists for database backends to provide a better implementation
|
||||||
according to their own quoting schemes.
|
according to their own quoting schemes.
|
||||||
"""
|
"""
|
||||||
from django.utils.encoding import smart_text, force_text
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
# Convert params to contain Unicode values.
|
# Convert params to contain Unicode values.
|
||||||
to_unicode = lambda s: force_text(s, strings_only=True, errors='replace')
|
to_unicode = lambda s: force_text(s, strings_only=True, errors='replace')
|
||||||
|
@ -618,7 +618,7 @@ class BaseDatabaseOperations(object):
|
||||||
else:
|
else:
|
||||||
u_params = dict([(to_unicode(k), to_unicode(v)) for k, v in params.items()])
|
u_params = dict([(to_unicode(k), to_unicode(v)) for k, v in params.items()])
|
||||||
|
|
||||||
return smart_text(sql) % u_params
|
return force_text(sql) % u_params
|
||||||
|
|
||||||
def last_insert_id(self, cursor, table_name, pk_name):
|
def last_insert_id(self, cursor, table_name, pk_name):
|
||||||
"""
|
"""
|
||||||
|
@ -802,8 +802,8 @@ class BaseDatabaseOperations(object):
|
||||||
|
|
||||||
def prep_for_like_query(self, x):
|
def prep_for_like_query(self, x):
|
||||||
"""Prepares a value for use in a LIKE query."""
|
"""Prepares a value for use in a LIKE query."""
|
||||||
from django.utils.encoding import smart_text
|
from django.utils.encoding import force_text
|
||||||
return smart_text(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_")
|
return force_text(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_")
|
||||||
|
|
||||||
# Same as prep_for_like_query(), but called for "iexact" matches, which
|
# Same as prep_for_like_query(), but called for "iexact" matches, which
|
||||||
# need not necessarily be implemented using "LIKE" in the backend.
|
# need not necessarily be implemented using "LIKE" in the backend.
|
||||||
|
|
|
@ -23,7 +23,7 @@ from django.db.models import signals
|
||||||
from django.db.models.loading import register_models, get_model
|
from django.db.models.loading import register_models, get_model
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.utils.functional import curry
|
from django.utils.functional import curry
|
||||||
from django.utils.encoding import smart_str, force_text
|
from django.utils.encoding import force_str, force_text
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils.text import get_text_list, capfirst
|
from django.utils.text import get_text_list, capfirst
|
||||||
|
|
||||||
|
@ -404,7 +404,7 @@ class Model(six.with_metaclass(ModelBase, object)):
|
||||||
u = six.text_type(self)
|
u = six.text_type(self)
|
||||||
except (UnicodeEncodeError, UnicodeDecodeError):
|
except (UnicodeEncodeError, UnicodeDecodeError):
|
||||||
u = '[Bad Unicode data]'
|
u = '[Bad Unicode data]'
|
||||||
return smart_str('<%s: %s>' % (self.__class__.__name__, u))
|
return force_str('<%s: %s>' % (self.__class__.__name__, u))
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if not six.PY3 and hasattr(self, '__unicode__'):
|
if not six.PY3 and hasattr(self, '__unicode__'):
|
||||||
|
|
|
@ -8,7 +8,7 @@ from django.core.files.base import File
|
||||||
from django.core.files.storage import default_storage
|
from django.core.files.storage import default_storage
|
||||||
from django.core.files.images import ImageFile
|
from django.core.files.images import ImageFile
|
||||||
from django.db.models import signals
|
from django.db.models import signals
|
||||||
from django.utils.encoding import force_text, smart_str
|
from django.utils.encoding import force_str, force_text
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
@ -280,7 +280,7 @@ class FileField(Field):
|
||||||
setattr(cls, self.name, self.descriptor_class(self))
|
setattr(cls, self.name, self.descriptor_class(self))
|
||||||
|
|
||||||
def get_directory_name(self):
|
def get_directory_name(self):
|
||||||
return os.path.normpath(force_text(datetime.datetime.now().strftime(smart_str(self.upload_to))))
|
return os.path.normpath(force_text(datetime.datetime.now().strftime(force_str(self.upload_to))))
|
||||||
|
|
||||||
def get_filename(self, filename):
|
def get_filename(self, filename):
|
||||||
return os.path.normpath(self.storage.get_valid_name(os.path.basename(filename)))
|
return os.path.normpath(self.storage.get_valid_name(os.path.basename(filename)))
|
||||||
|
|
|
@ -61,14 +61,14 @@ else:
|
||||||
if not _cookie_allows_colon_in_names:
|
if not _cookie_allows_colon_in_names:
|
||||||
def load(self, rawdata):
|
def load(self, rawdata):
|
||||||
self.bad_cookies = set()
|
self.bad_cookies = set()
|
||||||
super(SimpleCookie, self).load(smart_str(rawdata))
|
super(SimpleCookie, self).load(force_str(rawdata))
|
||||||
for key in self.bad_cookies:
|
for key in self.bad_cookies:
|
||||||
del self[key]
|
del self[key]
|
||||||
|
|
||||||
# override private __set() method:
|
# override private __set() method:
|
||||||
# (needed for using our Morsel, and for laxness with CookieError
|
# (needed for using our Morsel, and for laxness with CookieError
|
||||||
def _BaseCookie__set(self, key, real_value, coded_value):
|
def _BaseCookie__set(self, key, real_value, coded_value):
|
||||||
key = smart_str(key)
|
key = force_str(key)
|
||||||
try:
|
try:
|
||||||
M = self.get(key, Morsel())
|
M = self.get(key, Morsel())
|
||||||
M.set(key, real_value, coded_value)
|
M.set(key, real_value, coded_value)
|
||||||
|
@ -85,7 +85,7 @@ from django.core.files import uploadhandler
|
||||||
from django.http.multipartparser import MultiPartParser
|
from django.http.multipartparser import MultiPartParser
|
||||||
from django.http.utils import *
|
from django.http.utils import *
|
||||||
from django.utils.datastructures import MultiValueDict, ImmutableList
|
from django.utils.datastructures import MultiValueDict, ImmutableList
|
||||||
from django.utils.encoding import force_bytes, force_text, smart_str, iri_to_uri
|
from django.utils.encoding import force_bytes, force_str, force_text, iri_to_uri
|
||||||
from django.utils.http import cookie_date
|
from django.utils.http import cookie_date
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
@ -137,7 +137,7 @@ def build_request_repr(request, path_override=None, GET_override=None,
|
||||||
except Exception:
|
except Exception:
|
||||||
meta = '<could not parse>'
|
meta = '<could not parse>'
|
||||||
path = path_override if path_override is not None else request.path
|
path = path_override if path_override is not None else request.path
|
||||||
return smart_str('<%s\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' %
|
return force_str('<%s\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' %
|
||||||
(request.__class__.__name__,
|
(request.__class__.__name__,
|
||||||
path,
|
path,
|
||||||
six.text_type(get),
|
six.text_type(get),
|
||||||
|
|
|
@ -11,7 +11,7 @@ from django.utils.importlib import import_module
|
||||||
from django.utils.itercompat import is_iterable
|
from django.utils.itercompat import is_iterable
|
||||||
from django.utils.text import (smart_split, unescape_string_literal,
|
from django.utils.text import (smart_split, unescape_string_literal,
|
||||||
get_text_list)
|
get_text_list)
|
||||||
from django.utils.encoding import smart_text, force_text, smart_str
|
from django.utils.encoding import force_str, force_text
|
||||||
from django.utils.translation import ugettext_lazy, pgettext_lazy
|
from django.utils.translation import ugettext_lazy, pgettext_lazy
|
||||||
from django.utils.safestring import (SafeData, EscapeData, mark_safe,
|
from django.utils.safestring import (SafeData, EscapeData, mark_safe,
|
||||||
mark_for_escaping)
|
mark_for_escaping)
|
||||||
|
@ -116,7 +116,7 @@ class Template(object):
|
||||||
def __init__(self, template_string, origin=None,
|
def __init__(self, template_string, origin=None,
|
||||||
name='<Unknown Template>'):
|
name='<Unknown Template>'):
|
||||||
try:
|
try:
|
||||||
template_string = smart_text(template_string)
|
template_string = force_text(template_string)
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
raise TemplateEncodingError("Templates can only be constructed "
|
raise TemplateEncodingError("Templates can only be constructed "
|
||||||
"from unicode or UTF-8 strings.")
|
"from unicode or UTF-8 strings.")
|
||||||
|
@ -848,7 +848,7 @@ class TextNode(Node):
|
||||||
self.s = s
|
self.s = s
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<Text Node: '%s'>" % smart_str(self.s[:25], 'ascii',
|
return force_str("<Text Node: '%s'>" % self.s[:25], 'ascii',
|
||||||
errors='replace')
|
errors='replace')
|
||||||
|
|
||||||
def render(self, context):
|
def render(self, context):
|
||||||
|
|
|
@ -4,7 +4,7 @@ import datetime
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils import dateformat, numberformat, datetime_safe
|
from django.utils import dateformat, numberformat, datetime_safe
|
||||||
from django.utils.importlib import import_module
|
from django.utils.importlib import import_module
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import force_str
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
@ -66,7 +66,7 @@ def get_format(format_type, lang=None, use_l10n=None):
|
||||||
If use_l10n is provided and is not None, that will force the value to
|
If use_l10n is provided and is not None, that will force the value to
|
||||||
be localized (or not), overriding the value of settings.USE_L10N.
|
be localized (or not), overriding the value of settings.USE_L10N.
|
||||||
"""
|
"""
|
||||||
format_type = smart_str(format_type)
|
format_type = force_str(format_type)
|
||||||
if use_l10n or (use_l10n is None and settings.USE_L10N):
|
if use_l10n or (use_l10n is None and settings.USE_L10N):
|
||||||
if lang is None:
|
if lang is None:
|
||||||
lang = get_language()
|
lang = get_language()
|
||||||
|
@ -160,14 +160,14 @@ def localize_input(value, default=None):
|
||||||
return number_format(value)
|
return number_format(value)
|
||||||
elif isinstance(value, datetime.datetime):
|
elif isinstance(value, datetime.datetime):
|
||||||
value = datetime_safe.new_datetime(value)
|
value = datetime_safe.new_datetime(value)
|
||||||
format = smart_str(default or get_format('DATETIME_INPUT_FORMATS')[0])
|
format = force_str(default or get_format('DATETIME_INPUT_FORMATS')[0])
|
||||||
return value.strftime(format)
|
return value.strftime(format)
|
||||||
elif isinstance(value, datetime.date):
|
elif isinstance(value, datetime.date):
|
||||||
value = datetime_safe.new_date(value)
|
value = datetime_safe.new_date(value)
|
||||||
format = smart_str(default or get_format('DATE_INPUT_FORMATS')[0])
|
format = force_str(default or get_format('DATE_INPUT_FORMATS')[0])
|
||||||
return value.strftime(format)
|
return value.strftime(format)
|
||||||
elif isinstance(value, datetime.time):
|
elif isinstance(value, datetime.time):
|
||||||
format = smart_str(default or get_format('TIME_INPUT_FORMATS')[0])
|
format = force_str(default or get_format('TIME_INPUT_FORMATS')[0])
|
||||||
return value.strftime(format)
|
return value.strftime(format)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ except ImportError: # Python 2
|
||||||
from email.utils import formatdate
|
from email.utils import formatdate
|
||||||
|
|
||||||
from django.utils.datastructures import MultiValueDict
|
from django.utils.datastructures import MultiValueDict
|
||||||
from django.utils.encoding import force_text, smart_str
|
from django.utils.encoding import force_str, force_text
|
||||||
from django.utils.functional import allow_lazy
|
from django.utils.functional import allow_lazy
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ def urlquote(url, safe='/'):
|
||||||
can safely be used as part of an argument to a subsequent iri_to_uri() call
|
can safely be used as part of an argument to a subsequent iri_to_uri() call
|
||||||
without double-quoting occurring.
|
without double-quoting occurring.
|
||||||
"""
|
"""
|
||||||
return force_text(urllib_parse.quote(smart_str(url), smart_str(safe)))
|
return force_text(urllib_parse.quote(force_str(url), force_str(safe)))
|
||||||
urlquote = allow_lazy(urlquote, six.text_type)
|
urlquote = allow_lazy(urlquote, six.text_type)
|
||||||
|
|
||||||
def urlquote_plus(url, safe=''):
|
def urlquote_plus(url, safe=''):
|
||||||
|
@ -49,7 +49,7 @@ def urlquote_plus(url, safe=''):
|
||||||
returned string can safely be used as part of an argument to a subsequent
|
returned string can safely be used as part of an argument to a subsequent
|
||||||
iri_to_uri() call without double-quoting occurring.
|
iri_to_uri() call without double-quoting occurring.
|
||||||
"""
|
"""
|
||||||
return force_text(urllib_parse.quote_plus(smart_str(url), smart_str(safe)))
|
return force_text(urllib_parse.quote_plus(force_str(url), force_str(safe)))
|
||||||
urlquote_plus = allow_lazy(urlquote_plus, six.text_type)
|
urlquote_plus = allow_lazy(urlquote_plus, six.text_type)
|
||||||
|
|
||||||
def urlunquote(quoted_url):
|
def urlunquote(quoted_url):
|
||||||
|
@ -57,7 +57,7 @@ def urlunquote(quoted_url):
|
||||||
A wrapper for Python's urllib.unquote() function that can operate on
|
A wrapper for Python's urllib.unquote() function that can operate on
|
||||||
the result of django.utils.http.urlquote().
|
the result of django.utils.http.urlquote().
|
||||||
"""
|
"""
|
||||||
return force_text(urllib_parse.unquote(smart_str(quoted_url)))
|
return force_text(urllib_parse.unquote(force_str(quoted_url)))
|
||||||
urlunquote = allow_lazy(urlunquote, six.text_type)
|
urlunquote = allow_lazy(urlunquote, six.text_type)
|
||||||
|
|
||||||
def urlunquote_plus(quoted_url):
|
def urlunquote_plus(quoted_url):
|
||||||
|
@ -65,7 +65,7 @@ def urlunquote_plus(quoted_url):
|
||||||
A wrapper for Python's urllib.unquote_plus() function that can operate on
|
A wrapper for Python's urllib.unquote_plus() function that can operate on
|
||||||
the result of django.utils.http.urlquote_plus().
|
the result of django.utils.http.urlquote_plus().
|
||||||
"""
|
"""
|
||||||
return force_text(urllib_parse.unquote_plus(smart_str(quoted_url)))
|
return force_text(urllib_parse.unquote_plus(force_str(quoted_url)))
|
||||||
urlunquote_plus = allow_lazy(urlunquote_plus, six.text_type)
|
urlunquote_plus = allow_lazy(urlunquote_plus, six.text_type)
|
||||||
|
|
||||||
def urlencode(query, doseq=0):
|
def urlencode(query, doseq=0):
|
||||||
|
@ -79,8 +79,8 @@ def urlencode(query, doseq=0):
|
||||||
elif hasattr(query, 'items'):
|
elif hasattr(query, 'items'):
|
||||||
query = query.items()
|
query = query.items()
|
||||||
return urllib_parse.urlencode(
|
return urllib_parse.urlencode(
|
||||||
[(smart_str(k),
|
[(force_str(k),
|
||||||
[smart_str(i) for i in v] if isinstance(v, (list,tuple)) else smart_str(v))
|
[force_str(i) for i in v] if isinstance(v, (list,tuple)) else force_str(v))
|
||||||
for k, v in query],
|
for k, v in query],
|
||||||
doseq)
|
doseq)
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import gettext as gettext_module
|
||||||
from threading import local
|
from threading import local
|
||||||
|
|
||||||
from django.utils.importlib import import_module
|
from django.utils.importlib import import_module
|
||||||
from django.utils.encoding import smart_str, smart_text
|
from django.utils.encoding import force_str, force_text
|
||||||
from django.utils.safestring import mark_safe, SafeData
|
from django.utils.safestring import mark_safe, SafeData
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils.six import StringIO
|
from django.utils.six import StringIO
|
||||||
|
@ -454,7 +454,7 @@ def templatize(src, origin=None):
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.template import (Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK,
|
from django.template import (Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK,
|
||||||
TOKEN_COMMENT, TRANSLATOR_COMMENT_MARK)
|
TOKEN_COMMENT, TRANSLATOR_COMMENT_MARK)
|
||||||
src = smart_text(src, settings.FILE_CHARSET)
|
src = force_text(src, settings.FILE_CHARSET)
|
||||||
out = StringIO()
|
out = StringIO()
|
||||||
message_context = None
|
message_context = None
|
||||||
intrans = False
|
intrans = False
|
||||||
|
@ -469,7 +469,7 @@ def templatize(src, origin=None):
|
||||||
content = ''.join(comment)
|
content = ''.join(comment)
|
||||||
translators_comment_start = None
|
translators_comment_start = None
|
||||||
for lineno, line in enumerate(content.splitlines(True)):
|
for lineno, line in enumerate(content.splitlines(True)):
|
||||||
if line.lstrip().startswith(smart_text(TRANSLATOR_COMMENT_MARK)):
|
if line.lstrip().startswith(TRANSLATOR_COMMENT_MARK):
|
||||||
translators_comment_start = lineno
|
translators_comment_start = lineno
|
||||||
for lineno, line in enumerate(content.splitlines(True)):
|
for lineno, line in enumerate(content.splitlines(True)):
|
||||||
if translators_comment_start is not None and lineno >= translators_comment_start:
|
if translators_comment_start is not None and lineno >= translators_comment_start:
|
||||||
|
@ -584,7 +584,7 @@ def templatize(src, origin=None):
|
||||||
out.write(' # %s' % t.contents)
|
out.write(' # %s' % t.contents)
|
||||||
else:
|
else:
|
||||||
out.write(blankout(t.contents, 'X'))
|
out.write(blankout(t.contents, 'X'))
|
||||||
return smart_str(out.getvalue())
|
return force_str(out.getvalue())
|
||||||
|
|
||||||
def parse_accept_lang_header(lang_string):
|
def parse_accept_lang_header(lang_string):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -5,7 +5,7 @@ from __future__ import unicode_literals
|
||||||
import time
|
import time
|
||||||
from datetime import timedelta, tzinfo
|
from datetime import timedelta, tzinfo
|
||||||
|
|
||||||
from django.utils.encoding import smart_text, smart_str, DEFAULT_LOCALE_ENCODING
|
from django.utils.encoding import force_str, force_text, DEFAULT_LOCALE_ENCODING
|
||||||
|
|
||||||
# Python's doc say: "A tzinfo subclass must have an __init__() method that can
|
# Python's doc say: "A tzinfo subclass must have an __init__() method that can
|
||||||
# be called with no arguments". FixedOffset and LocalTimezone don't honor this
|
# be called with no arguments". FixedOffset and LocalTimezone don't honor this
|
||||||
|
@ -53,7 +53,7 @@ class LocalTimezone(tzinfo):
|
||||||
self._tzname = self.tzname(dt)
|
self._tzname = self.tzname(dt)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return smart_str(self._tzname)
|
return force_str(self._tzname)
|
||||||
|
|
||||||
def __getinitargs__(self):
|
def __getinitargs__(self):
|
||||||
return self.__dt,
|
return self.__dt,
|
||||||
|
@ -72,7 +72,7 @@ class LocalTimezone(tzinfo):
|
||||||
|
|
||||||
def tzname(self, dt):
|
def tzname(self, dt):
|
||||||
try:
|
try:
|
||||||
return smart_text(time.tzname[self._isdst(dt)],
|
return force_text(time.tzname[self._isdst(dt)],
|
||||||
DEFAULT_LOCALE_ENCODING)
|
DEFAULT_LOCALE_ENCODING)
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue