remove infinite loop when output plugin provides a URI for a whole order (#5474)

This commit is contained in:
✨ Q (it/its) ✨
2025-09-23 18:26:38 +02:00
committed by GitHub
parent e694d3ca14
commit 7037f348bf
3 changed files with 18 additions and 13 deletions

View File

@@ -69,9 +69,6 @@ def generate_order(order: int, provider: str):
prov = response(order.event) prov = response(order.event)
if prov.identifier == provider: if prov.identifier == provider:
filename, ttype, data = prov.generate_order(order) filename, ttype, data = prov.generate_order(order)
if ttype == 'text/uri-list':
continue
path, ext = os.path.splitext(filename) path, ext = os.path.splitext(filename)
for ct in CachedCombinedTicket.objects.filter(order=order, provider=provider): for ct in CachedCombinedTicket.objects.filter(order=order, provider=provider):
ct.delete() ct.delete()

View File

@@ -711,11 +711,15 @@ class OrderDownload(AsyncAction, OrderView):
) )
return resp return resp
elif isinstance(value, CachedCombinedTicket): elif isinstance(value, CachedCombinedTicket):
resp = FileResponse(value.file.file, content_type=value.type) if value.type == 'text/uri-list':
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format( resp = HttpResponseRedirect(value.file.file.read())
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension return resp
) else:
return resp resp = FileResponse(value.file.file, content_type=value.type)
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format(
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension
)
return resp
else: else:
return redirect(self.get_self_url()) return redirect(self.get_self_url())

View File

@@ -1146,11 +1146,15 @@ class OrderDownloadMixin:
) )
return resp return resp
elif isinstance(value, CachedCombinedTicket): elif isinstance(value, CachedCombinedTicket):
resp = FileResponse(value.file.file, content_type=value.type) if value.type == 'text/uri-list':
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format( resp = HttpResponseRedirect(value.file.file.read())
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension return resp
) else:
return resp resp = FileResponse(value.file.file, content_type=value.type)
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format(
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension
)
return resp
else: else:
return redirect(self.get_self_url()) return redirect(self.get_self_url())