diff options
author | Adam Bogdal <adam@bogdal.pl> | 2013-05-08 19:41:49 +0200 |
---|---|---|
committer | Adam Bogdal <adam@bogdal.pl> | 2013-05-08 19:41:49 +0200 |
commit | c90b0b424838344a5a7ae0ac90e16cc1e93b53da (patch) | |
tree | 5f9577adbf76cb37ff2ab6bc383877aee45f4603 /payments/fields.py | |
parent | 133b5afaa1d970efefd159b21fe066f7d48b7976 (diff) | |
download | django-payments-taler-c90b0b424838344a5a7ae0ac90e16cc1e93b53da.tar.gz django-payments-taler-c90b0b424838344a5a7ae0ac90e16cc1e93b53da.tar.bz2 django-payments-taler-c90b0b424838344a5a7ae0ac90e16cc1e93b53da.zip |
Add custom field for the ccv
Diffstat (limited to 'payments/fields.py')
-rw-r--r-- | payments/fields.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/payments/fields.py b/payments/fields.py index 69e3f9d..b042923 100644 --- a/payments/fields.py +++ b/payments/fields.py @@ -114,3 +114,20 @@ class CreditCardExpiryField(forms.MultiValueField): day = monthrange(year, month)[1] return date(year, month, day) return None + + +class CreditCardVerificationField(forms.CharField): + + default_error_messages = { + 'invalid': _(u'Enter a valid security number.'), + } + + def __init__(self, *args, **kwargs): + kwargs['max_length'] = kwargs.pop('max_length', 4) + super(CreditCardVerificationField, self).__init__(*args, **kwargs) + + def validate(self, value): + if value in validators.EMPTY_VALUES and self.required: + raise forms.ValidationError(self.error_messages['required']) + if value and not re.match('^[0-9]{3,4}$', value): + raise forms.ValidationError(self.error_messages['invalid']) |