forked from juliarizza/certificate_generator
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathglobal_functions.py
106 lines (89 loc) · 2.46 KB
/
global_functions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# -*- coding: utf-8 -*-
from PyQt4 import QtGui
import re
titleFont = QtGui.QFont()
titleFont.setBold(True)
titleFont.setPixelSize(20)
## CODE FROM: http://wiki.python.org.br/VerificadorDeCpfCnpjSimples ##
def validar_cpf(cpf):
"""
Valida CPFs, retornando apenas a string de números válida.
# CPFs errados
>>> validar_cpf('abcdefghijk')
False
>>> validar_cpf('123')
False
>>> validar_cpf('')
False
>>> validar_cpf(None)
False
>>> validar_cpf('12345678900')
False
# CPFs corretos
>>> validar_cpf('95524361503')
'95524361503'
>>> validar_cpf('955.243.615-03')
'95524361503'
>>> validar_cpf(' 955 243 615 03 ')
'95524361503'
"""
cpf = ''.join(re.findall('\d', str(cpf)))
if (not cpf) or (len(cpf) < 11):
return False
# Pega apenas os 9 primeiros dígitos do CPF e gera os 2 dígitos que faltam
inteiros = map(int, cpf)
novo = inteiros[:9]
while len(novo) < 11:
r = sum([(len(novo)+1-i)*v for i,v in enumerate(novo)]) % 11
if r > 1:
f = 11 - r
else:
f = 0
novo.append(f)
# Se o número gerado coincidir com o número original, é válido
if novo == inteiros:
return cpf
return False
def validar_cnpj(cnpj):
"""
Valida CNPJs, retornando apenas a string de números válida.
# CNPJs errados
>>> validar_cnpj('abcdefghijklmn')
False
>>> validar_cnpj('123')
False
>>> validar_cnpj('')
False
>>> validar_cnpj(None)
False
>>> validar_cnpj('12345678901234')
False
>>> validar_cnpj('11222333000100')
False
# CNPJs corretos
>>> validar_cnpj('11222333000181')
'11222333000181'
>>> validar_cnpj('11.222.333/0001-81')
'11222333000181'
>>> validar_cnpj(' 11 222 333 0001 81 ')
'11222333000181'
"""
cnpj = ''.join(re.findall('\d', str(cnpj)))
if (not cnpj) or (len(cnpj) < 14):
return False
# Pega apenas os 12 primeiros dígitos do CNPJ e gera os 2 dígitos que faltam
inteiros = map(int, cnpj)
novo = inteiros[:12]
prod = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
while len(novo) < 14:
r = sum([x*y for (x, y) in zip(novo, prod)]) % 11
if r > 1:
f = 11 - r
else:
f = 0
novo.append(f)
prod.insert(0, 6)
# Se o número gerado coincidir com o número original, é válido
if novo == inteiros:
return cnpj
return False