Example #1
0
    def test_encode_name(self):

        data = [{
            'input': '',
            'result': 'XXX',
        }, {
            'input': 'Alessandro',
            'result': 'LSN',
        }, {
            'input': 'Dario',
            'result': 'DRA',
        }, {
            'input': 'Fabio',
            'result': 'FBA',
        }, {
            'input': 'Giovanni',
            'result': 'GNN',
        }, {
            'input': 'Hu',
            'result': 'HUX',
        }, {
            'input': 'Maria',
            'result': 'MRA',
        }, {
            'input': 'Michele',
            'result': 'MHL',
        }]

        for obj in data:
            # with self.subTest(obj=obj):
            self.assertEqual(codicefiscale.encode_name(obj['input']),
                             obj['result'])
Example #2
0
    def clean_fiscalNumber(self):
        surname_name_cf = self.cleaned_data.get('fiscalNumber').upper()[0:6]
        try:
            encode_name_surname = codicefiscale.encode_surname(self.cleaned_data.get('familyName')) + \
                                  codicefiscale.encode_name(self.cleaned_data.get('name'))

            if surname_name_cf == encode_name_surname:
                return
            else:
                raise ValidationError("Il codice fiscale non corrisponde con i dati inseriti")
        except Exception as e:
            LOG.warning("Warning: {}".format(str(e)), extra=set_client_ip())
            raise ValidationError("Il codice fiscale non corrisponde con i dati inseriti")
Example #3
0
def verify_cf(request):
    """
    Verifica che il codice fiscale sia conforme ai dati inseriti nel form, altrimenti mostra quali dati sono errati
    :request: request contenente i dati del cittadino
    :return: dic con True/False
    """
    try:
        fiscal_code = request.POST.get('fiscalNumber').upper()
        belfiore_code = request.POST.get('placeOfBirth') if request.POST.get('placeOfBirth') else request.POST.get(
            'nationOfBirth')
        verify_fiscal_code = {
            'familyName': fiscal_code[0:3] == codicefiscale.encode_surname(request.POST.get('familyName')),
            'name': fiscal_code[3:6] == codicefiscale.encode_name(request.POST.get('name')),
            'gender': codicefiscale.decode(fiscal_code)['sex'] == request.POST.get('gender'),
            'dateOfBirth': codicefiscale.decode(fiscal_code)['birthdate'] == datetime.datetime.strptime(
                request.POST.get('dateOfBirth'), '%d/%m/%Y'),
            'belfiore_code': codicefiscale.decode(fiscal_code)['raw']['birthplace'] == belfiore_code
        }

        if belfiore_code == 'Z998':
            verify_fiscal_code['status_code'] = StatusCode.BAD_REQUEST.value
            return verify_fiscal_code

        if all(value is True for value in verify_fiscal_code.values()):
            verify_fiscal_code['status_code'] = StatusCode.OK.value
        else:
            verify_fiscal_code['status_code'] = StatusCode.ERROR.value


    except Exception as e:
        LOG.error("Exception: {}".format(str(e)), extra=set_client_ip())
        verify_fiscal_code = {
            'status_code': StatusCode.EXC.value,
        }

    return verify_fiscal_code