Files
controles/functions/validations.py

34 lines
912 B
Python
Raw Permalink Normal View History

def validar_cpf(cpf):
"""
Valida um CPF seguindo as regras do governo brasileiro.
Retorna True se o CPF é válido, False caso contrário.
"""
# Remove caracteres não numéricos
cpf = ''.join(filter(str.isdigit, cpf))
# Verifica se tem 11 dígitos
if len(cpf) != 11:
return False
# Verifica se todos os dígitos são iguais
if len(set(cpf)) == 1:
return False
# Calcula primeiro dígito verificador
soma = 0
for i in range(9):
soma += int(cpf[i]) * (10 - i)
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
if int(cpf[9]) != digito1:
return False
# Calcula segundo dígito verificador
soma = 0
for i in range(10):
soma += int(cpf[i]) * (11 - i)
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
return int(cpf[10]) == digito2