Browse Source

Torna opcionais versionar e gerar backup ao gravar_marco

migracao
Marcio Mazza 6 years ago
parent
commit
24e53f4de2
  1. 4
      sapl/legacy/migracao.py
  2. 81
      sapl/legacy/migracao_dados.py

4
sapl/legacy/migracao.py

@ -94,10 +94,10 @@ def scrap_sde(url, usuario, senha=None):
def tenta_correcao(): def tenta_correcao():
from sapl.legacy.migracao_dados import ocorrencias from sapl.legacy.migracao_dados import ocorrencias
gravar_marco("producao") gravar_marco("producao", versiona=False, gera_backup=False)
migrar_dados() migrar_dados()
assert "fk" not in ocorrencias, "AINDA EXISTEM FKS ORFAS" assert "fk" not in ocorrencias, "AINDA EXISTEM FKS ORFAS"
gravar_marco() gravar_marco(versiona=False, gera_backup=False)
import git import git
sigla = NOME_BANCO_LEGADO[-3:] sigla = NOME_BANCO_LEGADO[-3:]

81
sapl/legacy/migracao_dados.py

@ -33,49 +33,22 @@ from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor
from sapl.comissoes.models import Comissao, Composicao, Participacao, Reuniao from sapl.comissoes.models import Comissao, Composicao, Participacao, Reuniao
from sapl.legacy.models import NormaJuridica as OldNormaJuridica from sapl.legacy.models import NormaJuridica as OldNormaJuridica
from sapl.legacy.models import Numeracao, TipoNumeracaoProtocolo from sapl.legacy.models import Numeracao, TipoNumeracaoProtocolo
from sapl.legacy_migration_settings import ( from sapl.legacy_migration_settings import (DIR_DADOS_MIGRACAO, DIR_REPO,
DIR_DADOS_MIGRACAO, NOME_BANCO_LEGADO, PYTZ_TIMEZONE,
DIR_REPO, SIGLA_CASA)
NOME_BANCO_LEGADO, from sapl.materia.models import (AcompanhamentoMateria, DocumentoAcessorio,
PYTZ_TIMEZONE, MateriaLegislativa, Proposicao,
SIGLA_CASA, StatusTramitacao, TipoDocumento,
) TipoMateriaLegislativa, TipoProposicao,
from sapl.materia.models import ( Tramitacao)
AcompanhamentoMateria, from sapl.norma.models import (AssuntoNorma, NormaJuridica, NormaRelacionada,
DocumentoAcessorio, TipoVinculoNormaJuridica)
MateriaLegislativa, from sapl.parlamentares.models import (Legislatura, Mandato, Parlamentar,
Proposicao, Partido, TipoAfastamento)
StatusTramitacao, from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo,
TipoDocumento, StatusTramitacaoAdministrativo)
TipoMateriaLegislativa, from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, OrdemDia,
TipoProposicao, RegistroVotacao, TipoResultadoVotacao)
Tramitacao,
)
from sapl.norma.models import (
AssuntoNorma,
NormaJuridica,
NormaRelacionada,
TipoVinculoNormaJuridica,
)
from sapl.parlamentares.models import (
Legislatura,
Mandato,
Parlamentar,
Partido,
TipoAfastamento,
)
from sapl.protocoloadm.models import (
DocumentoAdministrativo,
Protocolo,
StatusTramitacaoAdministrativo,
)
from sapl.sessao.models import (
ExpedienteMateria,
ExpedienteSessao,
OrdemDia,
RegistroVotacao,
TipoResultadoVotacao,
)
from sapl.utils import normalize from sapl.utils import normalize
from .scripts.normaliza_dump_mysql import normaliza_dump_mysql from .scripts.normaliza_dump_mysql import normaliza_dump_mysql
@ -1722,7 +1695,9 @@ yaml.add_constructor("!time", time_constructor)
TAG_MARCO = "marco" TAG_MARCO = "marco"
def gravar_marco(nome_dir="dados", pula_se_ja_existe=False): def gravar_marco(
nome_dir="dados", pula_se_ja_existe=False, versiona=True, gera_backup=True
):
"""Grava um dump de todos os dados como arquivos yaml no repo de marco """Grava um dump de todos os dados como arquivos yaml no repo de marco
""" """
# prepara ou localiza repositorio # prepara ou localiza repositorio
@ -1743,11 +1718,11 @@ def gravar_marco(nome_dir="dados", pula_se_ja_existe=False):
] ]
sequences = [] sequences = []
for model in models: for model in models:
info("Gravando marco de [{}]".format(model.__name__)) info(f"Gravando marco de [{model.__name__}]")
dir_model = dir_dados.child(model._meta.app_label, model.__name__) dir_model = dir_dados.child(model._meta.app_label, model.__name__)
dir_model.mkdir(parents=True) dir_model.mkdir(parents=True)
for data in model.objects.all().values(): for data in model.objects.all().values():
nome_arq = Path(dir_model, "{}.yaml".format(data["id"])) nome_arq = Path(dir_model, f"{data['id']}.yaml")
with open(nome_arq, "w") as arq: with open(nome_arq, "w") as arq:
pyaml.dump(data, arq) pyaml.dump(data, arq)
sequences.append(get_sequence_name_and_last_value(model)) sequences.append(get_sequence_name_and_last_value(model))
@ -1756,19 +1731,21 @@ def gravar_marco(nome_dir="dados", pula_se_ja_existe=False):
Path(dir_dados, "sequences.yaml").write_file(pyaml.dump(sequences)) Path(dir_dados, "sequences.yaml").write_file(pyaml.dump(sequences))
# backup do banco # backup do banco
if gera_backup:
print("Gerando backup do banco... ", end="", flush=True) print("Gerando backup do banco... ", end="", flush=True)
arq_backup = DIR_REPO.child("{}.backup".format(NOME_BANCO_LEGADO)) arq_backup = DIR_REPO.child("{}.backup".format(NOME_BANCO_LEGADO))
arq_backup.remove() arq_backup.remove()
backup_cmd = """ backup_cmd = f"""
pg_dump --host localhost --port 5432 --username postgres --no-password pg_dump --host localhost --port 5432 --username postgres
--format custom --blobs --verbose --file {} {}""".format( --no-password --format custom --blobs --verbose --file
arq_backup, NOME_BANCO_LEGADO {arq_backup} {NOME_BANCO_LEGADO}"""
)
subprocess.check_output(backup_cmd.split(), stderr=subprocess.DEVNULL) subprocess.check_output(backup_cmd.split(), stderr=subprocess.DEVNULL)
print("SUCESSO") print("SUCESSO")
# salva mudanças # versiona mudanças
if versiona:
REPO.git.add([dir_dados.name]) REPO.git.add([dir_dados.name])
if gera_backup:
REPO.git.add([arq_backup.name]) REPO.git.add([arq_backup.name])
if "master" not in REPO.heads or REPO.index.diff("HEAD"): if "master" not in REPO.heads or REPO.index.diff("HEAD"):
# se de fato existe mudança # se de fato existe mudança

Loading…
Cancel
Save