Fix #617 -- Purge ticket cache after ticket settings/layout changes

This commit is contained in:
Raphael Michel
2017-09-04 21:09:08 +02:00
parent d3a76e9f2f
commit 0ddda4a668
2 changed files with 17 additions and 3 deletions

View File

@@ -25,8 +25,8 @@ from i18nfield.strings import LazyI18nString
from pytz import timezone
from pretix.base.models import (
CachedTicket, Event, Item, ItemVariation, LogEntry, Order, OrderPosition,
RequiredAction, TaxRule, Voucher,
CachedCombinedTicket, CachedTicket, Event, Item, ItemVariation, LogEntry,
Order, OrderPosition, RequiredAction, TaxRule, Voucher,
)
from pretix.base.models.event import EventMetaValue
from pretix.base.services import tickets
@@ -634,6 +634,9 @@ class TicketSettings(EventPermissionRequiredMixin, FormView):
CachedTicket.objects.filter(
order_position__order__event=self.request.event, provider=provider.identifier
).delete()
CachedCombinedTicket.objects.filter(
order__event=self.request.event, provider=provider.identifier
).delete()
else:
success = False
form = self.get_form(self.get_form_class())
@@ -645,6 +648,7 @@ class TicketSettings(EventPermissionRequiredMixin, FormView):
k: form.cleaned_data.get(k) for k in form.changed_data
}
)
messages.success(self.request, _('Your changes have been saved.'))
return redirect(self.get_success_url())
else:

View File

@@ -16,7 +16,9 @@ from django.utils.translation import ugettext as _
from django.views.generic import TemplateView
from pretix.base.i18n import language
from pretix.base.models import CachedFile, InvoiceAddress
from pretix.base.models import (
CachedCombinedTicket, CachedFile, CachedTicket, InvoiceAddress,
)
from pretix.control.permissions import EventPermissionRequiredMixin
from pretix.control.views import ChartContainingView
from pretix.helpers.database import rolledback_transaction
@@ -128,6 +130,14 @@ class EditorView(EventPermissionRequiredMixin, ChartContainingView, TemplateView
request.event.settings.set('ticketoutput_pdf_background', 'file://' + newname)
request.event.settings.set('ticketoutput_pdf_layout', request.POST.get("data"))
CachedTicket.objects.filter(
order_position__order__event=self.request.event, provider='pdf'
).delete()
CachedCombinedTicket.objects.filter(
order__event=self.request.event, provider='pdf'
).delete()
return JsonResponse({'status': 'ok'})
return HttpResponseBadRequest()