Allow to exclude items from ticket generation explicitly

This commit is contained in:
Raphael Michel
2019-02-01 16:48:14 +01:00
parent f77b551aa6
commit 2aa246b3d5
16 changed files with 119 additions and 78 deletions

View File

@@ -287,6 +287,10 @@ class Item(LoggedModel):
),
default=False
)
generate_tickets = models.NullBooleanField(
verbose_name=_("Generate tickets"),
blank=True, null=True,
)
position = models.IntegerField(
default=0
)

View File

@@ -689,9 +689,7 @@ class Order(LockModel, LoggedModel):
@property
def positions_with_tickets(self):
for op in self.positions.all():
if op.addon_to_id and not self.event.settings.ticket_download_addons:
continue
if not op.item.admission and not self.event.settings.ticket_download_nonadm:
if not op.generate_ticket:
continue
yield op
@@ -1579,6 +1577,15 @@ class OrderPosition(AbstractPosition):
def sort_key(self):
return self.addon_to.positionid if self.addon_to else self.positionid, self.addon_to_id or 0
@property
def generate_ticket(self):
if self.item.generate_tickets is not None:
return self.item.generate_tickets
return (
(self.order.event.settings.ticket_download_addons or not self.addon_to_id) and
(self.event.settings.ticket_download_nonadm or self.item.admission)
)
@classmethod
def transform_cart_positions(cls, cp: List, order) -> list:
from . import Voucher