From ccedd589a1596ce575ea3380e93b3045a7765f52 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Sun, 7 Apr 2019 10:36:16 +0200 Subject: [PATCH] =?UTF-8?q?Migra=20usu=C3=A1rios=20e=20documentos=20apenas?= =?UTF-8?q?=20na=201a=20migra=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/migracao.py | 7 ++++--- sapl/legacy/migracao_dados.py | 11 ++++++++--- sapl/legacy/migracao_documentos.py | 11 ++++++++--- sapl/legacy/migracao_usuarios.py | 6 +++++- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/sapl/legacy/migracao.py b/sapl/legacy/migracao.py index e95855bbf..b48a63eb2 100644 --- a/sapl/legacy/migracao.py +++ b/sapl/legacy/migracao.py @@ -26,9 +26,10 @@ def migrar(flush=False, apagar_do_legado=False): 'Antes de migrar ' 'é necessário fazer a exportação de documentos do zope') management.call_command('migrate') - migrar_dados(apagar_do_legado) - migrar_usuarios(REPO.working_dir) - migrar_documentos(REPO) + primeira_migracao = migrar_dados(flush, apagar_do_legado) + print('#' * 100, primeira_migracao) # @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + migrar_usuarios(REPO.working_dir, primeira_migracao) + migrar_documentos(REPO, primeira_migracao) gravar_marco() # compactar_media() diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 0f5df8e97..6b03d653e 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -804,10 +804,10 @@ def fill_vinculo_norma_juridica(): TipoVinculoNormaJuridica.objects.bulk_create(lista_objs) -def fill_dados_basicos(): +def criar_configuracao_inicial(): if AppConf.objects.exists(): # se estamos refazendo a migração não recriamos o appconf - return + return False # Ajusta sequencia numérica de protocolo e cria base.AppConfig if (TipoNumeracaoProtocolo._meta.db_table in TABELAS_LEGADO and TipoNumeracaoProtocolo.objects.exists()): @@ -824,6 +824,7 @@ def fill_dados_basicos(): sequencia_numeracao = 'A' appconf = AppConf(sequencia_numeracao=sequencia_numeracao) appconf.save() + return True def reinicia_sequence(model, id): @@ -920,7 +921,7 @@ def migrar_dados(flush=False, apagar_do_legado=False): if flush: do_flush() - fill_dados_basicos() + primeira_migracao = criar_configuracao_inicial() info('Começando migração: ...') migrar_todos_os_models(apagar_do_legado) @@ -940,6 +941,7 @@ def migrar_dados(flush=False, apagar_do_legado=False): # recria tipos de autor padrão que não foram criados pela migração cria_models_tipo_autor() + return primeira_migracao def move_para_depois_de(lista, movido, referencias): @@ -1464,6 +1466,9 @@ def gravar_marco(): """ # prepara ou localiza repositorio dir_dados = Path(REPO.working_dir, 'dados') + # limpa todo o conteúdo antes + dir_dados.rmtree() + dir_dados.mkdir() # exporta dados como arquivos yaml user_model = get_user_model() diff --git a/sapl/legacy/migracao_documentos.py b/sapl/legacy/migracao_documentos.py index 23c6f05f7..b2a8fe2c4 100644 --- a/sapl/legacy/migracao_documentos.py +++ b/sapl/legacy/migracao_documentos.py @@ -141,6 +141,10 @@ def migrar_docs_por_ids(repo, model): # associa documento ao objeto obj = objetos.get(id) if obj: + if getattr(obj, campo): + # se o campo está preenchido pulamos + # pois talvez tenha sido preenchido em produção + continue destino = upload_to(obj, os.path.basename(origem)) mover_documento(repo, origem, destino) setattr(obj, campo, destino) @@ -155,7 +159,7 @@ def migrar_docs_por_ids(repo, model): print(msg.format(model.__name__, id, origem)) -def migrar_documentos(repo): +def migrar_documentos(repo, primeira_migracao): # aqui supomos que as pastas XSLT e sapl_documentos estão em # com o conteúdo exportado do zope # Os arquivos das pastas serão (git) MOVIDOS para a nova estrutura! @@ -166,7 +170,8 @@ def migrar_documentos(repo): mover_documento(repo, 'XSLT', 'sapl/public/XSLT', ignora_origem_ausente=True) - migrar_propriedades_da_casa(repo) + if primeira_migracao: + migrar_propriedades_da_casa(repo) # garante que o conteúdo das fotos dos parlamentares esteja presente # (necessário para o cropping de imagem) @@ -187,7 +192,7 @@ def migrar_documentos(repo): for file in files] if sobrando: print('\n#### Encerrado ####\n\n' - '{} documentos sobraram sem ser migrados!!!'.format( + '{} documentos sobraram sem ser migrados!!!\n'.format( len(sobrando))) diff --git a/sapl/legacy/migracao_usuarios.py b/sapl/legacy/migracao_usuarios.py index d767343a3..7a5c9ebeb 100644 --- a/sapl/legacy/migracao_usuarios.py +++ b/sapl/legacy/migracao_usuarios.py @@ -45,7 +45,7 @@ def decode_nome(nome): return nome -def migrar_usuarios(dir_repo): +def migrar_usuarios(dir_repo, primeira_migracao): """ Lê o arquivo /usuarios.yaml e importa os usuários nele listados, com senhas e perfis. @@ -69,6 +69,10 @@ def migrar_usuarios(dir_repo): Também podemos assumir que essa é uma tarefa de um administrador """ + if not primeira_migracao: + print('Pulando migração de usuários') + return + ARQUIVO_USUARIOS = Path(dir_repo).child('usuarios.yaml') with open(ARQUIVO_USUARIOS, 'r') as f: usuarios = yaml.load(f)