diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py index 6ab3cd184..24d244d4e 100644 --- a/sapl/legacy/migration.py +++ b/sapl/legacy/migration.py @@ -28,7 +28,7 @@ from sapl.norma.models import (AssuntoNorma, NormaJuridica, TipoVinculoNormaJuridica, NormaRelacionada) from sapl.parlamentares.models import Parlamentar from sapl.protocoloadm.models import Protocolo, StatusTramitacaoAdministrativo -from sapl.sessao.models import ExpedienteMateria, OrdemDia +from sapl.sessao.models import ExpedienteMateria, OrdemDia, RegistroVotacao from sapl.settings import PROJECT_DIR from sapl.utils import delete_texto, normalize, save_texto @@ -413,26 +413,6 @@ class DataMigrator: if field_type == 'CharField' or field_type == 'TextField': if value is None or value == 'None': value = '' - if field.model._meta.label == 'sessao.RegistroVotacao' and \ - field.name == 'ordem' and \ - not isinstance(value, OrdemDia): - try: - new_value = ExpedienteMateria.objects.get(pk=value) - setattr(new, 'expediente', new_value) - setattr(new, field.name, None) - continue - except ObjectDoesNotExist: - msg = 'FK [%s] não encontrada para valor %s ' \ - '(em %s %s)' % ( - field.name, value, - field.model.__name__, label or '---') - with reversion.create_revision(): - value = make_stub(field.related_model, value) - descricao = 'stub criado para entrada orfã!' - warn(msg + ' => ' + descricao) - save_relation(value, [field.name], msg, descricao, - eh_stub=True) - reversion.set_comment('Stub criado pela migração') setattr(new, field.name, value) elif field.model.__name__ == 'TipoAutor' and \ field.name == 'content_type': @@ -657,6 +637,23 @@ def adjust_protocolo(new, old): new.numero = p['numero__max'] + 1 +def adjust_registrovotacao(new, old): + ordem_dia = OrdemDia.objects.filter( + pk=old.cod_ordem, materia=old.cod_materia) + expediente_materia = ExpedienteMateria.objects.filter( + pk=old.cod_ordem, materia=old.cod_materia) + + if ordem_dia and not expediente_materia: + new.ordem = ordem_dia[0] + if not ordem_dia and expediente_materia: + new.expediente = expediente_materia[0] + if len(ordem_dia) == len(expediente_materia): + assert 0, "ERRO: RegistroVotacao [PK %s]. OrdemDia tem %s entrada(s)"\ + " e ExpedienteMateria %s entrada(s).\n Deve haver somente "\ + "uma entrada de OrdemDia ou ExpedienteMateria." % ( + old.pk, len(ordem_dia), len(expediente)) + + def adjust_tipoproposicao(new, old): if old.ind_mat_ou_doc == 'M': new.tipo_conteudo_related = TipoMateriaLegislativa.objects.get( @@ -754,6 +751,7 @@ AJUSTE_ANTES_SALVAR = { Parlamentar: adjust_parlamentar, Participacao: adjust_participacao, Protocolo: adjust_protocolo, + RegistroVotacao: adjust_registrovotacao, TipoProposicao: adjust_tipoproposicao, StatusTramitacao: adjust_statustramitacao, StatusTramitacaoAdministrativo: adjust_statustramitacaoadm, diff --git a/sapl/sessao/legacy.yaml b/sapl/sessao/legacy.yaml index 6e2cc2428..90188a76c 100644 --- a/sapl/sessao/legacy.yaml +++ b/sapl/sessao/legacy.yaml @@ -65,7 +65,6 @@ RegistroVotacao: numero_votos_nao: num_votos_nao numero_votos_sim: num_votos_sim observacao: txt_observacao - ordem: cod_ordem tipo_resultado_votacao: tip_resultado_votacao VotoParlamentar (RegistroVotacaoParlamentar):