From 428faeb7565e6dcc10918b07a27dabcadce43bd2 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 7 Aug 2017 10:33:22 +0200 Subject: [PATCH] Add a minimal length for voucher codes --- src/pretix/base/models/vouchers.py | 2 ++ src/tests/control/test_vouchers.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/pretix/base/models/vouchers.py b/src/pretix/base/models/vouchers.py index 1ce7d2e17b..8aeeae66a0 100644 --- a/src/pretix/base/models/vouchers.py +++ b/src/pretix/base/models/vouchers.py @@ -2,6 +2,7 @@ from decimal import Decimal from django.conf import settings from django.core.exceptions import ValidationError +from django.core.validators import MinLengthValidator from django.db import models from django.utils.crypto import get_random_string from django.utils.timezone import now @@ -92,6 +93,7 @@ class Voucher(LoggedModel): verbose_name=_("Voucher code"), max_length=255, default=generate_code, db_index=True, + validators=[MinLengthValidator(5)] ) max_usages = models.PositiveIntegerField( verbose_name=_("Maximum usages"), diff --git a/src/tests/control/test_vouchers.py b/src/tests/control/test_vouchers.py index 7740efbc73..89b07d474b 100644 --- a/src/tests/control/test_vouchers.py +++ b/src/tests/control/test_vouchers.py @@ -205,6 +205,12 @@ class VoucherFormTest(SoupTest): v = Voucher.objects.latest('pk') assert v.block_quota + def test_create_short_code(self): + self._create_voucher({ + 'itemvar': '%d-%d' % (self.shirt.pk, self.shirt_red.pk), + 'code': 'ABC' + }, expected_failure=True) + def test_create_blocking_variation_voucher_quota_full(self): self.quota_shirts.size = 0 self.quota_shirts.save()