Commit d9db1d33 authored by Claude Paroz's avatar Claude Paroz
Browse files

Added supplementary check for CUIT number of ar localflavor

Thanks Kevin Schaul for the initial patch.
parent 1d298236
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ class ARCUITField(RegexField):
    default_error_messages = {
        'invalid': _('Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'),
        'checksum': _("Invalid CUIT."),
        'legal_type': _('Invalid legal type. Type must be 27, 20, 23 or 30.'),
    }

    def __init__(self, max_length=None, min_length=None, *args, **kwargs):
@@ -96,6 +97,8 @@ class ARCUITField(RegexField):
        if value in EMPTY_VALUES:
            return ''
        value, cd = self._canon(value)
        if not value[:2] in ['27', '20', '23', '30']:
            raise ValidationError(self.error_messages['legal_type'])
        if self._calc_cd(value) != cd:
            raise ValidationError(self.error_messages['checksum'])
        return self._format(value, cd)
+5 −3
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ class ARLocalFlavorTests(SimpleTestCase):
    def test_ARCUITField(self):
        error_format = ['Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
        error_invalid = ['Invalid CUIT.']
        error_legal_type = [u'Invalid legal type. Type must be 27, 20, 23 or 30.']
        valid = {
            '20-10123456-9': '20-10123456-9',
            '20-10123456-9': '20-10123456-9',
@@ -97,5 +98,6 @@ class ARLocalFlavorTests(SimpleTestCase):
            '20-10123456-5': error_invalid,
            '27-10345678-1': error_invalid,
            '27-10345678-1': error_invalid,
            '11211111110': error_legal_type,
        }
        self.assertFieldOutput(ARCUITField, valid, invalid)