Voucher form validation order

This commit is contained in:
Raphael Michel
2017-06-12 12:50:06 +02:00
parent a02823ca38
commit 4ad0fe5653

View File

@@ -15,7 +15,8 @@ class VoucherForm(I18nModelForm):
label=_("Product"), label=_("Product"),
help_text=_( help_text=_(
"This product is added to the user's cart if the voucher is redeemed." "This product is added to the user's cart if the voucher is redeemed."
) ),
required=True
) )
class Meta: class Meta:
@@ -61,13 +62,16 @@ class VoucherForm(I18nModelForm):
def clean(self): def clean(self):
data = super().clean() data = super().clean()
if not self._errors:
itemid = quotaid = None itemid = quotaid = None
if self.data['itemvar'].startswith('q-'): iv = self.data.get('itemvar', '')
quotaid = self.data['itemvar'][2:] if iv.startswith('q-'):
elif '-' in self.data['itemvar']: quotaid = iv[2:]
itemid, varid = self.data['itemvar'].split('-') elif '-' in iv:
itemid, varid = iv.split('-')
else: else:
itemid, varid = self.data['itemvar'], None itemid, varid = iv, None
if itemid: if itemid:
self.instance.item = Item.objects.get(pk=itemid, event=self.instance.event) self.instance.item = Item.objects.get(pk=itemid, event=self.instance.event)
@@ -84,7 +88,7 @@ class VoucherForm(I18nModelForm):
self.instance.item = None self.instance.item = None
self.instance.variation = None self.instance.variation = None
if data['max_usages'] < self.instance.redeemed: if data.get('max_usages', 0) < self.instance.redeemed:
raise ValidationError( raise ValidationError(
_('This voucher has already been redeemed %(redeemed)s times. You cannot reduce the maximum number of ' _('This voucher has already been redeemed %(redeemed)s times. You cannot reduce the maximum number of '
'usages below this number.'), 'usages below this number.'),