forked from CGM_Public/pretix_original
Refs #44 -- Added background queue support for ticket output
This commit is contained in:
@@ -14,6 +14,7 @@ def export(event, fileid, provider, form_data):
|
||||
if ex.identifier == provider:
|
||||
file.filename, file.type, data = ex.render(form_data)
|
||||
file.file.save(cachedfile_name(file, file.filename), ContentFile(data))
|
||||
file.save()
|
||||
|
||||
|
||||
if settings.HAS_CELERY:
|
||||
|
||||
34
src/pretix/base/services/tickets.py
Normal file
34
src/pretix/base/services/tickets.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from datetime import timedelta
|
||||
from django.conf import settings
|
||||
from django.core.files.base import ContentFile
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import CachedFile, cachedfile_name, Order, CachedTicket
|
||||
from pretix.base.signals import register_ticket_outputs
|
||||
|
||||
|
||||
def generate(order, provider):
|
||||
order = Order.objects.current.select_related('event').get(identity=order)
|
||||
ct = CachedTicket.objects.get_or_create(order=order, provider=provider)[0]
|
||||
if not ct.cachedfile:
|
||||
cf = CachedFile()
|
||||
cf.date = now()
|
||||
cf.expires = order.event.date_from + timedelta(days=30)
|
||||
cf.save()
|
||||
ct.cachedfile = cf
|
||||
ct.save()
|
||||
|
||||
responses = register_ticket_outputs.send(order.event)
|
||||
for receiver, response in responses:
|
||||
prov = response(order.event)
|
||||
if prov.identifier == provider:
|
||||
ct.cachedfile.filename, ct.cachedfile.type, data = prov.generate(order)
|
||||
ct.cachedfile.file.save(cachedfile_name(ct.cachedfile, ct.cachedfile.filename), ContentFile(data))
|
||||
ct.cachedfile.save()
|
||||
|
||||
|
||||
if settings.HAS_CELERY:
|
||||
from pretix.celery import app
|
||||
|
||||
generate_task = app.task(generate)
|
||||
generate = lambda *args, **kwargs: generate_task.apply_async(args=args, kwargs=kwargs)
|
||||
Reference in New Issue
Block a user