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.
1 ## Script (Python) "valida_CPF"
2 ##bind container=container
3 ##bind context=context
4 ##bind namespace=
5 ##bind script=script
6 ##bind subpath=traverse_subpath
7 ##parameters=cpf
8 ##title=
9 ##
10 #Baseado no Código de Pedro Werneck
11 #http://www.pythonbrasil.com.br/moin.cgi/VerificadorDeCpf
12 #Adaptado para o Zope por Fernando Correa e Rodrigo Reis
13
14 msg = "CPF/CNPJ incorreto!"
15
16 cpf_invalidos = [11*str(i) for i in range(10)]
17 if cpf in cpf_invalidos:
18 return False
19
20 if not cpf.isdigit():
21 """ Verifica se o CPF contem pontos e hifens """
22 cpf = cpf.replace(".", "")
23 cpf = cpf.replace("-", "")
24
25
26 if len(cpf) < 11:
27 """ Verifica se o CPF tem 11 digitos """
28
29 if len(cpf) > 11:
30 """ CPF tem que ter 11 digitos """
31
32 selfcpf = [int(x) for x in cpf]
33
34 cpf = selfcpf[:9]
35
36 while len(cpf) < 11:
37
38 r = sum([(len(cpf)+1-i)*v for i,v in [(x,cpf[x]) for x in range(len(cpf))]]) % 11
39
40 if r > 1:
41 f = 11 - r
42 else:
43 f = 0
44 cpf.append(f)
45
46
47 return bool(cpf == selfcpf)