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. 11
      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 '
'é 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()

11
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()

11
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
# <repo.working_dir> 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)))

6
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):
"""
o arquivo <dir_repo>/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)

Loading…
Cancel
Save