diff --git a/src/pretix/base/models/vouchers.py b/src/pretix/base/models/vouchers.py index 52ddf138c8..cd6c4bafac 100644 --- a/src/pretix/base/models/vouchers.py +++ b/src/pretix/base/models/vouchers.py @@ -460,7 +460,7 @@ class Voucher(LoggedModel): new_quotas = set( Quota.objects.filter( pk__in=Quota.variations.through.objects.filter( - itemvariation__item=old_instance.item, + itemvariation__item=item, quota__subevent=data.get('subevent'), ).values('quota_id') ) diff --git a/src/pretix/control/forms/vouchers.py b/src/pretix/control/forms/vouchers.py index 96866bb41b..98630dcf51 100644 --- a/src/pretix/control/forms/vouchers.py +++ b/src/pretix/control/forms/vouchers.py @@ -90,8 +90,10 @@ class VoucherForm(I18nModelForm): def __init__(self, *args, **kwargs): instance = kwargs.get('instance') initial = kwargs.get('initial') + self.initial_instance_data = None if instance: - self.initial_instance_data = modelcopy(instance) + if instance.pk: + self.initial_instance_data = modelcopy(instance) try: if instance.variation: initial['itemvar'] = '%d-%d' % (instance.item.pk, instance.variation.pk) @@ -101,8 +103,6 @@ class VoucherForm(I18nModelForm): initial['itemvar'] = 'q-%d' % instance.quota.pk except Item.DoesNotExist: pass - else: - self.initial_instance_data = None super().__init__(*args, **kwargs) if instance.event.has_subevents: @@ -234,8 +234,8 @@ class VoucherForm(I18nModelForm): ) if check_quota: Voucher.clean_quota_check( - data, cnt, self.initial_instance_data, self.instance.event, - self.instance.quota, self.instance.item, self.instance.variation + data, cnt, self.initial_instance_data, + self.instance.event, self.instance.quota, self.instance.item, self.instance.variation ) Voucher.clean_voucher_code(data, self.instance.event, self.instance.pk) if 'seat' in self.fields and data.get('seat'):