0002-django4-replaced-_text-with-_str-equivalent-68576.patch
passerelle/apps/atal/models.py | ||
---|---|---|
21 | 21 |
import lxml.etree |
22 | 22 |
from django.db import models |
23 | 23 |
from django.utils import dateformat, dateparse |
24 |
from django.utils.encoding import force_text
|
|
24 |
from django.utils.encoding import force_str
|
|
25 | 25 |
from django.utils.translation import gettext_lazy as _ |
26 | 26 |
from zeep import helpers |
27 | 27 |
from zeep.exceptions import Fault |
... | ... | |
61 | 61 |
try: |
62 | 62 |
return getattr(client.service, method)(**kwargs) |
63 | 63 |
except Fault as e: |
64 |
raise APIError(force_text(e))
|
|
64 |
raise APIError(force_str(e))
|
|
65 | 65 | |
66 | 66 |
def _basic_ref(self, wsdl, method): |
67 | 67 |
soap_res = self._soap_call(wsdl=wsdl, method=method) |
passerelle/apps/cartads_cs/models.py | ||
---|---|---|
38 | 38 |
from django.db import models |
39 | 39 |
from django.http import HttpResponse |
40 | 40 |
from django.urls import reverse |
41 |
from django.utils.encoding import force_text
|
|
41 |
from django.utils.encoding import force_str
|
|
42 | 42 |
from django.utils.timezone import now |
43 | 43 |
from django.utils.translation import gettext_lazy as _ |
44 | 44 | |
... | ... | |
162 | 162 |
data_pad = AES.block_size - len(token_data_str) % AES.block_size |
163 | 163 |
aes = AES.new(self.secret_key.encode(), AES.MODE_CBC, self.iv.encode()) |
164 | 164 |
token = aes.encrypt((token_data_str + (chr(data_pad) * data_pad)).encode()) |
165 |
return force_text(base64.encodebytes(token)).replace('\n', '').rstrip('=')
|
|
165 |
return force_str(base64.encodebytes(token)).replace('\n', '').rstrip('=')
|
|
166 | 166 | |
167 | 167 |
def check_status(self): |
168 | 168 |
self.soap_client().service.GetCommunes(self.get_token(), {}) |
... | ... | |
701 | 701 |
try: |
702 | 702 |
pdf = pdfrw.PdfReader(request.FILES['files[]']) |
703 | 703 |
if not any(pdfrw.findobjs.find_objects(pdf, valid_subtypes=(pdfrw.PdfName.Form,))): |
704 |
return [{'error': force_text(_('The CERFA should not be a scanned document.'))}]
|
|
704 |
return [{'error': force_str(_('The CERFA should not be a scanned document.'))}]
|
|
705 | 705 |
except (pdfrw.PdfParseError, ValueError): |
706 |
return [{'error': force_text(_('The CERFA should be a PDF file.'))}]
|
|
706 |
return [{'error': force_str(_('The CERFA should be a PDF file.'))}]
|
|
707 | 707 |
else: |
708 | 708 |
if request.FILES['files[]'].content_type not in ('application/pdf', 'image/jpeg'): |
709 |
return [{'error': force_text(_('The file should be a PDF document or a JPEG image.'))}]
|
|
709 |
return [{'error': force_str(_('The file should be a PDF document or a JPEG image.'))}]
|
|
710 | 710 |
if request.FILES['files[]'].size > 25 * 1024 * 1024: |
711 |
return [{'error': force_text(_('The file should not exceed 25MB.'))}]
|
|
711 |
return [{'error': force_str(_('The file should not exceed 25MB.'))}]
|
|
712 | 712 |
file_upload = CartaDSFile( |
713 | 713 |
tracking_code=tracking_code, id_piece=id_piece, uploaded_file=request.FILES['files[]'] |
714 | 714 |
) |
passerelle/apps/csvdatasource/models.py | ||
---|---|---|
31 | 31 |
from django.core.files.base import ContentFile |
32 | 32 |
from django.db import models, transaction |
33 | 33 |
from django.urls import reverse |
34 |
from django.utils.encoding import force_str, force_text, smart_text
|
|
34 |
from django.utils.encoding import force_str, smart_str
|
|
35 | 35 |
from django.utils.timezone import make_aware, now |
36 | 36 |
from django.utils.translation import gettext_lazy as _ |
37 | 37 | |
... | ... | |
286 | 286 |
if self.skip_header: |
287 | 287 |
rows = rows[1:] |
288 | 288 | |
289 |
rows = [[smart_text(x) for x in y] for y in rows if y]
|
|
289 |
rows = [[smart_str(x) for x in y] for y in rows if y]
|
|
290 | 290 |
titles = [t.strip() for t in self.columns_keynames.split(',')] |
291 | 291 |
indexes = [titles.index(t) for t in titles if t] |
292 | 292 |
captions = [titles[i] for i in indexes] |
... | ... | |
317 | 317 | |
318 | 318 |
@property |
319 | 319 |
def titles(self): |
320 |
return [smart_text(t.strip()) for t in self.columns_keynames.split(',')]
|
|
320 |
return [smart_str(t.strip()) for t in self.columns_keynames.split(',')]
|
|
321 | 321 | |
322 | 322 |
@endpoint(perm='can_access', methods=['get'], name='data') |
323 | 323 |
def data(self, request, **kwargs): |
... | ... | |
388 | 388 |
except (TypeError, SyntaxError) as e: |
389 | 389 |
data = { |
390 | 390 |
'expr': expr, |
391 |
'error': smart_text(e),
|
|
391 |
'error': smart_str(e),
|
|
392 | 392 |
} |
393 | 393 |
if titles: |
394 | 394 |
data['name'] = titles[i] |
... | ... | |
407 | 407 |
data = { |
408 | 408 |
'expr': expr, |
409 | 409 |
'row': repr(row), |
410 |
'error': smart_text(e),
|
|
410 |
'error': smart_str(e),
|
|
411 | 411 |
} |
412 | 412 |
if titles: |
413 | 413 |
data['name'] = titles[i] |
... | ... | |
463 | 463 | |
464 | 464 |
if 'id' in request.GET and not model_filters_id: |
465 | 465 |
# always provide a ?id= filter. |
466 |
filters = ["id == %r" % force_text(request.GET['id'])]
|
|
466 |
filters = ["id == %r" % force_str(request.GET['id'])]
|
|
467 | 467 |
data = [row for new_row, row in stream_expressions(filters, data, kind='filters') if new_row[0]] |
468 | 468 | |
469 | 469 |
# allow jsonp queries by select2 |
passerelle/apps/family/loaders/concerto_fondettes.py | ||
---|---|---|
20 | 20 |
from decimal import Decimal |
21 | 21 | |
22 | 22 |
from django.core.exceptions import ValidationError |
23 |
from django.utils.encoding import force_text
|
|
23 |
from django.utils.encoding import force_str
|
|
24 | 24 |
from django.utils.translation import gettext_lazy as _ |
25 | 25 | |
26 | 26 |
from ..models import Invoice |
27 | 27 | |
28 | 28 | |
29 | 29 |
def u(s): |
30 |
return force_text(s, 'iso-8859-15')
|
|
30 |
return force_str(s, 'iso-8859-15')
|
|
31 | 31 | |
32 | 32 | |
33 | 33 |
class Loader: |
passerelle/apps/family/loaders/concerto_orleans.py | ||
---|---|---|
22 | 22 |
from django.core.exceptions import ValidationError |
23 | 23 |
from django.core.files.storage import DefaultStorage |
24 | 24 |
from django.utils import timezone |
25 |
from django.utils.encoding import force_text
|
|
25 |
from django.utils.encoding import force_str
|
|
26 | 26 |
from django.utils.translation import gettext_lazy as _ |
27 | 27 | |
28 | 28 |
from ..models import Adult, Child, Family, Invoice, dict_cherry_pick, get_date, get_datetime |
... | ... | |
130 | 130 |
# pylint: disable=stop-iteration-return |
131 | 131 |
titles = [x.lower() for x in next(reader)] |
132 | 132 |
for row in reader: |
133 |
row = [force_text(x, 'iso-8859-15') for x in row]
|
|
133 |
row = [force_str(x, 'iso-8859-15') for x in row]
|
|
134 | 134 |
yield dict(zip(titles, row)) |
135 | 135 | |
136 | 136 |
def build_families(self): |
passerelle/apps/family/loaders/opus_fondettes.py | ||
---|---|---|
20 | 20 |
from decimal import Decimal |
21 | 21 | |
22 | 22 |
from django.core.exceptions import ValidationError |
23 |
from django.utils.encoding import force_text
|
|
23 |
from django.utils.encoding import force_str
|
|
24 | 24 |
from django.utils.translation import gettext_lazy as _ |
25 | 25 | |
26 | 26 |
from ..models import Invoice |
27 | 27 | |
28 | 28 | |
29 | 29 |
def u(s): |
30 |
return force_text(s, 'iso-8859-15')
|
|
30 |
return force_str(s, 'iso-8859-15')
|
|
31 | 31 | |
32 | 32 | |
33 | 33 |
class Loader: |
passerelle/apps/gdc/models.py | ||
---|---|---|
22 | 22 |
phpserialize = None |
23 | 23 | |
24 | 24 |
from django.db import models |
25 |
from django.utils.encoding import force_text
|
|
25 |
from django.utils.encoding import force_str
|
|
26 | 26 |
from django.utils.translation import gettext_lazy as _ |
27 | 27 | |
28 | 28 |
from passerelle.base.models import BaseResource |
... | ... | |
43 | 43 |
if isinstance(obj, dict): |
44 | 44 |
new_d = {} |
45 | 45 |
for k, v in obj.items(): |
46 |
new_d[force_text(k)] = deep_bytes2str(v)
|
|
46 |
new_d[force_str(k)] = deep_bytes2str(v)
|
|
47 | 47 |
return new_d |
48 | 48 |
return obj |
49 | 49 | |
... | ... | |
68 | 68 | |
69 | 69 |
def call_soap(self, action, *args, **kwargs): |
70 | 70 |
def escape(s): |
71 |
return force_text(s).replace('&', '&').replace('>', '>').replace('<', '<')
|
|
71 |
return force_str(s).replace('&', '&').replace('>', '>').replace('<', '<')
|
|
72 | 72 | |
73 | 73 |
params = [] |
74 | 74 |
for i, arg in enumerate(args): |
... | ... | |
116 | 116 |
soap_result = phpserialize_loads(resp.findall('.//listeCommune')[0].text) |
117 | 117 |
result = [] |
118 | 118 |
for k, v in soap_result.items(): |
119 |
result.append({'id': k, 'text': force_text(v, 'utf-8')})
|
|
119 |
result.append({'id': k, 'text': force_str(v, 'utf-8')})
|
|
120 | 120 |
result.sort(key=lambda x: x['id']) |
121 | 121 |
return result |
122 | 122 | |
... | ... | |
126 | 126 |
soap_result = phpserialize_loads(resp.findall('.//listeObjet')[0].text) |
127 | 127 |
result = [] |
128 | 128 |
for k, v in soap_result.items(): |
129 |
result.append({'id': k, 'text': force_text(v, 'utf-8')})
|
|
129 |
result.append({'id': k, 'text': force_str(v, 'utf-8')})
|
|
130 | 130 |
result.sort(key=lambda x: x['id']) |
131 | 131 |
return result |
passerelle/apps/gdc/views.py | ||
---|---|---|
17 | 17 | |
18 | 18 |
import json |
19 | 19 | |
20 |
from django.utils.encoding import force_text
|
|
20 |
from django.utils.encoding import force_str
|
|
21 | 21 |
from django.views.generic.base import View |
22 | 22 |
from django.views.generic.detail import DetailView, SingleObjectMixin |
23 | 23 | |
... | ... | |
177 | 177 |
except IOError: |
178 | 178 |
result = {'result': 'gdc soap crash'} |
179 | 179 |
else: |
180 |
code_retour = force_text(resp.findall('.//code_retour')[0].text)
|
|
180 |
code_retour = force_str(resp.findall('.//code_retour')[0].text)
|
|
181 | 181 |
result = phpserialize_loads(resp.findall('.//listeInfo')[0].text) |
182 | 182 |
result = { |
183 | 183 |
'result': code_retour, |
passerelle/apps/ovh/models.py | ||
---|---|---|
12 | 12 |
from django.db import models |
13 | 13 |
from django.template.loader import render_to_string |
14 | 14 |
from django.utils import timezone |
15 |
from django.utils.encoding import force_text
|
|
15 |
from django.utils.encoding import force_str
|
|
16 | 16 |
from django.utils.translation import gettext_lazy as _ |
17 | 17 | |
18 | 18 |
from passerelle.base.models import SkipJob |
... | ... | |
235 | 235 |
if not self.password: |
236 | 236 |
raise APIError('Improperly configured, empty keys or password fields.') |
237 | 237 | |
238 |
text = force_text(text).encode('utf-8')
|
|
238 |
text = force_str(text).encode('utf-8')
|
|
239 | 239 |
to = ','.join(destinations) |
240 | 240 |
params = { |
241 | 241 |
'account': self.account.encode('utf-8'), |
passerelle/apps/oxyd/models.py | ||
---|---|---|
1 | 1 |
import requests |
2 | 2 |
from django.db import models |
3 |
from django.utils.encoding import force_text
|
|
3 |
from django.utils.encoding import force_str
|
|
4 | 4 |
from django.utils.translation import gettext_lazy as _ |
5 | 5 | |
6 | 6 |
from passerelle.sms.models import SMSResource |
... | ... | |
61 | 61 |
results.append('OXYD error: POST failed, %s' % e) |
62 | 62 |
else: |
63 | 63 |
code = r.content and r.content.split()[0] |
64 |
if force_text(code) != '200':
|
|
64 |
if force_str(code) != '200':
|
|
65 | 65 |
results.append('OXYD error: response is not 200') |
66 | 66 |
else: |
67 | 67 |
results.append(0) |
passerelle/apps/sector/models.py | ||
---|---|---|
25 | 25 |
from django.db import models, transaction |
26 | 26 |
from django.db.models import Q |
27 | 27 |
from django.http import HttpResponse |
28 |
from django.utils.encoding import force_bytes, force_str, smart_text
|
|
28 |
from django.utils.encoding import force_bytes, force_str, smart_str
|
|
29 | 29 |
from django.utils.timezone import now |
30 | 30 |
from django.utils.translation import gettext_lazy as _ |
31 | 31 | |
... | ... | |
166 | 166 |
for row in reader: |
167 | 167 |
if not row: |
168 | 168 |
continue # do not consider empty lines |
169 |
row = [smart_text(x).strip() for x in row]
|
|
169 |
row = [smart_str(x).strip() for x in row]
|
|
170 | 170 |
row = {caption: get_cell(row, index) for caption, index in zip(captions, indexes)} |
171 | 171 | |
172 | 172 |
if row['sector_id']: |
passerelle/apps/solis/models.py | ||
---|---|---|
20 | 20 | |
21 | 21 |
from django.db import models |
22 | 22 |
from django.template.loader import get_template |
23 |
from django.utils.encoding import force_text
|
|
23 |
from django.utils.encoding import force_str
|
|
24 | 24 |
from django.utils.http import urlencode |
25 | 25 |
from django.utils.translation import gettext_lazy as _ |
26 | 26 | |
... | ... | |
502 | 502 |
try: |
503 | 503 |
value = self.request(endpoint) |
504 | 504 |
except APIError as e: # do not raise on linked informations |
505 |
value = {'err': 1, 'err_class': e.__class__.__name__, 'err_desc': force_text(e)}
|
|
505 |
value = {'err': 1, 'err_class': e.__class__.__name__, 'err_desc': force_str(e)}
|
|
506 | 506 |
link['content'] = value |
507 | 507 | |
508 | 508 |
def rsa_get_links(self, information, links): |
passerelle/base/models.py | ||
---|---|---|
27 | 27 |
from django.test import override_settings |
28 | 28 |
from django.urls import reverse |
29 | 29 |
from django.utils import timezone |
30 |
from django.utils.encoding import force_text
|
|
30 |
from django.utils.encoding import force_str
|
|
31 | 31 |
from django.utils.log import AdminEmailHandler |
32 | 32 |
from django.utils.text import slugify |
33 | 33 |
from django.utils.timezone import now |
... | ... | |
373 | 373 |
if value: |
374 | 374 |
d[field.name] = { |
375 | 375 |
'name': os.path.basename(value.name), |
376 |
'content': force_text(base64.b64encode(value.read())),
|
|
376 |
'content': force_str(base64.b64encode(value.read())),
|
|
377 | 377 |
} |
378 | 378 |
else: |
379 | 379 |
d[field.name] = None |
passerelle/contrib/nancypoll/models.py | ||
---|---|---|
1 | 1 |
import csv |
2 | 2 | |
3 | 3 |
from django.db import models |
4 |
from django.utils.encoding import force_text
|
|
4 |
from django.utils.encoding import force_str
|
|
5 | 5 |
from django.utils.translation import gettext_lazy as _ |
6 | 6 | |
7 | 7 |
from passerelle.base.models import BaseResource |
... | ... | |
14 | 14 | |
15 | 15 | |
16 | 16 |
def to_unicode(value): |
17 |
return force_text(value, 'utf-8')
|
|
17 |
return force_str(value, 'utf-8')
|
|
18 | 18 | |
19 | 19 | |
20 | 20 |
def upload_to(instance, filename): |
... | ... | |
50 | 50 |
content = self.csv_file.read() |
51 | 51 |
if not content: |
52 | 52 |
raise APIError('No content found') |
53 |
content = force_text(content)
|
|
53 |
content = force_str(content)
|
|
54 | 54 | |
55 | 55 |
reader = csv.reader(content.splitlines()) |
56 | 56 |
next(reader) |
passerelle/contrib/strasbourg_eu/models.py | ||
---|---|---|
19 | 19 |
from urllib import parse as urlparse |
20 | 20 | |
21 | 21 |
from django.db import models |
22 |
from django.utils.encoding import force_text
|
|
22 |
from django.utils.encoding import force_str
|
|
23 | 23 |
from django.utils.translation import gettext_lazy as _ |
24 | 24 |
from requests import RequestException |
25 | 25 | |
... | ... | |
114 | 114 |
notification['parsedPublicationDate'] = None |
115 | 115 |
for date_format in ('%Y-%m-%d %H:%M:%S', '%a %b %d %H:%M:%S %Z %Y'): |
116 | 116 |
try: |
117 |
notification['parsedPublicationDate'] = force_text(
|
|
117 |
notification['parsedPublicationDate'] = force_str(
|
|
118 | 118 |
datetime.datetime.strptime(notification['publicationDate'], date_format) |
119 | 119 |
) |
120 | 120 |
break |
passerelle/contrib/teamnet_axel/models.py | ||
---|---|---|
23 | 23 |
from django.contrib.postgres.fields import JSONField |
24 | 24 |
from django.db import models |
25 | 25 |
from django.http import HttpResponse, HttpResponseNotFound |
26 |
from django.utils.encoding import smart_text
|
|
26 |
from django.utils.encoding import smart_str
|
|
27 | 27 |
from django.utils.translation import gettext_lazy as _ |
28 | 28 | |
29 | 29 |
from passerelle.base.models import BaseResource |
... | ... | |
86 | 86 |
portail = ET.Element('PORTAIL') |
87 | 87 |
portail.append(args) |
88 | 88 |
streamId = operation |
89 |
xmlParams = smart_text(ET.tostring(portail, encoding='UTF-8'))
|
|
89 |
xmlParams = smart_str(ET.tostring(portail, encoding='UTF-8'))
|
|
90 | 90 |
user = '' |
91 | 91 |
logger.debug('getData(streamId=%s, xmlParams=%s, user=%s)', streamId, xmlParams, user) |
92 |
result = soap.get_client(self).service.getData(streamId, smart_text(xmlParams), user)
|
|
93 |
logger.debug('getData(%s) result: %s', streamId, smart_text(result))
|
|
92 |
result = soap.get_client(self).service.getData(streamId, smart_str(xmlParams), user)
|
|
93 |
logger.debug('getData(%s) result: %s', streamId, smart_str(result))
|
|
94 | 94 |
xml_result = ET.fromstring(result) |
95 | 95 |
if xml_result.find('RESULTAT/STATUS').text != 'OK': |
96 | 96 |
msg = xml_result.find('RESULTAT/COMMENTAIRES').text |
passerelle/contrib/utils/axel.py | ||
---|---|---|
24 | 24 | |
25 | 25 |
import pytz |
26 | 26 |
import xmlschema |
27 |
from django.utils.encoding import force_text
|
|
27 |
from django.utils.encoding import force_str
|
|
28 | 28 | |
29 | 29 |
from passerelle.utils.xml import JSONSchemaFromXMLSchema |
30 | 30 | |
... | ... | |
234 | 234 |
except xmlschema.XMLSchemaValidationError as e: |
235 | 235 |
raise AxelError('invalid request %s' % str(e)) |
236 | 236 |
indent(serialized_request) |
237 |
serialized_request = force_text(ET.tostring(serialized_request))
|
|
237 |
serialized_request = force_str(ET.tostring(serialized_request))
|
|
238 | 238 |
try: |
239 | 239 |
self.request_converter.xml_schema.validate(serialized_request) |
240 | 240 |
except xmlschema.XMLSchemaValidationError as e: |
... | ... | |
246 | 246 | |
247 | 247 |
xml_result = ET.fromstring(result.encode('utf-8')) |
248 | 248 |
indent(xml_result) |
249 |
pretty_result = force_text(ET.tostring(xml_result))
|
|
249 |
pretty_result = force_str(ET.tostring(xml_result))
|
|
250 | 250 |
if xml_result.find('RESULTAT/STATUS').text != 'OK': |
251 | 251 |
msg = xml_result.find('RESULTAT/COMMENTAIRES').text |
252 | 252 |
raise AxelError(msg, xml_request=serialized_request, xml_response=pretty_result) |
passerelle/soap.py | ||
---|---|---|
1 | 1 |
import suds.sudsobject |
2 |
from django.utils.encoding import force_text
|
|
2 |
from django.utils.encoding import force_str
|
|
3 | 3 | |
4 | 4 | |
5 | 5 |
def client_to_jsondict(client): |
... | ... | |
17 | 17 |
d['types'] = {} |
18 | 18 |
for t in sd.types: |
19 | 19 |
ft = client.factory.create(sd.xlate(t[0])) |
20 |
d['types'][sd.xlate(t[0])] = force_text(ft)
|
|
20 |
d['types'][sd.xlate(t[0])] = force_str(ft)
|
|
21 | 21 |
res[sd.service.name] = d |
22 | 22 |
return res |
23 | 23 |
passerelle/utils/__init__.py | ||
---|---|---|
31 | 31 |
from django.core.exceptions import PermissionDenied |
32 | 32 |
from django.db import transaction |
33 | 33 |
from django.http import HttpResponse, HttpResponseBadRequest |
34 |
from django.utils.encoding import force_bytes, force_text
|
|
34 |
from django.utils.encoding import force_bytes, force_str
|
|
35 | 35 |
from django.utils.functional import lazy |
36 | 36 |
from django.utils.html import mark_safe |
37 | 37 |
from django.utils.translation import ngettext_lazy |
... | ... | |
98 | 98 |
if scheme == 'basic' and len(http_authorization) > 1: |
99 | 99 |
param = http_authorization[1] |
100 | 100 |
try: |
101 |
decoded = force_text(base64.b64decode(force_bytes(param.strip())))
|
|
101 |
decoded = force_str(base64.b64decode(force_bytes(param.strip())))
|
|
102 | 102 |
username, password = decoded.split(':', 1) |
103 | 103 |
except (TypeError, ValueError): |
104 | 104 |
pass |
... | ... | |
190 | 190 |
def make_headers_safe(headers): |
191 | 191 |
"""Convert dict of HTTP headers to text safely, as some services returns 8-bits encoding in headers.""" |
192 | 192 |
return { |
193 |
force_text(key, errors='replace'): force_text(value, errors='replace') |
|
194 |
for key, value in headers.items() |
|
193 |
force_str(key, errors='replace'): force_str(value, errors='replace') for key, value in headers.items() |
|
195 | 194 |
} |
196 | 195 | |
197 | 196 |
passerelle/utils/conversion.py | ||
---|---|---|
22 | 22 |
from io import BytesIO |
23 | 23 | |
24 | 24 |
import unidecode |
25 |
from django.utils.encoding import force_text
|
|
25 |
from django.utils.encoding import force_str
|
|
26 | 26 |
from PIL import Image |
27 | 27 | |
28 | 28 | |
... | ... | |
68 | 68 | |
69 | 69 | |
70 | 70 |
def to_ascii(s): |
71 |
return force_text(unidecode.unidecode(s), 'ascii')
|
|
71 |
return force_str(unidecode.unidecode(s), 'ascii')
|
|
72 | 72 | |
73 | 73 | |
74 | 74 |
def exception_to_text(e): |
... | ... | |
105 | 105 |
""" |
106 | 106 |
if not s: |
107 | 107 |
return '' |
108 |
s = force_text(s, 'utf-8', 'ignore')
|
|
108 |
s = force_str(s, 'utf-8', 'ignore')
|
|
109 | 109 |
s = normalize(s) |
110 | 110 |
s = re.sub(r'[^\w\s\'-]', '', s) |
111 | 111 |
s = re.sub(r'[\s\'_-]+', ' ', s) |
passerelle/utils/http_authenticators.py | ||
---|---|---|
21 | 21 |
from urllib import parse as urlparse |
22 | 22 |
from uuid import uuid4 |
23 | 23 | |
24 |
from django.utils.encoding import force_bytes, force_text
|
|
24 |
from django.utils.encoding import force_bytes, force_str
|
|
25 | 25 |
from requests.auth import AuthBase |
26 | 26 | |
27 | 27 | |
... | ... | |
40 | 40 |
p_hash.update(force_bytes(req.headers.get('Content-Type', '') + '\n')) |
41 | 41 |
p_hash.update(force_bytes(req.body or '')) |
42 | 42 |
p_hash.update(force_bytes('\n')) |
43 |
return force_text(base64.b64encode(p_hash.digest()))
|
|
43 |
return force_str(base64.b64encode(p_hash.digest()))
|
|
44 | 44 | |
45 | 45 |
def get_authorization_header(self, req): |
46 | 46 |
url_parts = urlparse.urlparse(req.url) |
... | ... | |
67 | 67 |
] |
68 | 68 |
digestmod = getattr(hashlib, self.algorithm) |
69 | 69 |
result = hmac.new(force_bytes(self.key), force_bytes('\n'.join(data)), digestmod) |
70 |
mac = force_text(base64.b64encode(result.digest()))
|
|
70 |
mac = force_str(base64.b64encode(result.digest()))
|
|
71 | 71 |
authorization = 'Hawk id="%s", ts="%s", nonce="%s", hash="%s", mac="%s"' % ( |
72 |
force_text(self.id),
|
|
72 |
force_str(self.id),
|
|
73 | 73 |
self.timestamp, |
74 | 74 |
self.nonce, |
75 | 75 |
hash, |
passerelle/utils/jsonresponse.py | ||
---|---|---|
16 | 16 |
from django.core.serializers.json import DjangoJSONEncoder |
17 | 17 |
from django.http import Http404, HttpResponse, HttpResponseBadRequest |
18 | 18 |
from django.http.response import HttpResponseBase |
19 |
from django.utils.encoding import force_text
|
|
19 |
from django.utils.encoding import force_str
|
|
20 | 20 |
from django.utils.log import log_response |
21 | 21 |
from requests import HTTPError, RequestException |
22 | 22 | |
... | ... | |
78 | 78 | |
79 | 79 |
err_class = err_module + err.__class__.__name__ |
80 | 80 | |
81 |
err_desc = force_text(err)
|
|
81 |
err_desc = force_str(err)
|
|
82 | 82 | |
83 | 83 |
response = { |
84 | 84 |
"err": 1, |
passerelle/utils/sftp.py | ||
---|---|---|
27 | 27 |
from django import forms |
28 | 28 |
from django.core import validators |
29 | 29 |
from django.db import models |
30 |
from django.utils.encoding import force_bytes, force_text
|
|
30 |
from django.utils.encoding import force_bytes, force_str
|
|
31 | 31 |
from django.utils.translation import gettext_lazy as _ |
32 | 32 |
from paramiko.dsskey import DSSKey |
33 | 33 |
from paramiko.ecdsakey import ECDSAKey |
... | ... | |
71 | 71 |
self.hostname = parsed.hostname |
72 | 72 |
self.port = parsed.port or 22 |
73 | 73 |
self.path = parsed.path.strip('/') |
74 |
self.private_key_content = force_text(private_key_content)
|
|
74 |
self.private_key_content = force_str(private_key_content)
|
|
75 | 75 |
self.private_key_password = private_key_password |
76 | 76 |
if private_key_content: |
77 | 77 |
self.private_key = _load_private_key(private_key_content, private_key_password) |
passerelle/views.py | ||
---|---|---|
35 | 35 |
from django.http import Http404, HttpResponse, HttpResponseRedirect |
36 | 36 |
from django.shortcuts import get_object_or_404, resolve_url |
37 | 37 |
from django.urls import reverse |
38 |
from django.utils.encoding import force_bytes, force_text
|
|
38 |
from django.utils.encoding import force_bytes, force_str
|
|
39 | 39 |
from django.utils.timezone import is_naive, make_aware |
40 | 40 |
from django.utils.translation import gettext_lazy as _ |
41 | 41 |
from django.views.decorators.csrf import csrf_exempt |
... | ... | |
103 | 103 |
json_str = json.dumps( |
104 | 104 |
[ |
105 | 105 |
{ |
106 |
'label': force_text(label),
|
|
106 |
'label': force_str(label),
|
|
107 | 107 |
'slug': 'passerelle', |
108 | 108 |
'url': request.build_absolute_uri(reverse('manage-home')), |
109 | 109 |
} |
tests/test_astregs.py | ||
---|---|---|
6 | 6 | |
7 | 7 |
import mock |
8 | 8 |
import pytest |
9 |
from django.utils.encoding import force_bytes, force_str, force_text
|
|
9 |
from django.utils.encoding import force_bytes, force_str |
|
10 | 10 |
from django.utils.http import urlencode |
11 | 11 |
from requests import Request |
12 | 12 |
from requests.exceptions import ConnectionError |
... | ... | |
327 | 327 |
assert data['StatutTiers'] == 'PROPOSE' |
328 | 328 |
assert data['Type'] == '*' |
329 | 329 |
assert data['AdresseTitre'] == 'AdressePrincipale' |
330 |
assert data['AdresseLibelleRue'] == force_text('169, rue du Château')
|
|
330 |
assert data['AdresseLibelleRue'] == force_str('169, rue du Château')
|
|
331 | 331 |
assert data['Sigle'] == 'EO' |
332 | 332 |
assert data['AdresseIsAdresseDeCommande'] == 'false' |
333 | 333 |
assert data['AdresseIsAdresseDeFacturation'] == 'false' |
tests/test_cmis.py | ||
---|---|---|
18 | 18 |
) |
19 | 19 |
from django.contrib.contenttypes.models import ContentType |
20 | 20 |
from django.urls import reverse |
21 |
from django.utils.encoding import force_bytes, force_text
|
|
21 |
from django.utils.encoding import force_bytes, force_str
|
|
22 | 22 |
from mock import Mock, call |
23 | 23 | |
24 | 24 |
from passerelle.apps.cmis.models import CmisConnector |
... | ... | |
27 | 27 | |
28 | 28 | |
29 | 29 |
def b64encode(content): |
30 |
return force_text(base64.b64encode(force_bytes(content)))
|
|
30 |
return force_str(base64.b64encode(force_bytes(content)))
|
|
31 | 31 | |
32 | 32 | |
33 | 33 |
@pytest.fixture() |
tests/test_cryptor.py | ||
---|---|---|
5 | 5 |
import pytest |
6 | 6 |
from django.contrib.contenttypes.models import ContentType |
7 | 7 |
from django.core.exceptions import ValidationError |
8 |
from django.utils.encoding import force_text
|
|
8 |
from django.utils.encoding import force_str
|
|
9 | 9 | |
10 | 10 |
import tests.utils |
11 | 11 |
from passerelle.apps.cryptor.models import CryptedFile, Cryptor |
... | ... | |
132 | 132 | |
133 | 133 |
# encrypt |
134 | 134 |
endpoint = tests.utils.generic_endpoint_url('cryptor', 'file-encrypt', slug=cryptor.slug) |
135 |
content = force_text(base64.b64encode(b'this is foo and bar'))
|
|
135 |
content = force_str(base64.b64encode(b'this is foo and bar'))
|
|
136 | 136 |
payload = {"file": {"filename": "foo.txt", "content_type": "text/plain", "content": content}} |
137 | 137 | |
138 | 138 |
resp = app.post_json(endpoint, params=payload, status=200) |
tests/test_csv_datasource.py | ||
---|---|---|
35 | 35 |
from django.core.management import call_command |
36 | 36 |
from django.test import Client, override_settings |
37 | 37 |
from django.urls import reverse |
38 |
from django.utils.encoding import force_bytes, force_str, force_text
|
|
38 |
from django.utils.encoding import force_bytes, force_str |
|
39 | 39 |
from django.utils.timezone import now |
40 | 40 | |
41 | 41 |
from passerelle.apps.csvdatasource.models import CsvDataSource, Query, TableRow, upload_to |
... | ... | |
64 | 64 |
216352;38;Dupont;Benoît;H |
65 | 65 |
""" |
66 | 66 | |
67 |
data_bom = force_str(force_text(data, 'utf-8').encode('utf-8-sig'))
|
|
67 |
data_bom = force_str(force_str(data, 'utf-8').encode('utf-8-sig'))
|
|
68 | 68 | |
69 | 69 |
pytestmark = pytest.mark.django_db |
70 | 70 |
tests/test_dpark.py | ||
---|---|---|
6 | 6 |
import httmock |
7 | 7 |
import mock |
8 | 8 |
import pytest |
9 |
from django.utils.encoding import force_text
|
|
9 |
from django.utils.encoding import force_str
|
|
10 | 10 |
from zeep.exceptions import Fault as WebFault |
11 | 11 |
from zeep.exceptions import TransportError |
12 | 12 | |
... | ... | |
653 | 653 |
</SOAP-ENV:Envelope>""" |
654 | 654 |
) |
655 | 655 |
resp = app.post_json(url, params=params) |
656 |
assert demande_abonnementtiers in force_text(dpark.mock_requests[1].body)
|
|
656 |
assert demande_abonnementtiers in force_str(dpark.mock_requests[1].body)
|
|
657 | 657 |
assert resp.json['data']['numerodossier'] == 22334 |
658 | 658 |
assert resp.json['data']['numerodemande'] == 59492 |
659 | 659 | |
... | ... | |
677 | 677 |
params['justif_domicile'] = { |
678 | 678 |
'filename': 'address_proof.pDf', |
679 | 679 |
'content_type': 'application/pdf', |
680 |
'content': force_text(base64.b64encode(b'%PDF this is my proof of address')),
|
|
680 |
'content': force_str(base64.b64encode(b'%PDF this is my proof of address')),
|
|
681 | 681 |
} |
682 | 682 |
params['cartegrise,1'] = { |
683 | 683 |
'filename': 'cartegrise.pdf', |
684 | 684 |
'content_type': 'application/pdf', |
685 |
'content': force_text(base64.b64encode(b'%PDF carte grise 1')),
|
|
685 |
'content': force_str(base64.b64encode(b'%PDF carte grise 1')),
|
|
686 | 686 |
} |
687 | 687 |
params['toto,6'] = { |
688 | 688 |
'filename': 'cartegrisetoto.jpg', |
689 | 689 |
'content_type': 'application/pdf', |
690 |
'content': force_text(base64.b64encode(JPEG_CONTENT)),
|
|
690 |
'content': force_str(base64.b64encode(JPEG_CONTENT)),
|
|
691 | 691 |
} |
692 | 692 |
params['cartegrise,6'] = { |
693 | 693 |
'filename': 'cartegrise2.pdf', |
694 | 694 |
'content_type': 'application/pdf', |
695 |
'content': force_text(base64.b64encode(b'%PDF carte grise 2')),
|
|
695 |
'content': force_str(base64.b64encode(b'%PDF carte grise 2')),
|
|
696 | 696 |
} |
697 | 697 |
params['taxe_habitat'] = { |
698 | 698 |
'filename': 'cartegrise2.pdf', |
... | ... | |
746 | 746 |
assert len(pj_node.findall('Bloc_Fichiers')) == 4 |
747 | 747 |
assert pj_node.findall('Bloc_Fichiers')[0].find('TypeDocument').text == '6' |
748 | 748 |
assert pj_node.findall('Bloc_Fichiers')[0].find('NomFichier').text == 'cartegrise.pdf' |
749 |
assert pj_node.findall('Bloc_Fichiers')[0].find('Fichier').text == force_text(
|
|
749 |
assert pj_node.findall('Bloc_Fichiers')[0].find('Fichier').text == force_str(
|
|
750 | 750 |
base64.b64encode(b'%PDF carte grise 1') |
751 | 751 |
) |
752 | 752 |
assert pj_node.findall('Bloc_Fichiers')[1].find('TypeDocument').text == '6' |
753 | 753 |
assert pj_node.findall('Bloc_Fichiers')[1].find('NomFichier').text == 'cartegrise2.pdf' |
754 |
assert pj_node.findall('Bloc_Fichiers')[1].find('Fichier').text == force_text(
|
|
754 |
assert pj_node.findall('Bloc_Fichiers')[1].find('Fichier').text == force_str(
|
|
755 | 755 |
base64.b64encode(b'%PDF carte grise 2') |
756 | 756 |
) |
757 | 757 |
assert pj_node.findall('Bloc_Fichiers')[2].find('TypeDocument').text == '2' |
758 | 758 |
assert pj_node.findall('Bloc_Fichiers')[2].find('NomFichier').text == 'address_proof.pDf' |
759 |
assert pj_node.findall('Bloc_Fichiers')[2].find('Fichier').text == force_text(
|
|
759 |
assert pj_node.findall('Bloc_Fichiers')[2].find('Fichier').text == force_str(
|
|
760 | 760 |
base64.b64encode(b'%PDF this is my proof of address') |
761 | 761 |
) |
762 | 762 | |
... | ... | |
764 | 764 |
from passerelle.utils.conversion import to_pdf |
765 | 765 | |
766 | 766 |
assert pj_node.findall('Bloc_Fichiers')[3].find('NomFichier').text == 'cartegrisetoto.jpg.pdf' |
767 |
assert pj_node.findall('Bloc_Fichiers')[3].find('Fichier').text == force_text(
|
|
767 |
assert pj_node.findall('Bloc_Fichiers')[3].find('Fichier').text == force_str(
|
|
768 | 768 |
base64.b64encode(to_pdf(JPEG_CONTENT)) |
769 | 769 |
) |
770 | 770 |
assert base64.b64decode(pj_node.findall('Bloc_Fichiers')[3].find('Fichier').text).startswith(b'%PDF') |
tests/test_gesbac.py | ||
---|---|---|
17 | 17 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
18 | 18 | |
19 | 19 |
import pytest |
20 |
from django.utils.encoding import force_bytes, force_text
|
|
20 |
from django.utils.encoding import force_bytes, force_str
|
|
21 | 21 |
from django.utils.timezone import now |
22 | 22 | |
23 | 23 |
from passerelle.apps.gesbac.models import Gesbac |
... | ... | |
175 | 175 |
assert resource.form_set.filter(form_id='42-43', filename=response_filename, status='closed').count() == 0 |
176 | 176 | |
177 | 177 |
# files are encoded in latin-1 |
178 |
comment = force_text('propriétaire')
|
|
179 |
content = force_bytes(force_text('CARTE;%s;3;2;1234;;;;;;;;%s' % (gesbac_id, comment)), 'latin-1')
|
|
178 |
comment = force_str('propriétaire')
|
|
179 |
content = force_bytes(force_str('CARTE;%s;3;2;1234;;;;;;;;%s' % (gesbac_id, comment)), 'latin-1')
|
|
180 | 180 |
with sftpserver.serve_content({'input': {response_filename: content}}): |
181 | 181 |
resource.hourly() |
182 | 182 |
tests/test_import_export.py | ||
---|---|---|
12 | 12 |
from django.test import Client |
13 | 13 |
from django.urls import reverse |
14 | 14 |
from django.utils import timezone |
15 |
from django.utils.encoding import force_bytes, force_text
|
|
15 |
from django.utils.encoding import force_bytes, force_str
|
|
16 | 16 | |
17 | 17 |
from passerelle.apps.base_adresse.models import BaseAdresse |
18 | 18 |
from passerelle.apps.bdp.models import Bdp |
... | ... | |
44 | 44 |
216352;38;Dupont;Benoît;H |
45 | 45 |
""" |
46 | 46 | |
47 |
data_bom = force_text(data, 'utf-8').encode('utf-8-sig')
|
|
47 |
data_bom = force_str(data, 'utf-8').encode('utf-8-sig')
|
|
48 | 48 | |
49 | 49 |
SECTOR_CSV = """street_id,street_name,parity,min_housenumber,max_housenumber,sector_id,sector_name |
50 | 50 |
75114_1912,rue du Château,P,,, gs-moulin, Groupe Scolaire Moulin""" |
tests/test_orange.py | ||
---|---|---|
20 | 20 |
import httmock |
21 | 21 |
import pytest |
22 | 22 |
from django.contrib.contenttypes.models import ContentType |
23 |
from django.utils.encoding import force_text
|
|
23 |
from django.utils.encoding import force_str
|
|
24 | 24 | |
25 | 25 |
from passerelle.apps.orange.models import OrangeError, OrangeSMSGateway |
26 | 26 |
from passerelle.base.models import AccessRight, ApiUser, Job |
... | ... | |
57 | 57 |
@httmock.urlmatch(netloc=NETLOC, path='/api/v1.2/groups/gid2/diffusion-requests', method='POST') |
58 | 58 |
def response_diffusion_ok(url, request): |
59 | 59 |
assert request.headers['authorization'] == 'Bearer my_token' |
60 |
request_body = json.loads(force_text(request.body))
|
|
60 |
request_body = json.loads(force_str(request.body))
|
|
61 | 61 |
assert request_body['smsParam']['body'] == PAYLOAD['message'] |
62 | 62 |
assert 'senderName' not in request_body['smsParam'].keys() |
63 | 63 |
assert '33688888888' in request_body['msisdns'][0] |
... | ... | |
168 | 168 |
# sender name not allowed |
169 | 169 |
@httmock.urlmatch(netloc=NETLOC) |
170 | 170 |
def mocked_response2(url, request): |
171 |
request_body = json.loads(force_text(request.body))
|
|
171 |
request_body = json.loads(force_str(request.body))
|
|
172 | 172 |
assert request_body['smsParam']['senderName'] == 'john' |
173 | 173 |
error_response = [ |
174 | 174 |
{ |
tests/test_sector.py | ||
---|---|---|
26 | 26 |
from django.core.files import File |
27 | 27 |
from django.core.management import call_command |
28 | 28 |
from django.urls import reverse |
29 |
from django.utils.encoding import force_str, force_text
|
|
29 |
from django.utils.encoding import force_str |
|
30 | 30 |
from django.utils.timezone import now |
31 | 31 | |
32 | 32 |
import tests.utils |
... | ... | |
44 | 44 |
75114_1915, ,,,,ecole-hugo2 , École Hugo 2 |
45 | 45 |
""" |
46 | 46 | |
47 |
CSV_BOM = force_str(force_text(CSV, 'utf-8').encode('utf-8-sig'))
|
|
47 |
CSV_BOM = force_str(force_str(CSV, 'utf-8').encode('utf-8-sig'))
|
|
48 | 48 | |
49 | 49 |
CSV_NO_FIRST_LINE = """75114_1912,rue du Château,P,,, gs-moulin, Groupe Scolaire Moulin |
50 | 50 |
75114_1912,rue du Château,I,0,999999,gs-zola,Groupe Scolaire Zola |
tests/test_solis_afi_mss.py | ||
---|---|---|
20 | 20 | |
21 | 21 |
import mock |
22 | 22 |
import pytest |
23 |
from django.utils.encoding import force_text
|
|
23 |
from django.utils.encoding import force_str
|
|
24 | 24 | |
25 | 25 |
import tests.utils |
26 | 26 |
from passerelle.contrib.solis_afi_mss.models import SolisAfiMss |
... | ... | |
708 | 708 |
'document': { |
709 | 709 |
'filename': '201x201.jpg', |
710 | 710 |
'content_type': 'image/jpeg', |
711 |
'content': force_text(base64.b64encode(get_media_file('201x201.jpg'))),
|
|
711 |
'content': force_str(base64.b64encode(get_media_file('201x201.jpg'))),
|
|
712 | 712 |
}, |
713 | 713 |
} |
714 | 714 | |
... | ... | |
790 | 790 |
'document': { |
791 | 791 |
'filename': '201x201.jpg', |
792 | 792 |
'content_type': 'image/jpeg', |
793 |
'content': force_text(base64.b64encode(get_media_file('201x201.jpg'))),
|
|
793 |
'content': force_str(base64.b64encode(get_media_file('201x201.jpg'))),
|
|
794 | 794 |
}, |
795 | 795 |
} |
796 | 796 |
resp = app.post_json(endpoint + '?email=foo@dummy.org', params=payload) |
tests/test_toulouse_smart.py | ||
---|---|---|
30 | 30 |
import pytest |
31 | 31 |
from django.db import connection |
32 | 32 |
from django.db.migrations.executor import MigrationExecutor |
33 |
from django.utils.encoding import force_text
|
|
33 |
from django.utils.encoding import force_str
|
|
34 | 34 |
from requests.exceptions import ReadTimeout |
35 | 35 | |
36 | 36 |
import tests.utils |
... | ... | |
871 | 871 |
'files/0': { |
872 | 872 |
'filename': '201x201.jpg', |
873 | 873 |
'content_type': 'image/jpeg', |
874 |
'content': force_text(base64.b64encode(get_media_file('201x201.jpg'))),
|
|
874 |
'content': force_str(base64.b64encode(get_media_file('201x201.jpg'))),
|
|
875 | 875 |
}, |
876 | 876 |
'files/1': None, |
877 | 877 |
} |
tests/test_utils_sftp.py | ||
---|---|---|
19 | 19 |
import pytest |
20 | 20 |
from django.core.files.uploadedfile import SimpleUploadedFile |
21 | 21 |
from django.db import models |
22 |
from django.utils.encoding import force_text
|
|
22 |
from django.utils.encoding import force_str
|
|
23 | 23 | |
24 | 24 |
from passerelle.utils.sftp import SFTP, SFTPField, SFTPFormField |
25 | 25 | |
... | ... | |
94 | 94 |
with form.cleaned_data['sftp'].client() as sftp: |
95 | 95 |
assert sftp.listdir() == ['a.zip'] |
96 | 96 | |
97 |
form = Form(data={'sftp_0': url, 'sftp_2': force_text(ssh_key, 'ascii')})
|
|
97 |
form = Form(data={'sftp_0': url, 'sftp_2': force_str(ssh_key, 'ascii')})
|
|
98 | 98 |
assert form.is_valid() |
99 | 99 |
sftp = form.cleaned_data['sftp'] |
100 | 100 |
assert isinstance(sftp, SFTP) |
... | ... | |
125 | 125 |
with form.cleaned_data['sftp'].client() as sftp: |
126 | 126 |
assert sftp.listdir() == ['a.zip'] |
127 | 127 | |
128 |
form = Form(data={'sftp_0': url, 'sftp_2': force_text(ssh_key_with_password, 'ascii')})
|
|
128 |
form = Form(data={'sftp_0': url, 'sftp_2': force_str(ssh_key_with_password, 'ascii')})
|
|
129 | 129 |
assert not form.is_valid() |
130 | 130 |
assert 'key invalid' in str(form.errors) |
131 | 131 | |
132 | 132 |
form = Form( |
133 | 133 |
data={ |
134 | 134 |
'sftp_0': url, |
135 |
'sftp_2': force_text(ssh_key_with_password, 'ascii'),
|
|
135 |
'sftp_2': force_str(ssh_key_with_password, 'ascii'),
|
|
136 | 136 |
'sftp_3': 'coucou', |
137 | 137 |
} |
138 | 138 |
) |
139 |
- |