diff --git a/setup.py b/setup.py
index 28b1ef8..5e8edec 100644
--- a/setup.py
+++ b/setup.py
@@ -110,7 +110,6 @@ setup(
'isodate',
'jsonschema',
'gadjo',
- 'six',
'djangorestframework>=3.9,<3.13',
'pytz',
'python-dateutil',
diff --git a/tests/test_commands.py b/tests/test_commands.py
index 9bbef6e..3da5ba1 100644
--- a/tests/test_commands.py
+++ b/tests/test_commands.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
+import io
import mock
import pytest
import sys
@@ -9,12 +10,11 @@ from zoo.zoo_nanterre import utils
from django.core.management import call_command
from django.db.transaction import atomic
-from django.utils.six import StringIO
def get_output_of_command(command, *args, **kwargs):
old_stdout = sys.stdout
- output = sys.stdout = StringIO()
+ output = sys.stdout = io.StringIO()
call_command(command, *args, **kwargs)
sys.stdout = old_stdout
return output.getvalue()
diff --git a/tests/test_nanterre.py b/tests/test_nanterre.py
index 0295de3..4735873 100644
--- a/tests/test_nanterre.py
+++ b/tests/test_nanterre.py
@@ -5,6 +5,7 @@ import datetime
import isodate
import requests
import threading
+import urllib.parse
import pytest
import httmock
@@ -12,7 +13,6 @@ import httmock
from django.urls import reverse
from django.utils.encoding import force_text
from django.utils.http import urlencode
-from django.utils.six.moves.urllib import parse as urlparse
from django.utils.timezone import now
from zoo.zoo_data.models import Entity, Relation, Log, Job
@@ -693,9 +693,9 @@ def test_create_individu(settings, transactional_db, app, app_noauth, rsu_schema
more = response.json.get('more')
if more:
assert 'cookie' in response.json
- parsed = urlparse.urlparse(response.json['more'])
+ parsed = urllib.parse.urlparse(response.json['more'])
query = parsed.query
- assert urlparse.parse_qs(query)['cookie'] == [response.json['cookie']]
+ assert urllib.parse.parse_qs(query)['cookie'] == [response.json['cookie']]
assert sorted(d['id'] for d in all_data) == sorted(qs.values_list('id', flat=True))
assert count == qs.count()
assert 'more' not in response.json
diff --git a/tests/test_nanterre_doublons.py b/tests/test_nanterre_doublons.py
index 0d6ed69..4e33434 100644
--- a/tests/test_nanterre_doublons.py
+++ b/tests/test_nanterre_doublons.py
@@ -1,8 +1,8 @@
import copy
+import urllib
from django.urls import reverse
from django.core.management import call_command
-from django.utils.six.moves.urllib import parse as urlparse
from zoo.zoo_nanterre.models import Duplicate
from zoo.zoo_data.models import Log, Entity
@@ -43,8 +43,8 @@ def test_list_doublons(nanterre_classic_family, app):
assert response.json['err'] == 0
assert 'more' in response.json
assert 'cookie' in response.json
- assert response.json['cookie'] == urlparse.parse_qs(
- urlparse.urlparse(
+ assert response.json['cookie'] == urllib.parse.parse_qs(
+ urllib.parse.urlparse(
response.json['more']).query)['cookie'][0]
assert len(response.json['data']) >= 10
assert response.json['data'][0]['id'] == d.id
diff --git a/tests/test_nanterre_synchronize_federations.py b/tests/test_nanterre_synchronize_federations.py
index 207e7b2..037dfe7 100644
--- a/tests/test_nanterre_synchronize_federations.py
+++ b/tests/test_nanterre_synchronize_federations.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
import csv
+import io
-from django.utils import six
from django.utils.encoding import force_bytes
-from django.utils.six import StringIO
from webtest import Upload
@@ -33,12 +32,8 @@ def test_synchronize_federations(settings, app, nanterre_classic_family, admin):
response = response.click('Rapport')
def check_csv_response(csv_response):
- if six.PY3:
- reader = csv.DictReader(StringIO(csv_response.text))
- reader.fieldnames = reader.reader.__next__()
- else:
- reader = csv.DictReader(StringIO(csv_response.content))
- reader.fieldnames = reader.reader.next()
+ reader = csv.DictReader(io.StringIO(csv_response.text))
+ reader.fieldnames = reader.reader.__next__()
rows = list(reader)
def rows_by_action(action):
diff --git a/zoo/zoo_data/static/js/jsoneditor.min.js b/zoo/zoo_data/static/js/jsoneditor.min.js
index e396783..7e251f9 100644
--- a/zoo/zoo_data/static/js/jsoneditor.min.js
+++ b/zoo/zoo_data/static/js/jsoneditor.min.js
@@ -856,4 +856,4 @@ c&&c.destroy(),
c=new f(this.get(0),a),this.data("jsoneditor",c),
// Setup event listeners
c.on("change",function(){b.trigger("change")}),c.on("ready",function(){b.trigger("ready")}))}return this}}}(),window.JSONEditor=f}();
-//# sourceMappingURL=jsoneditor.min.js.map
\ No newline at end of file
+//# sourceMappingURL=jsoneditor.min.js.map
diff --git a/zoo/zoo_nanterre/saga.py b/zoo/zoo_nanterre/saga.py
index ff77f1c..d83af41 100644
--- a/zoo/zoo_nanterre/saga.py
+++ b/zoo/zoo_nanterre/saga.py
@@ -1,11 +1,11 @@
# -*- coding: utf-8 -*-
import datetime
import decimal
+import urllib.parse
import xml.etree.ElementTree as ET
from django.conf import settings
-from django.utils import six, timezone
-from django.utils.six.moves.urllib import parse as urlparse
+from django.utils import timezone
import requests
@@ -36,13 +36,13 @@ class Saga(object):
@property
def creance_url(self):
- return urlparse.urljoin(
+ return urllib.parse.urljoin(
self.url,
'/%s/services/etat_facture_creance_literal' % self.base_uri)
@property
def paiement_url(self):
- return urlparse.urljoin(
+ return urllib.parse.urljoin(
self.url,
'/%s/services/paiement_internet_ws_literal' % self.base_uri)
@@ -194,7 +194,7 @@ class Saga(object):
{urlretour_synchrone}
'''
assert factures, u'factures ne doit pas ĂȘtre vide'
- id_facture = u'--'.join(six.text_type(facture.num) for facture in factures)
+ id_facture = u'--'.join(str(facture.num) for facture in factures)
montant = sum(facture.reste_a_payer for facture in factures)
tree, error = self.soap_call(
self.paiement_url, body, 'TransactionReturn',
diff --git a/zoo/zoo_nanterre/synchronize_federations.py b/zoo/zoo_nanterre/synchronize_federations.py
index cdfe4ca..823d4c4 100644
--- a/zoo/zoo_nanterre/synchronize_federations.py
+++ b/zoo/zoo_nanterre/synchronize_federations.py
@@ -17,15 +17,14 @@
# along with this program. If not, see .
import csv
+import io
from django.core.files.storage import default_storage
from django.urls import reverse
from django.conf import settings
from django.db import DatabaseError
from django.db.transaction import atomic
-from django.utils import six
from django.utils.encoding import force_bytes
-from django.utils.six import StringIO
from zoo.zoo_meta.models import EntitySchema
from zoo.zoo_data.models import Job, Entity, Transaction, Log
@@ -106,15 +105,12 @@ class SynchronizeFederationsImport(object):
self.report('report')
def report(self, target):
- output_file = StringIO()
+ output_file = io.StringIO()
writer = csv.writer(output_file)
writer.writerow(['RSU ID', 'prenoms', 'nom de naissance',
'nom d\'usage', 'application', 'federation', 'action'])
for action in self.actions:
- if six.PY3:
- action = [v for v in action]
- else:
- action = [force_bytes(v) for v in action]
+ action = [v for v in action]
writer.writerow(action)
setattr(self.action, target + '_csv_filename',
self.action.csv_filename + '-report.csv')
diff --git a/zoo/zoo_nanterre/utils.py b/zoo/zoo_nanterre/utils.py
index 105136f..a0d338a 100644
--- a/zoo/zoo_nanterre/utils.py
+++ b/zoo/zoo_nanterre/utils.py
@@ -44,7 +44,6 @@ from django.db import transaction
from django.contrib.auth.hashers import make_password
from django.http import HttpResponse
-from django.utils import six
from django.utils.timezone import now, make_aware
from django.utils.encoding import force_bytes
@@ -653,7 +652,7 @@ def integrity_check():
def upper_dict(d):
'''Transform all string values in d to uppercase'''
for key, value in d.items():
- if isinstance(value, six.text_type):
+ if isinstance(value, str):
d[key] = value.upper()
@@ -1283,18 +1282,11 @@ def individu_caption(individu):
def csv_export_response(rows, filename):
- if six.PY3:
- with io.StringIO(newline='') as f:
- writer = csv.writer(f)
- for row in rows:
- writer.writerow(map(str, row))
- r = HttpResponse(f.getvalue(), content_type='text/csv')
- else:
- with io.BytesIO() as f:
- writer = csv.writer(f)
- for row in rows:
- writer.writerow(map(force_bytes, row))
- r = HttpResponse(f.getvalue(), content_type='text/csv')
+ with io.StringIO(newline='') as f:
+ writer = csv.writer(f)
+ for row in rows:
+ writer.writerow(map(str, row))
+ r = HttpResponse(f.getvalue(), content_type='text/csv')
r['Content-Disposition'] = 'attachment; filename="%s"' % filename
return r
diff --git a/zoo/zoo_nanterre/views.py b/zoo/zoo_nanterre/views.py
index 967775f..bb8a853 100644
--- a/zoo/zoo_nanterre/views.py
+++ b/zoo/zoo_nanterre/views.py
@@ -30,7 +30,6 @@ from django.db import connection
from django.conf import settings
from django.core.cache import cache
from django.utils.timezone import now
-from django.utils import six
from django.contrib.auth.decorators import permission_required
from django.contrib import messages
@@ -117,9 +116,7 @@ def synchronize_federations_report(request, job_id, model_admin, *args, **kwargs
if not report:
raise Http404('no report')
with report:
- text_report = report
- if six.PY3:
- text_report = io.TextIOWrapper(text_report, encoding='utf-8')
+ text_report = io.TextIOWrapper(report, encoding='utf-8')
reader = csv.reader(text_report)
next(reader)
actions = [row for row in reader if row[6] != 'KEEP']
@@ -152,9 +149,7 @@ def synchronize_federations_apply_report(request, job_id, model_admin, *args, **
with report:
if not report:
raise Http404('no report')
- text_report = report
- if six.PY3:
- text_report = io.TextIOWrapper(text_report, encoding='utf-8')
+ text_report = io.TextIOWrapper(report, encoding='utf-8')
reader = csv.reader(text_report)
next(reader)
actions = [row for row in reader if row[6] != 'KEEP']