associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "VerificadorDeCpfparaZope"

Diferenças entre as versões de 3 e 4
Revisão 3e 2005-07-07 20:11:54
Tamanho: 1104
Editor: FernandoNeto
Comentário: Meu nome estava errado (Fernado Correia.....fabiorizzo, não sabe meu nome mano?)
Revisão 4e 2005-07-07 20:18:53
Tamanho: 1112
Editor: RodrigoReis
Comentário: Tirei o map...
Deleções são marcadas assim. Adições são marcadas assim.
Linha 33: Linha 33:
selfcpf = map(int, cpf) selfcpf = [int(x) for x in cpf]

Conversão do Código de Pedro Werneck em http://www.pythonbrasil.com.br/moin.cgi/VerificadorDeCpf .

Este código roda no Zope sem problemas.

## Script (Python) "valida_CPF"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=cpf
##title=
##
#Baseado no Código de Pedro Werneck
#http://www.pythonbrasil.com.br/moin.cgi/VerificadorDeCpf
#Adaptado para o Zope por Fernando Correa e Rodrigo Reis

msg = "CPF/CNPJ incorreto!"

if not cpf.isdigit():
    """ Verifica se o CPF contem pontos e hifens """
    cpf = cpf.replace(".", "")
    cpf = cpf.replace("-", "")


if len(cpf) < 11:
    """ Verifica se o CPF tem 11 digitos """

if len(cpf) > 11:
    """ CPF tem que ter 11 digitos """

selfcpf = [int(x) for x in cpf]

cpf = selfcpf[:9]

while len(cpf) < 11:

    r =  sum([(len(cpf)+1-i)*v for i,v in [(x,cpf[x]) for x in range(len(cpf))]]) % 11
    
    if r > 1:
        f = 11 - r
    else:
        f = 0
    cpf.append(f)
    
       
return bool(cpf == selfcpf)