|
|
@ -9,7 +9,7 @@ Conversão dos dados para CSV:: |
|
|
|
|
|
|
|
mdb-export -d "|" -D "%Y-%m-%d" <database>.mdb "Assembléias" > assembleias.csv |
|
|
|
mdb-export -d "|" -D "%Y-%m-%d" <database>.mdb "municipios" > casas.csv |
|
|
|
mdb-export -d "|" -D "%Y-%m-%d" <database>.mdb "municipios_equipamentos" > equipamentos.csv |
|
|
|
mdb-export -d "|" -D "%Y-%m-%d" <database>.mdb "CNPJ DAS CM" > cnpj.csv |
|
|
|
|
|
|
|
Coloque os arquivos no diretório deste script e execute ``./migra.py`` para |
|
|
|
fazer a migração. |
|
|
@ -24,6 +24,7 @@ from sigi import settings |
|
|
|
setup_environ(settings) |
|
|
|
|
|
|
|
import csv |
|
|
|
from datetime import datetime |
|
|
|
from sigi.apps.casas.models import * |
|
|
|
from sigi.apps.contatos.models import * |
|
|
|
from sigi.apps.convenios.models import * |
|
|
@ -38,7 +39,6 @@ ERROR_MSG_1 = ('<ERRO> %s[%s]: erro ao inserir item, será necessário inserçã |
|
|
|
'manual.') |
|
|
|
|
|
|
|
def migra_assembleias(filename): |
|
|
|
""" TODO: CNPJ """ |
|
|
|
# identificação das colunas nos arquivo CSV |
|
|
|
UF_COL = 5 |
|
|
|
NOME_COL = 8 |
|
|
@ -53,7 +53,7 @@ def migra_assembleias(filename): |
|
|
|
FONE_PREFEITURA = 35 |
|
|
|
PRESIDENTE_COL = 38 |
|
|
|
EMAIL_PRESIDENTE_COL = 42 |
|
|
|
REPRESENTANTE_COL = 83 |
|
|
|
REPRESENTANTE_COL = 86 |
|
|
|
|
|
|
|
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) |
|
|
|
header = reader.next() |
|
|
@ -71,7 +71,7 @@ def migra_assembleias(filename): |
|
|
|
observacoes=line[OBS_COL], |
|
|
|
) |
|
|
|
if line[UF_COL] == 'DF': |
|
|
|
casa.tipo = 'CD' |
|
|
|
casa.tipo = 'CT' |
|
|
|
casa.save() |
|
|
|
|
|
|
|
if line[FONE_1_COL]: |
|
|
@ -111,22 +111,22 @@ def migra_assembleias(filename): |
|
|
|
|
|
|
|
|
|
|
|
def migra_casas(filename): |
|
|
|
""" TODO: CNPJ """ |
|
|
|
# identificação das colunas no arquivo CSV |
|
|
|
COD_IBGE_COL = 1 |
|
|
|
COD_TSE_COL = 2 |
|
|
|
NOME_COL = 8 |
|
|
|
ENDERECO_COL = 39 |
|
|
|
CEP_COL = 40 |
|
|
|
EMAIL_COL = 41 |
|
|
|
PAGINA_COL = 43 |
|
|
|
OBS_COL = 37 |
|
|
|
FONE_1_COL = 32 |
|
|
|
FONE_2_COL = 33 |
|
|
|
FAX_COL = 34 |
|
|
|
FONE_PREFEITURA = 35 |
|
|
|
PRESIDENTE_COL = 38 |
|
|
|
EMAIL_PRESIDENTE_COL = 42 |
|
|
|
REPRESENTANTE_COL = 83 |
|
|
|
ENDERECO_COL = 40 |
|
|
|
CEP_COL = 41 |
|
|
|
EMAIL_COL = 42 |
|
|
|
PAGINA_COL = 44 |
|
|
|
OBS_COL = 38 |
|
|
|
FONE_1_COL = 33 |
|
|
|
FONE_2_COL = 34 |
|
|
|
FAX_COL = 35 |
|
|
|
FONE_PREFEITURA = 36 |
|
|
|
PRESIDENTE_COL = 39 |
|
|
|
EMAIL_PRESIDENTE_COL = 43 |
|
|
|
REPRESENTANTE_COL = 85 |
|
|
|
|
|
|
|
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) |
|
|
|
header = reader.next() |
|
|
@ -142,10 +142,9 @@ def migra_casas(filename): |
|
|
|
except ValueError: |
|
|
|
print ERROR_MSG_1 % (filename, linenum) |
|
|
|
continue |
|
|
|
|
|
|
|
casa = CasaLegislativa( |
|
|
|
municipio=municipio, |
|
|
|
nome=line[NOME_COL], |
|
|
|
nome='Câmara Municipal de ' + line[NOME_COL], |
|
|
|
tipo='CM', |
|
|
|
logradouro=line[ENDERECO_COL], |
|
|
|
cep=line[CEP_COL], |
|
|
@ -194,127 +193,45 @@ def migra_casas(filename): |
|
|
|
) |
|
|
|
presidente.save() |
|
|
|
|
|
|
|
def migra_equipamentos(filename): |
|
|
|
UF_COL = 3 |
|
|
|
NOME_CASA_COL = 4 |
|
|
|
N_IMPRESSORA_COL = 51 |
|
|
|
N_NOVADATA_COL = 48 |
|
|
|
N_MICROCOMP_COL = 47 |
|
|
|
N_MONITOR_COL = 52 |
|
|
|
N_MODEM_COL = 53 |
|
|
|
N_WEBCAM_COL = 55 |
|
|
|
N_ROUTER_COL = 54 |
|
|
|
N_ESTABILIZADOR = 56 |
|
|
|
QUEM_RECEBEU_COL = 57 |
|
|
|
def migra_cnpj(filename): |
|
|
|
# identificação das colunas no arquivo CSV |
|
|
|
COD_TSE_COL = 0 |
|
|
|
COD_CNPJ1_COL = 3 |
|
|
|
COD_CNPJ2_COL = 4 |
|
|
|
|
|
|
|
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) |
|
|
|
header = reader.next() |
|
|
|
linenum = 1 |
|
|
|
|
|
|
|
for line in reader: |
|
|
|
linenum += 1 |
|
|
|
|
|
|
|
try: |
|
|
|
casa = CasaLegislativa.objects.get(nome=line[NOME_CASA_COL]]) |
|
|
|
casa = CasaLegislativa.objects.get(municipio__codigo_tse=line[COD_TSE_COL]) |
|
|
|
except CasaLegislativa.DoesNotExist: |
|
|
|
print ERROR_MSG_1 % (filename, linenum) |
|
|
|
continue |
|
|
|
|
|
|
|
fornecedor = Fornecedor.objects.get(nome__iexact="desconhecido") |
|
|
|
|
|
|
|
if line[N_IMPRESSORA_COL]: |
|
|
|
impressora = Equipamento.objects.get(id=2) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=impressora, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL] |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
|
|
|
|
if line[N_NOVADATA_COL]: |
|
|
|
novadata = Equipamento.objects.get(id=1) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=novadata, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL], |
|
|
|
observacoes=('Número de nota de equipamento NOVADATA importado ', |
|
|
|
'do SIGI antigo.') |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
|
|
|
|
if line[N_MICROCOMP_COL]: |
|
|
|
microcomp = Equipamento.objects.get(id=3) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=microcomp, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL] |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
|
|
|
|
if line[N_MONITOR_COL]: |
|
|
|
monitor = Equipamento.objects.get(id=6) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=monitor, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL] |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
|
|
|
|
if line[N_MODEM_COL]: |
|
|
|
modem = Equipamento.objects.get(id=5) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=modem, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL] |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
|
|
|
|
if line[N_WEBCAM_COL]: |
|
|
|
webcam = Equipamento.objects.get(id=9) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=webcam, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL] |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
|
|
|
|
if line[N_ROUTER_COL]: |
|
|
|
roteador = Equipamento.objects.get(id=8) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=roteador, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL] |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
|
|
|
|
if line[N_ESTABILIZADOR]: |
|
|
|
estabilizador = Equipamento.objects.get(id=4) |
|
|
|
bem = Bem( |
|
|
|
casa_legislativa=casa, |
|
|
|
fornecedor=fornecedor, |
|
|
|
equipamento=estabilizador, |
|
|
|
recebido_por=line[QUEM_RECEBEU_COL] |
|
|
|
) |
|
|
|
bem.save() |
|
|
|
except ValueError: |
|
|
|
print ERROR_MSG_1 % (filename, linenum) |
|
|
|
continue |
|
|
|
casa.cnpj = line[COD_CNPJ1_COL] if not 'BRANCO' in line[COD_CNPJ1_COL] else line[COD_CNPJ2_COL] |
|
|
|
casa.save() |
|
|
|
|
|
|
|
def migra_convenios(filename): |
|
|
|
def get_datetime_obj(data): |
|
|
|
ldata = data.split('-') |
|
|
|
if len(ldata) != 3: |
|
|
|
return None |
|
|
|
return datetime(int(ldata[0]), int(ldata[1]), int(ldata[2])) |
|
|
|
|
|
|
|
# identificação das colunas no arquivo CSV |
|
|
|
STATUS_COL = 8 |
|
|
|
NUM_PROCESSO_SF_COL = 39 |
|
|
|
DATA_ADESAO_COL = 1 |
|
|
|
DATA_TERMO_ACEITE_COL = 40 |
|
|
|
DATA_RETORNO_ASSINATURA = 43 |
|
|
|
DATA_PUB_DIARIO = 37 |
|
|
|
COD_IBGE_COL = 1 |
|
|
|
NUM_PROCESSO_SF_COL = 25 |
|
|
|
DATA_ADESAO_COL = 10 |
|
|
|
DATA_TERMO_ACEITE_COL = 21 |
|
|
|
DATA_RETORNO_ASSINATURA = 28 |
|
|
|
DATA_PUB_DIARIO = 30 |
|
|
|
DATA_DEV_VIA_CONV_CM = 32 |
|
|
|
DATA_POSTAGEM_CORREIO = 33 |
|
|
|
RECEBEU_ESTACAO = 34 |
|
|
|
RECEBIDOS_COMO_PREVISTO = 35 |
|
|
|
DATA_POSTAGEM_CORREIO = 26 |
|
|
|
|
|
|
|
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) |
|
|
|
header = reader.next() |
|
|
@ -322,13 +239,41 @@ def migra_convenios(filename): |
|
|
|
for line in reader: |
|
|
|
linenum += 1 |
|
|
|
|
|
|
|
try: |
|
|
|
casa = CasaLegislativa.objects.get(municipio__codigo_ibge=line[COD_IBGE_COL]) |
|
|
|
except CasaLegislativa.DoesNotExist: |
|
|
|
print ERROR_MSG_1 % (filename, linenum) |
|
|
|
continue |
|
|
|
except CasaLegislativa.MultipleObjectsReturned: |
|
|
|
print ERROR_MSG_1 % (filename, linenum) |
|
|
|
continue |
|
|
|
except ValueError: |
|
|
|
print ERROR_MSG_1 % (filename, linenum) |
|
|
|
continue |
|
|
|
|
|
|
|
convenio = Convenio( |
|
|
|
casa_legislativa=casa, |
|
|
|
num_processo_sf=line[NUM_PROCESSO_SF_COL], |
|
|
|
data_adesao=get_datetime_obj(line[DATA_ADESAO_COL]), |
|
|
|
data_retorno_assinatura=get_datetime_obj(line[DATA_TERMO_ACEITE_COL]), |
|
|
|
data_pub_diario=get_datetime_obj(line[DATA_RETORNO_ASSINATURA]), |
|
|
|
data_termo_aceite=get_datetime_obj(line[DATA_PUB_DIARIO]), |
|
|
|
data_devolucao_via=get_datetime_obj(line[DATA_DEV_VIA_CONV_CM]), |
|
|
|
data_postagem_correio=get_datetime_obj(line[DATA_POSTAGEM_CORREIO]), |
|
|
|
) |
|
|
|
try: |
|
|
|
convenio.save() |
|
|
|
except: |
|
|
|
print ERROR_MSG_0 % (filename, linenum) |
|
|
|
continue |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
print "<iniciando migração de equipamentos>" |
|
|
|
migra_equipamentos('equipamentos.csv') |
|
|
|
print "<iniciando migração das assembléias legislativas>" |
|
|
|
migra_assembleias('assembleias.csv') |
|
|
|
print "<iniciando migração das demais casas legislativas>" |
|
|
|
migra_casas('casas.csv') |
|
|
|
print "<iniciando migração dos CNPJ das casas>" |
|
|
|
migra_cnpj('cnpj.csv', 'casas.csv') |
|
|
|
print "<iniciando migração dos convênios>" |
|
|
|
# migra_convenios('casas.csv') |
|
|
|
migra_convenios('casas.csv') |
|
|
|