Use CachedTicket.get_or_create to avoid duplicates

This commit is contained in:
Raphael Michel
2016-10-18 18:57:20 +02:00
parent 574f07877d
commit f3509707d7
4 changed files with 28 additions and 17 deletions

View File

@@ -420,19 +420,14 @@ class OrderDownload(OrderView):
messages.error(request, _('Order is not paid.'))
return redirect(self.get_order_url())
try:
ct = CachedTicket.objects.get(order=self.order, provider=self.output.identifier)
except CachedTicket.DoesNotExist:
ct = CachedTicket(order=self.order, provider=self.output.identifier)
try:
ct.cachedfile
except CachedFile.DoesNotExist:
ct = CachedTicket.objects.get_or_create(order=self.order, provider=self.output.identifier)[0]
if not ct.cachedfile:
cf = CachedFile()
cf.date = now()
cf.expires = self.request.event.date_from + timedelta(days=30)
cf.save()
ct.cachedfile = cf
ct.save()
ct.save()
if not ct.cachedfile.file.name:
tickets.generate.apply_async(args=(self.order.id, self.output.identifier))
return redirect(reverse('cachedfile.download', kwargs={'id': ct.cachedfile.id}))