diff --git a/src/pretix/base/migrations/0013_auto_20150916_0941.py b/src/pretix/base/migrations/0013_auto_20150916_0941.py index dccde844b..b93215a87 100644 --- a/src/pretix/base/migrations/0013_auto_20150916_0941.py +++ b/src/pretix/base/migrations/0013_auto_20150916_0941.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations import versions.models +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 53dd42b43..5ef64b94f 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -12,10 +12,11 @@ from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ from django.views.generic import DetailView, ListView, TemplateView, View -from pretix.base.models import CachedFile, Item, Order, Quota +from pretix.base.models import CachedFile, CachedTicket, Item, Order, Quota from pretix.base.services.export import export from pretix.base.services.orders import mark_order_paid from pretix.base.services.stats import order_overview +from pretix.base.services.tickets import generate from pretix.base.signals import ( register_data_exporters, register_payment_providers, register_ticket_outputs, @@ -216,7 +217,22 @@ class OrderDownload(OrderView): if self.order.status != Order.STATUS_PAID: messages.error(request, _('Order is not paid.')) return redirect(self.get_order_url()) - return self.output.generate(request, self.order) + + 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: + cf = CachedFile() + cf.date = now() + cf.expires = self.request.event.date_from + timedelta(days=30) + cf.save() + ct.cachedfile = cf + ct.save() + generate(self.order.identity, self.output.identifier) + return redirect(reverse('presale:cachedfile.download', kwargs={'id': ct.cachedfile.id})) class OrderExtend(OrderView):