Skip to content
Snippets Groups Projects
Commit 3bffbd15 authored by Eva Bardou's avatar Eva Bardou Committed by Bastien Abadie
Browse files

Ignore JSON charset when importing manifests

parent 274bace9
No related branches found
No related tags found
1 merge request!1200Ignore JSON charset when importing manifests
......@@ -151,7 +151,7 @@ class DataImportFromFilesSerializer(serializers.Serializer):
self.fail('images_only')
elif data['mode'] == DataImportMode.IIIF:
if not set(f.content_type for f in data['files']) <= {'application/json', 'application/ld+json'}:
if not set(f.content_type.split(';')[0] for f in data['files']) <= {'application/json', 'application/ld+json'}:
self.fail('iiif_only')
else:
......
......@@ -752,6 +752,46 @@ class TestImports(FixtureAPITestCase):
self.assertEqual(dataimport.element_type.slug, 'page')
self.assertIsNone(dataimport.element)
def test_from_files_iiif_with_json_charset(self):
self.iiif_df.content_type = 'application/json;charset=utf-8'
self.assertEqual(self.iiif_df.content_type, 'application/json;charset=utf-8')
self.client.force_login(self.user)
response = self.client.post(reverse('api:import-from-files'), {
'files': [str(self.iiif_df.id)],
'mode': 'iiif',
'folder_type': 'volume',
'element_type': 'page',
}, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
data = response.json()
dataimport = DataImport.objects.get(id=data['id'])
self.assertEqual(dataimport.mode, DataImportMode.IIIF)
self.assertListEqual(list(dataimport.files.all()), [self.iiif_df])
self.assertEqual(dataimport.folder_type.slug, 'volume')
self.assertEqual(dataimport.element_type.slug, 'page')
self.assertIsNone(dataimport.element)
def test_from_files_iiif_with_json_profile_and_charset(self):
self.iiif_df.content_type = 'application/ld+json;profile="http://iiif.io/api/presentation/2/context.json";charset=utf-8'
self.assertEqual(self.iiif_df.content_type, 'application/ld+json;profile="http://iiif.io/api/presentation/2/context.json";charset=utf-8')
self.client.force_login(self.user)
response = self.client.post(reverse('api:import-from-files'), {
'files': [str(self.iiif_df.id)],
'mode': 'iiif',
'folder_type': 'volume',
'element_type': 'page',
}, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
data = response.json()
dataimport = DataImport.objects.get(id=data['id'])
self.assertEqual(dataimport.mode, DataImportMode.IIIF)
self.assertListEqual(list(dataimport.files.all()), [self.iiif_df])
self.assertEqual(dataimport.folder_type.slug, 'volume')
self.assertEqual(dataimport.element_type.slug, 'page')
self.assertIsNone(dataimport.element)
def test_from_files_iiif_requires_folder_type(self):
self.client.force_login(self.user)
response = self.client.post(reverse('api:import-from-files'), {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment