summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2016-09-02 20:17:15 +0200
committerClaude Paroz <claude@2xlibre.net>2016-09-03 13:46:41 +0200
commit2ced2f785d5aca0354abf5841d5449b7a49509dc (patch)
tree46ade22a7c8d9ccdbab4a7fcb25f702172352521 /django
parentb1d6b0a7b121eec860b518b4903d7c8c74f7773b (diff)
Replaced smart_* by force_* calls whenever possible
The smart_* version should only be used when a lazy string should keep its lazy status.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/filters.py8
-rw-r--r--django/contrib/admin/helpers.py4
-rw-r--r--django/contrib/admin/models.py6
-rw-r--r--django/contrib/admin/utils.py2
-rw-r--r--django/contrib/contenttypes/fields.py4
-rw-r--r--django/contrib/staticfiles/management/commands/collectstatic.py7
-rw-r--r--django/contrib/syndication/views.py8
-rw-r--r--django/core/files/base.py4
-rw-r--r--django/core/serializers/xml_serializer.py16
-rw-r--r--django/db/migrations/state.py4
-rw-r--r--django/db/models/fields/__init__.py6
-rw-r--r--django/db/models/fields/reverse_related.py4
-rw-r--r--django/forms/boundfield.py8
-rw-r--r--django/forms/fields.py8
-rw-r--r--django/forms/models.py4
-rw-r--r--django/http/request.py2
-rw-r--r--django/template/context_processors.py4
-rw-r--r--django/template/defaulttags.py4
-rw-r--r--django/views/debug.py6
-rw-r--r--django/views/i18n.py6
20 files changed, 56 insertions, 59 deletions
diff --git a/django/contrib/admin/filters.py b/django/contrib/admin/filters.py
index d6f260bb61..8ff223fb29 100644
--- a/django/contrib/admin/filters.py
+++ b/django/contrib/admin/filters.py
@@ -14,7 +14,7 @@ from django.contrib.admin.utils import (
from django.core.exceptions import ImproperlyConfigured, ValidationError
from django.db import models
from django.utils import timezone
-from django.utils.encoding import force_text, smart_text
+from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
@@ -207,7 +207,7 @@ class RelatedFieldListFilter(FieldListFilter):
}
for pk_val, val in self.lookup_choices:
yield {
- 'selected': self.lookup_val == smart_text(pk_val),
+ 'selected': self.lookup_val == force_text(pk_val),
'query_string': changelist.get_query_string({
self.lookup_kwarg: pk_val,
}, [self.lookup_kwarg_isnull]),
@@ -292,7 +292,7 @@ class ChoicesFieldListFilter(FieldListFilter):
none_title = title
continue
yield {
- 'selected': smart_text(lookup) == self.lookup_val,
+ 'selected': force_text(lookup) == self.lookup_val,
'query_string': changelist.get_query_string(
{self.lookup_kwarg: lookup}, [self.lookup_kwarg_isnull]
),
@@ -417,7 +417,7 @@ class AllValuesFieldListFilter(FieldListFilter):
if val is None:
include_none = True
continue
- val = smart_text(val)
+ val = force_text(val)
yield {
'selected': self.lookup_val == val,
'query_string': changelist.get_query_string({
diff --git a/django/contrib/admin/helpers.py b/django/contrib/admin/helpers.py
index 3396dc66ad..f808d8a899 100644
--- a/django/contrib/admin/helpers.py
+++ b/django/contrib/admin/helpers.py
@@ -15,7 +15,7 @@ from django.forms.utils import flatatt
from django.template.defaultfilters import capfirst, linebreaksbr
from django.utils import six
from django.utils.deprecation import RemovedInDjango20Warning
-from django.utils.encoding import force_text, smart_text
+from django.utils.encoding import force_text
from django.utils.html import conditional_escape, format_html
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext, ugettext_lazy as _
@@ -209,7 +209,7 @@ class AdminReadonlyField(object):
if hasattr(value, "__html__"):
result_repr = value
else:
- result_repr = smart_text(value)
+ result_repr = force_text(value)
if getattr(attr, "allow_tags", False):
warnings.warn(
"Deprecated allow_tags attribute used on %s. "
diff --git a/django/contrib/admin/models.py b/django/contrib/admin/models.py
index 14304e979d..4f7a225fc5 100644
--- a/django/contrib/admin/models.py
+++ b/django/contrib/admin/models.py
@@ -8,7 +8,7 @@ from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.urls import NoReverseMatch, reverse
from django.utils import timezone
-from django.utils.encoding import python_2_unicode_compatible, smart_text
+from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.text import get_text_list
from django.utils.translation import ugettext, ugettext_lazy as _
@@ -26,7 +26,7 @@ class LogEntryManager(models.Manager):
self.model.objects.create(
user_id=user_id,
content_type_id=content_type_id,
- object_id=smart_text(object_id),
+ object_id=force_text(object_id),
object_repr=object_repr[:200],
action_flag=action_flag,
change_message=change_message,
@@ -67,7 +67,7 @@ class LogEntry(models.Model):
ordering = ('-action_time',)
def __repr__(self):
- return smart_text(self.action_time)
+ return force_text(self.action_time)
def __str__(self):
if self.is_addition():
diff --git a/django/contrib/admin/utils.py b/django/contrib/admin/utils.py
index 3a9a28fd3f..9b312ac30e 100644
--- a/django/contrib/admin/utils.py
+++ b/django/contrib/admin/utils.py
@@ -435,7 +435,7 @@ def display_for_value(value, empty_value_display, boolean=False):
elif isinstance(value, (list, tuple)):
return ', '.join(force_text(v) for v in value)
else:
- return smart_text(value)
+ return force_text(value)
class NotRelationField(Exception):
diff --git a/django/contrib/contenttypes/fields.py b/django/contrib/contenttypes/fields.py
index d4057fcfc6..a273cf0347 100644
--- a/django/contrib/contenttypes/fields.py
+++ b/django/contrib/contenttypes/fields.py
@@ -13,7 +13,7 @@ from django.db.models.fields.related import (
lazy_related_operation,
)
from django.db.models.query_utils import PathInfo
-from django.utils.encoding import python_2_unicode_compatible, smart_text
+from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.functional import cached_property
@@ -402,7 +402,7 @@ class GenericRelation(ForeignObject):
def value_to_string(self, obj):
qs = getattr(obj, self.name).all()
- return smart_text([instance._get_pk_val() for instance in qs])
+ return force_text([instance._get_pk_val() for instance in qs])
def contribute_to_class(self, cls, name, **kwargs):
kwargs['private_only'] = True
diff --git a/django/contrib/staticfiles/management/commands/collectstatic.py b/django/contrib/staticfiles/management/commands/collectstatic.py
index ef3bb67d7e..38f1f5822e 100644
--- a/django/contrib/staticfiles/management/commands/collectstatic.py
+++ b/django/contrib/staticfiles/management/commands/collectstatic.py
@@ -9,7 +9,7 @@ from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.files.storage import FileSystemStorage
from django.core.management.base import BaseCommand, CommandError
from django.core.management.color import no_style
-from django.utils.encoding import smart_text
+from django.utils.encoding import force_text
from django.utils.functional import cached_property
from django.utils.six.moves import input
@@ -237,10 +237,9 @@ class Command(BaseCommand):
for f in files:
fpath = os.path.join(path, f)
if self.dry_run:
- self.log("Pretending to delete '%s'" %
- smart_text(fpath), level=1)
+ self.log("Pretending to delete '%s'" % force_text(fpath), level=1)
else:
- self.log("Deleting '%s'" % smart_text(fpath), level=1)
+ self.log("Deleting '%s'" % force_text(fpath), level=1)
try:
full_path = self.storage.path(fpath)
except NotImplementedError:
diff --git a/django/contrib/syndication/views.py b/django/contrib/syndication/views.py
index 6d5c79ffb5..1e3c08d313 100644
--- a/django/contrib/syndication/views.py
+++ b/django/contrib/syndication/views.py
@@ -8,7 +8,7 @@ from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
from django.http import Http404, HttpResponse
from django.template import TemplateDoesNotExist, loader
from django.utils import feedgenerator, six
-from django.utils.encoding import force_text, iri_to_uri, smart_text
+from django.utils.encoding import force_text, iri_to_uri
from django.utils.html import escape
from django.utils.http import http_date
from django.utils.timezone import get_default_timezone, is_naive, make_aware
@@ -68,9 +68,9 @@ class Feed(object):
enc_url = self._get_dynamic_attr('item_enclosure_url', item)
if enc_url:
enc = feedgenerator.Enclosure(
- url=smart_text(enc_url),
- length=smart_text(self._get_dynamic_attr('item_enclosure_length', item)),
- mime_type=smart_text(self._get_dynamic_attr('item_enclosure_mime_type', item)),
+ url=force_text(enc_url),
+ length=force_text(self._get_dynamic_attr('item_enclosure_length', item)),
+ mime_type=force_text(self._get_dynamic_attr('item_enclosure_mime_type', item)),
)
return [enc]
return []
diff --git a/django/core/files/base.py b/django/core/files/base.py
index 11049a45de..be889c9bc4 100644
--- a/django/core/files/base.py
+++ b/django/core/files/base.py
@@ -6,7 +6,7 @@ from io import BytesIO, StringIO, UnsupportedOperation
from django.core.files.utils import FileProxyMixin
from django.utils import six
from django.utils.encoding import (
- force_bytes, force_str, python_2_unicode_compatible, smart_text,
+ force_bytes, force_str, force_text, python_2_unicode_compatible,
)
@@ -23,7 +23,7 @@ class File(FileProxyMixin):
self.mode = file.mode
def __str__(self):
- return smart_text(self.name or '')
+ return force_text(self.name or '')
def __repr__(self):
return force_str("<%s: %s>" % (self.__class__.__name__, self or "None"))
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index b8e2f72734..5e151108fc 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -13,7 +13,7 @@ from django.apps import apps
from django.conf import settings
from django.core.serializers import base
from django.db import DEFAULT_DB_ALIAS, models
-from django.utils.encoding import smart_text
+from django.utils.encoding import force_text
from django.utils.xmlutils import (
SimplerXMLGenerator, UnserializableContentError,
)
@@ -52,11 +52,11 @@ class Serializer(base.Serializer):
raise base.SerializationError("Non-model object (%s) encountered during serialization" % type(obj))
self.indent(1)
- attrs = OrderedDict([("model", smart_text(obj._meta))])
+ attrs = OrderedDict([("model", force_text(obj._meta))])
if not self.use_natural_primary_keys or not hasattr(obj, 'natural_key'):
obj_pk = obj._get_pk_val()
if obj_pk is not None:
- attrs['pk'] = smart_text(obj_pk)
+ attrs['pk'] = force_text(obj_pk)
self.xml.startElement("object", attrs)
@@ -105,10 +105,10 @@ class Serializer(base.Serializer):
# Iterable natural keys are rolled out as subelements
for key_value in related:
self.xml.startElement("natural", {})
- self.xml.characters(smart_text(key_value))
+ self.xml.characters(force_text(key_value))
self.xml.endElement("natural")
else:
- self.xml.characters(smart_text(related_att))
+ self.xml.characters(force_text(related_att))
else:
self.xml.addQuickElement("None")
self.xml.endElement("field")
@@ -129,13 +129,13 @@ class Serializer(base.Serializer):
self.xml.startElement("object", {})
for key_value in natural:
self.xml.startElement("natural", {})
- self.xml.characters(smart_text(key_value))
+ self.xml.characters(force_text(key_value))
self.xml.endElement("natural")
self.xml.endElement("object")
else:
def handle_m2m(value):
self.xml.addQuickElement("object", attrs={
- 'pk': smart_text(value._get_pk_val())
+ 'pk': force_text(value._get_pk_val())
})
for relobj in getattr(obj, field.name).iterator():
handle_m2m(relobj)
@@ -150,7 +150,7 @@ class Serializer(base.Serializer):
self.xml.startElement("field", OrderedDict([
("name", field.name),
("rel", field.remote_field.__class__.__name__),
- ("to", smart_text(field.remote_field.model._meta)),
+ ("to", force_text(field.remote_field.model._meta)),
]))
diff --git a/django/db/migrations/state.py b/django/db/migrations/state.py
index 32cfc96afb..9cbf5659d4 100644
--- a/django/db/migrations/state.py
+++ b/django/db/migrations/state.py
@@ -15,7 +15,7 @@ from django.db.models.options import DEFAULT_NAMES, normalize_together
from django.db.models.utils import make_model_tuple
from django.utils import six
from django.utils.deprecation import RemovedInDjango20Warning
-from django.utils.encoding import force_text, smart_text
+from django.utils.encoding import force_text
from django.utils.functional import cached_property
from django.utils.module_loading import import_string
from django.utils.version import get_docs_version
@@ -494,7 +494,7 @@ class ModelState(object):
@classmethod
def force_text_recursive(cls, value):
if isinstance(value, six.string_types):
- return smart_text(value)
+ return force_text(value)
elif isinstance(value, list):
return [cls.force_text_recursive(x) for x in value]
elif isinstance(value, tuple):
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index f4f3170a39..5ff68b3d32 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -817,7 +817,7 @@ class Field(RegisterLookupMixin):
Returns a string value of this field from the passed obj.
This is used by the serialization framework.
"""
- return smart_text(self.value_from_object(obj))
+ return force_text(self.value_from_object(obj))
def _get_flatchoices(self):
"""Flattened version of choices tuple."""
@@ -1075,7 +1075,7 @@ class CharField(Field):
def to_python(self, value):
if isinstance(value, six.string_types) or value is None:
return value
- return smart_text(value)
+ return force_text(value)
def get_prep_value(self, value):
value = super(CharField, self).get_prep_value(value)
@@ -2129,7 +2129,7 @@ class TextField(Field):
def to_python(self, value):
if isinstance(value, six.string_types) or value is None:
return value
- return smart_text(value)
+ return force_text(value)
def get_prep_value(self, value):
value = super(TextField, self).get_prep_value(value)
diff --git a/django/db/models/fields/reverse_related.py b/django/db/models/fields/reverse_related.py
index 1554261246..86e96ee133 100644
--- a/django/db/models/fields/reverse_related.py
+++ b/django/db/models/fields/reverse_related.py
@@ -15,7 +15,7 @@ import warnings
from django.core import exceptions
from django.utils.deprecation import RemovedInDjango20Warning
-from django.utils.encoding import smart_text
+from django.utils.encoding import force_text
from django.utils.functional import cached_property
from . import BLANK_CHOICE_DASH
@@ -136,7 +136,7 @@ class ForeignObjectRel(object):
initially for utilization by RelatedFieldListFilter.
"""
return (blank_choice if include_blank else []) + [
- (x._get_pk_val(), smart_text(x)) for x in self.related_model._default_manager.all()
+ (x._get_pk_val(), force_text(x)) for x in self.related_model._default_manager.all()
]
def is_hidden(self):
diff --git a/django/forms/boundfield.py b/django/forms/boundfield.py
index e68744dbdc..b6be395a67 100644
--- a/django/forms/boundfield.py
+++ b/django/forms/boundfield.py
@@ -5,9 +5,7 @@ import datetime
from django.forms.utils import flatatt, pretty_name
from django.forms.widgets import Textarea, TextInput
from django.utils import six
-from django.utils.encoding import (
- force_text, python_2_unicode_compatible, smart_text,
-)
+from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.functional import cached_property
from django.utils.html import conditional_escape, format_html, html_safe
from django.utils.safestring import mark_safe
@@ -196,8 +194,8 @@ class BoundField(object):
associated Form has specified auto_id. Returns an empty string otherwise.
"""
auto_id = self.form.auto_id
- if auto_id and '%s' in smart_text(auto_id):
- return smart_text(auto_id) % self.html_name
+ if auto_id and '%s' in force_text(auto_id):
+ return force_text(auto_id) % self.html_name
elif auto_id:
return self.html_name
return ''
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 45b425efd6..4a4b93b2b5 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -30,7 +30,7 @@ from django.forms.widgets import (
from django.utils import formats, six
from django.utils.dateparse import parse_duration
from django.utils.duration import duration_string
-from django.utils.encoding import force_str, force_text, smart_text
+from django.utils.encoding import force_str, force_text
from django.utils.ipv6 import clean_ipv6_address
from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit
from django.utils.translation import ugettext_lazy as _, ungettext_lazy
@@ -349,7 +349,7 @@ class DecimalField(IntegerField):
return None
if self.localize:
value = formats.sanitize_separators(value)
- value = smart_text(value).strip()
+ value = force_text(value).strip()
try:
value = Decimal(value)
except DecimalException:
@@ -799,7 +799,7 @@ class ChoiceField(Field):
"Returns a Unicode object."
if value in self.empty_values:
return ''
- return smart_text(value)
+ return force_text(value)
def validate(self, value):
"""
@@ -868,7 +868,7 @@ class MultipleChoiceField(ChoiceField):
return []
elif not isinstance(value, (list, tuple)):
raise ValidationError(self.error_messages['invalid_list'], code='invalid_list')
- return [smart_text(val) for val in value]
+ return [force_text(val) for val in value]
def validate(self, value):
"""
diff --git a/django/forms/models.py b/django/forms/models.py
index ff6b2f0251..f44ce33f65 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -19,7 +19,7 @@ from django.forms.widgets import (
HiddenInput, MultipleHiddenInput, SelectMultiple,
)
from django.utils import six
-from django.utils.encoding import force_text, smart_text
+from django.utils.encoding import force_text
from django.utils.text import capfirst, get_text_list
from django.utils.translation import ugettext, ugettext_lazy as _
@@ -1186,7 +1186,7 @@ class ModelChoiceField(ChoiceField):
generate the labels for the choices presented by this object. Subclasses
can override this method to customize the display of the choices.
"""
- return smart_text(obj)
+ return force_text(obj)
def _get_choices(self):
# If self._choices is set, then somebody must have manually set
diff --git a/django/http/request.py b/django/http/request.py
index 271ab30557..6846068c2f 100644
--- a/django/http/request.py
+++ b/django/http/request.py
@@ -521,7 +521,7 @@ class QueryDict(MultiValueDict):
# It's neither necessary nor appropriate to use
-# django.utils.encoding.smart_text for parsing URLs and form inputs. Thus,
+# django.utils.encoding.force_text for parsing URLs and form inputs. Thus,
# this slightly more restricted function, used by QueryDict.
def bytes_to_text(s, encoding):
"""
diff --git a/django/template/context_processors.py b/django/template/context_processors.py
index 5568ed9134..da5276ce44 100644
--- a/django/template/context_processors.py
+++ b/django/template/context_processors.py
@@ -13,7 +13,7 @@ import itertools
from django.conf import settings
from django.middleware.csrf import get_token
-from django.utils.encoding import smart_text
+from django.utils.encoding import force_text
from django.utils.functional import SimpleLazyObject, lazy
@@ -30,7 +30,7 @@ def csrf(request):
# instead of returning an empty dict.
return 'NOTPROVIDED'
else:
- return smart_text(token)
+ return force_text(token)
return {'csrf_token': SimpleLazyObject(_get_val)}
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index b2681e8bb7..ece6f7501d 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -10,7 +10,7 @@ from itertools import cycle as itertools_cycle, groupby
from django.conf import settings
from django.utils import six, timezone
-from django.utils.encoding import force_text, smart_text
+from django.utils.encoding import force_text
from django.utils.html import conditional_escape, format_html
from django.utils.lorem_ipsum import paragraphs, words
from django.utils.safestring import mark_safe
@@ -440,7 +440,7 @@ class URLNode(Node):
from django.urls import reverse, NoReverseMatch
args = [arg.resolve(context) for arg in self.args]
kwargs = {
- smart_text(k, 'ascii'): v.resolve(context)
+ force_text(k, 'ascii'): v.resolve(context)
for k, v in self.kwargs.items()
}
view_name = self.view_name.resolve(context)
diff --git a/django/views/debug.py b/django/views/debug.py
index 1bcaaf8169..ccc2753a00 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -11,7 +11,7 @@ from django.template.defaultfilters import force_escape, pprint
from django.urls import Resolver404, resolve
from django.utils import lru_cache, six, timezone
from django.utils.datastructures import MultiValueDict
-from django.utils.encoding import force_bytes, smart_text
+from django.utils.encoding import force_bytes, force_text
from django.utils.module_loading import import_string
from django.utils.translation import ugettext as _
@@ -280,7 +280,7 @@ class ExceptionReporter(object):
end = getattr(self.exc_value, 'end', None)
if start is not None and end is not None:
unicode_str = self.exc_value.args[1]
- unicode_hint = smart_text(
+ unicode_hint = force_text(
unicode_str[max(start - 5, 0):min(end + 5, len(unicode_str))],
'ascii', errors='replace'
)
@@ -305,7 +305,7 @@ class ExceptionReporter(object):
if self.exc_type:
c['exception_type'] = self.exc_type.__name__
if self.exc_value:
- c['exception_value'] = smart_text(self.exc_value, errors='replace')
+ c['exception_value'] = force_text(self.exc_value, errors='replace')
if frames:
c['lastframe'] = frames[-1]
return c
diff --git a/django/views/i18n.py b/django/views/i18n.py
index a6bf8bcff4..5cc6a3ebe1 100644
--- a/django/views/i18n.py
+++ b/django/views/i18n.py
@@ -12,7 +12,7 @@ from django.urls import translate_url
from django.utils import six
from django.utils._os import upath
from django.utils.deprecation import RemovedInDjango20Warning
-from django.utils.encoding import smart_text
+from django.utils.encoding import force_text
from django.utils.formats import get_format
from django.utils.http import is_safe_url, urlunquote
from django.utils.translation import (
@@ -81,9 +81,9 @@ def get_formats():
formats = {}
for k, v in result.items():
if isinstance(v, (six.string_types, int)):
- formats[k] = smart_text(v)
+ formats[k] = force_text(v)
elif isinstance(v, (tuple, list)):
- formats[k] = [smart_text(value) for value in v]
+ formats[k] = [force_text(value) for value in v]
return formats