Browse Source

Script de migração atualizado.

0.2
Guilherme Gondim 15 years ago
parent
commit
4aab9740df
  1. 203
      etc/migracao/migra.py

203
etc/migracao/migra.py

@ -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 "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" > 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 Coloque os arquivos no diretório deste script e execute ``./migra.py`` para
fazer a migração. fazer a migração.
@ -24,6 +24,7 @@ from sigi import settings
setup_environ(settings) setup_environ(settings)
import csv import csv
from datetime import datetime
from sigi.apps.casas.models import * from sigi.apps.casas.models import *
from sigi.apps.contatos.models import * from sigi.apps.contatos.models import *
from sigi.apps.convenios.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.') 'manual.')
def migra_assembleias(filename): def migra_assembleias(filename):
""" TODO: CNPJ """
# identificação das colunas nos arquivo CSV # identificação das colunas nos arquivo CSV
UF_COL = 5 UF_COL = 5
NOME_COL = 8 NOME_COL = 8
@ -53,7 +53,7 @@ def migra_assembleias(filename):
FONE_PREFEITURA = 35 FONE_PREFEITURA = 35
PRESIDENTE_COL = 38 PRESIDENTE_COL = 38
EMAIL_PRESIDENTE_COL = 42 EMAIL_PRESIDENTE_COL = 42
REPRESENTANTE_COL = 83 REPRESENTANTE_COL = 86
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next() header = reader.next()
@ -71,7 +71,7 @@ def migra_assembleias(filename):
observacoes=line[OBS_COL], observacoes=line[OBS_COL],
) )
if line[UF_COL] == 'DF': if line[UF_COL] == 'DF':
casa.tipo = 'CD' casa.tipo = 'CT'
casa.save() casa.save()
if line[FONE_1_COL]: if line[FONE_1_COL]:
@ -111,22 +111,22 @@ def migra_assembleias(filename):
def migra_casas(filename): def migra_casas(filename):
""" TODO: CNPJ """
# identificação das colunas no arquivo CSV # identificação das colunas no arquivo CSV
COD_IBGE_COL = 1 COD_IBGE_COL = 1
COD_TSE_COL = 2
NOME_COL = 8 NOME_COL = 8
ENDERECO_COL = 39 ENDERECO_COL = 40
CEP_COL = 40 CEP_COL = 41
EMAIL_COL = 41 EMAIL_COL = 42
PAGINA_COL = 43 PAGINA_COL = 44
OBS_COL = 37 OBS_COL = 38
FONE_1_COL = 32 FONE_1_COL = 33
FONE_2_COL = 33 FONE_2_COL = 34
FAX_COL = 34 FAX_COL = 35
FONE_PREFEITURA = 35 FONE_PREFEITURA = 36
PRESIDENTE_COL = 38 PRESIDENTE_COL = 39
EMAIL_PRESIDENTE_COL = 42 EMAIL_PRESIDENTE_COL = 43
REPRESENTANTE_COL = 83 REPRESENTANTE_COL = 85
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next() header = reader.next()
@ -142,10 +142,9 @@ def migra_casas(filename):
except ValueError: except ValueError:
print ERROR_MSG_1 % (filename, linenum) print ERROR_MSG_1 % (filename, linenum)
continue continue
casa = CasaLegislativa( casa = CasaLegislativa(
municipio=municipio, municipio=municipio,
nome=line[NOME_COL], nome='Câmara Municipal de ' + line[NOME_COL],
tipo='CM', tipo='CM',
logradouro=line[ENDERECO_COL], logradouro=line[ENDERECO_COL],
cep=line[CEP_COL], cep=line[CEP_COL],
@ -194,127 +193,45 @@ def migra_casas(filename):
) )
presidente.save() presidente.save()
def migra_equipamentos(filename): def migra_cnpj(filename):
UF_COL = 3 # identificação das colunas no arquivo CSV
NOME_CASA_COL = 4 COD_TSE_COL = 0
N_IMPRESSORA_COL = 51 COD_CNPJ1_COL = 3
N_NOVADATA_COL = 48 COD_CNPJ2_COL = 4
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
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next() header = reader.next()
linenum = 1 linenum = 1
for line in reader: for line in reader:
linenum += 1 linenum += 1
try: try:
casa = CasaLegislativa.objects.get(nome=line[NOME_CASA_COL]]) casa = CasaLegislativa.objects.get(municipio__codigo_tse=line[COD_TSE_COL])
except CasaLegislativa.DoesNotExist: except CasaLegislativa.DoesNotExist:
print ERROR_MSG_1 % (filename, linenum) print ERROR_MSG_1 % (filename, linenum)
continue continue
except ValueError:
fornecedor = Fornecedor.objects.get(nome__iexact="desconhecido") print ERROR_MSG_1 % (filename, linenum)
continue
if line[N_IMPRESSORA_COL]: casa.cnpj = line[COD_CNPJ1_COL] if not 'BRANCO' in line[COD_CNPJ1_COL] else line[COD_CNPJ2_COL]
impressora = Equipamento.objects.get(id=2) casa.save()
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()
def migra_convenios(filename): 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 # identificação das colunas no arquivo CSV
STATUS_COL = 8 COD_IBGE_COL = 1
NUM_PROCESSO_SF_COL = 39 NUM_PROCESSO_SF_COL = 25
DATA_ADESAO_COL = 1 DATA_ADESAO_COL = 10
DATA_TERMO_ACEITE_COL = 40 DATA_TERMO_ACEITE_COL = 21
DATA_RETORNO_ASSINATURA = 43 DATA_RETORNO_ASSINATURA = 28
DATA_PUB_DIARIO = 37 DATA_PUB_DIARIO = 30
DATA_DEV_VIA_CONV_CM = 32 DATA_DEV_VIA_CONV_CM = 32
DATA_POSTAGEM_CORREIO = 33 DATA_POSTAGEM_CORREIO = 26
RECEBEU_ESTACAO = 34
RECEBIDOS_COMO_PREVISTO = 35
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next() header = reader.next()
@ -322,13 +239,41 @@ def migra_convenios(filename):
for line in reader: for line in reader:
linenum += 1 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__': if __name__ == '__main__':
print "<iniciando migração de equipamentos>"
migra_equipamentos('equipamentos.csv')
print "<iniciando migração das assembléias legislativas>" print "<iniciando migração das assembléias legislativas>"
migra_assembleias('assembleias.csv') migra_assembleias('assembleias.csv')
print "<iniciando migração das demais casas legislativas>" print "<iniciando migração das demais casas legislativas>"
migra_casas('casas.csv') 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>" print "<iniciando migração dos convênios>"
# migra_convenios('casas.csv') migra_convenios('casas.csv')

Loading…
Cancel
Save