mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	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:
		| @@ -7,7 +7,7 @@ from __future__ import unicode_literals | ||||
| from django.db import models | ||||
| from django.utils import formats | ||||
| 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.utils.encoding import python_2_unicode_compatible | ||||
|  | ||||
| @@ -23,7 +23,7 @@ class EasyModel(object): | ||||
|         self.verbose_name_plural = model._meta.verbose_name_plural | ||||
|  | ||||
|     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): | ||||
|         "Returns the ModelDatabrowse class for this model." | ||||
| @@ -62,7 +62,7 @@ class EasyField(object): | ||||
|         self.model, self.field = easy_model, field | ||||
|  | ||||
|     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): | ||||
|         for value, label in self.field.choices: | ||||
| @@ -80,7 +80,7 @@ class EasyChoice(object): | ||||
|         self.value, self.label = value, label | ||||
|  | ||||
|     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): | ||||
|         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 | ||||
|  | ||||
|     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): | ||||
|         val = smart_text(self.instance) | ||||
| @@ -135,7 +135,7 @@ class EasyInstanceField(object): | ||||
|         self.raw_value = getattr(instance.instance, field.name) | ||||
|  | ||||
|     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): | ||||
|         """ | ||||
|   | ||||
							
								
								
									
										4
									
								
								django/core/cache/backends/memcached.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								django/core/cache/backends/memcached.py
									
									
									
									
										vendored
									
									
								
							| @@ -6,7 +6,7 @@ from threading import local | ||||
| from django.core.cache.backends.base import BaseCache, InvalidCacheBackendError | ||||
|  | ||||
| from django.utils import six | ||||
| from django.utils.encoding import smart_str | ||||
| from django.utils.encoding import force_str | ||||
|  | ||||
| class BaseMemcachedCache(BaseCache): | ||||
|     def __init__(self, server, params, library, value_not_found_exception): | ||||
| @@ -53,7 +53,7 @@ class BaseMemcachedCache(BaseCache): | ||||
|  | ||||
|     def make_key(self, key, version=None): | ||||
|         # 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): | ||||
|         key = self.make_key(key, version=version) | ||||
|   | ||||
| @@ -8,7 +8,7 @@ from io import BytesIO | ||||
| from django.conf import settings | ||||
| from django.core.files.base import File | ||||
| 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', | ||||
|            'SimpleUploadedFile') | ||||
| @@ -30,7 +30,7 @@ class UploadedFile(File): | ||||
|         self.charset = charset | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return smart_str("<%s: %s (%s)>" % ( | ||||
|         return force_str("<%s: %s (%s)>" % ( | ||||
|             self.__class__.__name__, self.name, self.content_type)) | ||||
|  | ||||
|     def _get_name(self): | ||||
|   | ||||
| @@ -9,7 +9,7 @@ from django.core import signals | ||||
| from django.core.handlers import base | ||||
| from django.core.urlresolvers import set_script_prefix | ||||
| 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 | ||||
|  | ||||
| logger = getLogger('django.request') | ||||
| @@ -246,5 +246,5 @@ class WSGIHandler(base.BaseHandler): | ||||
|         response_headers = [(str(k), str(v)) for k, v in response.items()] | ||||
|         for c in response.cookies.values(): | ||||
|             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 | ||||
|   | ||||
| @@ -12,7 +12,7 @@ import traceback | ||||
| import django | ||||
| from django.core.exceptions import ImproperlyConfigured | ||||
| 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 | ||||
|  | ||||
|  | ||||
| @@ -65,7 +65,7 @@ class OutputWrapper(object): | ||||
|             msg += ending | ||||
|         style_func = [f for f in (style_func, self.style_func, lambda x:x) | ||||
|                       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): | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import sys | ||||
|  | ||||
| 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 import six | ||||
|  | ||||
| @@ -13,7 +13,7 @@ class ModelErrorCollection: | ||||
|  | ||||
|     def add(self, 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): | ||||
|     """ | ||||
|   | ||||
| @@ -14,7 +14,7 @@ from threading import local | ||||
| from django.http import Http404 | ||||
| from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist | ||||
| 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.importlib import import_module | ||||
| from django.utils.module_loading import module_has_submodule | ||||
| @@ -195,7 +195,7 @@ class RegexURLPattern(LocaleRegexProvider): | ||||
|         self.name = name | ||||
|  | ||||
|     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): | ||||
|         """ | ||||
| @@ -245,7 +245,7 @@ class RegexURLResolver(LocaleRegexProvider): | ||||
|         self._app_dict = {} | ||||
|  | ||||
|     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.namespace, self.regex.pattern)) | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ except ImportError:     # Python 2 | ||||
|  | ||||
| from django.core.exceptions import ValidationError | ||||
| 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 import six | ||||
|  | ||||
| @@ -36,7 +36,7 @@ class RegexValidator(object): | ||||
|         """ | ||||
|         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) | ||||
|  | ||||
| class URLValidator(RegexValidator): | ||||
| @@ -55,7 +55,7 @@ class URLValidator(RegexValidator): | ||||
|         except ValidationError as e: | ||||
|             # Trivial case failed. Try for possible IDN domain | ||||
|             if value: | ||||
|                 value = smart_text(value) | ||||
|                 value = force_text(value) | ||||
|                 scheme, netloc, path, query, fragment = urlsplit(value) | ||||
|                 try: | ||||
|                     netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE | ||||
|   | ||||
| @@ -609,7 +609,7 @@ class BaseDatabaseOperations(object): | ||||
|         exists for database backends to provide a better implementation | ||||
|         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. | ||||
|         to_unicode = lambda s: force_text(s, strings_only=True, errors='replace') | ||||
| @@ -618,7 +618,7 @@ class BaseDatabaseOperations(object): | ||||
|         else: | ||||
|             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): | ||||
|         """ | ||||
| @@ -802,8 +802,8 @@ class BaseDatabaseOperations(object): | ||||
|  | ||||
|     def prep_for_like_query(self, x): | ||||
|         """Prepares a value for use in a LIKE query.""" | ||||
|         from django.utils.encoding import smart_text | ||||
|         return smart_text(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_") | ||||
|         from django.utils.encoding import force_text | ||||
|         return force_text(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_") | ||||
|  | ||||
|     # Same as prep_for_like_query(), but called for "iexact" matches, which | ||||
|     # 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.utils.translation import ugettext_lazy as _ | ||||
| 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.text import get_text_list, capfirst | ||||
|  | ||||
| @@ -404,7 +404,7 @@ class Model(six.with_metaclass(ModelBase, object)): | ||||
|             u = six.text_type(self) | ||||
|         except (UnicodeEncodeError, UnicodeDecodeError): | ||||
|             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): | ||||
|         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.images import ImageFile | ||||
| 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.translation import ugettext_lazy as _ | ||||
|  | ||||
| @@ -280,7 +280,7 @@ class FileField(Field): | ||||
|         setattr(cls, self.name, self.descriptor_class(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): | ||||
|         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: | ||||
|             def load(self, rawdata): | ||||
|                 self.bad_cookies = set() | ||||
|                 super(SimpleCookie, self).load(smart_str(rawdata)) | ||||
|                 super(SimpleCookie, self).load(force_str(rawdata)) | ||||
|                 for key in self.bad_cookies: | ||||
|                     del self[key] | ||||
|  | ||||
|             # override private __set() method: | ||||
|             # (needed for using our Morsel, and for laxness with CookieError | ||||
|             def _BaseCookie__set(self, key, real_value, coded_value): | ||||
|                 key = smart_str(key) | ||||
|                 key = force_str(key) | ||||
|                 try: | ||||
|                     M = self.get(key, Morsel()) | ||||
|                     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.utils import * | ||||
| 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 import six | ||||
| from django.utils import timezone | ||||
| @@ -137,7 +137,7 @@ def build_request_repr(request, path_override=None, GET_override=None, | ||||
|     except Exception: | ||||
|         meta = '<could not parse>' | ||||
|     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__, | ||||
|                       path, | ||||
|                       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.text import (smart_split, unescape_string_literal, | ||||
|     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.safestring import (SafeData, EscapeData, mark_safe, | ||||
|     mark_for_escaping) | ||||
| @@ -116,7 +116,7 @@ class Template(object): | ||||
|     def __init__(self, template_string, origin=None, | ||||
|                  name='<Unknown Template>'): | ||||
|         try: | ||||
|             template_string = smart_text(template_string) | ||||
|             template_string = force_text(template_string) | ||||
|         except UnicodeDecodeError: | ||||
|             raise TemplateEncodingError("Templates can only be constructed " | ||||
|                                         "from unicode or UTF-8 strings.") | ||||
| @@ -848,7 +848,7 @@ class TextNode(Node): | ||||
|         self.s = s | ||||
|  | ||||
|     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') | ||||
|  | ||||
|     def render(self, context): | ||||
|   | ||||
| @@ -4,7 +4,7 @@ import datetime | ||||
| from django.conf import settings | ||||
| from django.utils import dateformat, numberformat, datetime_safe | ||||
| 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.safestring import mark_safe | ||||
| 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 | ||||
|     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 lang is None: | ||||
|             lang = get_language() | ||||
| @@ -160,14 +160,14 @@ def localize_input(value, default=None): | ||||
|         return number_format(value) | ||||
|     elif isinstance(value, datetime.datetime): | ||||
|         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) | ||||
|     elif isinstance(value, datetime.date): | ||||
|         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) | ||||
|     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 | ||||
|  | ||||
|   | ||||
| @@ -15,7 +15,7 @@ except ImportError:     # Python 2 | ||||
| from email.utils import formatdate | ||||
|  | ||||
| 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 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 | ||||
|     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) | ||||
|  | ||||
| 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 | ||||
|     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) | ||||
|  | ||||
| def urlunquote(quoted_url): | ||||
| @@ -57,7 +57,7 @@ def urlunquote(quoted_url): | ||||
|     A wrapper for Python's urllib.unquote() function that can operate on | ||||
|     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) | ||||
|  | ||||
| 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 | ||||
|     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) | ||||
|  | ||||
| def urlencode(query, doseq=0): | ||||
| @@ -79,8 +79,8 @@ def urlencode(query, doseq=0): | ||||
|     elif hasattr(query, 'items'): | ||||
|         query = query.items() | ||||
|     return urllib_parse.urlencode( | ||||
|         [(smart_str(k), | ||||
|          [smart_str(i) for i in v] if isinstance(v, (list,tuple)) else smart_str(v)) | ||||
|         [(force_str(k), | ||||
|          [force_str(i) for i in v] if isinstance(v, (list,tuple)) else force_str(v)) | ||||
|             for k, v in query], | ||||
|         doseq) | ||||
|  | ||||
|   | ||||
| @@ -9,7 +9,7 @@ import gettext as gettext_module | ||||
| from threading import local | ||||
|  | ||||
| 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 import six | ||||
| from django.utils.six import StringIO | ||||
| @@ -454,7 +454,7 @@ def templatize(src, origin=None): | ||||
|     from django.conf import settings | ||||
|     from django.template import (Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK, | ||||
|             TOKEN_COMMENT, TRANSLATOR_COMMENT_MARK) | ||||
|     src = smart_text(src, settings.FILE_CHARSET) | ||||
|     src = force_text(src, settings.FILE_CHARSET) | ||||
|     out = StringIO() | ||||
|     message_context = None | ||||
|     intrans = False | ||||
| @@ -469,7 +469,7 @@ def templatize(src, origin=None): | ||||
|                 content = ''.join(comment) | ||||
|                 translators_comment_start = None | ||||
|                 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 | ||||
|                 for lineno, line in enumerate(content.splitlines(True)): | ||||
|                     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) | ||||
|             else: | ||||
|                 out.write(blankout(t.contents, 'X')) | ||||
|     return smart_str(out.getvalue()) | ||||
|     return force_str(out.getvalue()) | ||||
|  | ||||
| def parse_accept_lang_header(lang_string): | ||||
|     """ | ||||
|   | ||||
| @@ -5,7 +5,7 @@ from __future__ import unicode_literals | ||||
| import time | ||||
| 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 | ||||
| # be called with no arguments". FixedOffset and LocalTimezone don't honor this | ||||
| @@ -53,7 +53,7 @@ class LocalTimezone(tzinfo): | ||||
|         self._tzname = self.tzname(dt) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return smart_str(self._tzname) | ||||
|         return force_str(self._tzname) | ||||
|  | ||||
|     def __getinitargs__(self): | ||||
|         return self.__dt, | ||||
| @@ -72,7 +72,7 @@ class LocalTimezone(tzinfo): | ||||
|  | ||||
|     def tzname(self, dt): | ||||
|         try: | ||||
|             return smart_text(time.tzname[self._isdst(dt)], | ||||
|             return force_text(time.tzname[self._isdst(dt)], | ||||
|                                  DEFAULT_LOCALE_ENCODING) | ||||
|         except UnicodeDecodeError: | ||||
|             return None | ||||
|   | ||||
		Reference in New Issue
	
	Block a user