diff --git a/legacy/scripts/bootstrap_field_mappings.py b/legacy/scripts/bootstrap_field_mappings.py index c7b047772..7164864d8 100644 --- a/legacy/scripts/bootstrap_field_mappings.py +++ b/legacy/scripts/bootstrap_field_mappings.py @@ -1,44 +1,16 @@ -from inspect import getsourcelines - from collections import defaultdict from difflib import SequenceMatcher -from os.path import dirname - -import yaml +from inspect import getsourcelines from migration_base import * -def print_field_mappings(): - # output to bootstrap field_mappings.yaml - for app in appconfs: - print '\n%s\n%s:' % ('#' * 80, app.name) - for model in app.models.values(): - print '\n %s:' % model.__name__ - new_fields = [f.name for f in model._meta.fields] - legacy_fields = [f.name for f in legacy_app.get_model( - model.__name__)._meta.fields if f.name != 'ind_excluido'] - for pair in zip(new_fields, legacy_fields): - print ' %s : %s' % pair - - def similar(a, b): - return SequenceMatcher(None, a, b).ratio() - - mappings = yaml.load(open(dirname(__file__) + '/field_mappings.yaml', 'r')) +def is_field_line(line): + return not line.strip().startswith('#') and ' = ' in line - different_pairs = defaultdict(list) - for map in mappings.values(): - for name, fields in map.items(): - for a, b in fields.items(): - if a != 'id' and similar(a, b) < .7: - different_pairs[name].append((a, b)) - if different_pairs: - print '\n\n######## Different Pairs #########' - for name, pairs in different_pairs.items(): - print '#', name - for a, b in pairs: - print '# ', a, b +def get_field(line): + return line.split('=')[0].strip() def print_commented_source(model): @@ -46,15 +18,35 @@ def print_commented_source(model): legacy_fields = [f.name for f in legacy_app.get_model(model.__name__)._meta.fields if f.name != 'ind_excluido'] new_to_old = dict(zip(new_fields, legacy_fields)) lines = getsourcelines(model)[0] - - def is_field(line): - return not line.strip().startswith('#') and ' = ' in line - - cols = max(map(len, [line for line in lines if is_field(line)])) + cols = max(map(len, [line for line in lines if is_field_line(line)])) print '\n' for line in lines: - if not is_field(line): + if not is_field_line(line): print line.rstrip() else: - field = line.split('=')[0].strip() - print '%s # %s' % (line.rstrip().ljust(cols), new_to_old[field]) + print '%s # %s' % (line.rstrip().ljust(cols), new_to_old[get_field(line)]) + return new_to_old + + +def check_similarity(): + + def similar(a, b): + return SequenceMatcher(None, a, b).ratio() + + different_pairs = defaultdict(list) + for app in appconfs: + for model in app.models.values(): + lines = getsourcelines(model)[0] + for line in lines: + if is_field_line(line): + new = get_field(line) + old = line.split('#')[-1].strip() + if similar(new, old) < .7: + different_pairs['%s (%s)' % (model.__name__, app.name)].append((new, old)) + + if different_pairs: + print '\n\n######## Different Pairs #########' + for name, pairs in different_pairs.items(): + print name + for a, b in pairs: + print ' ', a, b diff --git a/legacy/scripts/field_mappings.yaml b/legacy/scripts/field_mappings.yaml deleted file mode 100644 index 8ce46be37..000000000 --- a/legacy/scripts/field_mappings.yaml +++ /dev/null @@ -1,646 +0,0 @@ -################################################################################ -# MAPPINGS OF NEW FIELDS TO LEGACY ONES -################################################################################ -parlamentares: - - Legislatura: - id : num_legislatura - data_inicio : dat_inicio - data_fim : dat_fim - data_eleicao : dat_eleicao - - SessaoLegislativa: - id : cod_sessao_leg - legislatura : num_legislatura - numero : num_sessao_leg - tipo : tip_sessao_leg - data_inicio : dat_inicio - data_fim : dat_fim - data_inicio_intervalo : dat_inicio_intervalo - data_fim_intervalo : dat_fim_intervalo - - Coligacao: - id : cod_coligacao - legislatura : num_legislatura - nome_coligacao : nom_coligacao - numero_votos_coligacao : num_votos_coligacao - - Partido: - id : cod_partido - sigla_partido : sgl_partido - nome_partido : nom_partido - data_criacao : dat_criacao - data_extincao : dat_extincao - - ComposicaoColigacao: - id : id - partido : cod_partido - coligacao : cod_coligacao - - Localidade: - id : cod_localidade - nome_localidade : nom_localidade - nome_localidade_pesq : nom_localidade_pesq - tipo_localidade : tip_localidade - sigla_uf : sgl_uf - sigla_regiao : sgl_regiao - - NivelInstrucao: - id : cod_nivel_instrucao - nivel_instrucao : des_nivel_instrucao - - SituacaoMilitar: - id : tip_situacao_militar - descricao_tipo_situacao : des_tipo_situacao - - Parlamentar: - id : cod_parlamentar - nivel_instrucao : cod_nivel_instrucao - situacao_militar : tip_situacao_militar - nome_completo : nom_completo - nome_parlamentar : nom_parlamentar - sexo : sex_parlamentar - data_nascimento : dat_nascimento - numero_cpf : num_cpf - numero_rg : num_rg - numero_tit_eleitor : num_tit_eleitor - cod_casa : cod_casa - numero_gab_parlamentar : num_gab_parlamentar - numero_tel_parlamentar : num_tel_parlamentar - numero_fax_parlamentar : num_fax_parlamentar - endereco_residencial : end_residencial - localidade_resid : cod_localidade_resid - numero_cep_resid : num_cep_resid - numero_tel_resid : num_tel_resid - numero_fax_resid : num_fax_resid - endereco_web : end_web - nome_profissao : nom_profissao - endereco_email : end_email - descricao_local_atuacao : des_local_atuacao - ativo : ind_ativo - txt_biografia : txt_biografia - unid_deliberativa : ind_unid_deliberativa - - TipoDependente: - id : tip_dependente - descricao_tipo_dependente : des_tipo_dependente - - Dependente: - id : cod_dependente - tipo_dependente : tip_dependente - parlamentar : cod_parlamentar - nome_dependente : nom_dependente - sexo : sex_dependente - data_nascimento : dat_nascimento - numero_cpf : num_cpf - numero_rg : num_rg - numero_tit_eleitor : num_tit_eleitor - - Filiacao: - id : id - data_filiacao : dat_filiacao - parlamentar : cod_parlamentar - partido : cod_partido - data_desfiliacao : dat_desfiliacao - - TipoAfastamento: - id : tip_afastamento - descricao_afastamento : des_afastamento - afastamento : ind_afastamento - fim_mandato : ind_fim_mandato - descricao_dispositivo : des_dispositivo - - Mandato: - id : cod_mandato - parlamentar : cod_parlamentar - tipo_afastamento : tip_afastamento - legislatura : num_legislatura - coligacao : cod_coligacao - tipo_causa_fim_mandato : tip_causa_fim_mandato - data_fim_mandato : dat_fim_mandato - numero_votos_recebidos : num_votos_recebidos - data_expedicao_diploma : dat_expedicao_diploma - txt_observacao : txt_observacao - - CargoMesa: - id : cod_cargo - nome : des_cargo - unico : ind_unico - - ComposicaoMesa: - id : id - parlamentar : cod_parlamentar - sessao_legislativa : cod_sessao_leg - cargo : cod_cargo - -################################################################################ -comissoes: - - TipoComissao: - id : tip_comissao - nome_tipo_comissao : nom_tipo_comissao - sigla_natureza_comissao : sgl_natureza_comissao - sigla_tipo_comissao : sgl_tipo_comissao - descricao_dispositivo_regimental : des_dispositivo_regimental - - Comissao: - id : cod_comissao - tipo_comissao : tip_comissao - nome_comissao : nom_comissao - sigla_comissao : sgl_comissao - data_criacao : dat_criacao - data_extincao : dat_extincao - nome_apelido_temp : nom_apelido_temp - data_instalacao_temp : dat_instalacao_temp - data_final_prevista_temp : dat_final_prevista_temp - data_prorrogada_temp : dat_prorrogada_temp - data_fim_comissao : dat_fim_comissao - nome_secretario : nom_secretario - numero_tel_reuniao : num_tel_reuniao - endereco_secretaria : end_secretaria - numero_tel_secretaria : num_tel_secretaria - numero_fax_secretaria : num_fax_secretaria - descricao_agenda_reuniao : des_agenda_reuniao - local_reuniao : loc_reuniao - txt_finalidade : txt_finalidade - endereco_email : end_email - unid_deliberativa : ind_unid_deliberativa - - PeriodoCompComissao: - id : cod_periodo_comp - data_inicio_periodo : dat_inicio_periodo - data_fim_periodo : dat_fim_periodo - - CargoComissao: - id : cod_cargo - nome : des_cargo - unico : ind_unico - - ComposicaoComissao: - id : cod_comp_comissao - parlamentar : cod_parlamentar - comissao : cod_comissao - periodo_comp : cod_periodo_comp - cargo : cod_cargo - titular : ind_titular - data_designacao : dat_designacao - data_desligamento : dat_desligamento - descricao_motivo_desligamento : des_motivo_desligamento - obs_composicao : obs_composicao - -################################################################################ -sessao: - - TipoSessaoPlenaria: - id : tip_sessao - nome_sessao : nom_sessao - numero_minimo : num_minimo - - SessaoPlenaria: - id : cod_sessao_plen - cod_andamento_sessao : cod_andamento_sessao - tipo : tip_sessao - sessao_leg : cod_sessao_leg - legislatura : num_legislatura - tipo_expediente : tip_expediente - data_inicio_sessao : dat_inicio_sessao - dia_sessao : dia_sessao - hr_inicio_sessao : hr_inicio_sessao - hr_fim_sessao : hr_fim_sessao - numero_sessao_plen : num_sessao_plen - data_fim_sessao : dat_fim_sessao - url_audio : url_audio - url_video : url_video - - ExpedienteMateria: - id : cod_ordem - sessao_plen : cod_sessao_plen - materia : cod_materia - data_ordem : dat_ordem - txt_observacao : txt_observacao - numero_ordem : num_ordem - txt_resultado : txt_resultado - tipo_votacao : tip_votacao - - TipoExpediente: - id : cod_expediente - nome_expediente : nom_expediente - - ExpedienteSessaoPlenaria: - id : id - sessao_plen : cod_sessao_plen - expediente : cod_expediente - txt_expediente : txt_expediente - - MesaSessaoPlenaria: - id : id - cargo : cod_cargo - sessao_leg : cod_sessao_leg - parlamentar : cod_parlamentar - sessao_plen : cod_sessao_plen - - Oradores: - id : id - sessao_plen : cod_sessao_plen - parlamentar : cod_parlamentar - numero_ordem : num_ordem - url_discurso : url_discurso - - OradoresExpediente: - id : id - sessao_plen : cod_sessao_plen - parlamentar : cod_parlamentar - numero_ordem : num_ordem - url_discurso : url_discurso - - OrdemDia: - id : cod_ordem - sessao_plen : cod_sessao_plen - materia : cod_materia - data_ordem : dat_ordem - txt_observacao : txt_observacao - numero_ordem : num_ordem - txt_resultado : txt_resultado - tipo_votacao : tip_votacao - - OrdemDiaPresenca: - id : cod_presenca_ordem_dia - sessao_plen : cod_sessao_plen - parlamentar : cod_parlamentar - data_ordem : dat_ordem - - TipoResultadoVotacao: - id : tip_resultado_votacao - nome_resultado : nom_resultado - - RegistroVotacao: - id : cod_votacao - tipo_resultado_votacao : tip_resultado_votacao - materia : cod_materia - ordem : cod_ordem - numero_votos_sim : num_votos_sim - numero_votos_nao : num_votos_nao - numero_abstencao : num_abstencao - txt_observacao : txt_observacao - - RegistroVotacaoParlamentar: - id : id - votacao : cod_votacao - parlamentar : cod_parlamentar - vot_parlamentar : vot_parlamentar - - SessaoPlenariaPresenca: - id : cod_presenca_sessao - sessao_plen : cod_sessao_plen - parlamentar : cod_parlamentar - data_sessao : dat_sessao - -################################################################################ -materia: - - TipoMateriaLegislativa: - id : tip_materia - sigla_tipo_materia : sgl_tipo_materia - descricao_tipo_materia : des_tipo_materia - num_automatica : ind_num_automatica - quorum_minimo_votacao : quorum_minimo_votacao - - RegimeTramitacao: - id : cod_regime_tramitacao - descricao_regime_tramitacao : des_regime_tramitacao - - Origem: - id : cod_origem - sigla_origem : sgl_origem - nome_origem : nom_origem - - MateriaLegislativa: - id : cod_materia - tipo_id_basica : tip_id_basica - numero_protocolo : num_protocolo - numero_ident_basica : num_ident_basica - ano_ident_basica : ano_ident_basica - data_apresentacao : dat_apresentacao - tipo_apresentacao : tip_apresentacao - regime_tramitacao : cod_regime_tramitacao - data_publicacao : dat_publicacao - tipo_origem_externa : tip_origem_externa - numero_origem_externa : num_origem_externa - ano_origem_externa : ano_origem_externa - data_origem_externa : dat_origem_externa - local_origem_externa : cod_local_origem_externa - nome_apelido : nom_apelido - numero_dias_prazo : num_dias_prazo - data_fim_prazo : dat_fim_prazo - indicador_tramitacao : ind_tramitacao - polemica : ind_polemica - descricao_objeto : des_objeto - complementar : ind_complementar - txt_ementa : txt_ementa - txt_indexacao : txt_indexacao - txt_observacao : txt_observacao - txt_resultado : txt_resultado - - AcompMateria: - id : cod_cadastro - materia : cod_materia - endereco_email : end_email - txt_hash : txt_hash - - Anexada: - id : id - materia_principal : cod_materia_principal - materia_anexada : cod_materia_anexada - data_anexacao : dat_anexacao - data_desanexacao : dat_desanexacao - - AssuntoMateria: - id : cod_assunto - descricao_assunto : des_assunto - descricao_dispositivo : des_dispositivo - - TipoAutor: - id : tip_autor - descricao_tipo_autor : des_tipo_autor - - Autor: - id : cod_autor - partido : cod_partido - comissao : cod_comissao - parlamentar : cod_parlamentar - tipo : tip_autor - nome_autor : nom_autor - descricao_cargo : des_cargo - col_username : col_username - - Autoria: - id : id - autor : cod_autor - materia : cod_materia - primeiro_autor : ind_primeiro_autor - - DespachoInicial: - id : id - materia : cod_materia - numero_ordem : num_ordem - comissao : cod_comissao - - TipoDocumento: - id : tip_documento - descricao_tipo_documento : des_tipo_documento - - DocumentoAcessorio: - id : cod_documento - materia : cod_materia - tipo : tip_documento - nome_documento : nom_documento - data_documento : dat_documento - nome_autor_documento : nom_autor_documento - txt_ementa : txt_ementa - txt_indexacao : txt_indexacao - - MateriaAssunto: - id : id - assunto : cod_assunto - materia : cod_materia - - Numeracao: - id : id - materia : cod_materia - numero_ordem : num_ordem - tipo_materia : tip_materia - numero_materia : num_materia - ano_materia : ano_materia - data_materia : dat_materia - - Orgao: - id : cod_orgao - nome_orgao : nom_orgao - sigla_orgao : sgl_orgao - unid_deliberativa : ind_unid_deliberativa - endereco_orgao : end_orgao - numero_tel_orgao : num_tel_orgao - - TipoFimRelatoria: - id : tip_fim_relatoria - descricao_fim_relatoria : des_fim_relatoria - - Relatoria: - id : cod_relatoria - materia : cod_materia - parlamentar : cod_parlamentar - tipo_fim_relatoria : tip_fim_relatoria - comissao : cod_comissao - data_desig_relator : dat_desig_relator - data_destit_relator : dat_destit_relator - - Parecer: - id : id - relatoria : cod_relatoria - materia : cod_materia - tipo_conclusao : tip_conclusao - tipo_apresentacao : tip_apresentacao - txt_parecer : txt_parecer - - TipoProposicao: - id : tip_proposicao - descricao_tipo_proposicao : des_tipo_proposicao - mat_ou_doc : ind_mat_ou_doc - tipo_mat_ou_doc : tip_mat_ou_doc - nome_modelo : nom_modelo - - Proposicao: - id : cod_proposicao - materia : cod_materia - autor : cod_autor - tipo : tip_proposicao - data_envio : dat_envio - data_recebimento : dat_recebimento - txt_descricao : txt_descricao - cod_mat_ou_doc : cod_mat_ou_doc - data_devolucao : dat_devolucao - txt_justif_devolucao : txt_justif_devolucao - numero_proposicao : num_proposicao - - StatusTramitacao: - id : cod_status - sigla_status : sgl_status - descricao_status : des_status - fim_tramitacao : ind_fim_tramitacao - retorno_tramitacao : ind_retorno_tramitacao - - UnidadeTramitacao: - id : cod_unid_tramitacao - comissao : cod_comissao - orgao : cod_orgao - parlamentar : cod_parlamentar - - Tramitacao: - id : cod_tramitacao - status : cod_status - materia : cod_materia - data_tramitacao : dat_tramitacao - unid_tram_local : cod_unid_tram_local - data_encaminha : dat_encaminha - unid_tram_dest : cod_unid_tram_dest - ult_tramitacao : ind_ult_tramitacao - urgencia : ind_urgencia - sigla_turno : sgl_turno - txt_tramitacao : txt_tramitacao - data_fim_prazo : dat_fim_prazo - -################################################################################ -norma: - - AssuntoNorma: - id : cod_assunto - descricao_assunto : des_assunto - descricao_estendida : des_estendida - - TipoNormaJuridica: - id : tip_norma - voc_lexml : voc_lexml - sigla_tipo_norma : sgl_tipo_norma - descricao_tipo_norma : des_tipo_norma - - NormaJuridica: - id : cod_norma - tipo : tip_norma - materia : cod_materia - numero_norma : num_norma - ano_norma : ano_norma - tipo_esfera_federacao : tip_esfera_federacao - data_norma : dat_norma - data_publicacao : dat_publicacao - descricao_veiculo_publicacao : des_veiculo_publicacao - numero_pag_inicio_publ : num_pag_inicio_publ - numero_pag_fim_publ : num_pag_fim_publ - txt_ementa : txt_ementa - txt_indexacao : txt_indexacao - txt_observacao : txt_observacao - complemento : ind_complemento - assunto : cod_assunto - data_vigencia : dat_vigencia - timestamp : timestamp - - LegislacaoCitada: - id : id - materia : cod_materia - norma : cod_norma - descricao_disposicoes : des_disposicoes - descricao_parte : des_parte - descricao_livro : des_livro - descricao_titulo : des_titulo - descricao_capitulo : des_capitulo - descricao_secao : des_secao - descricao_subsecao : des_subsecao - descricao_artigo : des_artigo - descricao_paragrafo : des_paragrafo - descricao_inciso : des_inciso - descricao_alinea : des_alinea - descricao_item : des_item - - VinculoNormaJuridica: - id : cod_vinculo - norma_referente : cod_norma_referente - norma_referida : cod_norma_referida - tipo_vinculo : tip_vinculo - -################################################################################ -lexml: - - LexmlRegistroProvedor: - id : cod_provedor - id_provedor : id_provedor - nome_provedor : nom_provedor - sigla_provedor : sgl_provedor - adm_email : adm_email - nome_responsavel : nom_responsavel - tipo : tipo - id_responsavel : id_responsavel - xml_provedor : xml_provedor - - LexmlRegistroPublicador: - id : cod_publicador - id_publicador : id_publicador - nome_publicador : nom_publicador - adm_email : adm_email - sigla : sigla - nome_responsavel : nom_responsavel - tipo : tipo - id_responsavel : id_responsavel - -################################################################################ -protocoloadm: - - TipoDocumentoAdministrativo: - id : tip_documento - sigla_tipo_documento : sgl_tipo_documento - descricao_tipo_documento : des_tipo_documento - - DocumentoAdministrativo: - id : cod_documento - tipo : tip_documento - numero_documento : num_documento - ano_documento : ano_documento - data_documento : dat_documento - numero_protocolo : num_protocolo - txt_interessado : txt_interessado - autor : cod_autor - numero_dias_prazo : num_dias_prazo - data_fim_prazo : dat_fim_prazo - tramitacao : ind_tramitacao - txt_assunto : txt_assunto - txt_observacao : txt_observacao - - DocumentoAcessorioAdministrativo: - id : cod_documento_acessorio - documento : cod_documento - tipo : tip_documento - nome_documento : nom_documento - nome_arquivo : nom_arquivo - data_documento : dat_documento - nome_autor_documento : nom_autor_documento - txt_assunto : txt_assunto - txt_indexacao : txt_indexacao - - Protocolo: - id : cod_protocolo - numero_protocolo : num_protocolo - ano_protocolo : ano_protocolo - data_protocolo : dat_protocolo - hora_protocolo : hor_protocolo - data_timestamp : dat_timestamp - tipo_protocolo : tip_protocolo - tipo_processo : tip_processo - txt_interessado : txt_interessado - autor : cod_autor - txt_assunto_ementa : txt_assunto_ementa - tipo_documento : tip_documento - tipo_materia : tip_materia - numero_paginas : num_paginas - txt_observacao : txt_observacao - anulado : ind_anulado - txt_user_anulacao : txt_user_anulacao - txt_ip_anulacao : txt_ip_anulacao - txt_just_anulacao : txt_just_anulacao - timestamp_anulacao : timestamp_anulacao - - StatusTramitacaoAdministrativo: - id : cod_status - sigla_status : sgl_status - descricao_status : des_status - fim_tramitacao : ind_fim_tramitacao - retorno_tramitacao : ind_retorno_tramitacao - - TramitacaoAdministrativo: - id : cod_tramitacao - documento : cod_documento - data_tramitacao : dat_tramitacao - cod_unid_tram_local : cod_unid_tram_local - data_encaminha : dat_encaminha - cod_unid_tram_dest : cod_unid_tram_dest - status : cod_status - ult_tramitacao : ind_ult_tramitacao - txt_tramitacao : txt_tramitacao - data_fim_prazo : dat_fim_prazo