|
@ -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,21 +1731,23 @@ 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 |
|
|
print("Gerando backup do banco... ", end="", flush=True) |
|
|
if gera_backup: |
|
|
arq_backup = DIR_REPO.child("{}.backup".format(NOME_BANCO_LEGADO)) |
|
|
print("Gerando backup do banco... ", end="", flush=True) |
|
|
arq_backup.remove() |
|
|
arq_backup = DIR_REPO.child("{}.backup".format(NOME_BANCO_LEGADO)) |
|
|
backup_cmd = """ |
|
|
arq_backup.remove() |
|
|
pg_dump --host localhost --port 5432 --username postgres --no-password |
|
|
backup_cmd = f""" |
|
|
--format custom --blobs --verbose --file {} {}""".format( |
|
|
pg_dump --host localhost --port 5432 --username postgres |
|
|
arq_backup, NOME_BANCO_LEGADO |
|
|
--no-password --format custom --blobs --verbose --file |
|
|
) |
|
|
{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 |
|
|
REPO.git.add([dir_dados.name]) |
|
|
if versiona: |
|
|
REPO.git.add([arq_backup.name]) |
|
|
REPO.git.add([dir_dados.name]) |
|
|
if "master" not in REPO.heads or REPO.index.diff("HEAD"): |
|
|
if gera_backup: |
|
|
# se de fato existe mudança |
|
|
REPO.git.add([arq_backup.name]) |
|
|
REPO.index.commit(f"Grava marco (em {nome_dir})") |
|
|
if "master" not in REPO.heads or REPO.index.diff("HEAD"): |
|
|
REPO.git.execute("git tag -f".split() + [TAG_MARCO]) |
|
|
# se de fato existe mudança |
|
|
|
|
|
REPO.index.commit(f"Grava marco (em {nome_dir})") |
|
|
|
|
|
REPO.git.execute("git tag -f".split() + [TAG_MARCO]) |
|
|