Fix #141 -- Caching improvements for ticket outputs

This commit is contained in:
Raphael Michel
2016-11-29 15:52:16 +01:00
parent a8be2d5f24
commit fdbe71ff63
5 changed files with 22 additions and 4 deletions

View File

@@ -8,6 +8,8 @@ import pytz
from django.conf import settings
from django.db import models
from django.db.models import F
from django.db.models.signals import post_delete
from django.dispatch import receiver
from django.utils.crypto import get_random_string
from django.utils.timezone import make_aware, now
from django.utils.translation import ugettext_lazy as _
@@ -563,3 +565,9 @@ class CachedTicket(models.Model):
order_position = models.ForeignKey(OrderPosition, on_delete=models.CASCADE)
cachedfile = models.ForeignKey(CachedFile, on_delete=models.CASCADE, null=True)
provider = models.CharField(max_length=255)
@receiver(post_delete, sender=CachedTicket)
def cached_file_delete(sender, instance, **kwargs):
if instance.cachedfile:
instance.cachedfile.delete()

View File

@@ -21,7 +21,7 @@ from pretix.base.models import (
CartPosition, Event, Item, ItemVariation, Order, OrderPosition, Quota,
User, Voucher,
)
from pretix.base.models.orders import InvoiceAddress
from pretix.base.models.orders import CachedTicket, InvoiceAddress
from pretix.base.payment import BasePaymentProvider
from pretix.base.services.async import ProfiledTask
from pretix.base.services.invoices import (
@@ -579,9 +579,13 @@ class OrderChangeManager:
self._perform_operations()
self._recalculate_total_and_payment_fee()
self._reissue_invoice()
self._clear_tickets_cache()
self._check_paid_to_free()
self._notify_user()
def _clear_tickets_cache(self):
CachedTicket.objects.filter(order_position__order=self.order).delete()
def _get_payment_provider(self):
responses = register_payment_providers.send(self.order.event)
pprov = None