From 4aab9740df98742cb79ae04b65e0432f98bb7df4 Mon Sep 17 00:00:00 2001 From: Guilherme Gondim Date: Thu, 17 Dec 2009 20:24:40 +0000 Subject: [PATCH] =?UTF-8?q?Script=20de=20migra=C3=A7=C3=A3o=20atualizado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- etc/migracao/migra.py | 203 +++++++++++++++--------------------------- 1 file changed, 74 insertions(+), 129 deletions(-) diff --git a/etc/migracao/migra.py b/etc/migracao/migra.py index c145767..502aef2 100755 --- a/etc/migracao/migra.py +++ b/etc/migracao/migra.py @@ -9,7 +9,7 @@ Conversão dos dados para CSV:: mdb-export -d "|" -D "%Y-%m-%d" .mdb "Assembléias" > assembleias.csv mdb-export -d "|" -D "%Y-%m-%d" .mdb "municipios" > casas.csv - mdb-export -d "|" -D "%Y-%m-%d" .mdb "municipios_equipamentos" > equipamentos.csv + mdb-export -d "|" -D "%Y-%m-%d" .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 = (' %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 "" - migra_equipamentos('equipamentos.csv') print "" migra_assembleias('assembleias.csv') print "" migra_casas('casas.csv') + print "" + migra_cnpj('cnpj.csv', 'casas.csv') print "" - # migra_convenios('casas.csv') + migra_convenios('casas.csv')