forked from CGM_Public/pretix_original
Use CachedTicket.get_or_create to avoid duplicates
This commit is contained in:
21
src/pretix/base/migrations/0041_auto_20161018_1654.py
Normal file
21
src/pretix/base/migrations/0041_auto_20161018_1654.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.2 on 2016-10-18 16:54
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pretixbase', '0040_u2fdevice'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='cachedticket',
|
||||||
|
name='cachedfile',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='pretixbase.CachedFile'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -304,7 +304,7 @@ class Order(LoggedModel):
|
|||||||
|
|
||||||
class CachedTicket(models.Model):
|
class CachedTicket(models.Model):
|
||||||
order = models.ForeignKey(Order, on_delete=models.CASCADE)
|
order = models.ForeignKey(Order, on_delete=models.CASCADE)
|
||||||
cachedfile = models.ForeignKey(CachedFile, on_delete=models.CASCADE)
|
cachedfile = models.ForeignKey(CachedFile, on_delete=models.CASCADE, null=True)
|
||||||
provider = models.CharField(max_length=255)
|
provider = models.CharField(max_length=255)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -420,19 +420,14 @@ class OrderDownload(OrderView):
|
|||||||
messages.error(request, _('Order is not paid.'))
|
messages.error(request, _('Order is not paid.'))
|
||||||
return redirect(self.get_order_url())
|
return redirect(self.get_order_url())
|
||||||
|
|
||||||
try:
|
ct = CachedTicket.objects.get_or_create(order=self.order, provider=self.output.identifier)[0]
|
||||||
ct = CachedTicket.objects.get(order=self.order, provider=self.output.identifier)
|
if not ct.cachedfile:
|
||||||
except CachedTicket.DoesNotExist:
|
|
||||||
ct = CachedTicket(order=self.order, provider=self.output.identifier)
|
|
||||||
try:
|
|
||||||
ct.cachedfile
|
|
||||||
except CachedFile.DoesNotExist:
|
|
||||||
cf = CachedFile()
|
cf = CachedFile()
|
||||||
cf.date = now()
|
cf.date = now()
|
||||||
cf.expires = self.request.event.date_from + timedelta(days=30)
|
cf.expires = self.request.event.date_from + timedelta(days=30)
|
||||||
cf.save()
|
cf.save()
|
||||||
ct.cachedfile = cf
|
ct.cachedfile = cf
|
||||||
ct.save()
|
ct.save()
|
||||||
if not ct.cachedfile.file.name:
|
if not ct.cachedfile.file.name:
|
||||||
tickets.generate.apply_async(args=(self.order.id, self.output.identifier))
|
tickets.generate.apply_async(args=(self.order.id, self.output.identifier))
|
||||||
return redirect(reverse('cachedfile.download', kwargs={'id': ct.cachedfile.id}))
|
return redirect(reverse('cachedfile.download', kwargs={'id': ct.cachedfile.id}))
|
||||||
|
|||||||
@@ -501,19 +501,14 @@ class OrderDownload(EventViewMixin, OrderDetailMixin, View):
|
|||||||
messages.error(request, _('Ticket download is not (yet) enabled.'))
|
messages.error(request, _('Ticket download is not (yet) enabled.'))
|
||||||
return redirect(self.get_order_url())
|
return redirect(self.get_order_url())
|
||||||
|
|
||||||
try:
|
ct = CachedTicket.objects.get_or_create(order=self.order, provider=self.output.identifier)[0]
|
||||||
ct = CachedTicket.objects.get(order=self.order, provider=self.output.identifier)
|
if not ct.cachedfile:
|
||||||
except CachedTicket.DoesNotExist:
|
|
||||||
ct = CachedTicket(order=self.order, provider=self.output.identifier)
|
|
||||||
try:
|
|
||||||
ct.cachedfile
|
|
||||||
except CachedFile.DoesNotExist:
|
|
||||||
cf = CachedFile()
|
cf = CachedFile()
|
||||||
cf.date = now()
|
cf.date = now()
|
||||||
cf.expires = self.request.event.date_from + timedelta(days=30)
|
cf.expires = self.request.event.date_from + timedelta(days=30)
|
||||||
cf.save()
|
cf.save()
|
||||||
ct.cachedfile = cf
|
ct.cachedfile = cf
|
||||||
ct.save()
|
ct.save()
|
||||||
generate.apply_async(args=(self.order.id, self.output.identifier))
|
generate.apply_async(args=(self.order.id, self.output.identifier))
|
||||||
return redirect(reverse('cachedfile.download', kwargs={'id': ct.cachedfile.id}))
|
return redirect(reverse('cachedfile.download', kwargs={'id': ct.cachedfile.id}))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user