def clean(self, value): """ Check if given CC number is valid and one of the card types we accept """ non_decimal = re.compile(r'\D+') value = non_decimal.sub('', value.strip()) if value and not bankcards.luhn(value): raise forms.ValidationError( _("Please enter a valid credit card number.")) if hasattr(self, 'accepted_cards'): card_type = bankcards.bankcard_type(value) if card_type not in self.accepted_cards: raise forms.ValidationError( _("%s cards are not accepted." % card_type)) return super(BankcardNumberField, self).clean(value)
def test_invalid_numbers(self): for number in self.invalid_numbers: self.assertFalse(bankcards.luhn(number))
def test_valid_numbers(self): for number in self.valid_numbers: self.assertTrue(bankcards.luhn(number))
def is_not_valid(n): assert bankcards.luhn(n) is False
def is_valid(n): assert bankcards.luhn(n) is True