replaced force_text with equivalent force_str (#68183)

This commit is contained in:
Agate 2022-08-16 14:23:28 +02:00
parent f77ad1bc2d
commit 54eafdbb62
21 changed files with 83 additions and 85 deletions

View File

@ -16,7 +16,7 @@
from django.contrib import messages from django.contrib import messages
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.views.generic import DetailView, View from django.views.generic import DetailView, View
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin
@ -36,7 +36,7 @@ class BookingView(SingleObjectMixin, View):
try: try:
form.is_valid() form.is_valid()
except ValueError as exc: except ValueError as exc:
messages.error(request, force_text(exc)) messages.error(request, force_str(exc))
redirect_url = '%s?%s' % (cell.page.get_online_url(), request.GET.urlencode()) redirect_url = '%s?%s' % (cell.page.get_online_url(), request.GET.urlencode())
return HttpResponseRedirect(redirect_url) return HttpResponseRedirect(redirect_url)
data = form.cleaned_data data = form.cleaned_data

View File

@ -28,7 +28,7 @@ from django.http import (
HttpResponseRedirect, HttpResponseRedirect,
) )
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django.views.generic import View from django.views.generic import View
from rest_framework import permissions from rest_framework import permissions
@ -130,7 +130,7 @@ def dashboard_auto_tile(request, *args, **kwargs):
return HttpResponseNotAllowed(['post']) return HttpResponseNotAllowed(['post'])
try: try:
request_body = json.loads(force_text(request.body)) request_body = json.loads(force_str(request.body))
except json.JSONDecodeError: except json.JSONDecodeError:
return HttpResponseBadRequest('bad json request: "%s"' % request.body) return HttpResponseBadRequest('bad json request: "%s"' % request.body)

View File

@ -31,7 +31,7 @@ from django.template.defaultfilters import date as format_date
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.dates import WEEKDAYS from django.utils.dates import WEEKDAYS
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.functional import cached_property from django.utils.functional import cached_property
from django.utils.translation import gettext from django.utils.translation import gettext
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -646,7 +646,7 @@ class ChartNgCell(CellBase):
value = hours_string value = hours_string
else: else:
value = _('Less than an hour') value = _('Less than an hour')
return force_text(value) return force_str(value)
return format_duration return format_duration
elif measure == 'percent': elif measure == 'percent':

View File

@ -40,7 +40,7 @@ from django.shortcuts import get_object_or_404
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.urls import reverse from django.urls import reverse
from django.utils import dateparse from django.utils import dateparse
from django.utils.encoding import force_text, smart_text from django.utils.encoding import force_str, smart_text
from django.utils.http import urlencode from django.utils.http import urlencode
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
@ -138,7 +138,7 @@ class AddBasketItemApiView(View):
return HttpResponseForbidden() return HttpResponseForbidden()
try: try:
request_body = json.loads(force_text(request.body)) request_body = json.loads(force_str(request.body))
except json.JSONDecodeError: except json.JSONDecodeError:
return BadRequestJsonResponse('bad json request: "%s"' % request.body) return BadRequestJsonResponse('bad json request: "%s"' % request.body)
@ -247,7 +247,7 @@ class RemoveBasketItemApiView(View):
return HttpResponseForbidden() return HttpResponseForbidden()
try: try:
request_body = json.loads(force_text(request.body)) request_body = json.loads(force_str(request.body))
except json.JSONDecodeError: except json.JSONDecodeError:
return BadRequestJsonResponse('bad json request: "%s"' % request.body) return BadRequestJsonResponse('bad json request: "%s"' % request.body)
@ -311,7 +311,7 @@ class ValidateTransactionApiView(View):
) )
except eopayment.ResponseError as e: except eopayment.ResponseError as e:
logger.error('failed in validation operation: %s', e) logger.error('failed in validation operation: %s', e)
return JsonResponse({'err': 1, 'e': force_text(e)}) return JsonResponse({'err': 1, 'e': force_str(e)})
logger.info('bank validation result: %r', result) logger.info('bank validation result: %r', result)
operation = TransactionOperation( operation = TransactionOperation(
@ -348,7 +348,7 @@ class CancelTransactionApiView(View):
result = transaction.make_eopayment(request=request).backend.cancel(amount, transaction.bank_data) result = transaction.make_eopayment(request=request).backend.cancel(amount, transaction.bank_data)
except eopayment.ResponseError as e: except eopayment.ResponseError as e:
logger.error('failed in cancel operation: %s', e) logger.error('failed in cancel operation: %s', e)
return JsonResponse({'err': 1, 'e': force_text(e)}) return JsonResponse({'err': 1, 'e': force_str(e)})
logger.info('bank cancellation result: %r', result) logger.info('bank cancellation result: %r', result)
operation = TransactionOperation( operation = TransactionOperation(
@ -683,7 +683,7 @@ class CallbackView(PaymentView):
request.method, request.method,
backend_response, backend_response,
) )
return HttpResponseBadRequest(force_text(e)) return HttpResponseBadRequest(force_str(e))
logger.info('lingo: received synchronous payment notification for %s', transaction) logger.info('lingo: received synchronous payment notification for %s', transaction)
return HttpResponse() return HttpResponse()
@ -691,7 +691,7 @@ class CallbackView(PaymentView):
return self.handle_callback(request, request.environ['QUERY_STRING'], **kwargs) return self.handle_callback(request, request.environ['QUERY_STRING'], **kwargs)
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
return self.handle_callback(request, force_text(request.body), **kwargs) return self.handle_callback(request, force_str(request.body), **kwargs)
@csrf_exempt @csrf_exempt
def dispatch(self, *args, **kwargs): def dispatch(self, *args, **kwargs):
@ -708,7 +708,7 @@ class ReturnView(PaymentView):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
return self.handle_return( return self.handle_return(
request, force_text(request.body) or request.environ['QUERY_STRING'], **kwargs request, force_str(request.body) or request.environ['QUERY_STRING'], **kwargs
) )
def handle_return(self, request, backend_response, **kwargs): def handle_return(self, request, backend_response, **kwargs):
@ -910,7 +910,7 @@ class SelfInvoiceView(View):
else: else:
msg = _('Sorry, no invoice were found with that number and amount.') msg = _('Sorry, no invoice were found with that number and amount.')
if request.GET.get('ajax') == 'on': if request.GET.get('ajax') == 'on':
return JsonResponse({'url': url, 'msg': msg and force_text(msg)}) return JsonResponse({'url': url, 'msg': msg and force_str(msg)})
if url: if url:
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
messages.warning(request, msg) messages.warning(request, msg)

View File

@ -15,7 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
from django import forms from django import forms
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.text import slugify from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -58,7 +58,7 @@ class MapLayerForm(forms.ModelForm):
# new widget for icon field # new widget for icon field
self.fields['icon'].widget = IconRadioSelect() self.fields['icon'].widget = IconRadioSelect()
self.fields['icon'].choices = list( self.fields['icon'].choices = list(
sorted(self.fields['icon'].choices, key=lambda x: slugify(force_text(x[1]))) sorted(self.fields['icon'].choices, key=lambda x: slugify(force_str(x[1])))
) )
if self.instance.kind == 'geojson': if self.instance.kind == 'geojson':
todelete_fields = ['tiles_template_url', 'tiles_attribution', 'tiles_default'] todelete_fields = ['tiles_template_url', 'tiles_attribution', 'tiles_default']

View File

@ -16,7 +16,7 @@
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import transaction from django.db import transaction
from django.utils.encoding import force_text from django.utils.encoding import force_str
from rest_framework import authentication, permissions, serializers, status from rest_framework import authentication, permissions, serializers, status
from rest_framework.generics import GenericAPIView from rest_framework.generics import GenericAPIView
from rest_framework.response import Response from rest_framework.response import Response
@ -96,7 +96,7 @@ class Add(GenericAPIView):
) )
notification_ids.append(notification.public_id) notification_ids.append(notification.public_id)
except ValueError as e: except ValueError as e:
response = {'err': 1, 'err_desc': {'id': [force_text(e)]}} response = {'err': 1, 'err_desc': {'id': [force_str(e)]}}
return Response(response, status.HTTP_400_BAD_REQUEST) return Response(response, status.HTTP_400_BAD_REQUEST)
data = {} data = {}

View File

@ -20,7 +20,7 @@ from django.conf import settings
from django.db import models from django.db import models
from django.db.models import Q from django.db.models import Q
from django.db.models.query import QuerySet from django.db.models.query import QuerySet
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.timezone import now, timedelta from django.utils.timezone import now, timedelta
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -145,7 +145,7 @@ class Notification(models.Model):
if id: if id:
try: try:
id = force_text(id) id = force_str(id)
except Exception as e: except Exception as e:
raise ValueError('id must be convertible to unicode', e) raise ValueError('id must be convertible to unicode', e)
if not re.match(cls.ID_RE, id): if not re.match(cls.ID_RE, id):

View File

@ -25,7 +25,7 @@ from django.core import serializers
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.core.files.storage import default_storage from django.core.files.storage import default_storage
from django.db import models from django.db import models
from django.utils.encoding import force_bytes, force_text from django.utils.encoding import force_bytes, force_str
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from py_vapid import Vapid from py_vapid import Vapid
@ -73,7 +73,7 @@ class PwaSettings(models.Model):
vapid = Vapid() vapid = Vapid()
vapid.generate_keys() vapid.generate_keys()
self.push_notifications_infos = { self.push_notifications_infos = {
'private_key': force_text(vapid.private_pem()), 'private_key': force_str(vapid.private_pem()),
} }
elif not self.push_notifications: elif not self.push_notifications:
self.push_notifications_infos = {} self.push_notifications_infos = {}
@ -91,7 +91,7 @@ class PwaSettings(models.Model):
serialized_settings = json.loads(serializers.serialize('json', [obj])) serialized_settings = json.loads(serializers.serialize('json', [obj]))
result = serialized_settings[0].get('fields') result = serialized_settings[0].get('fields')
if obj.application_icon: if obj.application_icon:
result['icon:base64'] = force_text(base64.encodebytes(obj.application_icon.read())) result['icon:base64'] = force_str(base64.encodebytes(obj.application_icon.read()))
return result return result
@classmethod @classmethod
@ -171,7 +171,7 @@ class PwaNavigationEntry(models.Model):
) )
)[0] )[0]
if self.icon: if self.icon:
serialized_entry['icon:base64'] = force_text(base64.encodebytes(self.icon.read())) serialized_entry['icon:base64'] = force_str(base64.encodebytes(self.icon.read()))
del serialized_entry['model'] del serialized_entry['model']
del serialized_entry['pk'] del serialized_entry['pk']
return serialized_entry return serialized_entry

View File

@ -21,7 +21,7 @@ from cryptography.hazmat.primitives import serialization
from django.conf import settings from django.conf import settings
from django.http import Http404, HttpResponse, HttpResponseBadRequest, HttpResponseForbidden, JsonResponse from django.http import Http404, HttpResponse, HttpResponseBadRequest, HttpResponseForbidden, JsonResponse
from django.template.loader import TemplateDoesNotExist, get_template from django.template.loader import TemplateDoesNotExist, get_template
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django.views.generic import TemplateView from django.views.generic import TemplateView
from py_vapid import Vapid from py_vapid import Vapid
@ -50,7 +50,7 @@ def js_response(request, template_name, **kwargs):
if settings.PWA_VAPID_PUBLIK_KEY: # legacy if settings.PWA_VAPID_PUBLIK_KEY: # legacy
pwa_vapid_public_key = settings.PWA_VAPID_PUBLIK_KEY pwa_vapid_public_key = settings.PWA_VAPID_PUBLIK_KEY
elif hasattr(serialization.Encoding, 'X962'): elif hasattr(serialization.Encoding, 'X962'):
pwa_vapid_public_key = force_text( pwa_vapid_public_key = force_str(
base64.urlsafe_b64encode( base64.urlsafe_b64encode(
Vapid.from_pem(pwa_settings.push_notifications_infos['private_key'].encode('ascii')) Vapid.from_pem(pwa_settings.push_notifications_infos['private_key'].encode('ascii'))
.private_key.public_key() .private_key.public_key()
@ -92,7 +92,7 @@ def subscribe_push(request, *args, **kwargs):
return HttpResponseForbidden() return HttpResponseForbidden()
try: try:
subscription_data = json.loads(force_text(request.body)) subscription_data = json.loads(force_str(request.body))
except json.JSONDecodeError: except json.JSONDecodeError:
return HttpResponseBadRequest('bad json request: "%s"' % request.body) return HttpResponseBadRequest('bad json request: "%s"' % request.body)

View File

@ -20,7 +20,7 @@ from django import forms
from django.conf import settings from django.conf import settings
from django.core import validators from django.core import validators
from django.forms.widgets import TextInput from django.forms.widgets import TextInput
from django.utils.encoding import force_text from django.utils.encoding import force_str
class RichTextField(ckeditor.fields.RichTextField): class RichTextField(ckeditor.fields.RichTextField):
@ -52,7 +52,7 @@ class RichTextFormField(ckeditor.fields.RichTextFormField):
def templatable_url_validator(value): def templatable_url_validator(value):
value = force_text(value) value = force_str(value)
if '{{' in value or '{%' in value: if '{{' in value or '{%' in value:
# leave templates alone # leave templates alone
return return

View File

@ -56,7 +56,7 @@ from django.template import (
from django.test.client import RequestFactory from django.test.client import RequestFactory
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.encoding import force_text, smart_bytes from django.utils.encoding import force_str, smart_bytes
from django.utils.html import strip_tags from django.utils.html import strip_tags
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.text import slugify from django.utils.text import slugify
@ -859,9 +859,9 @@ class CellBase(models.Model, metaclass=CellMeta):
label = self.get_verbose_name() label = self.get_verbose_name()
additional_label = self.get_additional_label() additional_label = self.get_additional_label()
if label and additional_label: if label and additional_label:
return '%s (%s)' % (label, re.sub(r'\r?\n', ' ', force_text(additional_label))) return '%s (%s)' % (label, re.sub(r'\r?\n', ' ', force_str(additional_label)))
else: else:
return force_text(label) return force_str(label)
@classmethod @classmethod
def get_verbose_name(cls): def get_verbose_name(cls):
@ -2124,13 +2124,13 @@ class JsonCellBase(CellBase):
) )
except requests.RequestException as e: except requests.RequestException as e:
extra_context[data_key + '_status'] = -1 extra_context[data_key + '_status'] = -1
extra_context[data_key + '_error'] = force_text(e) extra_context[data_key + '_error'] = force_str(e)
extra_context[data_key + '_exception'] = e extra_context[data_key + '_exception'] = e
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if log_errors: if log_errors:
logger.warning('error on request %r: %s', url, force_text(e)) logger.warning('error on request %r: %s', url, force_str(e))
else: else:
logger.debug('error on request %r: %s', url, force_text(e)) logger.debug('error on request %r: %s', url, force_str(e))
continue continue
extra_context[data_key + '_status'] = json_response.status_code extra_context[data_key + '_status'] = json_response.status_code
if json_response.status_code // 100 == 2: if json_response.status_code // 100 == 2:
@ -2316,7 +2316,7 @@ class ConfigJsonCell(JsonCellBase):
parameters = JSONField(blank=True, default=dict) parameters = JSONField(blank=True, default=dict)
def __str__(self): def __str__(self):
return force_text(_('%s (JSON Cell)') % self.get_label()) return force_str(_('%s (JSON Cell)') % self.get_label())
@classmethod @classmethod
def get_cell_types(cls): def get_cell_types(cls):

View File

@ -37,7 +37,7 @@ from django.http import (
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.template import engines from django.template import engines
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils.encoding import force_bytes, force_text from django.utils.encoding import force_bytes, force_str
from django.utils.formats import date_format from django.utils.formats import date_format
from django.utils.timezone import localtime from django.utils.timezone import localtime
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -156,7 +156,7 @@ class SiteImportView(FormView):
except tarfile.TarError: except tarfile.TarError:
try: try:
fd.seek(0) fd.seek(0)
json_site = json.loads(force_text(fd.read())) json_site = json.loads(force_str(fd.read()))
except ValueError: except ValueError:
form.add_error('site_file', _('File is not in the expected TAR or JSON format.')) form.add_error('site_file', _('File is not in the expected TAR or JSON format.'))
return self.form_invalid(form) return self.form_invalid(form)
@ -171,7 +171,7 @@ class SiteImportView(FormView):
else: else:
pages = import_site_tar(fd, request=self.request) pages = import_site_tar(fd, request=self.request)
except ImportSiteError as e: except ImportSiteError as e:
form.add_error('site_file', force_text(e)) form.add_error('site_file', force_str(e))
return self.form_invalid(form) return self.form_invalid(form)
else: else:
for page in pages: for page in pages:
@ -957,7 +957,7 @@ def menu_json(request):
json_str = json.dumps( json_str = json.dumps(
[ [
{ {
'label': force_text(label), 'label': force_str(label),
'slug': slug, 'slug': slug,
'url': request.build_absolute_uri(reverse('combo-manager-homepage')), 'url': request.build_absolute_uri(reverse('combo-manager-homepage')),
} }

View File

@ -20,7 +20,7 @@ from ckeditor.image import pillow_backend
from django.forms.utils import flatatt from django.forms.utils import flatatt
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.html import conditional_escape from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import get_language from django.utils.translation import get_language
@ -43,7 +43,7 @@ def ckeditor_render(self, name, value, attrs=None, renderer=None):
# Force to text to evaluate possible lazy objects # Force to text to evaluate possible lazy objects
external_plugin_resources = [ external_plugin_resources = [
[force_text(a), force_text(b), force_text(c)] for a, b, c in self.external_plugin_resources [force_str(a), force_str(b), force_str(c)] for a, b, c in self.external_plugin_resources
] ]
return mark_safe( return mark_safe(
@ -51,7 +51,7 @@ def ckeditor_render(self, name, value, attrs=None, renderer=None):
'ckeditor/widget.html', 'ckeditor/widget.html',
{ {
'final_attrs': flatatt(final_attrs), 'final_attrs': flatatt(final_attrs),
'value': conditional_escape(force_text(value)), 'value': conditional_escape(force_str(value)),
'id': final_attrs['id'], 'id': final_attrs['id'],
'config': ckeditor.widgets.json_encode(self.config), 'config': ckeditor.widgets.json_encode(self.config),
'external_plugin_resources': ckeditor.widgets.json_encode(external_plugin_resources), 'external_plugin_resources': ckeditor.widgets.json_encode(external_plugin_resources),

View File

@ -41,7 +41,7 @@ except ImportError:
from django.template import Template, TemplateSyntaxError, defaultfilters from django.template import Template, TemplateSyntaxError, defaultfilters
from django.template.defaultfilters import stringfilter from django.template.defaultfilters import stringfilter
from django.utils import dateparse from django.utils import dateparse
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.timezone import is_naive, make_aware from django.utils.timezone import is_naive, make_aware
from combo.apps.dashboard.models import DashboardCell, Tile from combo.apps.dashboard.models import DashboardCell, Tile
@ -333,7 +333,7 @@ def has_role(user, groupname):
@register.filter @register.filter
def split(string, separator=' '): def split(string, separator=' '):
return (force_text(string) or '').split(separator) return (force_str(string) or '').split(separator)
@register.filter @register.filter
@ -341,17 +341,17 @@ def strip(string, chars=None):
if not string: if not string:
return '' return ''
if chars: if chars:
return force_text(string).strip(force_text(chars)) return force_str(string).strip(force_str(chars))
else: else:
return force_text(string).strip() return force_str(string).strip()
@register.filter @register.filter
def removeprefix(string, prefix): def removeprefix(string, prefix):
if not string: if not string:
return '' return ''
value = force_text(string) value = force_str(string)
prefix = force_text(prefix) prefix = force_str(prefix)
if prefix and value.startswith(prefix): if prefix and value.startswith(prefix):
return value[len(prefix) :] return value[len(prefix) :]
return value return value
@ -361,8 +361,8 @@ def removeprefix(string, prefix):
def removesuffix(string, suffix): def removesuffix(string, suffix):
if not string: if not string:
return '' return ''
value = force_text(string) value = force_str(string)
suffix = force_text(suffix) suffix = force_str(suffix)
if suffix and value.endswith(suffix): if suffix and value.endswith(suffix):
return value[: -len(suffix)] return value[: -len(suffix)]
return value return value
@ -413,12 +413,12 @@ def get_page(page_slug):
@register.filter @register.filter
def startswith(string, substring): def startswith(string, substring):
return string and force_text(string).startswith(force_text(substring)) return string and force_str(string).startswith(force_str(substring))
@register.filter @register.filter
def endswith(string, substring): def endswith(string, substring):
return string and force_text(string).endswith(force_text(substring)) return string and force_str(string).endswith(force_str(substring))
def parse_float(value): def parse_float(value):

View File

@ -40,7 +40,7 @@ from django.shortcuts import render, resolve_url
from django.template import engines from django.template import engines
from django.template.loader import TemplateDoesNotExist, get_template from django.template.loader import TemplateDoesNotExist, get_template
from django.utils import lorem_ipsum, timezone from django.utils import lorem_ipsum, timezone
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.http import urlencode from django.utils.http import urlencode
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
@ -142,9 +142,7 @@ def ajax_page_cell(request, page_pk, cell_reference):
except PostException as e: except PostException as e:
exception = e exception = e
if not request.is_ajax(): if not request.is_ajax():
messages.error( messages.error(request, force_str(e) if force_str(e) != 'None' else _('Error sending data.'))
request, force_text(e) if force_text(e) != 'None' else _('Error sending data.')
)
if action_response: if action_response:
response = HttpResponse( response = HttpResponse(
@ -159,7 +157,7 @@ def ajax_page_cell(request, page_pk, cell_reference):
response = render_cell(request, cell) response = render_cell(request, cell)
if exception: if exception:
response['x-error-message'] = force_text(exception) response['x-error-message'] = force_str(exception)
return response return response

View File

@ -19,7 +19,7 @@ import binascii
from Cryptodome import Random from Cryptodome import Random
from Cryptodome.Cipher import AES from Cryptodome.Cipher import AES
from Cryptodome.Protocol.KDF import PBKDF2 from Cryptodome.Protocol.KDF import PBKDF2
from django.utils.encoding import force_text from django.utils.encoding import force_str
class DecryptionError(Exception): class DecryptionError(Exception):
@ -34,7 +34,7 @@ def aes_hex_encrypt(key, data):
aes_key = PBKDF2(key, iv) aes_key = PBKDF2(key, iv)
aes = AES.new(aes_key, AES.MODE_CFB, iv) aes = AES.new(aes_key, AES.MODE_CFB, iv)
crypted = aes.encrypt(data) crypted = aes.encrypt(data)
return force_text(b'%s%s' % (binascii.hexlify(iv[:2]), binascii.hexlify(crypted))) return force_str(b'%s%s' % (binascii.hexlify(iv[:2]), binascii.hexlify(crypted)))
def aes_hex_decrypt(key, payload, raise_on_error=True): def aes_hex_decrypt(key, payload, raise_on_error=True):
@ -54,4 +54,4 @@ def aes_hex_decrypt(key, payload, raise_on_error=True):
return None return None
aes_key = PBKDF2(key, iv) aes_key = PBKDF2(key, iv)
aes = AES.new(aes_key, AES.MODE_CFB, iv) aes = AES.new(aes_key, AES.MODE_CFB, iv)
return force_text(aes.decrypt(crypted), 'utf-8') return force_str(aes.decrypt(crypted), 'utf-8')

View File

@ -18,7 +18,7 @@ import re
from django.conf import settings from django.conf import settings
from django.template import Context, Template, TemplateSyntaxError, VariableDoesNotExist from django.template import Context, Template, TemplateSyntaxError, VariableDoesNotExist
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.http import quote from django.utils.http import quote
@ -67,6 +67,6 @@ def get_templated_url(url, context=None):
return '[' return '['
if varname not in template_vars: if varname not in template_vars:
raise TemplateError('unknown variable %s' % varname) raise TemplateError('unknown variable %s' % varname)
return force_text(template_vars[varname]) return force_str(template_vars[varname])
return re.sub(r'(\[.+?\])', repl, url) return re.sub(r'(\[.+?\])', repl, url)

View File

@ -17,7 +17,7 @@ from django.test import override_settings
from django.test.client import RequestFactory from django.test.client import RequestFactory
from django.test.utils import CaptureQueriesContext from django.test.utils import CaptureQueriesContext
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_bytes, force_text from django.utils.encoding import force_bytes, force_str
from django.utils.timezone import now from django.utils.timezone import now
from combo.data.library import get_cell_classes from combo.data.library import get_cell_classes
@ -50,7 +50,7 @@ def context():
def mock_json_response(content, **kwargs): def mock_json_response(content, **kwargs):
content = force_bytes(content) content = force_bytes(content)
text = force_text(content) text = force_str(content)
return mock.Mock(content=content, text=text, json=lambda: json.loads(text), **kwargs) return mock.Mock(content=content, text=text, json=lambda: json.loads(text), **kwargs)
@ -79,7 +79,7 @@ def test_media():
app_label = 'data' app_label = 'data'
cells = [TextCelleWithMedia() for i in range(3)] cells = [TextCelleWithMedia() for i in range(3)]
assert '/static/coincoin.js' in force_text(sum((cell.media for cell in cells), Media())) assert '/static/coincoin.js' in force_str(sum((cell.media for cell in cells), Media()))
def test_additional_label(): def test_additional_label():

View File

@ -13,7 +13,7 @@ from django.core.files import File
from django.core.files.storage import default_storage from django.core.files.storage import default_storage
from django.core.management import call_command from django.core.management import call_command
from django.core.management.base import CommandError from django.core.management.base import CommandError
from django.utils.encoding import force_bytes, force_text from django.utils.encoding import force_bytes, force_str
from combo.apps.assets.models import Asset from combo.apps.assets.models import Asset
from combo.apps.assets.utils import clean_assets_files from combo.apps.assets.utils import clean_assets_files
@ -304,13 +304,13 @@ def test_import_export_pwa_settings(app):
# check with a change in icon file content # check with a change in icon file content
data = json.loads(output) data = json.loads(output)
data['pwa']['settings']['icon:base64'] = force_text(base64.encodebytes(b'TEST')) data['pwa']['settings']['icon:base64'] = force_str(base64.encodebytes(b'TEST'))
import_site(data=data) import_site(data=data)
assert PwaSettings.objects.get().application_icon.read() == b'TEST' assert PwaSettings.objects.get().application_icon.read() == b'TEST'
# check with a change in icon file name # check with a change in icon file name
data = json.loads(output) data = json.loads(output)
data['pwa']['settings']['icon:base64'] = force_text(base64.encodebytes(b'TEST2')) data['pwa']['settings']['icon:base64'] = force_str(base64.encodebytes(b'TEST2'))
data['pwa']['settings']['application_icon'] = 'pwa/test2.png' data['pwa']['settings']['application_icon'] = 'pwa/test2.png'
import_site(data=data) import_site(data=data)
assert os.path.basename(PwaSettings.objects.get().application_icon.file.name) == 'test2.png' assert os.path.basename(PwaSettings.objects.get().application_icon.file.name) == 'test2.png'
@ -339,7 +339,7 @@ def test_import_export_pwa_navigation(app, some_data):
# check with a change in icon file content # check with a change in icon file content
data = json.loads(output) data = json.loads(output)
data['pwa']['navigation'][1]['icon:base64'] = force_text(base64.encodebytes(b'TEST')) data['pwa']['navigation'][1]['icon:base64'] = force_str(base64.encodebytes(b'TEST'))
import_site(data=data) import_site(data=data)
assert PwaNavigationEntry.objects.all().count() == 2 assert PwaNavigationEntry.objects.all().count() == 2
assert PwaNavigationEntry.objects.get(order=1).icon.read() == b'TEST' assert PwaNavigationEntry.objects.get(order=1).icon.read() == b'TEST'
@ -347,7 +347,7 @@ def test_import_export_pwa_navigation(app, some_data):
# check with a change in icon file name # check with a change in icon file name
data = json.loads(output) data = json.loads(output)
data['pwa']['navigation'][1]['fields']['icon'] = 'pwa/test2.png' data['pwa']['navigation'][1]['fields']['icon'] = 'pwa/test2.png'
data['pwa']['navigation'][1]['icon:base64'] = force_text(base64.encodebytes(b'TEST2')) data['pwa']['navigation'][1]['icon:base64'] = force_str(base64.encodebytes(b'TEST2'))
import_site(data=data) import_site(data=data)
assert PwaNavigationEntry.objects.all().count() == 2 assert PwaNavigationEntry.objects.all().count() == 2
assert os.path.basename(PwaNavigationEntry.objects.get(order=1).icon.file.name) == 'test2.png' assert os.path.basename(PwaNavigationEntry.objects.get(order=1).icon.file.name) == 'test2.png'

View File

@ -14,7 +14,7 @@ from django.core.management import call_command
from django.test import override_settings from django.test import override_settings
from django.test.client import RequestFactory from django.test.client import RequestFactory
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_bytes, force_text from django.utils.encoding import force_bytes, force_str
from django.utils.timezone import now, timedelta from django.utils.timezone import now, timedelta
from requests.exceptions import ConnectionError from requests.exceptions import ConnectionError
from requests.models import Response from requests.models import Response
@ -390,7 +390,7 @@ def test_anonymous_successful_item_payment(mock_get, mock_pay_invoice, app, remo
assert 'item' in form.fields assert 'item' in form.fields
assert form['item'].value == 'F201601' assert form['item'].value == 'F201601'
assert 'regie' in form.fields assert 'regie' in form.fields
assert form['regie'].value == force_text(remote_regie.pk) assert form['regie'].value == force_str(remote_regie.pk)
form['email'] = 'ghost@buster.com' form['email'] = 'ghost@buster.com'
@ -602,7 +602,7 @@ def test_remote_item_payment_failure(mock_post, mock_get, mock_pay_invoice, app,
assert 'item' in form.fields assert 'item' in form.fields
assert form['item'].value == 'F201601' assert form['item'].value == 'F201601'
assert 'regie' in form.fields assert 'regie' in form.fields
assert form['regie'].value == force_text(remote_regie.pk) assert form['regie'].value == force_str(remote_regie.pk)
form['email'] = 'test@example.net' form['email'] = 'test@example.net'
resp = form.submit() resp = form.submit()

View File

@ -8,7 +8,7 @@ from django.contrib.auth.models import User
from django.test import Client from django.test import Client
from django.test.client import RequestFactory from django.test.client import RequestFactory
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.timezone import now from django.utils.timezone import now
from mellon.models import UserSAMLIdentifier from mellon.models import UserSAMLIdentifier
@ -151,7 +151,7 @@ def test_notification_ws(john_doe):
def notify(data, count, check_id=None): def notify(data, count, check_id=None):
resp = client.post(reverse('api-notification-add'), json.dumps(data), content_type='application/json') resp = client.post(reverse('api-notification-add'), json.dumps(data), content_type='application/json')
assert resp.status_code == 200 assert resp.status_code == 200
result = json.loads(force_text(resp.content)) result = json.loads(force_str(resp.content))
assert result['err'] == 0 assert result['err'] == 0
if 'id' in data: if 'id' in data:
assert check_id is not None and result['data']['id'] == check_id assert check_id is not None and result['data']['id'] == check_id
@ -203,18 +203,18 @@ def test_notification_ws(john_doe):
resp = client.get(reverse('api-notification-count')) resp = client.get(reverse('api-notification-count'))
assert resp.status_code == 200 assert resp.status_code == 200
assert json.loads(force_text(resp.content))['new'] == 3 assert json.loads(force_str(resp.content))['new'] == 3
assert json.loads(force_text(resp.content))['total'] == 3 assert json.loads(force_str(resp.content))['total'] == 3
resp = client.get(reverse('api-notification-ack', kwargs={'notification_id': '%s' % (notif_id - 5)})) resp = client.get(reverse('api-notification-ack', kwargs={'notification_id': '%s' % (notif_id - 5)}))
resp = client.get(reverse('api-notification-count')) resp = client.get(reverse('api-notification-count'))
assert resp.status_code == 200 assert resp.status_code == 200
assert json.loads(force_text(resp.content))['new'] == 2 assert json.loads(force_str(resp.content))['new'] == 2
assert json.loads(force_text(resp.content))['total'] == 3 assert json.loads(force_str(resp.content))['total'] == 3
resp = client.get(reverse('api-notification-forget', kwargs={'notification_id': '%s' % (notif_id - 5)})) resp = client.get(reverse('api-notification-forget', kwargs={'notification_id': '%s' % (notif_id - 5)}))
resp = client.get(reverse('api-notification-count')) resp = client.get(reverse('api-notification-count'))
assert resp.status_code == 200 assert resp.status_code == 200
assert json.loads(force_text(resp.content))['new'] == 2 assert json.loads(force_str(resp.content))['new'] == 2
assert json.loads(force_text(resp.content))['total'] == 2 assert json.loads(force_str(resp.content))['total'] == 2
def test_notification_ws_badrequest(john_doe): def test_notification_ws_badrequest(john_doe):
@ -225,7 +225,7 @@ def test_notification_ws_badrequest(john_doe):
content_type='application/json', content_type='application/json',
) )
assert resp.status_code == 400 assert resp.status_code == 400
result = json.loads(force_text(resp.content)) result = json.loads(force_str(resp.content))
assert result['err'] == 1 assert result['err'] == 1
assert message in list(result['err_desc'].values())[0][0] assert message in list(result['err_desc'].values())[0][0]
@ -270,7 +270,7 @@ def test_notification_id_and_origin(john_doe):
def notify(data): def notify(data):
resp = client.post(reverse('api-notification-add'), json.dumps(data), content_type='application/json') resp = client.post(reverse('api-notification-add'), json.dumps(data), content_type='application/json')
return json.loads(force_text(resp.content)) return json.loads(force_str(resp.content))
result = notify({'summary': 'foo', 'id': '1'}) result = notify({'summary': 'foo', 'id': '1'})
assert result['err'] == 1 assert result['err'] == 1