Skip to content
Snippets Groups Projects
Commit 78cf0947 authored by Valentin Rigal's avatar Valentin Rigal Committed by Erwan Rouchet
Browse files

Preserve image path first character using CreateIIIFURL with a new server

parent be64ad14
No related branches found
No related tags found
1 merge request!1531Preserve image path first character using CreateIIIFURL with a new server
......@@ -4,7 +4,7 @@ from django.utils.functional import cached_property
# Lower-case markers that *may* indicate a IIIF server handles
# images after that path
IIIF_MARKERS = ('/iiif/', '/i3f/')
IIIF_MARKERS = ('/iiif/2/', '/iiif/', '/i3f/')
class ImageServerManager(models.Manager):
......@@ -30,7 +30,9 @@ class ImageServerManager(models.Manager):
for marker in IIIF_MARKERS:
if marker not in url.lower():
continue
server_url = url[:url.lower().index(marker) + len(marker)]
# Remove the marker trailing slash as it caused IIIFImageSerializer to strip the first
# character of the image path when creating a new server
server_url = url[:url.lower().index(marker) + len(marker)].rstrip('/')
return self.create(
url=server_url,
display_name=server_url,
......
......@@ -340,6 +340,7 @@ class TestImageApi(FixtureAPITestCase):
{'url': 'https://test-server.eu/images/image_path'}
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertTrue(Image.objects.filter(path='image_path').exists())
def test_create_iiif_image_admin_noscope(self):
self.client.force_login(self.superuser)
......@@ -359,6 +360,7 @@ class TestImageApi(FixtureAPITestCase):
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertTrue(ImageServer.objects.filter(url='https://randomserver.com/iiif').exists())
self.assertTrue(Image.objects.filter(path='path/to/image.jpg').exists())
def test_create_iiif_image_wrong_urls(self):
self.client.force_login(self.superuser)
......
......@@ -161,8 +161,8 @@ class TestImageServer(TestCase):
# A new server will be created
new_server = ImageServer.objects.from_url('http://new.server.dev/iiif/test.jpg')
self.assertEqual(ImageServer.objects.count(), 6)
self.assertEqual(new_server.url, 'http://new.server.dev/iiif/')
self.assertEqual(new_server.display_name, 'http://new.server.dev/iiif/')
self.assertEqual(new_server.url, 'http://new.server.dev/iiif')
self.assertEqual(new_server.display_name, 'http://new.server.dev/iiif')
self.assertTrue(new_server.validated)
# And then reused for later calls
......@@ -172,12 +172,12 @@ class TestImageServer(TestCase):
# We also support i3f and weird formats
new_server = ImageServer.objects.from_url('https://whatever.online/prefix/I3f/xxx/test.jpg')
self.assertEqual(ImageServer.objects.count(), 7)
self.assertEqual(new_server.url, 'https://whatever.online/prefix/I3f/')
self.assertEqual(new_server.display_name, 'https://whatever.online/prefix/I3f/')
self.assertEqual(new_server.url, 'https://whatever.online/prefix/I3f')
self.assertEqual(new_server.display_name, 'https://whatever.online/prefix/I3f')
self.assertTrue(new_server.validated)
new_server = ImageServer.objects.from_url('http://whatever.online/prefixYz/IIIf/path/to/image.jpg')
self.assertEqual(ImageServer.objects.count(), 8)
self.assertEqual(new_server.url, 'http://whatever.online/prefixYz/IIIf/')
self.assertEqual(new_server.display_name, 'http://whatever.online/prefixYz/IIIf/')
self.assertEqual(new_server.url, 'http://whatever.online/prefixYz/IIIf')
self.assertEqual(new_server.display_name, 'http://whatever.online/prefixYz/IIIf')
self.assertTrue(new_server.validated)
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