diff --git a/MANIFEST.in b/MANIFEST.in
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,3 +6,5 @@
recursive-include swh/deposit/templates *
recursive-include swh/deposit/tests/*/data *
recursive-include swh py.typed
+include tox.ini
+include pytest.ini
diff --git a/requirements-server.txt b/requirements-server.txt
--- a/requirements-server.txt
+++ b/requirements-server.txt
@@ -1,2 +1,2 @@
-Django < 2.0
+Django < 3
djangorestframework
diff --git a/swh/deposit/api/common.py b/swh/deposit/api/common.py
--- a/swh/deposit/api/common.py
+++ b/swh/deposit/api/common.py
@@ -232,7 +232,7 @@
type=METADATA_TYPE,
deposit=deposit,
metadata=metadata,
- raw_metadata=raw_metadata)
+ raw_metadata=raw_metadata.decode('utf-8'))
deposit_request.save()
assert deposit_request is not None
diff --git a/swh/deposit/tests/api/test_deposit.py b/swh/deposit/tests/api/test_deposit.py
--- a/swh/deposit/tests/api/test_deposit.py
+++ b/swh/deposit/tests/api/test_deposit.py
@@ -111,7 +111,7 @@
response = authenticated_client.post(
reverse(COL_IRI, args=[deposit_collection.name]),
content_type='application/atom+xml;type=entry',
- data=atom_dataset['entry-data0'] % deposit.external_id.encode('utf-8'),
+ data=atom_dataset['entry-data0'] % deposit.external_id,
HTTP_SLUG=deposit.external_id
)
@@ -141,7 +141,7 @@
response = authenticated_client.post(
reverse(COL_IRI, args=[deposit_collection.name]),
content_type='application/atom+xml;type=entry',
- data=atom_dataset['entry-data0'] % deposit.external_id.encode('utf-8'),
+ data=atom_dataset['entry-data0'] % deposit.external_id,
HTTP_SLUG=deposit.external_id)
assert response.status_code == status.HTTP_201_CREATED
@@ -171,7 +171,7 @@
response = authenticated_client.post(
reverse(COL_IRI, args=[deposit_collection.name]),
content_type='application/atom+xml;type=entry',
- data=atom_dataset['entry-data0'] % deposit.external_id.encode('utf-8'),
+ data=atom_dataset['entry-data0'] % deposit.external_id,
HTTP_SLUG=deposit.external_id
)
diff --git a/swh/deposit/tests/api/test_deposit_atom.py b/swh/deposit/tests/api/test_deposit_atom.py
--- a/swh/deposit/tests/api/test_deposit_atom.py
+++ b/swh/deposit/tests/api/test_deposit_atom.py
@@ -125,7 +125,7 @@
with pytest.raises(Deposit.DoesNotExist):
Deposit.objects.get(external_id=external_id)
- atom_entry_data = atom_dataset['entry-data0'] % external_id.encode('utf-8')
+ atom_entry_data = atom_dataset['entry-data0'] % external_id
# when
response = authenticated_client.post(
@@ -149,7 +149,7 @@
# one associated request to a deposit
deposit_request = DepositRequest.objects.get(deposit=deposit)
assert deposit_request.metadata is not None
- assert deposit_request.raw_metadata == atom_entry_data.decode('utf-8')
+ assert deposit_request.raw_metadata == atom_entry_data
assert bool(deposit_request.archive) is False
@@ -164,8 +164,7 @@
with pytest.raises(Deposit.DoesNotExist):
Deposit.objects.get(external_id=external_id)
- atom_entry_data = atom_dataset['codemeta-sample'] % external_id.encode('utf-8') # noqa
-
+ atom_entry_data = atom_dataset['codemeta-sample'] % external_id
# when
response = authenticated_client.post(
reverse(COL_IRI, args=[deposit_collection.name]),
@@ -189,7 +188,7 @@
# one associated request to a deposit
deposit_request = DepositRequest.objects.get(deposit=deposit)
assert deposit_request.metadata is not None
- assert deposit_request.raw_metadata == atom_entry_data.decode('utf-8')
+ assert deposit_request.raw_metadata == atom_entry_data
assert bool(deposit_request.archive) is False
@@ -227,7 +226,7 @@
# one associated request to a deposit
deposit_request = DepositRequest.objects.get(deposit=deposit)
assert deposit_request.metadata is not None
- assert deposit_request.raw_metadata == atom_entry_data.decode('utf-8')
+ assert deposit_request.raw_metadata == atom_entry_data
assert bool(deposit_request.archive) is False
@@ -298,11 +297,11 @@
expected_meta = [
{
'metadata': parse_xml(atom_entry_data1),
- 'raw_metadata': atom_entry_data1.decode('utf-8'),
+ 'raw_metadata': atom_entry_data1
},
{
'metadata': parse_xml(atom_entry_data),
- 'raw_metadata': atom_entry_data.decode('utf-8'),
+ 'raw_metadata': atom_entry_data
}
]
diff --git a/swh/deposit/tests/api/test_deposit_binary.py b/swh/deposit/tests/api/test_deposit_binary.py
--- a/swh/deposit/tests/api/test_deposit_binary.py
+++ b/swh/deposit/tests/api/test_deposit_binary.py
@@ -511,7 +511,7 @@
charset=None)
atom_entry = InMemoryUploadedFile(
- BytesIO(atom_dataset['entry-data-deposit-binary']),
+ BytesIO(atom_dataset['entry-data-deposit-binary'].encode('utf-8')),
field_name='atom0',
name='atom0',
content_type='application/atom+xml; charset="utf-8"',
diff --git a/swh/deposit/tests/api/test_deposit_multipart.py b/swh/deposit/tests/api/test_deposit_multipart.py
--- a/swh/deposit/tests/api/test_deposit_multipart.py
+++ b/swh/deposit/tests/api/test_deposit_multipart.py
@@ -32,7 +32,7 @@
data_atom_entry = atom_dataset['entry-data-deposit-binary']
atom_entry = InMemoryUploadedFile(
- BytesIO(data_atom_entry),
+ BytesIO(data_atom_entry.encode('utf-8')),
field_name='atom0',
name='atom0',
content_type='application/atom+xml; charset="utf-8"',
@@ -73,7 +73,7 @@
data_atom_entry = atom_dataset['entry-data-deposit-binary']
atom_entry = InMemoryUploadedFile(
- BytesIO(data_atom_entry),
+ BytesIO(data_atom_entry.encode('utf-8')),
field_name='atom0',
name='atom0',
content_type='application/atom+xml; charset="utf-8"',
@@ -118,7 +118,7 @@
assert deposit_request.metadata['id'] == \
'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a'
assert deposit_request.raw_metadata == \
- data_atom_entry.decode('utf-8')
+ data_atom_entry
def test_post_deposit_multipart_tar(
@@ -142,7 +142,7 @@
charset=None)
atom_entry = InMemoryUploadedFile(
- BytesIO(data_atom_entry),
+ BytesIO(data_atom_entry.encode('utf-8')),
field_name='atom0',
name='atom0',
content_type='application/atom+xml; charset="utf-8"',
@@ -187,7 +187,7 @@
assert deposit_request.metadata['id'] == \
'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a'
assert deposit_request.raw_metadata == \
- data_atom_entry.decode('utf-8')
+ data_atom_entry
def test_post_deposit_multipart_put_to_replace_metadata(
@@ -211,7 +211,7 @@
charset=None)
atom_entry = InMemoryUploadedFile(
- BytesIO(data_atom_entry),
+ BytesIO(data_atom_entry.encode('utf-8')),
field_name='atom0',
name='atom0',
content_type='application/atom+xml; charset="utf-8"',
@@ -255,7 +255,7 @@
assert deposit_request.metadata['id'] == \
'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a'
assert deposit_request.raw_metadata == \
- data_atom_entry.decode('utf-8')
+ data_atom_entry
replace_metadata_uri = response._headers['location'][1]
response = authenticated_client.put(
@@ -283,7 +283,7 @@
assert deposit_request.metadata['id'] == \
'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a'
assert deposit_request.raw_metadata == \
- atom_dataset['entry-data-deposit-binary'].decode('utf-8')
+ atom_dataset['entry-data-deposit-binary']
# FAILURE scenarios
@@ -295,20 +295,22 @@
url = reverse(COL_IRI, args=[deposit_collection.name])
archive_content = b'some content representing archive'
- archive = InMemoryUploadedFile(BytesIO(archive_content),
- field_name='archive0',
- name='archive0',
- content_type='application/x-tar',
- size=len(archive_content),
- charset=None)
+ archive = InMemoryUploadedFile(
+ BytesIO(archive_content),
+ field_name='archive0',
+ name='archive0',
+ content_type='application/x-tar',
+ size=len(archive_content),
+ charset=None)
other_archive_content = b"some-other-content"
- other_archive = InMemoryUploadedFile(BytesIO(other_archive_content),
- field_name='atom0',
- name='atom0',
- content_type='application/x-tar',
- size=len(other_archive_content),
- charset='utf-8')
+ other_archive = InMemoryUploadedFile(
+ BytesIO(other_archive_content),
+ field_name='atom0',
+ name='atom0',
+ content_type='application/x-tar',
+ size=len(other_archive_content),
+ charset='utf-8')
# when
response = authenticated_client.post(
@@ -365,7 +367,7 @@
data_atom_entry_ko = atom_dataset['entry-data-ko']
atom_entry = InMemoryUploadedFile(
- BytesIO(data_atom_entry_ko),
+ BytesIO(data_atom_entry_ko.encode('utf-8')),
field_name='atom0',
name='atom0',
content_type='application/atom+xml; charset="utf-8"',
diff --git a/swh/deposit/tests/api/test_deposit_private_read_metadata.py b/swh/deposit/tests/api/test_deposit_private_read_metadata.py
--- a/swh/deposit/tests/api/test_deposit_private_read_metadata.py
+++ b/swh/deposit/tests/api/test_deposit_private_read_metadata.py
@@ -233,7 +233,7 @@
authenticated_client, deposit_collection, deposit,
atom_dataset)
# add metadata to the deposit with datePublished and dateCreated
- codemeta_entry_data = atom_dataset['metadata'] % b"""
+ codemeta_entry_data = atom_dataset['metadata'] % """
2015-04-06T17:08:47+02:00
2017-05-03T16:08:47+02:00
"""
@@ -349,7 +349,7 @@
"""
deposit = partial_deposit
- codemeta_entry_data = atom_dataset['metadata'] % b''
+ codemeta_entry_data = atom_dataset['metadata'] % ''
deposit = update_deposit_with_metadata(
authenticated_client, deposit_collection, deposit,
codemeta_entry_data)
@@ -470,7 +470,7 @@
"""
deposit = partial_deposit
# add metadata to the deposit with multiple datePublished/dateCreated
- codemeta_entry_data = atom_dataset['metadata'] % b"""
+ codemeta_entry_data = atom_dataset['metadata'] % """
2015-04-06T17:08:47+02:00
2017-05-03T16:08:47+02:00
2016-04-06T17:08:47+02:00
diff --git a/swh/deposit/tests/api/test_deposit_update.py b/swh/deposit/tests/api/test_deposit_update.py
--- a/swh/deposit/tests/api/test_deposit_update.py
+++ b/swh/deposit/tests/api/test_deposit_update.py
@@ -94,7 +94,7 @@
type='metadata')
assert len(requests_meta) == 1
request_meta0 = requests_meta[0]
- assert request_meta0.raw_metadata == raw_metadata0.decode('utf-8')
+ assert request_meta0.raw_metadata == raw_metadata0
requests_archive0 = DepositRequest.objects.filter(
deposit=deposit, type='archive')
@@ -117,7 +117,7 @@
assert len(requests_meta) == 1
request_meta1 = requests_meta[0]
raw_metadata1 = request_meta1.raw_metadata
- assert raw_metadata1 == atom_dataset['entry-data1'].decode('utf-8')
+ assert raw_metadata1 == atom_dataset['entry-data1']
assert raw_metadata0 != raw_metadata1
assert request_meta0 != request_meta1
@@ -222,8 +222,8 @@
expected_raw_meta0 = atom_dataset['entry-data0'] % (
deposit.external_id.encode('utf-8'))
# a new one was added
- assert requests[0].raw_metadata == expected_raw_meta0.decode('utf-8')
- assert requests[1].raw_metadata == atom_entry.decode('utf-8')
+ assert requests[0].raw_metadata == expected_raw_meta0
+ assert requests[1].raw_metadata == atom_entry
# check we did not touch the other parts
requests_archive1 = DepositRequest.objects.filter(
diff --git a/swh/deposit/tests/conftest.py b/swh/deposit/tests/conftest.py
--- a/swh/deposit/tests/conftest.py
+++ b/swh/deposit/tests/conftest.py
@@ -216,7 +216,7 @@
@pytest.fixture
-def atom_dataset(datadir) -> Mapping[str, bytes]:
+def atom_dataset(datadir) -> Mapping[str, str]:
"""Compute the paths to atom files.
Returns:
@@ -228,7 +228,7 @@
for filename in os.listdir(atom_path):
filepath = os.path.join(atom_path, filename)
with open(filepath, 'rb') as f:
- raw_content = f.read()
+ raw_content = f.read().decode('utf-8')
# Keep the filename without extension
atom_name = filename.split('.')[0]
diff --git a/tox.ini b/tox.ini
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist=flake8,mypy,py3
+envlist=flake8,mypy,py3-django{1,2}
[testenv]
extras =
@@ -10,6 +10,8 @@
swh.core[http] >= 0.0.75
dev: ipdb
pytest-cov
+ django1: Django>=1.11,<2
+ django2: Django>=2,<3
commands =
pytest \
!dev: --cov {envsitepackagesdir}/swh/deposit --cov-branch \