|
@ -1,4 +1,8 @@ |
|
|
import subprocess |
|
|
import subprocess |
|
|
|
|
|
from getpass import getpass |
|
|
|
|
|
|
|
|
|
|
|
import requests |
|
|
|
|
|
from unipath import Path |
|
|
|
|
|
|
|
|
from sapl.legacy.migracao_dados import (REPO, TAG_MARCO, gravar_marco, info, |
|
|
from sapl.legacy.migracao_dados import (REPO, TAG_MARCO, gravar_marco, info, |
|
|
migrar_dados) |
|
|
migrar_dados) |
|
@ -6,6 +10,7 @@ from sapl.legacy.migracao_documentos import migrar_documentos |
|
|
from sapl.legacy.migracao_usuarios import migrar_usuarios |
|
|
from sapl.legacy.migracao_usuarios import migrar_usuarios |
|
|
from sapl.legacy.scripts.exporta_zope.variaveis_comuns import TAG_ZOPE |
|
|
from sapl.legacy.scripts.exporta_zope.variaveis_comuns import TAG_ZOPE |
|
|
from sapl.legacy_migration_settings import DIR_REPO, NOME_BANCO_LEGADO |
|
|
from sapl.legacy_migration_settings import DIR_REPO, NOME_BANCO_LEGADO |
|
|
|
|
|
from sapl.materia.models import Proposicao |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def adornar_msg(msg): |
|
|
def adornar_msg(msg): |
|
@ -45,3 +50,38 @@ def gerar_pacote(): |
|
|
arq_tar.remove() |
|
|
arq_tar.remove() |
|
|
subprocess.check_output(['tar', 'cfh', arq_tar, '-C', DIR_REPO, 'sapl']) |
|
|
subprocess.check_output(['tar', 'cfh', arq_tar, '-C', DIR_REPO, 'sapl']) |
|
|
print('SUCESSO') |
|
|
print('SUCESSO') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROPOSICAO_UPLOAD_TO = Proposicao._meta.get_field('texto_original').upload_to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def salva_conteudo_do_sde(proposicao, conteudo): |
|
|
|
|
|
caminho_relativo = PROPOSICAO_UPLOAD_TO( |
|
|
|
|
|
proposicao, 'proposicao_sde_{}.xml'.format(proposicao.pk)) |
|
|
|
|
|
caminho_absoluto = Path(REPO.working_dir, caminho_relativo) |
|
|
|
|
|
caminho_absoluto.parent.mkdir(parents=True) |
|
|
|
|
|
with open(caminho_absoluto, 'wb') as arq: |
|
|
|
|
|
arq.write(conteudo) |
|
|
|
|
|
proposicao.texto_original = caminho_relativo |
|
|
|
|
|
proposicao.save() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def scrap_sde(url, usuario, senha=None): |
|
|
|
|
|
if not senha: |
|
|
|
|
|
senha = getpass() |
|
|
|
|
|
|
|
|
|
|
|
# login |
|
|
|
|
|
session = requests.session() |
|
|
|
|
|
res = session.post('{}?retry=1'.format(url), |
|
|
|
|
|
{'__ac_name': usuario, '__ac_password': senha}) |
|
|
|
|
|
assert res.status_code == 200 |
|
|
|
|
|
|
|
|
|
|
|
url_proposicao = '{}/sapl_documentos/proposicao/{}/renderXML?xsl=__default__' # noqa |
|
|
|
|
|
total = Proposicao.objects.count() |
|
|
|
|
|
for num, proposicao in enumerate(Proposicao.objects.all()): |
|
|
|
|
|
pk = proposicao.pk |
|
|
|
|
|
res = session.get(url_proposicao.format(url, pk)) |
|
|
|
|
|
print("pk: {} status: {} (progresso: {:.2%})".format( |
|
|
|
|
|
pk, res.status_code, num / total)) |
|
|
|
|
|
if res.status_code == 200: |
|
|
|
|
|
salva_conteudo_do_sde(proposicao, res.content) |
|
|