Skip to content

Commit

Permalink
Merge branch 'fix-iiif'
Browse files Browse the repository at this point in the history
  • Loading branch information
knabar committed Apr 22, 2023
2 parents e78909b + cb19d24 commit 1d6fd9f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 28 deletions.
16 changes: 7 additions & 9 deletions rooibos/data/views.py
Expand Up @@ -35,7 +35,7 @@
from rooibos.util import safe_int, validate_next_link, json_view
from rooibos.middleware import HistoryMiddleware
from .tasks import csvimport
from rooibos.presentation.views import get_id, get_metadata, special_slide
from rooibos.presentation.views import get_id, get_metadata, special_slide, get_server
from ..storage.functions import get_media_for_record
from ..viewers import get_viewers_for_object

Expand Down Expand Up @@ -1003,8 +1003,7 @@ def single_record_manifest(request, record, owner):
fieldvalues = record.get_fieldvalues(owner=owner)
title = title_from_fieldvalues(fieldvalues) or 'Untitled',
id = get_id(request, 'record', 'canvas', 'record%d' % record.id)
server = '//' + request.META.get(
'HTTP_X_FORWARDED_HOST', request.META['HTTP_HOST'])
server = get_server(request)
image = server + record.get_image_url(
force_reprocess=False,
handler='storage-retrieve-iiif-image',
Expand Down Expand Up @@ -1047,7 +1046,7 @@ def single_record_manifest(request, record, owner):
viewers = list(get_viewers_for_object(record, request))
if len(viewers) > 0:
other_content.append({
'@id': reverse(
'@id': server + reverse(
'data-annotation-list',
kwargs={
'id': record.id,
Expand Down Expand Up @@ -1099,14 +1098,14 @@ def annotation_list(request, id, name):
'@type': 'oa:Annotation',
'motivation': 'sc:painting',
'resource': {
'@id': viewer.url('embed'),
'@id': get_server(request) + viewer.url('embed'),
'@type': 'dctypes:Text',
'format': 'text/html',
},
})

return {
'@context': reverse('data-record-manifest', kwargs=dict(identifier=id, name=name)),
'@context': 'http://iiif.io/api/image/2/context.json',
'@type': 'sc:Manifest',
'@id': get_id(
request, 'record', 'record%d' % record.id,
Expand All @@ -1124,16 +1123,15 @@ def record_manifest(request, identifier, name):
owner = request.user if request.user.is_authenticated else None

return {
'@context': reverse(
record_manifest, kwargs=dict(identifier=identifier, name=name)),
'@context': 'http://iiif.io/api/image/2/context.json',
'@type': 'sc:Manifest',
'@id': get_id(request, 'record', 'record%d' % record.id, 'manifest'),
'label': record.title,
'metadata': [],
'description': '',
'sequences': [{
'@id': get_id(request, 'record', 'record%d' % record.id),
'@type': 'sc:Range',
'@type': 'sc:Sequence',
'label': 'Record',
'canvases': [
single_record_manifest(
Expand Down
34 changes: 15 additions & 19 deletions rooibos/presentation/views.py
Expand Up @@ -654,14 +654,14 @@ def record_usage(request, id, name):
)


def get_server(request, offline=False):
return '' if offline else 'https://' + request.META.get(
'HTTP_X_FORWARDED_HOST', request.META['HTTP_HOST'])


def get_id(request, *args, offline=False):
if not offline:
server = '//' + request.META.get(
'HTTP_X_FORWARDED_HOST', request.META['HTTP_HOST'])
else:
server = ''
s = '/'.join(map(str, args))
return '%s/iiif/%s' % (server, s)
return '%s/iiif/%s' % (get_server(request, offline), s)


def get_metadata(fieldvalues):
Expand All @@ -686,11 +686,7 @@ def slide_manifest(request, slide, owner, offline=False):
title = title_from_fieldvalues(fieldvalues) or 'Untitled',
id = get_id(
request, 'slide', 'canvas', 'slide%d' % slide.id, offline=offline)
if not offline:
server = '//' + request.META.get(
'HTTP_X_FORWARDED_HOST', request.META['HTTP_HOST'])
else:
server = ''
server = get_server(request, offline)
image = server + slide.record.get_image_url(
force_reprocess=False,
handler='storage-retrieve-iiif-image',
Expand Down Expand Up @@ -749,7 +745,7 @@ def slide_manifest(request, slide, owner, offline=False):
viewers = list(get_viewers_for_object(slide.record, request))
if len(viewers) > 0:
other_content.append({
'@id': reverse(
'@id': server + reverse(
'presentation-annotation-list',
kwargs={
'id': slide.presentation.id,
Expand Down Expand Up @@ -796,7 +792,7 @@ def slide_manifest(request, slide, owner, offline=False):


def special_slide(request, kind, label, index=None, offline=False):
image = reverse(
image = get_server(request, offline) + reverse(
'presentation-%s-slide' % kind,
kwargs={'extra': str(index) if index else ''}
)
Expand Down Expand Up @@ -848,7 +844,7 @@ def raw_manifest(request, id, name, offline=False):
slides = p.items.select_related('record').filter(hidden=False)

return {
'@context': reverse(manifest, kwargs=dict(id=p.id, name=p.name)),
'@context': 'http://iiif.io/api/presentation/2/context.json',
'@type': 'sc:Manifest',
'@id': get_id(
request, 'presentation', 'presentation%d' % p.id, 'manifest',
Expand All @@ -860,7 +856,7 @@ def raw_manifest(request, id, name, offline=False):
'@id': get_id(
request, 'presentation', 'presentation%d' % p.id, 'all',
offline=offline),
'@type': 'sc:Range',
'@type': 'sc:Sequence',
'label': 'All slides',
'canvases': [
slide_manifest(
Expand Down Expand Up @@ -903,14 +899,14 @@ def annotation_list(request, id, name, slide_id):
'@type': 'oa:Annotation',
'motivation': 'sc:painting',
'resource': {
'@id': viewer.url('embed'),
'@id': get_server(request) + viewer.url('embed'),
'@type': 'dctypes:Text',
'format': 'text/html',
},
})

return {
'@context': reverse(manifest, kwargs=dict(id=p.id, name=p.name)),
'@context': 'http://iiif.io/api/presentation/2/context.json',
'@type': 'sc:Manifest',
'@id': get_id(
request, 'presentation', 'presentation%d' % p.id,
Expand Down Expand Up @@ -938,7 +934,7 @@ def transparent_png(request, extra):
return HttpResponse(
content=_get_info_json_for_png(
100,
reverse('presentation-blank-slide', kwargs={'extra': ''})
get_server(request) + reverse('presentation-blank-slide', kwargs={'extra': ''})
),
content_type='application/json',
)
Expand All @@ -957,7 +953,7 @@ def missing_png(request, extra):
return HttpResponse(
content=_get_info_json_for_png(
200,
reverse('presentation-missing-slide', kwargs={'extra': ''})
get_server(request) + reverse('presentation-missing-slide', kwargs={'extra': ''})
),
content_type='application/json',
)
Expand Down

0 comments on commit 1d6fd9f

Please sign in to comment.