diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py index bcf258129..b2d6bb3da 100644 --- a/sapl/legacy/migration.py +++ b/sapl/legacy/migration.py @@ -13,7 +13,7 @@ from model_mommy.mommy import foreign_key_required, make from sapl.base.models import ProblemaMigracao from sapl.comissoes.models import Composicao, Participacao -from sapl.materia.models import StatusTramitacao, Tramitacao +from sapl.materia.models import StatusTramitacao, TipoProposicao, Tramitacao from sapl.norma.models import AssuntoNormaRelationship, NormaJuridica from sapl.parlamentares.models import Parlamentar from sapl.protocoloadm.models import StatusTramitacaoAdministrativo @@ -377,7 +377,24 @@ def migrate(obj=appconfs): # MIGRATION_ADJUSTMENTS ##################################################### -def adjust_participacao(new_participacao, old): +def adjust_ordemdia(new, old): + # Prestar atenção + if not old.tip_votacao: + new.tipo_votacao = 1 + + +def adjust_parlamentar(new, old): + if old.ind_unid_deliberativa: + value = new.unidade_deliberativa + # Field is defined as not null in legacy db, + # but data includes null values + # => transform None to False + if value is None: + warn('nulo convertido para falso') + new.unidade_deliberativa = False + + +def adjust_participacao(new, old): composicao = Composicao() composicao.comissao, composicao.periodo = [ get_fk_related(Composicao._meta.get_field(name), value) @@ -391,33 +408,21 @@ def adjust_participacao(new_participacao, old): [composicao] = already_created else: composicao.save() - new_participacao.composicao = composicao - - -def adjust_parlamentar(new_parlamentar, old): - if old.ind_unid_deliberativa: - value = new_parlamentar.unidade_deliberativa - # Field is defined as not null in legacy db, - # but data includes null values - # => transform None to False - if value is None: - warn('nulo convertido para falso') - new_parlamentar.unidade_deliberativa = False + new.composicao = composicao -def adjust_normajuridica(new, old): - # O 'S' vem de 'Selecionar'. Na versão antiga do SAPL, quando uma opção do - # combobox era selecionada, o sistema pegava a primeira letra da seleção, - # sendo F para Federal, E para Estadual, M para Municipal e o S para - # Selecionar, que era a primeira opção quando nada era selecionado. - if old.tip_esfera_federacao == 'S': - new.esfera_federacao = '' +def adjust_sessaoplenaria(new, old): + assert not old.tip_expediente -def adjust_ordemdia(new, old): - # Prestar atenção - if not old.tip_votacao: - new.tipo_votacao = 1 +def adjust_tipoproposicao(new, old): + if new.materia_ou_documento == 'M': + field = TipoProposicao.tipo_materia.field + value = get_fk_related(field=field, value=old.tip_mat_ou_doc) + elif new.materia_ou_documento == 'D': + field = TipoProposicao.tipo_documento.field + value = get_fk_related(field=field, value=old.tip_mat_ou_doc) + setattr(new, field.name, value) def adjust_statustramitacao(new, old): @@ -438,11 +443,18 @@ def adjust_tramitacao(new, old): new.turno = 'U' -def adjust_sessaoplenaria(new, old): - assert not old.tip_expediente +def adjust_normajuridica_antes_salvar(new, old): + # Ajusta choice de esfera_federacao + # O 'S' vem de 'Selecionar'. Na versão antiga do SAPL, quando uma opção do + # combobox era selecionada, o sistema pegava a primeira letra da seleção, + # sendo F para Federal, E para Estadual, M para Municipal e o S para + # Selecionar, que era a primeira opção quando nada era selecionado. + if old.tip_esfera_federacao == 'S': + new.esfera_federacao = '' -def adjust_normajuridica(new, old): +def adjust_normajuridica_depois_salvar(new, old): + # Ajusta relação M2M lista_ids_assunto = old.cod_assunto.split(',') for id_assunto in lista_ids_assunto: relacao = AssuntoNormaRelationship() @@ -452,17 +464,19 @@ def adjust_normajuridica(new, old): AJUSTE_ANTES_SALVAR = { + NormaJuridica: adjust_normajuridica_antes_salvar, OrdemDia: adjust_ordemdia, - Participacao: adjust_participacao, Parlamentar: adjust_parlamentar, + Participacao: adjust_participacao, SessaoPlenaria: adjust_sessaoplenaria, + TipoProposicao: adjust_tipoproposicao, StatusTramitacao: adjust_statustramitacao, StatusTramitacaoAdministrativo: adjust_statustramitacaoadm, Tramitacao: adjust_tramitacao, } AJUSTE_DEPOIS_SALVAR = { - NormaJuridica: adjust_normajuridica, + NormaJuridica: adjust_normajuridica_depois_salvar, } # CHECKS #################################################################### diff --git a/sapl/materia/legacy.yaml b/sapl/materia/legacy.yaml index 4e883c317..8a46136e8 100644 --- a/sapl/materia/legacy.yaml +++ b/sapl/materia/legacy.yaml @@ -126,7 +126,8 @@ TipoProposicao: descricao: des_tipo_proposicao materia_ou_documento: ind_mat_ou_doc modelo: nom_modelo - tipo_materia: tip_mat_ou_doc + tipo_documento: + tipo_materia: Proposicao: autor: cod_autor