Browse Source

Merge branch 'migracao' into 3.1.x

pull/2075/head
Marcio Mazza 7 years ago
parent
commit
6e018975c5
  1. 38
      sapl/legacy/migracao_dados.py
  2. 9
      sapl/legacy/scripts/exporta_zope/exporta_zope.py

38
sapl/legacy/migracao_dados.py

@ -513,9 +513,10 @@ def checa_registros_votacao_ambiguos_e_remove_nao_usados():
# interrompe migração se houver registros ambíguos # interrompe migração se houver registros ambíguos
ambiguos = ordem.intersection(expediente) ambiguos = ordem.intersection(expediente)
assert not ambiguos, '''Existe(m) RegistroVotacao ambíguo(s): {} if ambiguos:
Corrija os dados originais antes de migrar!'''.format( warn('registro_votacao_ambiguos',
ambiguos) 'Existe(m) RegistroVotacao ambíguo(s): {cod_votacao}',
{'cod_votacao': ambiguos})
# exclui registros não usados (zumbis) # exclui registros não usados (zumbis)
todos = set(primeira_coluna(exec_legado( todos = set(primeira_coluna(exec_legado(
@ -1109,6 +1110,18 @@ def adjust_protocolo_antes_salvar(new, old):
{'cod_protocolo': old.cod_protocolo}) {'cod_protocolo': old.cod_protocolo})
ARQUIVO_COMO_RESOLVER_REGISTRO_VOTACAO_AMBIGUO = \
'como_resolver_registro_votacao_ambiguo.yaml'
def get_como_resolver_registro_votacao_ambiguo():
path = DIR_REPO.child(ARQUIVO_COMO_RESOLVER_REGISTRO_VOTACAO_AMBIGUO)
if path.exists():
return yaml.load(path.read_file())
else:
return {}
def adjust_registrovotacao_antes_salvar(new, old): def adjust_registrovotacao_antes_salvar(new, old):
ordem_dia = OrdemDia.objects.filter( ordem_dia = OrdemDia.objects.filter(
pk=old.cod_ordem, materia=old.cod_materia) pk=old.cod_ordem, materia=old.cod_materia)
@ -1119,6 +1132,19 @@ def adjust_registrovotacao_antes_salvar(new, old):
new.ordem = ordem_dia[0] new.ordem = ordem_dia[0]
if not ordem_dia and expediente_materia: if not ordem_dia and expediente_materia:
new.expediente = expediente_materia[0] new.expediente = expediente_materia[0]
# registro de votação ambíguo
if ordem_dia and expediente_materia:
como_resolver = get_como_resolver_registro_votacao_ambiguo()
campo = como_resolver[new.id]
if campo.startswith('ordem'):
new.ordem = ordem_dia[0]
elif campo.startswith('expediente'):
new.expediente = expediente_materia[0]
else:
raise Exception('''
Registro de Votação ambíguo: {}
Resolva criando o arquivo {}'''.format(
new.id, ARQUIVO_COMO_RESOLVER_REGISTRO_VOTACAO_AMBIGUO))
def adjust_tipoafastamento(new, old): def adjust_tipoafastamento(new, old):
@ -1195,8 +1221,10 @@ def adjust_normajuridica_depois_salvar():
for model in [AssuntoNorma, NormaJuridica]] for model in [AssuntoNorma, NormaJuridica]]
def filtra_assuntos_migrados(cod_assunto): def filtra_assuntos_migrados(cod_assunto):
if not cod_assunto:
return []
cods = {int(a) for a in cod_assunto.split(',') if a} cods = {int(a) for a in cod_assunto.split(',') if a}
return cods.intersection(assuntos_migrados) return sorted(cods.intersection(assuntos_migrados))
norma_para_assuntos = [ norma_para_assuntos = [
(norma, filtra_assuntos_migrados(cod_assunto)) (norma, filtra_assuntos_migrados(cod_assunto))
@ -1206,7 +1234,7 @@ def adjust_normajuridica_depois_salvar():
ligacao.objects.bulk_create( ligacao.objects.bulk_create(
ligacao(normajuridica_id=norma, assuntonorma_id=assunto) ligacao(normajuridica_id=norma, assuntonorma_id=assunto)
for norma, assuntos in norma_para_assuntos for norma, assuntos in norma_para_assuntos
for assunto in sorted(assuntos)) for assunto in assuntos)
def adjust_autor(new, old): def adjust_autor(new, old):

9
sapl/legacy/scripts/exporta_zope/exporta_zope.py

@ -395,13 +395,18 @@ def ajusta_extensao(fullname, conteudo):
base, extensao = os.path.splitext(fullname) base, extensao = os.path.splitext(fullname)
if extensao not in ['.xsl', '.xslt', '.yaml', '.css']: if extensao not in ['.xsl', '.xslt', '.yaml', '.css']:
extensao = guess_extension(fullname, conteudo) extensao = guess_extension(fullname, conteudo)
return base + extensao return base + extensao, extensao
def build_salvar(repo): def build_salvar(repo):
def salvar(fullname, conteudo): def salvar(fullname, conteudo):
fullname = ajusta_extensao(fullname, conteudo) fullname, extensao = ajusta_extensao(fullname, conteudo)
# ajusta caminhos XSLT p conteúdos relacionados ao SDE
if extensao in ['.xsl', '.xslt', '.xml']:
conteudo = conteudo.replace('"XSLT/HTML', '"/XSLT/HTML')
if exists(fullname): if exists(fullname):
# destrava arquivo pré-existente (o conteúdo mudou) # destrava arquivo pré-existente (o conteúdo mudou)
repo_execute(repo, 'git annex unlock', fullname) repo_execute(repo, 'git annex unlock', fullname)

Loading…
Cancel
Save