Browse Source

Migra usuários e documentos apenas na 1a migração

migracao
Marcio Mazza 6 years ago
parent
commit
ccedd589a1
  1. 7
      sapl/legacy/migracao.py
  2. 11
      sapl/legacy/migracao_dados.py
  3. 9
      sapl/legacy/migracao_documentos.py
  4. 6
      sapl/legacy/migracao_usuarios.py

7
sapl/legacy/migracao.py

@ -26,9 +26,10 @@ def migrar(flush=False, apagar_do_legado=False):
'Antes de migrar ' 'Antes de migrar '
'é necessário fazer a exportação de documentos do zope') 'é necessário fazer a exportação de documentos do zope')
management.call_command('migrate') management.call_command('migrate')
migrar_dados(apagar_do_legado) primeira_migracao = migrar_dados(flush, apagar_do_legado)
migrar_usuarios(REPO.working_dir) print('#' * 100, primeira_migracao) # @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
migrar_documentos(REPO) migrar_usuarios(REPO.working_dir, primeira_migracao)
migrar_documentos(REPO, primeira_migracao)
gravar_marco() gravar_marco()
# compactar_media() # compactar_media()

11
sapl/legacy/migracao_dados.py

@ -804,10 +804,10 @@ def fill_vinculo_norma_juridica():
TipoVinculoNormaJuridica.objects.bulk_create(lista_objs) TipoVinculoNormaJuridica.objects.bulk_create(lista_objs)
def fill_dados_basicos(): def criar_configuracao_inicial():
if AppConf.objects.exists(): if AppConf.objects.exists():
# se estamos refazendo a migração não recriamos o appconf # se estamos refazendo a migração não recriamos o appconf
return return False
# Ajusta sequencia numérica de protocolo e cria base.AppConfig # Ajusta sequencia numérica de protocolo e cria base.AppConfig
if (TipoNumeracaoProtocolo._meta.db_table in TABELAS_LEGADO if (TipoNumeracaoProtocolo._meta.db_table in TABELAS_LEGADO
and TipoNumeracaoProtocolo.objects.exists()): and TipoNumeracaoProtocolo.objects.exists()):
@ -824,6 +824,7 @@ def fill_dados_basicos():
sequencia_numeracao = 'A' sequencia_numeracao = 'A'
appconf = AppConf(sequencia_numeracao=sequencia_numeracao) appconf = AppConf(sequencia_numeracao=sequencia_numeracao)
appconf.save() appconf.save()
return True
def reinicia_sequence(model, id): def reinicia_sequence(model, id):
@ -920,7 +921,7 @@ def migrar_dados(flush=False, apagar_do_legado=False):
if flush: if flush:
do_flush() do_flush()
fill_dados_basicos() primeira_migracao = criar_configuracao_inicial()
info('Começando migração: ...') info('Começando migração: ...')
migrar_todos_os_models(apagar_do_legado) 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 # recria tipos de autor padrão que não foram criados pela migração
cria_models_tipo_autor() cria_models_tipo_autor()
return primeira_migracao
def move_para_depois_de(lista, movido, referencias): def move_para_depois_de(lista, movido, referencias):
@ -1464,6 +1466,9 @@ def gravar_marco():
""" """
# prepara ou localiza repositorio # prepara ou localiza repositorio
dir_dados = Path(REPO.working_dir, 'dados') dir_dados = Path(REPO.working_dir, 'dados')
# limpa todo o conteúdo antes
dir_dados.rmtree()
dir_dados.mkdir()
# exporta dados como arquivos yaml # exporta dados como arquivos yaml
user_model = get_user_model() user_model = get_user_model()

9
sapl/legacy/migracao_documentos.py

@ -141,6 +141,10 @@ def migrar_docs_por_ids(repo, model):
# associa documento ao objeto # associa documento ao objeto
obj = objetos.get(id) obj = objetos.get(id)
if obj: 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)) destino = upload_to(obj, os.path.basename(origem))
mover_documento(repo, origem, destino) mover_documento(repo, origem, destino)
setattr(obj, campo, destino) setattr(obj, campo, destino)
@ -155,7 +159,7 @@ def migrar_docs_por_ids(repo, model):
print(msg.format(model.__name__, id, origem)) 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 # aqui supomos que as pastas XSLT e sapl_documentos estão em
# <repo.working_dir> com o conteúdo exportado do zope # <repo.working_dir> com o conteúdo exportado do zope
# Os arquivos das pastas serão (git) MOVIDOS para a nova estrutura! # Os arquivos das pastas serão (git) MOVIDOS para a nova estrutura!
@ -166,6 +170,7 @@ def migrar_documentos(repo):
mover_documento(repo, 'XSLT', 'sapl/public/XSLT', mover_documento(repo, 'XSLT', 'sapl/public/XSLT',
ignora_origem_ausente=True) ignora_origem_ausente=True)
if primeira_migracao:
migrar_propriedades_da_casa(repo) migrar_propriedades_da_casa(repo)
# garante que o conteúdo das fotos dos parlamentares esteja presente # garante que o conteúdo das fotos dos parlamentares esteja presente
@ -187,7 +192,7 @@ def migrar_documentos(repo):
for file in files] for file in files]
if sobrando: if sobrando:
print('\n#### Encerrado ####\n\n' print('\n#### Encerrado ####\n\n'
'{} documentos sobraram sem ser migrados!!!'.format( '{} documentos sobraram sem ser migrados!!!\n'.format(
len(sobrando))) len(sobrando)))

6
sapl/legacy/migracao_usuarios.py

@ -45,7 +45,7 @@ def decode_nome(nome):
return nome return nome
def migrar_usuarios(dir_repo): def migrar_usuarios(dir_repo, primeira_migracao):
""" """
o arquivo <dir_repo>/usuarios.yaml e importa os usuários nele listados, o arquivo <dir_repo>/usuarios.yaml e importa os usuários nele listados,
com senhas e perfis. com senhas e perfis.
@ -69,6 +69,10 @@ def migrar_usuarios(dir_repo):
Também podemos assumir que essa é uma tarefa de um administrador 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') ARQUIVO_USUARIOS = Path(dir_repo).child('usuarios.yaml')
with open(ARQUIVO_USUARIOS, 'r') as f: with open(ARQUIVO_USUARIOS, 'r') as f:
usuarios = yaml.load(f) usuarios = yaml.load(f)

Loading…
Cancel
Save