summaryrefslogtreecommitdiff
path: root/payments/fields.py
diff options
context:
space:
mode:
authorAdam Bogdal <adam@bogdal.pl>2013-05-08 19:41:49 +0200
committerAdam Bogdal <adam@bogdal.pl>2013-05-08 19:41:49 +0200
commitc90b0b424838344a5a7ae0ac90e16cc1e93b53da (patch)
tree5f9577adbf76cb37ff2ab6bc383877aee45f4603 /payments/fields.py
parent133b5afaa1d970efefd159b21fe066f7d48b7976 (diff)
downloaddjango-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.py17
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'])