From 43f86e3d796f96b5d39d023d19037d364a144d4c Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Fri, 13 Jul 2018 15:03:45 -0300 Subject: [PATCH] Torna apagar legado opcional --- .../management/commands/migracao_25_31.py | 11 +++++++- sapl/legacy/migracao.py | 4 +-- sapl/legacy/migracao_dados.py | 25 ++++++++++--------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/sapl/legacy/management/commands/migracao_25_31.py b/sapl/legacy/management/commands/migracao_25_31.py index e3864ad0f..ba9a80224 100644 --- a/sapl/legacy/management/commands/migracao_25_31.py +++ b/sapl/legacy/management/commands/migracao_25_31.py @@ -7,5 +7,14 @@ class Command(BaseCommand): help = 'Migração de dados do SAPL 2.5 para o SAPL 3.1' + def add_arguments(self, parser): + parser.add_argument( + '-a', + action='store_true', + default=False, + dest='apagar_do_legado', + help='Apagar entradas migradas do legado', + ) + def handle(self, *args, **options): - migrar(interativo=False) + migrar(apagar_do_legado=options['apagar_do_legado']) diff --git a/sapl/legacy/migracao.py b/sapl/legacy/migracao.py index dd54a103e..c4c183b84 100644 --- a/sapl/legacy/migracao.py +++ b/sapl/legacy/migracao.py @@ -18,7 +18,7 @@ def adornar_msg(msg): return '\n{1}\n{0}\n{1}'.format(msg, '#' * len(msg)) -def migrar(interativo=False): +def migrar(apagar_do_legado=False): if TAG_MARCO in REPO.tags: info('A migração já está feita.') return @@ -26,7 +26,7 @@ def migrar(interativo=False): 'Antes de migrar ' 'é necessário fazer a exportação de documentos do zope') management.call_command('migrate') - migrar_dados() + migrar_dados(apagar_do_legado) migrar_usuarios(REPO.working_dir) migrar_documentos(REPO) gravar_marco() diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 45b3c9338..75007d821 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -804,7 +804,7 @@ def roda_comando_shell(cmd): assert res == 0, 'O comando falhou: {}'.format(cmd) -def migrar_dados(): +def migrar_dados(apagar_do_legado=False): try: ocorrencias.clear() ocorrencias.default_factory = list @@ -836,7 +836,7 @@ def migrar_dados(): fill_vinculo_norma_juridica() fill_dados_basicos() info('Começando migração: ...') - migrar_todos_os_models() + migrar_todos_os_models(apagar_do_legado) except Exception as e: ocorrencias['traceback'] = str(traceback.format_exc()) raise e @@ -886,12 +886,12 @@ def get_models_a_migrar(): return models -def migrar_todos_os_models(): +def migrar_todos_os_models(apagar_do_legado): for model in get_models_a_migrar(): - migrar_model(model) + migrar_model(model, apagar_do_legado) -def migrar_model(model): +def migrar_model(model, apagar_do_legado): print('Migrando %s...' % model.__name__) model_legado, tabela_legado, campos_pk_legado = \ @@ -945,12 +945,13 @@ def migrar_model(model): novos.append(new) # guarda para salvar # acumula deleção do registro no legado - sql_delete_legado += 'delete from {} where {};\n'.format( - tabela_legado, - ' and '.join( - '{} = "{}"'.format(campo, - getattr(old, campo)) - for campo in campos_pk_legado)) + if apagar_do_legado: + sql_delete_legado += 'delete from {} where {};\n'.format( + tabela_legado, + ' and '.join( + '{} = "{}"'.format(campo, + getattr(old, campo)) + for campo in campos_pk_legado)) # salva novos registros with reversion.create_revision(): @@ -969,7 +970,7 @@ def migrar_model(model): reinicia_sequence(model, ultima_pk_legado + 1) # apaga registros migrados do legado - if sql_delete_legado: + if apagar_do_legado and sql_delete_legado: exec_legado(sql_delete_legado)