1
0
Fork 0
mirror of synced 2024-06-29 03:20:58 +12:00

tweak snapshot asset serving logic to show multiple choices in case of conflict

This commit is contained in:
Nick Sweeting 2021-02-16 15:51:56 -05:00
parent a6c64f2560
commit 28e50c5e49

View file

@ -62,19 +62,21 @@ class SnapshotView(View):
try:
try:
snapshot = Snapshot.objects.get(timestamp=slug)
except Snapshot.DoesNotExist:
if Snapshot.objects.filter(timestamp__startswith=slug).exists():
raise Snapshot.MultipleObjectsReturned
response = static.serve(request, archivefile, document_root=snapshot.link_dir, show_indexes=True)
response["Link"] = f'<{snapshot.url}>; rel="canonical"'
return response
except Snapshot.DoesNotExist:
if Snapshot.objects.filter(timestamp__startswith=slug).exists():
raise Snapshot.MultipleObjectsReturned
else:
raise
except Snapshot.DoesNotExist:
# Snapshot does not exist
return HttpResponse(
format_html(
(
'<center><br/><br/><br/>'
'No Snapshots match the given timestamp: <code>{}</code><br/><br/>'
'No Snapshots match the given timestamp or UUID: <code>{}</code><br/><br/>'
'You can <a href="/add/" target="_top">add a new Snapshot</a>, or return to the <a href="/" target="_top">Main Index</a>'
'</center>'
),
@ -99,7 +101,7 @@ class SnapshotView(View):
return HttpResponse(
format_html(
(
'Multiple Snapshots match the given timestamp <code>{}</code><br/><pre>'
'Multiple Snapshots match the given timestamp/UUID <code>{}</code><br/><pre>'
),
slug,
) + snapshot_hrefs + format_html(
@ -134,7 +136,6 @@ class SnapshotView(View):
status=404,
)
# slug is a URL
else:
try:
try:
# try exact match on full url first